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