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