001package org.hl7.fhir.convertors.conv14_30.datatypes14_30; 002 003import java.util.Arrays; 004 005import org.hl7.fhir.convertors.VersionConvertorConstants; 006import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_14_30; 007import org.hl7.fhir.exceptions.FHIRException; 008 009public class Element14_30 { 010 011 public final BaseAdvisor_14_30 advisor; 012 013 public Element14_30(BaseAdvisor_14_30 advisor) { 014 this.advisor = advisor; 015 } 016 017 public boolean isExemptExtension(String url, String[] extensionsToIgnore) { 018 return Arrays.asList(extensionsToIgnore).contains(url); 019 } 020 021 public void copyElement(org.hl7.fhir.dstu2016may.model.Element src, 022 org.hl7.fhir.dstu3.model.Element tgt, 023 String path, 024 String... extensionUrlsToIgnore) throws FHIRException { 025 if (src.hasId()) tgt.setId(src.getId()); 026 src.getExtension().stream() 027 .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore) 028 && (!(e.getUrl().equals(VersionConvertorConstants.PROFILE_EXTENSION) 029 || e.getUrl().equals(VersionConvertorConstants.IG_DEPENDSON_PACKAGE_EXTENSION) 030 || e.getUrl().equals(VersionConvertorConstants.IG_DEPENDSON_VERSION_EXTENSION)))) 031 .forEach(e -> { 032 if (advisor.useAdvisorForExtension(path, e)) { 033 org.hl7.fhir.dstu3.model.Extension convertedExtension = new org.hl7.fhir.dstu3.model.Extension(); 034 advisor.handleExtension(path, e, convertedExtension); 035 tgt.addExtension(convertedExtension); 036 } else { 037 tgt.addExtension(Extension14_30.convertExtension(e)); 038 } 039 }); 040 } 041 042 public void copyElement(org.hl7.fhir.dstu3.model.Element src, 043 org.hl7.fhir.dstu2016may.model.Element tgt, 044 String path, 045 String... extensionUrlsToIgnore) throws FHIRException { 046 if (src.hasId()) tgt.setId(src.getId()); 047 src.getExtension().stream() 048 .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) 049 .forEach(e -> { 050 if (advisor.useAdvisorForExtension(path, e)) { 051 org.hl7.fhir.dstu2016may.model.Extension convertedExtension = new org.hl7.fhir.dstu2016may.model.Extension(); 052 advisor.handleExtension(path, e, convertedExtension); 053 tgt.addExtension(convertedExtension); 054 } else { 055 tgt.addExtension(Extension14_30.convertExtension(e)); 056 } 057 }); 058 } 059}