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