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