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}