001package org.hl7.fhir.convertors.conv10_40.resources10_40; 002 003import org.hl7.fhir.convertors.context.ConversionContext10_40; 004import org.hl7.fhir.convertors.conv10_40.datatypes10_40.Reference10_40; 005import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.*; 006import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.DateTime10_40; 007import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.String10_40; 008import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.UnsignedInt10_40; 009import org.hl7.fhir.dstu2.model.MedicationOrder; 010import org.hl7.fhir.exceptions.FHIRException; 011import org.hl7.fhir.r4.model.Dosage; 012 013public class MedicationRequest10_40 { 014 public static org.hl7.fhir.r4.model.MedicationRequest convertMedicationRequest(org.hl7.fhir.dstu2.model.MedicationOrder src) throws FHIRException { 015 if (src == null) 016 return null; 017 org.hl7.fhir.r4.model.MedicationRequest tgt = new org.hl7.fhir.r4.model.MedicationRequest(); 018 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt); 019 tgt.setIntent(org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestIntent.ORDER); 020 for (org.hl7.fhir.dstu2.model.Identifier identifier : src.getIdentifier()) 021 tgt.addIdentifier(Identifier10_40.convertIdentifier(identifier)); 022 if (src.hasDateWritten()) 023 tgt.setAuthoredOnElement(DateTime10_40.convertDateTime(src.getDateWrittenElement())); 024 if (src.hasStatus()) 025 tgt.setStatus(org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestStatus.fromCode(src.getStatus().toCode())); 026 else 027 tgt.setStatus(org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestStatus.UNKNOWN); 028 if (src.hasPatient()) 029 tgt.setSubject(Reference10_40.convertReference(src.getPatient())); 030 if (src.hasPrescriber()) 031 tgt.setRequester(Reference10_40.convertReference(src.getPrescriber())); 032 if (src.hasReasonCodeableConcept()) 033 tgt.addReasonCode(CodeableConcept10_40.convertCodeableConcept(src.getReasonCodeableConcept())); 034 if (src.hasReasonReference()) 035 tgt.addReasonReference(Reference10_40.convertReference((src.getReasonReference()))); 036 if (src.hasNote()) 037 tgt.addNote(new org.hl7.fhir.r4.model.Annotation(new org.hl7.fhir.r4.model.MarkdownType((src.getNote())))); 038 if (src.hasMedicationCodeableConcept()) 039 tgt.setMedication(CodeableConcept10_40.convertCodeableConcept(src.getMedicationCodeableConcept())); 040 if (src.hasMedicationReference()) 041 tgt.setMedication(Reference10_40.convertReference(src.getMedicationReference())); 042 for (MedicationOrder.MedicationOrderDosageInstructionComponent dosage : src.getDosageInstruction()) 043 tgt.addDosageInstruction(medDosageInstruction(dosage)); 044 if (src.hasDispenseRequest()) 045 tgt.setDispenseRequest(medDispenseRequest(src.getDispenseRequest())); 046 if (src.hasSubstitution()) 047 tgt.setSubstitution(medSubstitution(src.getSubstitution())); 048 if (src.hasPriorPrescription()) 049 tgt.setPriorPrescription(Reference10_40.convertReference(src.getPriorPrescription())); 050 return tgt; 051 } 052 053 private static org.hl7.fhir.r4.model.Dosage medDosageInstruction(org.hl7.fhir.dstu2.model.MedicationOrder.MedicationOrderDosageInstructionComponent src) { 054 if (src == null || src.isEmpty()) 055 return null; 056 org.hl7.fhir.r4.model.Dosage tgt = new org.hl7.fhir.r4.model.Dosage(); 057 if (src.hasText()) 058 tgt.setTextElement(String10_40.convertString(src.getTextElement())); 059 if (src.hasAdditionalInstructions()) 060 tgt.addAdditionalInstruction(CodeableConcept10_40.convertCodeableConcept(src.getAdditionalInstructions())); 061 if (src.hasTiming()) 062 tgt.setTiming(Timing10_40.convertTiming(src.getTiming())); 063 if (src.hasAsNeeded()) 064 tgt.setAsNeeded(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getAsNeeded())); 065 if (src.hasSiteCodeableConcept()) 066 tgt.setSite(CodeableConcept10_40.convertCodeableConcept(src.getSiteCodeableConcept())); 067 if (src.hasRoute()) 068 tgt.setRoute(CodeableConcept10_40.convertCodeableConcept(src.getRoute())); 069 if (src.hasMethod()) 070 tgt.setMethod(CodeableConcept10_40.convertCodeableConcept(src.getMethod())); 071 Dosage.DosageDoseAndRateComponent dose_and_rate = new Dosage.DosageDoseAndRateComponent(); 072 if (src.hasDose()) 073 dose_and_rate.setDose(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getDose())); 074 if (src.hasRate()) 075 dose_and_rate.setRate(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getRate())); 076 tgt.addDoseAndRate(dose_and_rate); 077 if (src.hasMaxDosePerPeriod()) 078 tgt.setMaxDosePerPeriod(Ratio10_40.convertRatio(src.getMaxDosePerPeriod())); 079 return tgt; 080 } 081 082 private static org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestDispenseRequestComponent medDispenseRequest(org.hl7.fhir.dstu2.model.MedicationOrder.MedicationOrderDispenseRequestComponent src) { 083 if (src == null || src.isEmpty()) 084 return null; 085 org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestDispenseRequestComponent tgt = new org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestDispenseRequestComponent(); 086 if (src.hasValidityPeriod()) 087 tgt.setValidityPeriod(Period10_40.convertPeriod(src.getValidityPeriod())); 088 if (src.hasNumberOfRepeatsAllowed()) 089 tgt.setNumberOfRepeatsAllowedElement(UnsignedInt10_40.convertUnsignedIntToPositive(src.getNumberOfRepeatsAllowedElement())); 090 if (src.hasQuantity()) 091 tgt.setQuantity(SimpleQuantity10_40.convertSimpleQuantity(src.getQuantity())); 092 if (src.hasExpectedSupplyDuration()) 093 tgt.setExpectedSupplyDuration(Duration10_40.convertDuration(src.getExpectedSupplyDuration())); 094 return tgt; 095 } 096 097 private static org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestSubstitutionComponent medSubstitution(org.hl7.fhir.dstu2.model.MedicationOrder.MedicationOrderSubstitutionComponent src) { 098 if (src == null || src.isEmpty()) 099 return null; 100 org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestSubstitutionComponent tgt = new org.hl7.fhir.r4.model.MedicationRequest.MedicationRequestSubstitutionComponent(); 101 if (src.hasReason()) 102 tgt.setReason(CodeableConcept10_40.convertCodeableConcept(src.getReason())); 103 return tgt; 104 } 105}