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}