001package org.hl7.fhir.convertors.conv30_40.resources30_40;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_30_40;
005import org.hl7.fhir.convertors.context.ConversionContext30_40;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.*;
007import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Annotation30_40;
008import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.CodeableConcept30_40;
009import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Identifier30_40;
010import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.DateTime30_40;
011import org.hl7.fhir.exceptions.FHIRException;
012
013import java.util.Arrays;
014
015public class Resource30_40 {
016
017  public final BaseAdvisor_30_40 advisor;
018
019  public Resource30_40(BaseAdvisor_30_40 advisor) {
020    this.advisor = advisor;
021  }
022
023  public void copyResource(org.hl7.fhir.dstu3.model.Resource src, org.hl7.fhir.r4.model.Resource tgt) throws FHIRException {
024    if (src.hasId()) tgt.setId(src.getId());
025    if (src.hasMeta()) tgt.setMeta(Meta30_40.convertMeta(src.getMeta()));
026    if (src.hasImplicitRules()) tgt.setImplicitRules(src.getImplicitRules());
027    if (src.hasLanguage()) tgt.setLanguage(src.getLanguage());
028  }
029
030  public void copyResource(org.hl7.fhir.r4.model.Resource src, org.hl7.fhir.dstu3.model.Resource tgt) throws FHIRException {
031    if (src.hasId()) tgt.setId(src.getId());
032    if (src.hasMeta()) tgt.setMeta(Meta30_40.convertMeta(src.getMeta()));
033    if (src.hasImplicitRules()) tgt.setImplicitRules(src.getImplicitRules());
034    if (src.hasLanguage()) tgt.setLanguage(src.getLanguage());
035  }
036
037  public org.hl7.fhir.r4.model.Resource convertResource(org.hl7.fhir.dstu3.model.Resource src) throws FHIRException {
038    return convertResource(src, new BaseAdvisor_30_40());
039  }
040
041  public org.hl7.fhir.r4.model.Resource convertResource(org.hl7.fhir.dstu3.model.Resource src, BaseAdvisor_30_40 advisor) throws FHIRException {
042    if (src == null) return null;
043    if (src instanceof org.hl7.fhir.dstu3.model.Parameters)
044      return Parameters30_40.convertParameters((org.hl7.fhir.dstu3.model.Parameters) src);
045    if (src instanceof org.hl7.fhir.dstu3.model.Account)
046      return Account30_40.convertAccount((org.hl7.fhir.dstu3.model.Account) src);
047    if (src instanceof org.hl7.fhir.dstu3.model.ActivityDefinition)
048      return ActivityDefinition30_40.convertActivityDefinition((org.hl7.fhir.dstu3.model.ActivityDefinition) src);
049    if (src instanceof org.hl7.fhir.dstu3.model.AllergyIntolerance)
050      return AllergyIntolerance30_40.convertAllergyIntolerance((org.hl7.fhir.dstu3.model.AllergyIntolerance) src);
051    if (src instanceof org.hl7.fhir.dstu3.model.Appointment)
052      return Appointment30_40.convertAppointment((org.hl7.fhir.dstu3.model.Appointment) src);
053    if (src instanceof org.hl7.fhir.dstu3.model.AppointmentResponse)
054      return AppointmentResponse30_40.convertAppointmentResponse((org.hl7.fhir.dstu3.model.AppointmentResponse) src);
055    if (src instanceof org.hl7.fhir.dstu3.model.AuditEvent)
056      return AuditEvent30_40.convertAuditEvent((org.hl7.fhir.dstu3.model.AuditEvent) src);
057    if (src instanceof org.hl7.fhir.dstu3.model.Basic)
058      return Basic30_40.convertBasic((org.hl7.fhir.dstu3.model.Basic) src);
059    if (src instanceof org.hl7.fhir.dstu3.model.Binary)
060      return Binary30_40.convertBinary((org.hl7.fhir.dstu3.model.Binary) src);
061    if (src instanceof org.hl7.fhir.dstu3.model.BodySite)
062      return BodySite30_40.convertBodySite((org.hl7.fhir.dstu3.model.BodySite) src);
063    if (src instanceof org.hl7.fhir.dstu3.model.Bundle)
064      return Bundle30_40.convertBundle((org.hl7.fhir.dstu3.model.Bundle) src);
065    if (src instanceof org.hl7.fhir.dstu3.model.CapabilityStatement)
066      return CapabilityStatement30_40.convertCapabilityStatement((org.hl7.fhir.dstu3.model.CapabilityStatement) src);
067    if (src instanceof org.hl7.fhir.dstu3.model.CarePlan)
068      return CarePlan30_40.convertCarePlan((org.hl7.fhir.dstu3.model.CarePlan) src);
069    if (src instanceof org.hl7.fhir.dstu3.model.CareTeam)
070      return CareTeam30_40.convertCareTeam((org.hl7.fhir.dstu3.model.CareTeam) src);
071    if (src instanceof org.hl7.fhir.dstu3.model.ClinicalImpression)
072      return ClinicalImpression30_40.convertClinicalImpression((org.hl7.fhir.dstu3.model.ClinicalImpression) src);
073    if (src instanceof org.hl7.fhir.dstu3.model.CodeSystem)
074      return CodeSystem30_40.convertCodeSystem((org.hl7.fhir.dstu3.model.CodeSystem) src);
075    if (src instanceof org.hl7.fhir.dstu3.model.Communication)
076      return Communication30_40.convertCommunication((org.hl7.fhir.dstu3.model.Communication) src);
077    if (src instanceof org.hl7.fhir.dstu3.model.CommunicationRequest)
078      return CommunicationRequest30_40.convertCommunicationRequest((org.hl7.fhir.dstu3.model.CommunicationRequest) src);
079    if (src instanceof org.hl7.fhir.dstu3.model.CompartmentDefinition)
080      return CompartmentDefinition30_40.convertCompartmentDefinition((org.hl7.fhir.dstu3.model.CompartmentDefinition) src);
081    if (src instanceof org.hl7.fhir.dstu3.model.Composition)
082      return Composition30_40.convertComposition((org.hl7.fhir.dstu3.model.Composition) src);
083    if (src instanceof org.hl7.fhir.dstu3.model.ConceptMap)
084      return ConceptMap30_40.convertConceptMap((org.hl7.fhir.dstu3.model.ConceptMap) src);
085    if (src instanceof org.hl7.fhir.dstu3.model.Condition)
086      return Condition30_40.convertCondition((org.hl7.fhir.dstu3.model.Condition) src);
087    if (src instanceof org.hl7.fhir.dstu3.model.Consent)
088      return Consent30_40.convertConsent((org.hl7.fhir.dstu3.model.Consent) src);
089    if (src instanceof org.hl7.fhir.dstu3.model.Coverage)
090      return Coverage30_40.convertCoverage((org.hl7.fhir.dstu3.model.Coverage) src);
091    if (src instanceof org.hl7.fhir.dstu3.model.DataElement)
092      return DataElement30_40.convertDataElement((org.hl7.fhir.dstu3.model.DataElement) src);
093    if (src instanceof org.hl7.fhir.dstu3.model.DetectedIssue)
094      return DetectedIssue30_40.convertDetectedIssue((org.hl7.fhir.dstu3.model.DetectedIssue) src);
095    if (src instanceof org.hl7.fhir.dstu3.model.DeviceUseStatement)
096      return DeviceUseStatement30_40.convertDeviceUseStatement((org.hl7.fhir.dstu3.model.DeviceUseStatement) src);
097    if (src instanceof org.hl7.fhir.dstu3.model.DiagnosticReport)
098      return DiagnosticReport30_40.convertDiagnosticReport((org.hl7.fhir.dstu3.model.DiagnosticReport) src);
099    if (src instanceof org.hl7.fhir.dstu3.model.DocumentReference)
100      return DocumentReference30_40.convertDocumentReference((org.hl7.fhir.dstu3.model.DocumentReference) src);
101    if (src instanceof org.hl7.fhir.dstu3.model.Encounter)
102      return Encounter30_40.convertEncounter((org.hl7.fhir.dstu3.model.Encounter) src);
103    if (src instanceof org.hl7.fhir.dstu3.model.Endpoint)
104      return Endpoint30_40.convertEndpoint((org.hl7.fhir.dstu3.model.Endpoint) src);
105    if (src instanceof org.hl7.fhir.dstu3.model.EpisodeOfCare)
106      return EpisodeOfCare30_40.convertEpisodeOfCare((org.hl7.fhir.dstu3.model.EpisodeOfCare) src);
107    if (src instanceof org.hl7.fhir.dstu3.model.ExpansionProfile)
108      return ExpansionProfile30_40.convertExpansionProfile((org.hl7.fhir.dstu3.model.ExpansionProfile) src);
109    if (src instanceof org.hl7.fhir.dstu3.model.FamilyMemberHistory)
110      return FamilyMemberHistory30_40.convertFamilyMemberHistory((org.hl7.fhir.dstu3.model.FamilyMemberHistory) src);
111    if (src instanceof org.hl7.fhir.dstu3.model.Flag) return Flag30_40.convertFlag((org.hl7.fhir.dstu3.model.Flag) src);
112    if (src instanceof org.hl7.fhir.dstu3.model.Goal) return Goal30_40.convertGoal((org.hl7.fhir.dstu3.model.Goal) src);
113    if (src instanceof org.hl7.fhir.dstu3.model.GraphDefinition)
114      return GraphDefinition30_40.convertGraphDefinition((org.hl7.fhir.dstu3.model.GraphDefinition) src);
115    if (src instanceof org.hl7.fhir.dstu3.model.Group)
116      return Group30_40.convertGroup((org.hl7.fhir.dstu3.model.Group) src);
117    if (src instanceof org.hl7.fhir.dstu3.model.HealthcareService)
118      return HealthcareService30_40.convertHealthcareService((org.hl7.fhir.dstu3.model.HealthcareService) src);
119    if (src instanceof org.hl7.fhir.dstu3.model.ImagingStudy)
120      return ImagingStudy30_40.convertImagingStudy((org.hl7.fhir.dstu3.model.ImagingStudy) src);
121    if (src instanceof org.hl7.fhir.dstu3.model.Immunization)
122      return Immunization30_40.convertImmunization((org.hl7.fhir.dstu3.model.Immunization) src);
123    if (src instanceof org.hl7.fhir.dstu3.model.ImplementationGuide)
124      return ImplementationGuide30_40.convertImplementationGuide((org.hl7.fhir.dstu3.model.ImplementationGuide) src);
125    if (src instanceof org.hl7.fhir.dstu3.model.Library)
126      return Library30_40.convertLibrary((org.hl7.fhir.dstu3.model.Library) src);
127    if (src instanceof org.hl7.fhir.dstu3.model.Linkage)
128      return Linkage30_40.convertLinkage((org.hl7.fhir.dstu3.model.Linkage) src);
129    if (src instanceof org.hl7.fhir.dstu3.model.ListResource)
130      return List30_40.convertList((org.hl7.fhir.dstu3.model.ListResource) src);
131    if (src instanceof org.hl7.fhir.dstu3.model.Location)
132      return Location30_40.convertLocation((org.hl7.fhir.dstu3.model.Location) src);
133    if (src instanceof org.hl7.fhir.dstu3.model.Media)
134      return Media30_40.convertMedia((org.hl7.fhir.dstu3.model.Media) src);
135    if (src instanceof org.hl7.fhir.dstu3.model.Medication)
136      return Medication30_40.convertMedication((org.hl7.fhir.dstu3.model.Medication) src);
137    if (src instanceof org.hl7.fhir.dstu3.model.MedicationAdministration)
138      return MedicationAdministration30_40.convertMedicationAdministration((org.hl7.fhir.dstu3.model.MedicationAdministration) src);
139    if (src instanceof org.hl7.fhir.dstu3.model.MedicationDispense)
140      return MedicationDispense30_40.convertMedicationDispense((org.hl7.fhir.dstu3.model.MedicationDispense) src);
141    if (src instanceof org.hl7.fhir.dstu3.model.MedicationRequest)
142      return Resource30_40.convertMedicationRequest((org.hl7.fhir.dstu3.model.MedicationRequest) src);
143    if (src instanceof org.hl7.fhir.dstu3.model.MedicationStatement)
144      return MedicationStatement30_40.convertMedicationStatement((org.hl7.fhir.dstu3.model.MedicationStatement) src);
145    if (src instanceof org.hl7.fhir.dstu3.model.MessageDefinition)
146      return MessageDefinition30_40.convertMessageDefinition((org.hl7.fhir.dstu3.model.MessageDefinition) src);
147    if (src instanceof org.hl7.fhir.dstu3.model.MessageHeader)
148      return MessageHeader30_40.convertMessageHeader((org.hl7.fhir.dstu3.model.MessageHeader) src);
149    if (src instanceof org.hl7.fhir.dstu3.model.NamingSystem)
150      return NamingSystem30_40.convertNamingSystem((org.hl7.fhir.dstu3.model.NamingSystem) src);
151    if (src instanceof org.hl7.fhir.dstu3.model.Observation)
152      return Observation30_40.convertObservation((org.hl7.fhir.dstu3.model.Observation) src);
153    if (src instanceof org.hl7.fhir.dstu3.model.OperationDefinition)
154      return OperationDefinition30_40.convertOperationDefinition((org.hl7.fhir.dstu3.model.OperationDefinition) src);
155    if (src instanceof org.hl7.fhir.dstu3.model.OperationOutcome)
156      return OperationOutcome30_40.convertOperationOutcome((org.hl7.fhir.dstu3.model.OperationOutcome) src);
157    if (src instanceof org.hl7.fhir.dstu3.model.Organization)
158      return Organization30_40.convertOrganization((org.hl7.fhir.dstu3.model.Organization) src);
159    if (src instanceof org.hl7.fhir.dstu3.model.Patient)
160      return Patient30_40.convertPatient((org.hl7.fhir.dstu3.model.Patient) src);
161    if (src instanceof org.hl7.fhir.dstu3.model.PaymentNotice)
162      return PaymentNotice30_40.convertPaymentNotice((org.hl7.fhir.dstu3.model.PaymentNotice) src);
163    if (src instanceof org.hl7.fhir.dstu3.model.Person)
164      return Person30_40.convertPerson((org.hl7.fhir.dstu3.model.Person) src);
165    if (src instanceof org.hl7.fhir.dstu3.model.PlanDefinition)
166      return PlanDefinition30_40.convertPlanDefinition((org.hl7.fhir.dstu3.model.PlanDefinition) src);
167    if (src instanceof org.hl7.fhir.dstu3.model.Practitioner)
168      return Practitioner30_40.convertPractitioner((org.hl7.fhir.dstu3.model.Practitioner) src);
169    if (src instanceof org.hl7.fhir.dstu3.model.PractitionerRole)
170      return PractitionerRole30_40.convertPractitionerRole((org.hl7.fhir.dstu3.model.PractitionerRole) src);
171    if (src instanceof org.hl7.fhir.dstu3.model.Procedure)
172      return Procedure30_40.convertProcedure((org.hl7.fhir.dstu3.model.Procedure) src);
173    if (src instanceof org.hl7.fhir.dstu3.model.ProcedureRequest)
174      return ProcedureRequest30_40.convertProcedureRequest((org.hl7.fhir.dstu3.model.ProcedureRequest) src);
175    if (src instanceof org.hl7.fhir.dstu3.model.Provenance)
176      return Provenance30_40.convertProvenance((org.hl7.fhir.dstu3.model.Provenance) src);
177    if (src instanceof org.hl7.fhir.dstu3.model.Questionnaire)
178      return Questionnaire30_40.convertQuestionnaire((org.hl7.fhir.dstu3.model.Questionnaire) src);
179    if (src instanceof org.hl7.fhir.dstu3.model.QuestionnaireResponse)
180      return QuestionnaireResponse30_40.convertQuestionnaireResponse((org.hl7.fhir.dstu3.model.QuestionnaireResponse) src);
181    if (src instanceof org.hl7.fhir.dstu3.model.RelatedPerson)
182      return RelatedPerson30_40.convertRelatedPerson((org.hl7.fhir.dstu3.model.RelatedPerson) src);
183    if (src instanceof org.hl7.fhir.dstu3.model.RiskAssessment)
184      return RiskAssessment30_40.convertRiskAssessment((org.hl7.fhir.dstu3.model.RiskAssessment) src);
185    if (src instanceof org.hl7.fhir.dstu3.model.Schedule)
186      return Schedule30_40.convertSchedule((org.hl7.fhir.dstu3.model.Schedule) src);
187    if (src instanceof org.hl7.fhir.dstu3.model.SearchParameter)
188      return SearchParameter30_40.convertSearchParameter((org.hl7.fhir.dstu3.model.SearchParameter) src);
189    if (src instanceof org.hl7.fhir.dstu3.model.Sequence)
190      return Sequence30_40.convertSequence((org.hl7.fhir.dstu3.model.Sequence) src);
191    if (src instanceof org.hl7.fhir.dstu3.model.Slot) return Slot30_40.convertSlot((org.hl7.fhir.dstu3.model.Slot) src);
192    if (src instanceof org.hl7.fhir.dstu3.model.Specimen)
193      return Specimen30_40.convertSpecimen((org.hl7.fhir.dstu3.model.Specimen) src);
194    if (src instanceof org.hl7.fhir.dstu3.model.StructureDefinition)
195      return StructureDefinition30_40.convertStructureDefinition((org.hl7.fhir.dstu3.model.StructureDefinition) src);
196    if (src instanceof org.hl7.fhir.dstu3.model.StructureMap)
197      return StructureMap30_40.convertStructureMap((org.hl7.fhir.dstu3.model.StructureMap) src);
198    if (src instanceof org.hl7.fhir.dstu3.model.Subscription)
199      return Subscription30_40.convertSubscription((org.hl7.fhir.dstu3.model.Subscription) src);
200    if (src instanceof org.hl7.fhir.dstu3.model.Substance)
201      return Substance30_40.convertSubstance((org.hl7.fhir.dstu3.model.Substance) src);
202    if (src instanceof org.hl7.fhir.dstu3.model.SupplyDelivery)
203      return SupplyDelivery30_40.convertSupplyDelivery((org.hl7.fhir.dstu3.model.SupplyDelivery) src);
204    if (src instanceof org.hl7.fhir.dstu3.model.TestReport)
205      return TestReport30_40.convertTestReport((org.hl7.fhir.dstu3.model.TestReport) src);
206    if (src instanceof org.hl7.fhir.dstu3.model.TestScript)
207      return TestScript30_40.convertTestScript((org.hl7.fhir.dstu3.model.TestScript) src);
208    if (src instanceof org.hl7.fhir.dstu3.model.ValueSet)
209      return ValueSet30_40.convertValueSet((org.hl7.fhir.dstu3.model.ValueSet) src);
210    if (advisor.failFastOnNullOrUnknownEntry()) {
211      throw new FHIRException("The resource " + src.fhirType()+" cannot be converted from R3 to R4");
212    } else {
213      return null;
214    }
215  }
216
217  public org.hl7.fhir.dstu3.model.Resource convertResource(org.hl7.fhir.r4.model.Resource src) throws FHIRException {
218    return convertResource(src, new BaseAdvisor_30_40());
219  }
220
221  public org.hl7.fhir.dstu3.model.Resource convertResource(org.hl7.fhir.r4.model.Resource src, BaseAdvisor_30_40 advisor) throws FHIRException {
222    if (src == null) return null;
223    if (src instanceof org.hl7.fhir.r4.model.Parameters) {
224//      if (((org.hl7.fhir.r4.model.Parameters) src).hasParameterValue("profile-url"))
225//        return ExpansionProfile30_40.convertExpansionProfile((org.hl7.fhir.r4.model.Parameters) src);
226//      else 
227        return Parameters30_40.convertParameters((org.hl7.fhir.r4.model.Parameters) src);
228    }
229    if (src instanceof org.hl7.fhir.r4.model.Account)
230      return Account30_40.convertAccount((org.hl7.fhir.r4.model.Account) src);
231    if (src instanceof org.hl7.fhir.r4.model.ActivityDefinition)
232      return ActivityDefinition30_40.convertActivityDefinition((org.hl7.fhir.r4.model.ActivityDefinition) src);
233    if (src instanceof org.hl7.fhir.r4.model.AllergyIntolerance)
234      return AllergyIntolerance30_40.convertAllergyIntolerance((org.hl7.fhir.r4.model.AllergyIntolerance) src);
235    if (src instanceof org.hl7.fhir.r4.model.Appointment)
236      return Appointment30_40.convertAppointment((org.hl7.fhir.r4.model.Appointment) src);
237    if (src instanceof org.hl7.fhir.r4.model.AppointmentResponse)
238      return AppointmentResponse30_40.convertAppointmentResponse((org.hl7.fhir.r4.model.AppointmentResponse) src);
239    if (src instanceof org.hl7.fhir.r4.model.AuditEvent)
240      return AuditEvent30_40.convertAuditEvent((org.hl7.fhir.r4.model.AuditEvent) src);
241    if (src instanceof org.hl7.fhir.r4.model.Basic) return Basic30_40.convertBasic((org.hl7.fhir.r4.model.Basic) src);
242    if (src instanceof org.hl7.fhir.r4.model.Binary)
243      return Binary30_40.convertBinary((org.hl7.fhir.r4.model.Binary) src);
244    if (src instanceof org.hl7.fhir.r4.model.BodyStructure)
245      return BodySite30_40.convertBodySite((org.hl7.fhir.r4.model.BodyStructure) src);
246    if (src instanceof org.hl7.fhir.r4.model.Bundle)
247      return Bundle30_40.convertBundle((org.hl7.fhir.r4.model.Bundle) src);
248    if (src instanceof org.hl7.fhir.r4.model.CapabilityStatement)
249      return CapabilityStatement30_40.convertCapabilityStatement((org.hl7.fhir.r4.model.CapabilityStatement) src);
250    if (src instanceof org.hl7.fhir.r4.model.CarePlan)
251      return CarePlan30_40.convertCarePlan((org.hl7.fhir.r4.model.CarePlan) src);
252    if (src instanceof org.hl7.fhir.r4.model.CareTeam)
253      return CareTeam30_40.convertCareTeam((org.hl7.fhir.r4.model.CareTeam) src);
254    if (src instanceof org.hl7.fhir.r4.model.ClinicalImpression)
255      return ClinicalImpression30_40.convertClinicalImpression((org.hl7.fhir.r4.model.ClinicalImpression) src);
256    if (src instanceof org.hl7.fhir.r4.model.CodeSystem)
257      return CodeSystem30_40.convertCodeSystem((org.hl7.fhir.r4.model.CodeSystem) src);
258    if (src instanceof org.hl7.fhir.r4.model.Communication)
259      return Communication30_40.convertCommunication((org.hl7.fhir.r4.model.Communication) src);
260    if (src instanceof org.hl7.fhir.r4.model.CommunicationRequest)
261      return CommunicationRequest30_40.convertCommunicationRequest((org.hl7.fhir.r4.model.CommunicationRequest) src);
262    if (src instanceof org.hl7.fhir.r4.model.CompartmentDefinition)
263      return CompartmentDefinition30_40.convertCompartmentDefinition((org.hl7.fhir.r4.model.CompartmentDefinition) src);
264    if (src instanceof org.hl7.fhir.r4.model.Composition)
265      return Composition30_40.convertComposition((org.hl7.fhir.r4.model.Composition) src);
266    if (src instanceof org.hl7.fhir.r4.model.ConceptMap)
267      return ConceptMap30_40.convertConceptMap((org.hl7.fhir.r4.model.ConceptMap) src);
268    if (src instanceof org.hl7.fhir.r4.model.Condition)
269      return Condition30_40.convertCondition((org.hl7.fhir.r4.model.Condition) src);
270    if (src instanceof org.hl7.fhir.r4.model.Consent)
271      return Consent30_40.convertConsent((org.hl7.fhir.r4.model.Consent) src);
272    if (src instanceof org.hl7.fhir.r4.model.Coverage)
273      return Coverage30_40.convertCoverage((org.hl7.fhir.r4.model.Coverage) src);
274    if (src instanceof org.hl7.fhir.r4.model.DetectedIssue)
275      return DetectedIssue30_40.convertDetectedIssue((org.hl7.fhir.r4.model.DetectedIssue) src);
276    if (src instanceof org.hl7.fhir.r4.model.Device)
277      return Device30_40.convertDevice((org.hl7.fhir.r4.model.Device) src);
278    if (src instanceof org.hl7.fhir.r4.model.DeviceUseStatement)
279      return DeviceUseStatement30_40.convertDeviceUseStatement((org.hl7.fhir.r4.model.DeviceUseStatement) src);
280    if (src instanceof org.hl7.fhir.r4.model.DiagnosticReport)
281      return DiagnosticReport30_40.convertDiagnosticReport((org.hl7.fhir.r4.model.DiagnosticReport) src);
282    if (src instanceof org.hl7.fhir.r4.model.DocumentReference)
283      return DocumentReference30_40.convertDocumentReference((org.hl7.fhir.r4.model.DocumentReference) src);
284    if (src instanceof org.hl7.fhir.r4.model.Encounter)
285      return Encounter30_40.convertEncounter((org.hl7.fhir.r4.model.Encounter) src);
286    if (src instanceof org.hl7.fhir.r4.model.Endpoint)
287      return Endpoint30_40.convertEndpoint((org.hl7.fhir.r4.model.Endpoint) src);
288    if (src instanceof org.hl7.fhir.r4.model.EpisodeOfCare)
289      return EpisodeOfCare30_40.convertEpisodeOfCare((org.hl7.fhir.r4.model.EpisodeOfCare) src);
290    if (src instanceof org.hl7.fhir.r4.model.FamilyMemberHistory)
291      return FamilyMemberHistory30_40.convertFamilyMemberHistory((org.hl7.fhir.r4.model.FamilyMemberHistory) src);
292    if (src instanceof org.hl7.fhir.r4.model.Flag) return Flag30_40.convertFlag((org.hl7.fhir.r4.model.Flag) src);
293    if (src instanceof org.hl7.fhir.r4.model.Goal) return Goal30_40.convertGoal((org.hl7.fhir.r4.model.Goal) src);
294    if (src instanceof org.hl7.fhir.r4.model.GraphDefinition)
295      return GraphDefinition30_40.convertGraphDefinition((org.hl7.fhir.r4.model.GraphDefinition) src);
296    if (src instanceof org.hl7.fhir.r4.model.Group) return Group30_40.convertGroup((org.hl7.fhir.r4.model.Group) src);
297    if (src instanceof org.hl7.fhir.r4.model.HealthcareService)
298      return HealthcareService30_40.convertHealthcareService((org.hl7.fhir.r4.model.HealthcareService) src);
299    if (src instanceof org.hl7.fhir.r4.model.ImagingStudy)
300      return ImagingStudy30_40.convertImagingStudy((org.hl7.fhir.r4.model.ImagingStudy) src);
301    if (src instanceof org.hl7.fhir.r4.model.Immunization)
302      return Immunization30_40.convertImmunization((org.hl7.fhir.r4.model.Immunization) src);
303    if (src instanceof org.hl7.fhir.r4.model.ImplementationGuide)
304      return ImplementationGuide30_40.convertImplementationGuide((org.hl7.fhir.r4.model.ImplementationGuide) src);
305    if (src instanceof org.hl7.fhir.r4.model.Library)
306      return Library30_40.convertLibrary((org.hl7.fhir.r4.model.Library) src);
307    if (src instanceof org.hl7.fhir.r4.model.Linkage)
308      return Linkage30_40.convertLinkage((org.hl7.fhir.r4.model.Linkage) src);
309    if (src instanceof org.hl7.fhir.r4.model.ListResource)
310      return List30_40.convertList((org.hl7.fhir.r4.model.ListResource) src);
311    if (src instanceof org.hl7.fhir.r4.model.Location)
312      return Location30_40.convertLocation((org.hl7.fhir.r4.model.Location) src);
313    if (src instanceof org.hl7.fhir.r4.model.Media) return Media30_40.convertMedia((org.hl7.fhir.r4.model.Media) src);
314    if (src instanceof org.hl7.fhir.r4.model.Medication)
315      return Medication30_40.convertMedication((org.hl7.fhir.r4.model.Medication) src);
316    if (src instanceof org.hl7.fhir.r4.model.MedicationAdministration)
317      return MedicationAdministration30_40.convertMedicationAdministration((org.hl7.fhir.r4.model.MedicationAdministration) src);
318    if (src instanceof org.hl7.fhir.r4.model.MedicationDispense)
319      return MedicationDispense30_40.convertMedicationDispense((org.hl7.fhir.r4.model.MedicationDispense) src);
320    if (src instanceof org.hl7.fhir.r4.model.MedicationRequest)
321      return MedicationRequest30_40.convertMedicationRequest((org.hl7.fhir.r4.model.MedicationRequest) src);
322    if (src instanceof org.hl7.fhir.r4.model.MedicationStatement)
323      return MedicationStatement30_40.convertMedicationStatement((org.hl7.fhir.r4.model.MedicationStatement) src);
324    if (src instanceof org.hl7.fhir.r4.model.MessageDefinition)
325      return MessageDefinition30_40.convertMessageDefinition((org.hl7.fhir.r4.model.MessageDefinition) src);
326    if (src instanceof org.hl7.fhir.r4.model.MessageHeader)
327      return MessageHeader30_40.convertMessageHeader((org.hl7.fhir.r4.model.MessageHeader) src);
328    if (src instanceof org.hl7.fhir.r4.model.NamingSystem)
329      return NamingSystem30_40.convertNamingSystem((org.hl7.fhir.r4.model.NamingSystem) src);
330    if (src instanceof org.hl7.fhir.r4.model.Observation)
331      return Observation30_40.convertObservation((org.hl7.fhir.r4.model.Observation) src);
332    if (src instanceof org.hl7.fhir.r4.model.OperationDefinition)
333      return OperationDefinition30_40.convertOperationDefinition((org.hl7.fhir.r4.model.OperationDefinition) src);
334    if (src instanceof org.hl7.fhir.r4.model.OperationOutcome)
335      return OperationOutcome30_40.convertOperationOutcome((org.hl7.fhir.r4.model.OperationOutcome) src);
336    if (src instanceof org.hl7.fhir.r4.model.Organization)
337      return Organization30_40.convertOrganization((org.hl7.fhir.r4.model.Organization) src);
338    if (src instanceof org.hl7.fhir.r4.model.Patient)
339      return Patient30_40.convertPatient((org.hl7.fhir.r4.model.Patient) src);
340    if (src instanceof org.hl7.fhir.r4.model.PaymentNotice)
341      return PaymentNotice30_40.convertPaymentNotice((org.hl7.fhir.r4.model.PaymentNotice) src);
342    if (src instanceof org.hl7.fhir.r4.model.Person)
343      return Person30_40.convertPerson((org.hl7.fhir.r4.model.Person) src);
344    if (src instanceof org.hl7.fhir.r4.model.PlanDefinition)
345      return PlanDefinition30_40.convertPlanDefinition((org.hl7.fhir.r4.model.PlanDefinition) src);
346    if (src instanceof org.hl7.fhir.r4.model.Practitioner)
347      return Practitioner30_40.convertPractitioner((org.hl7.fhir.r4.model.Practitioner) src);
348    if (src instanceof org.hl7.fhir.r4.model.PractitionerRole)
349      return PractitionerRole30_40.convertPractitionerRole((org.hl7.fhir.r4.model.PractitionerRole) src);
350    if (src instanceof org.hl7.fhir.r4.model.Procedure)
351      return Procedure30_40.convertProcedure((org.hl7.fhir.r4.model.Procedure) src);
352    if (src instanceof org.hl7.fhir.r4.model.ServiceRequest)
353      return ProcedureRequest30_40.convertProcedureRequest((org.hl7.fhir.r4.model.ServiceRequest) src);
354    if (src instanceof org.hl7.fhir.r4.model.Provenance)
355      return Provenance30_40.convertProvenance((org.hl7.fhir.r4.model.Provenance) src);
356    if (src instanceof org.hl7.fhir.r4.model.Questionnaire)
357      return Questionnaire30_40.convertQuestionnaire((org.hl7.fhir.r4.model.Questionnaire) src);
358    if (src instanceof org.hl7.fhir.r4.model.QuestionnaireResponse)
359      return QuestionnaireResponse30_40.convertQuestionnaireResponse((org.hl7.fhir.r4.model.QuestionnaireResponse) src);
360    if (src instanceof org.hl7.fhir.r4.model.RelatedPerson)
361      return RelatedPerson30_40.convertRelatedPerson((org.hl7.fhir.r4.model.RelatedPerson) src);
362    if (src instanceof org.hl7.fhir.r4.model.RiskAssessment)
363      return RiskAssessment30_40.convertRiskAssessment((org.hl7.fhir.r4.model.RiskAssessment) src);
364    if (src instanceof org.hl7.fhir.r4.model.Schedule)
365      return Schedule30_40.convertSchedule((org.hl7.fhir.r4.model.Schedule) src);
366    if (src instanceof org.hl7.fhir.r4.model.SearchParameter)
367      return SearchParameter30_40.convertSearchParameter((org.hl7.fhir.r4.model.SearchParameter) src);
368    if (src instanceof org.hl7.fhir.r4.model.MolecularSequence)
369      return Sequence30_40.convertSequence((org.hl7.fhir.r4.model.MolecularSequence) src);
370    if (src instanceof org.hl7.fhir.r4.model.Slot) return Slot30_40.convertSlot((org.hl7.fhir.r4.model.Slot) src);
371    if (src instanceof org.hl7.fhir.r4.model.Specimen)
372      return Specimen30_40.convertSpecimen((org.hl7.fhir.r4.model.Specimen) src);
373    if (src instanceof org.hl7.fhir.r4.model.StructureDefinition)
374      return StructureDefinition30_40.convertStructureDefinition((org.hl7.fhir.r4.model.StructureDefinition) src);
375    if (src instanceof org.hl7.fhir.r4.model.StructureMap)
376      return StructureMap30_40.convertStructureMap((org.hl7.fhir.r4.model.StructureMap) src);
377    if (src instanceof org.hl7.fhir.r4.model.Subscription)
378      return Subscription30_40.convertSubscription((org.hl7.fhir.r4.model.Subscription) src);
379    if (src instanceof org.hl7.fhir.r4.model.Substance)
380      return Substance30_40.convertSubstance((org.hl7.fhir.r4.model.Substance) src);
381    if (src instanceof org.hl7.fhir.r4.model.SupplyDelivery)
382      return SupplyDelivery30_40.convertSupplyDelivery((org.hl7.fhir.r4.model.SupplyDelivery) src);
383    if (src instanceof org.hl7.fhir.r4.model.TestReport)
384      return TestReport30_40.convertTestReport((org.hl7.fhir.r4.model.TestReport) src);
385    if (src instanceof org.hl7.fhir.r4.model.TestScript)
386      return TestScript30_40.convertTestScript((org.hl7.fhir.r4.model.TestScript) src);
387    if (src instanceof org.hl7.fhir.r4.model.ValueSet)
388      return ValueSet30_40.convertValueSet((org.hl7.fhir.r4.model.ValueSet) src);
389    if (advisor.failFastOnNullOrUnknownEntry()) {
390      throw new FHIRException("The resource " + src.fhirType()+" cannot be converted from R4 to R3");
391    } else {
392      return null;
393    }
394  }
395
396  public void copyDomainResource(org.hl7.fhir.dstu3.model.DomainResource src,
397                                 org.hl7.fhir.r4.model.DomainResource tgt,
398                                 String... extensionUrlsToIgnore) throws FHIRException {
399    copyResource(src, tgt);
400    if (src.hasText()) tgt.setText(Narrative30_40.convertNarrative(src.getText()));
401    src.getContained().stream()
402      .map(resource -> convertResource(resource, advisor))
403      .forEach(tgt::addContained);
404    src.getExtension().forEach(extension -> {
405
406      if (advisor.useAdvisorForExtension(ConversionContext30_40.INSTANCE.path(), extension)) {
407        org.hl7.fhir.r4.model.Extension convertExtension = new org.hl7.fhir.r4.model.Extension();
408        advisor.handleExtension(ConversionContext30_40.INSTANCE.path(), extension, convertExtension);
409        tgt.addExtension(convertExtension);
410      } else if (!advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension)&& !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) {
411        tgt.addExtension(Extension30_40.convertExtension(extension));
412      }
413    });
414    src.getModifierExtension().stream()
415      .filter(extension -> !advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension))
416      .map(Extension30_40::convertExtension)
417      .forEach(tgt::addModifierExtension);
418  }
419
420  public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src,
421                                 org.hl7.fhir.dstu3.model.DomainResource tgt,
422                                 String... extensionUrlsToIgnore) throws FHIRException {
423    copyResource(src, tgt);
424    if (src.hasText()) tgt.setText(Narrative30_40.convertNarrative(src.getText()));
425    src.getContained().stream()
426      .map(resource -> convertResource(resource, advisor))
427      .forEach(tgt::addContained);
428    src.getExtension().forEach(extension -> {
429      if (advisor.useAdvisorForExtension(ConversionContext30_40.INSTANCE.path(), extension)) {
430        org.hl7.fhir.dstu3.model.Extension convertExtension = new org.hl7.fhir.dstu3.model.Extension();
431        advisor.handleExtension(ConversionContext30_40.INSTANCE.path(), extension, convertExtension);
432        tgt.addExtension(convertExtension);
433      } else if (!advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) {
434        tgt.addExtension(Extension30_40.convertExtension(extension));
435      }
436    });
437    src.getModifierExtension().stream()
438      .filter(extension -> !advisor.ignoreExtension("", extension))//TODO add path
439      .map(Extension30_40::convertExtension)
440      .forEach(tgt::addModifierExtension);
441  }
442
443  public static org.hl7.fhir.r4.model.MedicationRequest convertMedicationRequest(org.hl7.fhir.dstu3.model.MedicationRequest src) throws FHIRException {
444    if (src == null)
445      return null;
446    org.hl7.fhir.r4.model.MedicationRequest tgt = new org.hl7.fhir.r4.model.MedicationRequest();
447    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
448    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
449      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
450    for (org.hl7.fhir.dstu3.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference30_40.convertReference(t));
451    if (src.hasGroupIdentifier())
452      tgt.setGroupIdentifier(Identifier30_40.convertIdentifier(src.getGroupIdentifier()));
453    if (src.hasStatus())
454      tgt.setStatusElement(MedicationRequest30_40.convertMedicationRequestStatus(src.getStatusElement()));
455    if (src.hasIntent())
456      tgt.setIntentElement(MedicationRequest30_40.convertMedicationRequestIntent(src.getIntentElement()));
457    if (src.hasPriority())
458      tgt.setPriorityElement(MedicationRequest30_40.convertMedicationRequestPriority(src.getPriorityElement()));
459    if (src.hasMedication())
460      tgt.setMedication(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getMedication()));
461    if (src.hasSubject())
462      tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
463    if (src.hasContext())
464      tgt.setEncounter(Reference30_40.convertReference(src.getContext()));
465    for (org.hl7.fhir.dstu3.model.Reference t : src.getSupportingInformation())
466      tgt.addSupportingInformation(Reference30_40.convertReference(t));
467    if (src.hasAuthoredOn())
468      tgt.setAuthoredOnElement(DateTime30_40.convertDateTime(src.getAuthoredOnElement()));
469    if (src.hasRecorder())
470      tgt.setRecorder(Reference30_40.convertReference(src.getRecorder()));
471    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReasonCode())
472      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
473    for (org.hl7.fhir.dstu3.model.Reference t : src.getReasonReference())
474      tgt.addReasonReference(Reference30_40.convertReference(t));
475    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_40.convertAnnotation(t));
476    for (org.hl7.fhir.dstu3.model.Dosage t : src.getDosageInstruction())
477      tgt.addDosageInstruction(Dosage30_40.convertDosage(t));
478    if (src.hasDispenseRequest())
479      tgt.setDispenseRequest(MedicationRequest30_40.convertMedicationRequestDispenseRequestComponent(src.getDispenseRequest()));
480    if (src.hasSubstitution())
481      tgt.setSubstitution(MedicationRequest30_40.convertMedicationRequestSubstitutionComponent(src.getSubstitution()));
482    if (src.hasPriorPrescription())
483      tgt.setPriorPrescription(Reference30_40.convertReference(src.getPriorPrescription()));
484    for (org.hl7.fhir.dstu3.model.Reference t : src.getDetectedIssue())
485      tgt.addDetectedIssue(Reference30_40.convertReference(t));
486    for (org.hl7.fhir.dstu3.model.Reference t : src.getEventHistory())
487      tgt.addEventHistory(Reference30_40.convertReference(t));
488    if (src.hasRequester()) {
489      if (src.getRequester().hasAgent()) {
490        tgt.setRequester(Reference30_40.convertReference(src.getRequester().getAgent()));
491      }
492      if (src.getRequester().hasOnBehalfOf()) {
493        tgt.addExtension(VersionConvertorConstants.EXT_MED_REQ_ONBEHALF,
494          Reference30_40.convertReference(src.getRequester().getOnBehalfOf()));
495      }
496    }
497    return tgt;
498  }
499}