001package org.hl7.fhir.convertors.conv14_40.resources14_40;
002
003import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_14_40;
004import org.hl7.fhir.convertors.context.ConversionContext14_40;
005import org.hl7.fhir.convertors.conv14_40.datatypes14_40.Extension14_40;
006import org.hl7.fhir.convertors.conv14_40.datatypes14_40.Meta14_40;
007import org.hl7.fhir.convertors.conv14_40.datatypes14_40.Narrative14_40;
008import org.hl7.fhir.exceptions.FHIRException;
009
010public class Resource14_40 {
011
012  public final BaseAdvisor_14_40 advisor;
013
014  public Resource14_40(BaseAdvisor_14_40 advisor) {
015    this.advisor = advisor;
016  }
017
018  public void copyResource(org.hl7.fhir.dstu2016may.model.Resource src, org.hl7.fhir.r4.model.Resource tgt) throws FHIRException {
019    if (src.hasId()) tgt.setId(src.getId());
020    tgt.setMeta(Meta14_40.convertMeta(src.getMeta()));
021    if (src.hasImplicitRules()) tgt.setImplicitRules(src.getImplicitRules());
022    if (src.hasLanguage()) tgt.setLanguage(src.getLanguage());
023  }
024
025  public void copyResource(org.hl7.fhir.r4.model.Resource src, org.hl7.fhir.dstu2016may.model.Resource tgt) throws FHIRException {
026    if (src.hasId()) tgt.setId(src.getId());
027    if (src.hasMeta()) tgt.setMeta(Meta14_40.convertMeta(src.getMeta()));
028    if (src.hasImplicitRules()) tgt.setImplicitRules(src.getImplicitRules());
029    if (src.hasLanguage()) tgt.setLanguage(src.getLanguage());
030  }
031
032  public org.hl7.fhir.r4.model.Resource convertResource(org.hl7.fhir.dstu2016may.model.Resource src) throws FHIRException {
033    if (src == null || src.isEmpty()) return null;
034    if (src instanceof org.hl7.fhir.dstu2016may.model.Parameters)
035      return Parameters14_40.convertParameters((org.hl7.fhir.dstu2016may.model.Parameters) src);
036    if (src instanceof org.hl7.fhir.dstu2016may.model.Bundle)
037      return Bundle14_40.convertBundle((org.hl7.fhir.dstu2016may.model.Bundle) src);
038    if (src instanceof org.hl7.fhir.dstu2016may.model.CodeSystem)
039      return CodeSystem14_40.convertCodeSystem((org.hl7.fhir.dstu2016may.model.CodeSystem) src);
040    if (src instanceof org.hl7.fhir.dstu2016may.model.CompartmentDefinition)
041      return CompartmentDefinition14_40.convertCompartmentDefinition((org.hl7.fhir.dstu2016may.model.CompartmentDefinition) src);
042    if (src instanceof org.hl7.fhir.dstu2016may.model.ConceptMap)
043      return ConceptMap14_40.convertConceptMap((org.hl7.fhir.dstu2016may.model.ConceptMap) src);
044    if (src instanceof org.hl7.fhir.dstu2016may.model.Conformance)
045      return Conformance14_40.convertConformance((org.hl7.fhir.dstu2016may.model.Conformance) src);
046    if (src instanceof org.hl7.fhir.dstu2016may.model.DataElement)
047      return DataElement14_40.convertDataElement((org.hl7.fhir.dstu2016may.model.DataElement) src);
048    if (src instanceof org.hl7.fhir.dstu2016may.model.ImplementationGuide)
049      return ImplementationGuide14_40.convertImplementationGuide((org.hl7.fhir.dstu2016may.model.ImplementationGuide) src);
050    if (src instanceof org.hl7.fhir.dstu2016may.model.NamingSystem)
051      return NamingSystem14_40.convertNamingSystem((org.hl7.fhir.dstu2016may.model.NamingSystem) src);
052    if (src instanceof org.hl7.fhir.dstu2016may.model.OperationDefinition)
053      return OperationDefinition14_40.convertOperationDefinition((org.hl7.fhir.dstu2016may.model.OperationDefinition) src);
054    if (src instanceof org.hl7.fhir.dstu2016may.model.OperationOutcome)
055      return OperationOutcome14_40.convertOperationOutcome((org.hl7.fhir.dstu2016may.model.OperationOutcome) src);
056    if (src instanceof org.hl7.fhir.dstu2016may.model.Questionnaire)
057      return Questionnaire14_40.convertQuestionnaire((org.hl7.fhir.dstu2016may.model.Questionnaire) src);
058    if (src instanceof org.hl7.fhir.dstu2016may.model.QuestionnaireResponse)
059      return QuestionnaireResponse14_40.convertQuestionnaireResponse((org.hl7.fhir.dstu2016may.model.QuestionnaireResponse) src);
060    if (src instanceof org.hl7.fhir.dstu2016may.model.SearchParameter)
061      return SearchParameter14_40.convertSearchParameter((org.hl7.fhir.dstu2016may.model.SearchParameter) src);
062    if (src instanceof org.hl7.fhir.dstu2016may.model.StructureDefinition)
063      return StructureDefinition14_40.convertStructureDefinition((org.hl7.fhir.dstu2016may.model.StructureDefinition) src);
064    if (src instanceof org.hl7.fhir.dstu2016may.model.StructureMap)
065      return StructureMap14_40.convertStructureMap((org.hl7.fhir.dstu2016may.model.StructureMap) src);
066    if (src instanceof org.hl7.fhir.dstu2016may.model.ValueSet)
067      return ValueSet14_40.convertValueSet((org.hl7.fhir.dstu2016may.model.ValueSet) src);
068    if (advisor.failFastOnNullOrUnknownEntry()) {
069      throw new FHIRException("Unknown resource " + src.fhirType());
070    } else {
071      return null;
072    }
073  }
074
075  public org.hl7.fhir.dstu2016may.model.Resource convertResource(org.hl7.fhir.r4.model.Resource src) throws FHIRException {
076    if (src == null || src.isEmpty()) return null;
077    if (src instanceof org.hl7.fhir.r4.model.Parameters)
078      return Parameters14_40.convertParameters((org.hl7.fhir.r4.model.Parameters) src);
079    if (src instanceof org.hl7.fhir.r4.model.Bundle)
080      return Bundle14_40.convertBundle((org.hl7.fhir.r4.model.Bundle) src);
081    if (src instanceof org.hl7.fhir.r4.model.CodeSystem)
082      return CodeSystem14_40.convertCodeSystem((org.hl7.fhir.r4.model.CodeSystem) src);
083    if (src instanceof org.hl7.fhir.r4.model.CompartmentDefinition)
084      return CompartmentDefinition14_40.convertCompartmentDefinition((org.hl7.fhir.r4.model.CompartmentDefinition) src);
085    if (src instanceof org.hl7.fhir.r4.model.ConceptMap)
086      return ConceptMap14_40.convertConceptMap((org.hl7.fhir.r4.model.ConceptMap) src);
087    if (src instanceof org.hl7.fhir.r4.model.CapabilityStatement)
088      return Conformance14_40.convertConformance((org.hl7.fhir.r4.model.CapabilityStatement) src);
089    if (src instanceof org.hl7.fhir.r4.model.ImplementationGuide)
090      return ImplementationGuide14_40.convertImplementationGuide((org.hl7.fhir.r4.model.ImplementationGuide) src);
091    if (src instanceof org.hl7.fhir.r4.model.NamingSystem)
092      return NamingSystem14_40.convertNamingSystem((org.hl7.fhir.r4.model.NamingSystem) src);
093    if (src instanceof org.hl7.fhir.r4.model.OperationDefinition)
094      return OperationDefinition14_40.convertOperationDefinition((org.hl7.fhir.r4.model.OperationDefinition) src);
095    if (src instanceof org.hl7.fhir.r4.model.OperationOutcome)
096      return OperationOutcome14_40.convertOperationOutcome((org.hl7.fhir.r4.model.OperationOutcome) src);
097    if (src instanceof org.hl7.fhir.r4.model.Questionnaire)
098      return Questionnaire14_40.convertQuestionnaire((org.hl7.fhir.r4.model.Questionnaire) src);
099    if (src instanceof org.hl7.fhir.r4.model.QuestionnaireResponse)
100      return QuestionnaireResponse14_40.convertQuestionnaireResponse((org.hl7.fhir.r4.model.QuestionnaireResponse) src);
101    if (src instanceof org.hl7.fhir.r4.model.SearchParameter)
102      return SearchParameter14_40.convertSearchParameter((org.hl7.fhir.r4.model.SearchParameter) src);
103    if (src instanceof org.hl7.fhir.r4.model.StructureDefinition)
104      return StructureDefinition14_40.convertStructureDefinition((org.hl7.fhir.r4.model.StructureDefinition) src);
105    if (src instanceof org.hl7.fhir.r4.model.StructureMap)
106      return StructureMap14_40.convertStructureMap((org.hl7.fhir.r4.model.StructureMap) src);
107    if (src instanceof org.hl7.fhir.r4.model.ValueSet)
108      return ValueSet14_40.convertValueSet((org.hl7.fhir.r4.model.ValueSet) src);
109    if (advisor.failFastOnNullOrUnknownEntry()) {
110      throw new FHIRException("Unknown resource " + src.fhirType());
111    } else {
112      return null;
113    }
114  }
115
116  public void copyDomainResource(org.hl7.fhir.dstu2016may.model.DomainResource src,
117                                 org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException {
118    copyResource(src, tgt);
119    if (src.hasText()) tgt.setText(Narrative14_40.convertNarrative(src.getText()));
120    src.getContained().stream()
121      .map(this::convertResource)
122      .forEach(tgt::addContained);
123    src.getExtension().forEach(extension -> {
124      if (advisor.useAdvisorForExtension(ConversionContext14_40.INSTANCE.path(), extension)) {
125        org.hl7.fhir.r4.model.Extension convertExtension = new org.hl7.fhir.r4.model.Extension();
126        advisor.handleExtension(ConversionContext14_40.INSTANCE.path(), extension, convertExtension);
127        tgt.addExtension(convertExtension);
128      } else if (!advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension)) {
129        tgt.addExtension(Extension14_40.convertExtension(extension));
130      }
131    });
132    src.getModifierExtension().stream()
133      .filter(extension -> !advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension))
134      .map(Extension14_40::convertExtension)
135      .forEach(tgt::addModifierExtension);
136  }
137
138  public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src,
139                                 org.hl7.fhir.dstu2016may.model.DomainResource tgt) throws FHIRException {
140    copyResource(src, tgt);
141    if (src.hasText()) tgt.setText(Narrative14_40.convertNarrative(src.getText()));
142    src.getContained().stream()
143      .map(this::convertResource)
144      .forEach(tgt::addContained);
145    src.getExtension().forEach(extension -> {
146      if (advisor.useAdvisorForExtension(ConversionContext14_40.INSTANCE.path(), extension)) {
147        org.hl7.fhir.dstu2016may.model.Extension convertExtension = new org.hl7.fhir.dstu2016may.model.Extension();
148        advisor.handleExtension(ConversionContext14_40.INSTANCE.path(), extension, convertExtension);
149        tgt.addExtension(convertExtension);
150      } else if (!advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension)) {
151        tgt.addExtension(Extension14_40.convertExtension(extension));
152      }
153    });
154    src.getModifierExtension().stream()
155      .filter(extension -> !advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension))
156      .map(Extension14_40::convertExtension)
157      .forEach(tgt::addModifierExtension);
158  }
159
160}