001package org.hl7.fhir.convertors.conv10_30.datatypes10_30;
002
003import java.util.Arrays;
004
005import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_10_30;
006import org.hl7.fhir.exceptions.FHIRException;
007
008
009public class Element10_30 {
010
011  public final BaseAdvisor_10_30 advisor;
012
013  public Element10_30(BaseAdvisor_10_30 advisor) {
014    this.advisor = advisor;
015  }
016
017  public boolean isExemptExtension(String url, String[] extensionUrlsToIgnore) {
018    return Arrays.asList(extensionUrlsToIgnore).contains(url);
019  }
020
021  public void copyElement(org.hl7.fhir.dstu2.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      .forEach(e -> {
029        if (advisor.useAdvisorForExtension(path, e)) {
030          org.hl7.fhir.dstu3.model.Extension convertedExtension = new org.hl7.fhir.dstu3.model.Extension();
031          advisor.handleExtension(path, e, convertedExtension);
032          tgt.addExtension(convertedExtension);
033        } else {
034          tgt.addExtension(Extension10_30.convertExtension(e));
035        }
036      });
037  }
038
039  public void copyElement(org.hl7.fhir.dstu3.model.Element src,
040                          org.hl7.fhir.dstu2.model.Element tgt,
041                          String path,
042                          String... extensionUrlsToIgnore) throws FHIRException {
043    if (src.hasId()) tgt.setId(src.getId());
044    src.getExtension().stream()
045      .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore))
046      .forEach(e -> {
047        if (advisor.useAdvisorForExtension(path, e)) {
048          org.hl7.fhir.dstu2.model.Extension convertedExtension = new org.hl7.fhir.dstu2.model.Extension();
049          advisor.handleExtension(path, e, convertedExtension);
050          tgt.addExtension(convertedExtension);
051        } else {
052          tgt.addExtension(Extension10_30.convertExtension(e));
053        }
054      });
055  }
056
057  public void copyElement(org.hl7.fhir.dstu3.model.DomainResource src,
058                          org.hl7.fhir.dstu2.model.Element tgt,
059                          String path,
060                          String... extensionsToIgnore) throws FHIRException {
061    if (src.hasId()) tgt.setId(src.getId());
062    src.getExtension().stream()
063      .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore))
064      .forEach(e -> {
065        if (advisor.useAdvisorForExtension(path, e)) {
066          org.hl7.fhir.dstu2.model.Extension convertedExtension = new org.hl7.fhir.dstu2.model.Extension();
067          advisor.handleExtension(path, e, convertedExtension);
068          tgt.addExtension(convertedExtension);
069        } else {
070          tgt.addExtension(Extension10_30.convertExtension(e));
071        }
072      });
073  }
074}