001package org.hl7.fhir.convertors.conv30_50;
002
003import java.util.Arrays;
004
005import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_30_50;
006import org.hl7.fhir.convertors.context.ConversionContext30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Extension30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Meta30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Narrative30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Code30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Id30_50;
012import org.hl7.fhir.convertors.conv30_50.resources30_50.ActivityDefinition30_50;
013import org.hl7.fhir.convertors.conv30_50.resources30_50.ActorDefinition30_50;
014import org.hl7.fhir.convertors.conv30_50.resources30_50.AllergyIntolerance30_50;
015import org.hl7.fhir.convertors.conv30_50.resources30_50.Appointment30_50;
016import org.hl7.fhir.convertors.conv30_50.resources30_50.AppointmentResponse30_50;
017import org.hl7.fhir.convertors.conv30_50.resources30_50.AuditEvent30_50;
018import org.hl7.fhir.convertors.conv30_50.resources30_50.Basic30_50;
019import org.hl7.fhir.convertors.conv30_50.resources30_50.Binary30_50;
020import org.hl7.fhir.convertors.conv30_50.resources30_50.BodySite30_50;
021import org.hl7.fhir.convertors.conv30_50.resources30_50.Bundle30_50;
022import org.hl7.fhir.convertors.conv30_50.resources30_50.CapabilityStatement30_50;
023import org.hl7.fhir.convertors.conv30_50.resources30_50.CarePlan30_50;
024import org.hl7.fhir.convertors.conv30_50.resources30_50.CareTeam30_50;
025import org.hl7.fhir.convertors.conv30_50.resources30_50.ClinicalImpression30_50;
026import org.hl7.fhir.convertors.conv30_50.resources30_50.CodeSystem30_50;
027import org.hl7.fhir.convertors.conv30_50.resources30_50.Communication30_50;
028import org.hl7.fhir.convertors.conv30_50.resources30_50.CompartmentDefinition30_50;
029import org.hl7.fhir.convertors.conv30_50.resources30_50.Composition30_50;
030import org.hl7.fhir.convertors.conv30_50.resources30_50.ConceptMap30_50;
031import org.hl7.fhir.convertors.conv30_50.resources30_50.Condition30_50;
032import org.hl7.fhir.convertors.conv30_50.resources30_50.Consent30_50;
033import org.hl7.fhir.convertors.conv30_50.resources30_50.DataElement30_50;
034import org.hl7.fhir.convertors.conv30_50.resources30_50.DetectedIssue30_50;
035import org.hl7.fhir.convertors.conv30_50.resources30_50.DeviceUseStatement30_50;
036import org.hl7.fhir.convertors.conv30_50.resources30_50.DiagnosticReport30_50;
037import org.hl7.fhir.convertors.conv30_50.resources30_50.DocumentReference30_50;
038import org.hl7.fhir.convertors.conv30_50.resources30_50.Encounter30_50;
039import org.hl7.fhir.convertors.conv30_50.resources30_50.Endpoint30_50;
040import org.hl7.fhir.convertors.conv30_50.resources30_50.EpisodeOfCare30_50;
041import org.hl7.fhir.convertors.conv30_50.resources30_50.ExpansionProfile30_50;
042import org.hl7.fhir.convertors.conv30_50.resources30_50.FamilyMemberHistory30_50;
043import org.hl7.fhir.convertors.conv30_50.resources30_50.Flag30_50;
044import org.hl7.fhir.convertors.conv30_50.resources30_50.Goal30_50;
045import org.hl7.fhir.convertors.conv30_50.resources30_50.GraphDefinition30_50;
046import org.hl7.fhir.convertors.conv30_50.resources30_50.Group30_50;
047import org.hl7.fhir.convertors.conv30_50.resources30_50.HealthcareService30_50;
048import org.hl7.fhir.convertors.conv30_50.resources30_50.ImagingStudy30_50;
049import org.hl7.fhir.convertors.conv30_50.resources30_50.Immunization30_50;
050import org.hl7.fhir.convertors.conv30_50.resources30_50.ImplementationGuide30_50;
051import org.hl7.fhir.convertors.conv30_50.resources30_50.Library30_50;
052import org.hl7.fhir.convertors.conv30_50.resources30_50.Linkage30_50;
053import org.hl7.fhir.convertors.conv30_50.resources30_50.List30_50;
054import org.hl7.fhir.convertors.conv30_50.resources30_50.Location30_50;
055import org.hl7.fhir.convertors.conv30_50.resources30_50.Measure30_50;
056import org.hl7.fhir.convertors.conv30_50.resources30_50.Media30_50;
057import org.hl7.fhir.convertors.conv30_50.resources30_50.Medication30_50;
058import org.hl7.fhir.convertors.conv30_50.resources30_50.MedicationAdministration30_50;
059import org.hl7.fhir.convertors.conv30_50.resources30_50.MedicationDispense30_50;
060import org.hl7.fhir.convertors.conv30_50.resources30_50.MedicationRequest30_50;
061import org.hl7.fhir.convertors.conv30_50.resources30_50.MedicationStatement30_50;
062import org.hl7.fhir.convertors.conv30_50.resources30_50.MessageDefinition30_50;
063import org.hl7.fhir.convertors.conv30_50.resources30_50.MessageHeader30_50;
064import org.hl7.fhir.convertors.conv30_50.resources30_50.NamingSystem30_50;
065import org.hl7.fhir.convertors.conv30_50.resources30_50.Observation30_50;
066import org.hl7.fhir.convertors.conv30_50.resources30_50.OperationDefinition30_50;
067import org.hl7.fhir.convertors.conv30_50.resources30_50.OperationOutcome30_50;
068import org.hl7.fhir.convertors.conv30_50.resources30_50.Organization30_50;
069import org.hl7.fhir.convertors.conv30_50.resources30_50.Parameters30_50;
070import org.hl7.fhir.convertors.conv30_50.resources30_50.Patient30_50;
071import org.hl7.fhir.convertors.conv30_50.resources30_50.PaymentNotice30_50;
072import org.hl7.fhir.convertors.conv30_50.resources30_50.Person30_50;
073import org.hl7.fhir.convertors.conv30_50.resources30_50.PlanDefinition30_50;
074import org.hl7.fhir.convertors.conv30_50.resources30_50.Practitioner30_50;
075import org.hl7.fhir.convertors.conv30_50.resources30_50.PractitionerRole30_50;
076import org.hl7.fhir.convertors.conv30_50.resources30_50.Provenance30_50;
077import org.hl7.fhir.convertors.conv30_50.resources30_50.Questionnaire30_50;
078import org.hl7.fhir.convertors.conv30_50.resources30_50.QuestionnaireResponse30_50;
079import org.hl7.fhir.convertors.conv30_50.resources30_50.RelatedPerson30_50;
080import org.hl7.fhir.convertors.conv30_50.resources30_50.Requirements30_50;
081import org.hl7.fhir.convertors.conv30_50.resources30_50.RiskAssessment30_50;
082import org.hl7.fhir.convertors.conv30_50.resources30_50.Schedule30_50;
083import org.hl7.fhir.convertors.conv30_50.resources30_50.SearchParameter30_50;
084import org.hl7.fhir.convertors.conv30_50.resources30_50.Slot30_50;
085import org.hl7.fhir.convertors.conv30_50.resources30_50.Specimen30_50;
086import org.hl7.fhir.convertors.conv30_50.resources30_50.StructureDefinition30_50;
087import org.hl7.fhir.convertors.conv30_50.resources30_50.StructureMap30_50;
088import org.hl7.fhir.convertors.conv30_50.resources30_50.Substance30_50;
089import org.hl7.fhir.convertors.conv30_50.resources30_50.SupplyDelivery30_50;
090import org.hl7.fhir.convertors.conv30_50.resources30_50.TestPlan30_50;
091import org.hl7.fhir.convertors.conv30_50.resources30_50.TestReport30_50;
092import org.hl7.fhir.convertors.conv30_50.resources30_50.TestScript30_50;
093import org.hl7.fhir.convertors.conv30_50.resources30_50.ValueSet30_50;
094import org.hl7.fhir.dstu3.model.Basic;
095import org.hl7.fhir.exceptions.FHIRException;
096
097public class Resource30_50 {
098
099  public final BaseAdvisor_30_50 advisor;
100
101  public Resource30_50(BaseAdvisor_30_50 advisor) {
102    this.advisor = advisor;
103  }
104
105  public void copyResource(org.hl7.fhir.dstu3.model.Resource src, org.hl7.fhir.r5.model.Resource tgt) throws FHIRException {
106    if (src.hasId()) tgt.setIdElement(Id30_50.convertId(src.getIdElement()));
107    if (src.hasMeta()) tgt.setMeta(Meta30_50.convertMeta(src.getMeta()));
108    if (src.hasImplicitRules()) tgt.setImplicitRules(src.getImplicitRules());
109    if (src.hasLanguage()) tgt.setLanguageElement(Code30_50.convertCode(src.getLanguageElement()));
110  }
111
112  public void copyResource(org.hl7.fhir.r5.model.Resource src, org.hl7.fhir.dstu3.model.Resource tgt) throws FHIRException {
113    if (src.hasId()) tgt.setIdElement(Id30_50.convertId(src.getIdElement()));
114    if (src.hasMeta()) tgt.setMeta(Meta30_50.convertMeta(src.getMeta()));
115    if (src.hasImplicitRules()) tgt.setImplicitRules(src.getImplicitRules());
116    if (src.hasLanguage()) tgt.setLanguageElement(Code30_50.convertCode(src.getLanguageElement()));
117  }
118
119  public org.hl7.fhir.r5.model.Resource convertResource(org.hl7.fhir.dstu3.model.Resource src) throws FHIRException {
120    if (src == null) return null;
121    if (src instanceof org.hl7.fhir.dstu3.model.Parameters)
122      return Parameters30_50.convertParameters((org.hl7.fhir.dstu3.model.Parameters) src);
123    if (src instanceof org.hl7.fhir.dstu3.model.ActivityDefinition)
124      return ActivityDefinition30_50.convertActivityDefinition((org.hl7.fhir.dstu3.model.ActivityDefinition) src);
125    if (src instanceof org.hl7.fhir.dstu3.model.AllergyIntolerance)
126      return AllergyIntolerance30_50.convertAllergyIntolerance((org.hl7.fhir.dstu3.model.AllergyIntolerance) src);
127    if (src instanceof org.hl7.fhir.dstu3.model.Appointment)
128      return Appointment30_50.convertAppointment((org.hl7.fhir.dstu3.model.Appointment) src);
129    if (src instanceof org.hl7.fhir.dstu3.model.AppointmentResponse)
130      return AppointmentResponse30_50.convertAppointmentResponse((org.hl7.fhir.dstu3.model.AppointmentResponse) src);
131    if (src instanceof org.hl7.fhir.dstu3.model.AuditEvent)
132      return AuditEvent30_50.convertAuditEvent((org.hl7.fhir.dstu3.model.AuditEvent) src);
133    if (src instanceof org.hl7.fhir.dstu3.model.Basic) {
134      org.hl7.fhir.dstu3.model.Basic basic = (Basic) src;
135      if (basic.getCode().hasCoding("http://hl7.org/fhir/fhir-types", "ActorDefinition")) {
136        return ActorDefinition30_50.convertActorDefinition((org.hl7.fhir.dstu3.model.Basic) src);
137      } else if (basic.getCode().hasCoding("http://hl7.org/fhir/fhir-types", "Requirements")) {
138        return Requirements30_50.convertRequirements((org.hl7.fhir.dstu3.model.Basic) src);
139      } else if (basic.getCode().hasCoding("http://hl7.org/fhir/fhir-types", "TestPlan")) {
140        return TestPlan30_50.convertTestPlan((org.hl7.fhir.dstu3.model.Basic) src);
141      } else {
142        return Basic30_50.convertBasic((org.hl7.fhir.dstu3.model.Basic) src);
143      }
144    }
145    if (src instanceof org.hl7.fhir.dstu3.model.Binary)
146      return Binary30_50.convertBinary((org.hl7.fhir.dstu3.model.Binary) src);
147    if (src instanceof org.hl7.fhir.dstu3.model.BodySite)
148      return BodySite30_50.convertBodySite((org.hl7.fhir.dstu3.model.BodySite) src);
149    if (src instanceof org.hl7.fhir.dstu3.model.Bundle)
150      return Bundle30_50.convertBundle((org.hl7.fhir.dstu3.model.Bundle) src);
151    if (src instanceof org.hl7.fhir.dstu3.model.CapabilityStatement)
152      return CapabilityStatement30_50.convertCapabilityStatement((org.hl7.fhir.dstu3.model.CapabilityStatement) src);
153    if (src instanceof org.hl7.fhir.dstu3.model.CarePlan)
154      return CarePlan30_50.convertCarePlan((org.hl7.fhir.dstu3.model.CarePlan) src);
155    if (src instanceof org.hl7.fhir.dstu3.model.CareTeam)
156      return CareTeam30_50.convertCareTeam((org.hl7.fhir.dstu3.model.CareTeam) src);
157    if (src instanceof org.hl7.fhir.dstu3.model.ClinicalImpression)
158      return ClinicalImpression30_50.convertClinicalImpression((org.hl7.fhir.dstu3.model.ClinicalImpression) src);
159    if (src instanceof org.hl7.fhir.dstu3.model.CodeSystem)
160      return CodeSystem30_50.convertCodeSystem((org.hl7.fhir.dstu3.model.CodeSystem) src);
161    if (src instanceof org.hl7.fhir.dstu3.model.Communication)
162      return Communication30_50.convertCommunication((org.hl7.fhir.dstu3.model.Communication) src);
163    if (src instanceof org.hl7.fhir.dstu3.model.CompartmentDefinition)
164      return CompartmentDefinition30_50.convertCompartmentDefinition((org.hl7.fhir.dstu3.model.CompartmentDefinition) src);
165    if (src instanceof org.hl7.fhir.dstu3.model.Composition)
166      return Composition30_50.convertComposition((org.hl7.fhir.dstu3.model.Composition) src);
167    if (src instanceof org.hl7.fhir.dstu3.model.ConceptMap)
168      return ConceptMap30_50.convertConceptMap((org.hl7.fhir.dstu3.model.ConceptMap) src);
169    if (src instanceof org.hl7.fhir.dstu3.model.Condition)
170      return Condition30_50.convertCondition((org.hl7.fhir.dstu3.model.Condition) src);
171    if (src instanceof org.hl7.fhir.dstu3.model.Consent)
172      return Consent30_50.convertConsent((org.hl7.fhir.dstu3.model.Consent) src);
173    if (src instanceof org.hl7.fhir.dstu3.model.DataElement)
174      return DataElement30_50.convertDataElement((org.hl7.fhir.dstu3.model.DataElement) src);
175    if (src instanceof org.hl7.fhir.dstu3.model.DetectedIssue)
176      return DetectedIssue30_50.convertDetectedIssue((org.hl7.fhir.dstu3.model.DetectedIssue) src);
177    if (src instanceof org.hl7.fhir.dstu3.model.DeviceUseStatement)
178      return DeviceUseStatement30_50.convertDeviceUseStatement((org.hl7.fhir.dstu3.model.DeviceUseStatement) src);
179    if (src instanceof org.hl7.fhir.dstu3.model.DiagnosticReport)
180      return DiagnosticReport30_50.convertDiagnosticReport((org.hl7.fhir.dstu3.model.DiagnosticReport) src);
181    if (src instanceof org.hl7.fhir.dstu3.model.DocumentReference)
182      return DocumentReference30_50.convertDocumentReference((org.hl7.fhir.dstu3.model.DocumentReference) src);
183    if (src instanceof org.hl7.fhir.dstu3.model.Encounter)
184      return Encounter30_50.convertEncounter((org.hl7.fhir.dstu3.model.Encounter) src);
185    if (src instanceof org.hl7.fhir.dstu3.model.Endpoint)
186      return Endpoint30_50.convertEndpoint((org.hl7.fhir.dstu3.model.Endpoint) src);
187    if (src instanceof org.hl7.fhir.dstu3.model.EpisodeOfCare)
188      return EpisodeOfCare30_50.convertEpisodeOfCare((org.hl7.fhir.dstu3.model.EpisodeOfCare) src);
189    if (src instanceof org.hl7.fhir.dstu3.model.ExpansionProfile)
190      return ExpansionProfile30_50.convertExpansionProfile((org.hl7.fhir.dstu3.model.ExpansionProfile) src);
191    if (src instanceof org.hl7.fhir.dstu3.model.FamilyMemberHistory)
192      return FamilyMemberHistory30_50.convertFamilyMemberHistory((org.hl7.fhir.dstu3.model.FamilyMemberHistory) src);
193    if (src instanceof org.hl7.fhir.dstu3.model.Flag) return Flag30_50.convertFlag((org.hl7.fhir.dstu3.model.Flag) src);
194    if (src instanceof org.hl7.fhir.dstu3.model.Goal) return Goal30_50.convertGoal((org.hl7.fhir.dstu3.model.Goal) src);
195    if (src instanceof org.hl7.fhir.dstu3.model.GraphDefinition)
196      return GraphDefinition30_50.convertGraphDefinition((org.hl7.fhir.dstu3.model.GraphDefinition) src);
197    if (src instanceof org.hl7.fhir.dstu3.model.Group)
198      return Group30_50.convertGroup((org.hl7.fhir.dstu3.model.Group) src);
199    if (src instanceof org.hl7.fhir.dstu3.model.HealthcareService)
200      return HealthcareService30_50.convertHealthcareService((org.hl7.fhir.dstu3.model.HealthcareService) src);
201    if (src instanceof org.hl7.fhir.dstu3.model.ImagingStudy)
202      return ImagingStudy30_50.convertImagingStudy((org.hl7.fhir.dstu3.model.ImagingStudy) src);
203    if (src instanceof org.hl7.fhir.dstu3.model.Immunization)
204      return Immunization30_50.convertImmunization((org.hl7.fhir.dstu3.model.Immunization) src);
205    if (src instanceof org.hl7.fhir.dstu3.model.ImplementationGuide)
206      return ImplementationGuide30_50.convertImplementationGuide((org.hl7.fhir.dstu3.model.ImplementationGuide) src);
207    if (src instanceof org.hl7.fhir.dstu3.model.Library)
208      return Library30_50.convertLibrary((org.hl7.fhir.dstu3.model.Library) src);
209    if (src instanceof org.hl7.fhir.dstu3.model.Linkage)
210      return Linkage30_50.convertLinkage((org.hl7.fhir.dstu3.model.Linkage) src);
211    if (src instanceof org.hl7.fhir.dstu3.model.ListResource)
212      return List30_50.convertList((org.hl7.fhir.dstu3.model.ListResource) src);
213    if (src instanceof org.hl7.fhir.dstu3.model.Location)
214      return Location30_50.convertLocation((org.hl7.fhir.dstu3.model.Location) src);
215    if (src instanceof org.hl7.fhir.dstu3.model.Measure)
216      return Measure30_50.convertMeasure((org.hl7.fhir.dstu3.model.Measure) src);
217    if (src instanceof org.hl7.fhir.dstu3.model.Media)
218      return Media30_50.convertMedia((org.hl7.fhir.dstu3.model.Media) src);
219    if (src instanceof org.hl7.fhir.dstu3.model.Medication)
220      return Medication30_50.convertMedication((org.hl7.fhir.dstu3.model.Medication) src);
221    if (src instanceof org.hl7.fhir.dstu3.model.MedicationAdministration)
222      return MedicationAdministration30_50.convertMedicationAdministration((org.hl7.fhir.dstu3.model.MedicationAdministration) src);
223    if (src instanceof org.hl7.fhir.dstu3.model.MedicationDispense)
224      return MedicationDispense30_50.convertMedicationDispense((org.hl7.fhir.dstu3.model.MedicationDispense) src);
225    if (src instanceof org.hl7.fhir.dstu3.model.MedicationRequest)
226      return MedicationRequest30_50.convertMedicationRequest((org.hl7.fhir.dstu3.model.MedicationRequest) src);
227    if (src instanceof org.hl7.fhir.dstu3.model.MedicationStatement)
228      return MedicationStatement30_50.convertMedicationStatement((org.hl7.fhir.dstu3.model.MedicationStatement) src);
229    if (src instanceof org.hl7.fhir.dstu3.model.MessageDefinition)
230      return MessageDefinition30_50.convertMessageDefinition((org.hl7.fhir.dstu3.model.MessageDefinition) src);
231    if (src instanceof org.hl7.fhir.dstu3.model.MessageHeader)
232      return MessageHeader30_50.convertMessageHeader((org.hl7.fhir.dstu3.model.MessageHeader) src);
233    if (src instanceof org.hl7.fhir.dstu3.model.NamingSystem)
234      return NamingSystem30_50.convertNamingSystem((org.hl7.fhir.dstu3.model.NamingSystem) src);
235    if (src instanceof org.hl7.fhir.dstu3.model.Observation)
236      return Observation30_50.convertObservation((org.hl7.fhir.dstu3.model.Observation) src);
237    if (src instanceof org.hl7.fhir.dstu3.model.OperationDefinition)
238      return OperationDefinition30_50.convertOperationDefinition((org.hl7.fhir.dstu3.model.OperationDefinition) src);
239    if (src instanceof org.hl7.fhir.dstu3.model.OperationOutcome)
240      return OperationOutcome30_50.convertOperationOutcome((org.hl7.fhir.dstu3.model.OperationOutcome) src);
241    if (src instanceof org.hl7.fhir.dstu3.model.Organization)
242      return Organization30_50.convertOrganization((org.hl7.fhir.dstu3.model.Organization) src);
243    if (src instanceof org.hl7.fhir.dstu3.model.Patient)
244      return Patient30_50.convertPatient((org.hl7.fhir.dstu3.model.Patient) src);
245    if (src instanceof org.hl7.fhir.dstu3.model.PaymentNotice)
246      return PaymentNotice30_50.convertPaymentNotice((org.hl7.fhir.dstu3.model.PaymentNotice) src);
247    if (src instanceof org.hl7.fhir.dstu3.model.Person)
248      return Person30_50.convertPerson((org.hl7.fhir.dstu3.model.Person) src);
249    if (src instanceof org.hl7.fhir.dstu3.model.PlanDefinition)
250      return PlanDefinition30_50.convertPlanDefinition((org.hl7.fhir.dstu3.model.PlanDefinition) src);
251    if (src instanceof org.hl7.fhir.dstu3.model.Practitioner)
252      return Practitioner30_50.convertPractitioner((org.hl7.fhir.dstu3.model.Practitioner) src);
253    if (src instanceof org.hl7.fhir.dstu3.model.PractitionerRole)
254      return PractitionerRole30_50.convertPractitionerRole((org.hl7.fhir.dstu3.model.PractitionerRole) src);
255    if (src instanceof org.hl7.fhir.dstu3.model.Provenance)
256      return Provenance30_50.convertProvenance((org.hl7.fhir.dstu3.model.Provenance) src);
257    if (src instanceof org.hl7.fhir.dstu3.model.Questionnaire)
258      return Questionnaire30_50.convertQuestionnaire((org.hl7.fhir.dstu3.model.Questionnaire) src);
259    if (src instanceof org.hl7.fhir.dstu3.model.QuestionnaireResponse)
260      return QuestionnaireResponse30_50.convertQuestionnaireResponse((org.hl7.fhir.dstu3.model.QuestionnaireResponse) src);
261    if (src instanceof org.hl7.fhir.dstu3.model.RelatedPerson)
262      return RelatedPerson30_50.convertRelatedPerson((org.hl7.fhir.dstu3.model.RelatedPerson) src);
263    if (src instanceof org.hl7.fhir.dstu3.model.RiskAssessment)
264      return RiskAssessment30_50.convertRiskAssessment((org.hl7.fhir.dstu3.model.RiskAssessment) src);
265    if (src instanceof org.hl7.fhir.dstu3.model.Schedule)
266      return Schedule30_50.convertSchedule((org.hl7.fhir.dstu3.model.Schedule) src);
267    if (src instanceof org.hl7.fhir.dstu3.model.SearchParameter)
268      return SearchParameter30_50.convertSearchParameter((org.hl7.fhir.dstu3.model.SearchParameter) src);
269    if (src instanceof org.hl7.fhir.dstu3.model.Slot) return Slot30_50.convertSlot((org.hl7.fhir.dstu3.model.Slot) src);
270    if (src instanceof org.hl7.fhir.dstu3.model.Specimen)
271      return Specimen30_50.convertSpecimen((org.hl7.fhir.dstu3.model.Specimen) src);
272    if (src instanceof org.hl7.fhir.dstu3.model.StructureDefinition)
273      return StructureDefinition30_50.convertStructureDefinition((org.hl7.fhir.dstu3.model.StructureDefinition) src);
274    if (src instanceof org.hl7.fhir.dstu3.model.StructureMap)
275      return StructureMap30_50.convertStructureMap((org.hl7.fhir.dstu3.model.StructureMap) src);
276    if (src instanceof org.hl7.fhir.dstu3.model.Substance)
277      return Substance30_50.convertSubstance((org.hl7.fhir.dstu3.model.Substance) src);
278    if (src instanceof org.hl7.fhir.dstu3.model.SupplyDelivery)
279      return SupplyDelivery30_50.convertSupplyDelivery((org.hl7.fhir.dstu3.model.SupplyDelivery) src);
280    if (src instanceof org.hl7.fhir.dstu3.model.TestReport)
281      return TestReport30_50.convertTestReport((org.hl7.fhir.dstu3.model.TestReport) src);
282    if (src instanceof org.hl7.fhir.dstu3.model.TestScript)
283      return TestScript30_50.convertTestScript((org.hl7.fhir.dstu3.model.TestScript) src);
284    if (src instanceof org.hl7.fhir.dstu3.model.ValueSet)
285      return ValueSet30_50.convertValueSet((org.hl7.fhir.dstu3.model.ValueSet) src);
286    if (advisor.failFastOnNullOrUnknownEntry()) {
287      throw new FHIRException("The resource " + src.fhirType()+" cannot be converted from R3 to R5");
288    }
289    else return null;
290  }
291
292  public org.hl7.fhir.dstu3.model.Resource convertResource(org.hl7.fhir.r5.model.Resource src) throws FHIRException {
293    if (src == null) return null;
294    if (src instanceof org.hl7.fhir.r5.model.Parameters) {
295      if (((org.hl7.fhir.r5.model.Parameters) src).hasParameterValue("profile-url"))
296        return ExpansionProfile30_50.convertExpansionProfile((org.hl7.fhir.r5.model.Parameters) src);
297      else return Parameters30_50.convertParameters((org.hl7.fhir.r5.model.Parameters) src);
298    }
299    if (src instanceof org.hl7.fhir.r5.model.ActivityDefinition)
300      return ActivityDefinition30_50.convertActivityDefinition((org.hl7.fhir.r5.model.ActivityDefinition) src);
301    if (src instanceof org.hl7.fhir.r5.model.ActorDefinition)
302      return ActorDefinition30_50.convertActorDefinition((org.hl7.fhir.r5.model.ActorDefinition) src);
303    if (src instanceof org.hl7.fhir.r5.model.AllergyIntolerance)
304      return AllergyIntolerance30_50.convertAllergyIntolerance((org.hl7.fhir.r5.model.AllergyIntolerance) src);
305    if (src instanceof org.hl7.fhir.r5.model.Appointment)
306      return Appointment30_50.convertAppointment((org.hl7.fhir.r5.model.Appointment) src);
307    if (src instanceof org.hl7.fhir.r5.model.AppointmentResponse)
308      return AppointmentResponse30_50.convertAppointmentResponse((org.hl7.fhir.r5.model.AppointmentResponse) src);
309    if (src instanceof org.hl7.fhir.r5.model.AuditEvent)
310      return AuditEvent30_50.convertAuditEvent((org.hl7.fhir.r5.model.AuditEvent) src);
311    if (src instanceof org.hl7.fhir.r5.model.Basic)
312      return Basic30_50.convertBasic((org.hl7.fhir.r5.model.Basic) src);
313    if (src instanceof org.hl7.fhir.r5.model.Binary)
314      return Binary30_50.convertBinary((org.hl7.fhir.r5.model.Binary) src);
315    if (src instanceof org.hl7.fhir.r5.model.BodyStructure)
316      return BodySite30_50.convertBodySite((org.hl7.fhir.r5.model.BodyStructure) src);
317    if (src instanceof org.hl7.fhir.r5.model.Bundle)
318      return Bundle30_50.convertBundle((org.hl7.fhir.r5.model.Bundle) src);
319    if (src instanceof org.hl7.fhir.r5.model.CapabilityStatement)
320      return CapabilityStatement30_50.convertCapabilityStatement((org.hl7.fhir.r5.model.CapabilityStatement) src);
321    if (src instanceof org.hl7.fhir.r5.model.CarePlan)
322      return CarePlan30_50.convertCarePlan((org.hl7.fhir.r5.model.CarePlan) src);
323    if (src instanceof org.hl7.fhir.r5.model.CareTeam)
324      return CareTeam30_50.convertCareTeam((org.hl7.fhir.r5.model.CareTeam) src);
325    if (src instanceof org.hl7.fhir.r5.model.ClinicalImpression)
326      return ClinicalImpression30_50.convertClinicalImpression((org.hl7.fhir.r5.model.ClinicalImpression) src);
327    if (src instanceof org.hl7.fhir.r5.model.CodeSystem)
328      return CodeSystem30_50.convertCodeSystem((org.hl7.fhir.r5.model.CodeSystem) src);
329    if (src instanceof org.hl7.fhir.r5.model.Communication)
330      return Communication30_50.convertCommunication((org.hl7.fhir.r5.model.Communication) src);
331    if (src instanceof org.hl7.fhir.r5.model.CompartmentDefinition)
332      return CompartmentDefinition30_50.convertCompartmentDefinition((org.hl7.fhir.r5.model.CompartmentDefinition) src);
333    if (src instanceof org.hl7.fhir.r5.model.Composition)
334      return Composition30_50.convertComposition((org.hl7.fhir.r5.model.Composition) src);
335    if (src instanceof org.hl7.fhir.r5.model.ConceptMap)
336      return ConceptMap30_50.convertConceptMap((org.hl7.fhir.r5.model.ConceptMap) src);
337    if (src instanceof org.hl7.fhir.r5.model.Condition)
338      return Condition30_50.convertCondition((org.hl7.fhir.r5.model.Condition) src);
339    if (src instanceof org.hl7.fhir.r5.model.Consent)
340      return Consent30_50.convertConsent((org.hl7.fhir.r5.model.Consent) src);
341    if (src instanceof org.hl7.fhir.r5.model.DetectedIssue)
342      return DetectedIssue30_50.convertDetectedIssue((org.hl7.fhir.r5.model.DetectedIssue) src);
343    if (src instanceof org.hl7.fhir.r5.model.DeviceUsage)
344      return DeviceUseStatement30_50.convertDeviceUseStatement((org.hl7.fhir.r5.model.DeviceUsage) src);
345    if (src instanceof org.hl7.fhir.r5.model.DiagnosticReport)
346      return DiagnosticReport30_50.convertDiagnosticReport((org.hl7.fhir.r5.model.DiagnosticReport) src);
347    if (src instanceof org.hl7.fhir.r5.model.DocumentReference)
348      return DocumentReference30_50.convertDocumentReference((org.hl7.fhir.r5.model.DocumentReference) src);
349    if (src instanceof org.hl7.fhir.r5.model.Encounter)
350      return Encounter30_50.convertEncounter((org.hl7.fhir.r5.model.Encounter) src);
351    if (src instanceof org.hl7.fhir.r5.model.Endpoint)
352      return Endpoint30_50.convertEndpoint((org.hl7.fhir.r5.model.Endpoint) src);
353    if (src instanceof org.hl7.fhir.r5.model.EpisodeOfCare)
354      return EpisodeOfCare30_50.convertEpisodeOfCare((org.hl7.fhir.r5.model.EpisodeOfCare) src);
355    if (src instanceof org.hl7.fhir.r5.model.FamilyMemberHistory)
356      return FamilyMemberHistory30_50.convertFamilyMemberHistory((org.hl7.fhir.r5.model.FamilyMemberHistory) src);
357    if (src instanceof org.hl7.fhir.r5.model.Flag) return Flag30_50.convertFlag((org.hl7.fhir.r5.model.Flag) src);
358    if (src instanceof org.hl7.fhir.r5.model.Goal) return Goal30_50.convertGoal((org.hl7.fhir.r5.model.Goal) src);
359    if (src instanceof org.hl7.fhir.r5.model.GraphDefinition)
360      return GraphDefinition30_50.convertGraphDefinition((org.hl7.fhir.r5.model.GraphDefinition) src);
361    if (src instanceof org.hl7.fhir.r5.model.Group) return Group30_50.convertGroup((org.hl7.fhir.r5.model.Group) src);
362    if (src instanceof org.hl7.fhir.r5.model.HealthcareService)
363      return HealthcareService30_50.convertHealthcareService((org.hl7.fhir.r5.model.HealthcareService) src);
364    if (src instanceof org.hl7.fhir.r5.model.ImagingStudy)
365      return ImagingStudy30_50.convertImagingStudy((org.hl7.fhir.r5.model.ImagingStudy) src);
366    if (src instanceof org.hl7.fhir.r5.model.Immunization)
367      return Immunization30_50.convertImmunization((org.hl7.fhir.r5.model.Immunization) src);
368    if (src instanceof org.hl7.fhir.r5.model.ImplementationGuide)
369      return ImplementationGuide30_50.convertImplementationGuide((org.hl7.fhir.r5.model.ImplementationGuide) src);
370    if (src instanceof org.hl7.fhir.r5.model.Library)
371      return Library30_50.convertLibrary((org.hl7.fhir.r5.model.Library) src);
372    if (src instanceof org.hl7.fhir.r5.model.Linkage)
373      return Linkage30_50.convertLinkage((org.hl7.fhir.r5.model.Linkage) src);
374    if (src instanceof org.hl7.fhir.r5.model.ListResource)
375      return List30_50.convertList((org.hl7.fhir.r5.model.ListResource) src);
376    if (src instanceof org.hl7.fhir.r5.model.Location)
377      return Location30_50.convertLocation((org.hl7.fhir.r5.model.Location) src);
378    if (src instanceof org.hl7.fhir.r5.model.Measure)
379      return Measure30_50.convertMeasure((org.hl7.fhir.r5.model.Measure) src);
380    if (src instanceof org.hl7.fhir.r5.model.DocumentReference)
381      return Media30_50.convertMedia((org.hl7.fhir.r5.model.DocumentReference) src);
382    if (src instanceof org.hl7.fhir.r5.model.Medication)
383      return Medication30_50.convertMedication((org.hl7.fhir.r5.model.Medication) src);
384    if (src instanceof org.hl7.fhir.r5.model.MedicationAdministration)
385      return MedicationAdministration30_50.convertMedicationAdministration((org.hl7.fhir.r5.model.MedicationAdministration) src);
386    if (src instanceof org.hl7.fhir.r5.model.MedicationDispense)
387      return MedicationDispense30_50.convertMedicationDispense((org.hl7.fhir.r5.model.MedicationDispense) src);
388    if (src instanceof org.hl7.fhir.r5.model.MedicationRequest)
389      return MedicationRequest30_50.convertMedicationRequest((org.hl7.fhir.r5.model.MedicationRequest) src);
390    if (src instanceof org.hl7.fhir.r5.model.MedicationStatement)
391      return MedicationStatement30_50.convertMedicationStatement((org.hl7.fhir.r5.model.MedicationStatement) src);
392    if (src instanceof org.hl7.fhir.r5.model.MessageDefinition)
393      return MessageDefinition30_50.convertMessageDefinition((org.hl7.fhir.r5.model.MessageDefinition) src);
394    if (src instanceof org.hl7.fhir.r5.model.MessageHeader)
395      return MessageHeader30_50.convertMessageHeader((org.hl7.fhir.r5.model.MessageHeader) src);
396    if (src instanceof org.hl7.fhir.r5.model.NamingSystem)
397      return NamingSystem30_50.convertNamingSystem((org.hl7.fhir.r5.model.NamingSystem) src);
398    if (src instanceof org.hl7.fhir.r5.model.Observation)
399      return Observation30_50.convertObservation((org.hl7.fhir.r5.model.Observation) src);
400    if (src instanceof org.hl7.fhir.r5.model.OperationDefinition)
401      return OperationDefinition30_50.convertOperationDefinition((org.hl7.fhir.r5.model.OperationDefinition) src);
402    if (src instanceof org.hl7.fhir.r5.model.OperationOutcome)
403      return OperationOutcome30_50.convertOperationOutcome((org.hl7.fhir.r5.model.OperationOutcome) src);
404    if (src instanceof org.hl7.fhir.r5.model.Organization)
405      return Organization30_50.convertOrganization((org.hl7.fhir.r5.model.Organization) src);
406    if (src instanceof org.hl7.fhir.r5.model.Patient)
407      return Patient30_50.convertPatient((org.hl7.fhir.r5.model.Patient) src);
408    if (src instanceof org.hl7.fhir.r5.model.PaymentNotice)
409      return PaymentNotice30_50.convertPaymentNotice((org.hl7.fhir.r5.model.PaymentNotice) src);
410    if (src instanceof org.hl7.fhir.r5.model.Person)
411      return Person30_50.convertPerson((org.hl7.fhir.r5.model.Person) src);
412    if (src instanceof org.hl7.fhir.r5.model.PlanDefinition)
413      return PlanDefinition30_50.convertPlanDefinition((org.hl7.fhir.r5.model.PlanDefinition) src);
414    if (src instanceof org.hl7.fhir.r5.model.Practitioner)
415      return Practitioner30_50.convertPractitioner((org.hl7.fhir.r5.model.Practitioner) src);
416    if (src instanceof org.hl7.fhir.r5.model.PractitionerRole)
417      return PractitionerRole30_50.convertPractitionerRole((org.hl7.fhir.r5.model.PractitionerRole) src);
418    if (src instanceof org.hl7.fhir.r5.model.Provenance)
419      return Provenance30_50.convertProvenance((org.hl7.fhir.r5.model.Provenance) src);
420    if (src instanceof org.hl7.fhir.r5.model.Questionnaire)
421      return Questionnaire30_50.convertQuestionnaire((org.hl7.fhir.r5.model.Questionnaire) src);
422    if (src instanceof org.hl7.fhir.r5.model.QuestionnaireResponse)
423      return QuestionnaireResponse30_50.convertQuestionnaireResponse((org.hl7.fhir.r5.model.QuestionnaireResponse) src);
424    if (src instanceof org.hl7.fhir.r5.model.RelatedPerson)
425      return RelatedPerson30_50.convertRelatedPerson((org.hl7.fhir.r5.model.RelatedPerson) src);
426    if (src instanceof org.hl7.fhir.r5.model.Requirements)
427      return Requirements30_50.convertRequirements((org.hl7.fhir.r5.model.Requirements) src);
428    if (src instanceof org.hl7.fhir.r5.model.RiskAssessment)
429      return RiskAssessment30_50.convertRiskAssessment((org.hl7.fhir.r5.model.RiskAssessment) src);
430    if (src instanceof org.hl7.fhir.r5.model.Schedule)
431      return Schedule30_50.convertSchedule((org.hl7.fhir.r5.model.Schedule) src);
432    if (src instanceof org.hl7.fhir.r5.model.SearchParameter)
433      return SearchParameter30_50.convertSearchParameter((org.hl7.fhir.r5.model.SearchParameter) src);
434    if (src instanceof org.hl7.fhir.r5.model.Slot) return Slot30_50.convertSlot((org.hl7.fhir.r5.model.Slot) src);
435    if (src instanceof org.hl7.fhir.r5.model.Specimen)
436      return Specimen30_50.convertSpecimen((org.hl7.fhir.r5.model.Specimen) src);
437    if (src instanceof org.hl7.fhir.r5.model.StructureDefinition)
438      return StructureDefinition30_50.convertStructureDefinition((org.hl7.fhir.r5.model.StructureDefinition) src);
439    if (src instanceof org.hl7.fhir.r5.model.StructureMap)
440      return StructureMap30_50.convertStructureMap((org.hl7.fhir.r5.model.StructureMap) src);
441    if (src instanceof org.hl7.fhir.r5.model.Substance)
442      return Substance30_50.convertSubstance((org.hl7.fhir.r5.model.Substance) src);
443    if (src instanceof org.hl7.fhir.r5.model.SupplyDelivery)
444      return SupplyDelivery30_50.convertSupplyDelivery((org.hl7.fhir.r5.model.SupplyDelivery) src);
445    if (src instanceof org.hl7.fhir.r5.model.TestPlan)
446      return TestPlan30_50.convertTestPlan((org.hl7.fhir.r5.model.TestPlan) src);
447    if (src instanceof org.hl7.fhir.r5.model.TestReport)
448      return TestReport30_50.convertTestReport((org.hl7.fhir.r5.model.TestReport) src);
449    if (src instanceof org.hl7.fhir.r5.model.TestScript)
450      return TestScript30_50.convertTestScript((org.hl7.fhir.r5.model.TestScript) src);
451    if (src instanceof org.hl7.fhir.r5.model.ValueSet)
452      return ValueSet30_50.convertValueSet((org.hl7.fhir.r5.model.ValueSet) src);
453    if (advisor.failFastOnNullOrUnknownEntry()) {
454      throw new FHIRException("The resource " + src.fhirType()+" cannot be converted from R5 to R3");
455    } else {
456      return null;
457    }
458  }
459
460  public void copyDomainResource(org.hl7.fhir.dstu3.model.DomainResource src,
461                                 org.hl7.fhir.r5.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException {
462    copyResource(src, tgt);
463    if (src.hasText()) tgt.setText(Narrative30_50.convertNarrative(src.getText()));
464    src.getContained().stream()
465      .map(this::convertResource)
466      .forEach(tgt::addContained);
467    src.getExtension().forEach(extension -> {
468      if (advisor.useAdvisorForExtension(ConversionContext30_50.INSTANCE.path(), extension)) {
469        org.hl7.fhir.r5.model.Extension convertExtension = new org.hl7.fhir.r5.model.Extension();
470        advisor.handleExtension(ConversionContext30_50.INSTANCE.path(), extension, convertExtension);
471        tgt.addExtension(convertExtension);
472      } else if (!advisor.ignoreExtension(ConversionContext30_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) {
473        tgt.addExtension(Extension30_50.convertExtension(extension));
474      }
475    });
476    src.getModifierExtension().stream()
477      .filter(extension -> !advisor.ignoreExtension(ConversionContext30_50.INSTANCE.path(), extension))
478      .map(Extension30_50::convertExtension)
479      .forEach(tgt::addModifierExtension);
480  }
481
482  public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src,
483                                 org.hl7.fhir.dstu3.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException {
484    copyResource(src, tgt);
485    if (src.hasText()) tgt.setText(Narrative30_50.convertNarrative(src.getText()));
486    src.getContained().stream()
487      .map(this::convertResource)
488      .forEach(tgt::addContained);
489    src.getExtension().forEach(extension -> {
490      if (advisor.useAdvisorForExtension(ConversionContext30_50.INSTANCE.path(), extension)) {
491        org.hl7.fhir.dstu3.model.Extension convertExtension = new org.hl7.fhir.dstu3.model.Extension();
492        advisor.handleExtension(ConversionContext30_50.INSTANCE.path(), extension, convertExtension);
493        tgt.addExtension(convertExtension);
494      } else if (!advisor.ignoreExtension(ConversionContext30_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) {
495        tgt.addExtension(Extension30_50.convertExtension(extension));
496      }
497    });
498    src.getModifierExtension().stream()
499      .filter(extension -> !advisor.ignoreExtension(ConversionContext30_50.INSTANCE.path(), extension))
500      .map(Extension30_50::convertExtension)
501      .forEach(tgt::addModifierExtension);
502  }
503}