001package org.hl7.fhir.convertors.conv10_30.resources10_30; 002 003import org.hl7.fhir.convertors.context.ConversionContext10_30; 004import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30; 005import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.*; 006import org.hl7.fhir.dstu2.model.MedicationOrder; 007import org.hl7.fhir.dstu3.model.MedicationRequest; 008import org.hl7.fhir.dstu3.model.StringType; 009import org.hl7.fhir.exceptions.FHIRException; 010 011public class MedicationRequest10_30 { 012 public static org.hl7.fhir.dstu3.model.MedicationRequest convertMedicationOrder(org.hl7.fhir.dstu2.model.MedicationOrder src) throws FHIRException { 013 if (src == null || src.isEmpty()) 014 return null; 015 org.hl7.fhir.dstu3.model.MedicationRequest tgt = new org.hl7.fhir.dstu3.model.MedicationRequest(); 016 ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt); 017 tgt.setIntent(MedicationRequest.MedicationRequestIntent.ORDER); 018 for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier()) 019 tgt.addIdentifier(Identifier10_30.convertIdentifier(t)); 020 if (src.hasDateWritten()) 021 tgt.setAuthoredOn(src.getDateWritten()); 022 if (src.hasStatus()) 023 tgt.setStatus(MedicationRequest.MedicationRequestStatus.fromCode(src.getStatus().toCode())); 024 if (src.hasPatient()) 025 tgt.setSubject(Reference10_30.convertReference(src.getPatient())); 026 if (src.hasPrescriber()) 027 tgt.setRequester(medRequestor(src)); 028 if (src.hasEncounter()) 029 tgt.setContext(Reference10_30.convertReference(src.getEncounter())); 030 if (src.hasReasonCodeableConcept()) 031 tgt.addReasonCode(CodeableConcept10_30.convertCodeableConcept(src.getReasonCodeableConcept())); 032 if (src.hasReasonReference()) 033 tgt.addReasonReference(Reference10_30.convertReference(src.getReasonReference())); 034 if (src.hasNote()) 035 tgt.addNote(new org.hl7.fhir.dstu3.model.Annotation(new StringType(src.getNote()))); 036 if (src.hasMedication()) 037 tgt.setMedication(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getMedication())); 038 for (MedicationOrder.MedicationOrderDosageInstructionComponent dosage : src.getDosageInstruction()) 039 tgt.addDosageInstruction(medDosageInstruction(dosage)); 040 if (src.hasDispenseRequest()) 041 tgt.setDispenseRequest(medDispenseRequest(src.getDispenseRequest())); 042 if (src.hasSubstitution()) 043 tgt.setSubstitution(medSubstitution(src.getSubstitution())); 044 if (src.hasPriorPrescription()) 045 tgt.setPriorPrescription(Reference10_30.convertReference(src.getPriorPrescription())); 046 return tgt; 047 } 048 049 private static org.hl7.fhir.dstu3.model.Dosage medDosageInstruction(org.hl7.fhir.dstu2.model.MedicationOrder.MedicationOrderDosageInstructionComponent src) { 050 if (src == null || src.isEmpty()) 051 return null; 052 org.hl7.fhir.dstu3.model.Dosage tgt = new org.hl7.fhir.dstu3.model.Dosage(); 053 if (src.hasText()) 054 tgt.setText(src.getText()); 055 if (src.hasAdditionalInstructions()) 056 tgt.addAdditionalInstruction(CodeableConcept10_30.convertCodeableConcept(src.getAdditionalInstructions())); 057 if (src.hasTiming()) 058 tgt.setTiming(Timing10_30.convertTiming(src.getTiming())); 059 if (src.hasAsNeeded()) 060 tgt.setAsNeeded(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getAsNeeded())); 061 if (src.hasSiteCodeableConcept()) 062 tgt.setSite(CodeableConcept10_30.convertCodeableConcept(src.getSiteCodeableConcept())); 063 if (src.hasRoute()) 064 tgt.setRoute(CodeableConcept10_30.convertCodeableConcept(src.getRoute())); 065 if (src.hasMethod()) 066 tgt.setMethod(CodeableConcept10_30.convertCodeableConcept(src.getMethod())); 067 if (src.hasDose()) 068 tgt.setDose(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getDose())); 069 if (src.hasRate()) 070 tgt.setRate(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getRate())); 071 if (src.hasMaxDosePerPeriod()) 072 tgt.setMaxDosePerPeriod(Ratio10_30.convertRatio(src.getMaxDosePerPeriod())); 073 return tgt; 074 } 075 076 private static org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestDispenseRequestComponent medDispenseRequest(org.hl7.fhir.dstu2.model.MedicationOrder.MedicationOrderDispenseRequestComponent src) { 077 if (src == null || src.isEmpty()) 078 return null; 079 org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestDispenseRequestComponent tgt = new org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestDispenseRequestComponent(); 080 if (src.hasValidityPeriod()) 081 tgt.setValidityPeriod(Period10_30.convertPeriod(src.getValidityPeriod())); 082 if (src.hasNumberOfRepeatsAllowed()) 083 tgt.setNumberOfRepeatsAllowed(src.getNumberOfRepeatsAllowed()); 084 if (src.hasQuantity()) 085 tgt.setQuantity(SimpleQuantity10_30.convertSimpleQuantity(src.getQuantity())); 086 if (src.hasExpectedSupplyDuration()) 087 tgt.setExpectedSupplyDuration(Duration10_30.convertDuration(src.getExpectedSupplyDuration())); 088 return tgt; 089 } 090 091 private static org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestSubstitutionComponent medSubstitution(org.hl7.fhir.dstu2.model.MedicationOrder.MedicationOrderSubstitutionComponent src) { 092 if (src == null || src.isEmpty()) 093 return null; 094 org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestSubstitutionComponent tgt = new MedicationRequest.MedicationRequestSubstitutionComponent(); 095 if (src.hasReason()) 096 tgt.setReason(CodeableConcept10_30.convertCodeableConcept(src.getReason())); 097 return tgt; 098 } 099 100 public static org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestRequesterComponent 101 medRequestor(org.hl7.fhir.dstu2.model.MedicationOrder src) { 102 org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestRequesterComponent tgt = new org.hl7.fhir.dstu3.model.MedicationRequest.MedicationRequestRequesterComponent(); 103 tgt.setAgent(Reference10_30.convertReference(src.getPrescriber())); 104 return tgt; 105 } 106}