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}