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.Identifier10_40;
007import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Ratio10_40;
008import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.SimpleQuantity10_40;
009import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Timing10_40;
010import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.DateTime10_40;
011import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.String10_40;
012import org.hl7.fhir.exceptions.FHIRException;
013import org.hl7.fhir.r4.model.Dosage;
014import org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent;
015
016public class MedicationDispense10_40 {
017
018  public static org.hl7.fhir.r4.model.MedicationDispense convertMedicationDispense(org.hl7.fhir.dstu2.model.MedicationDispense src) throws FHIRException {
019    if (src == null || src.isEmpty())
020      return null;
021    org.hl7.fhir.r4.model.MedicationDispense tgt = new org.hl7.fhir.r4.model.MedicationDispense();
022    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
023    if (src.hasIdentifier())
024      tgt.addIdentifier(Identifier10_40.convertIdentifier(src.getIdentifier()));
025    if (src.hasStatus())
026      tgt.setStatusElement(convertMedicationDispenseStatus(src.getStatusElement()));
027    if (src.hasMedication())
028      tgt.setMedication(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getMedication()));
029    if (src.hasPatient())
030      tgt.setSubject(Reference10_40.convertReference(src.getPatient()));
031    for (org.hl7.fhir.dstu2.model.Reference t : src.getAuthorizingPrescription())
032      tgt.addAuthorizingPrescription(Reference10_40.convertReference(t));
033    if (src.hasType())
034      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getType()));
035    if (src.hasQuantity())
036      tgt.setQuantity(SimpleQuantity10_40.convertSimpleQuantity(src.getQuantity()));
037    if (src.hasDaysSupply())
038      tgt.setDaysSupply(SimpleQuantity10_40.convertSimpleQuantity(src.getDaysSupply()));
039    if (src.hasWhenPreparedElement())
040      tgt.setWhenPreparedElement(DateTime10_40.convertDateTime(src.getWhenPreparedElement()));
041    if (src.hasWhenHandedOverElement())
042      tgt.setWhenHandedOverElement(DateTime10_40.convertDateTime(src.getWhenHandedOverElement()));
043    if (src.hasDestination())
044      tgt.setDestination(Reference10_40.convertReference(src.getDestination()));
045    for (org.hl7.fhir.dstu2.model.Reference t : src.getReceiver()) tgt.addReceiver(Reference10_40.convertReference(t));
046    if (src.hasNote())
047      tgt.addNote().setText(src.getNote());
048    for (org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseDosageInstructionComponent t : src.getDosageInstruction())
049      tgt.addDosageInstruction(convertMedicationDispenseDosageInstructionComponent(t));
050    if (src.hasSubstitution())
051      tgt.setSubstitution(convertMedicationDispenseSubstitutionComponent(src.getSubstitution()));
052    return tgt;
053  }
054
055  public static org.hl7.fhir.dstu2.model.MedicationDispense convertMedicationDispense(org.hl7.fhir.r4.model.MedicationDispense src) throws FHIRException {
056    if (src == null || src.isEmpty())
057      return null;
058    org.hl7.fhir.dstu2.model.MedicationDispense tgt = new org.hl7.fhir.dstu2.model.MedicationDispense();
059    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
060    if (src.hasIdentifier())
061      tgt.setIdentifier(Identifier10_40.convertIdentifier(src.getIdentifierFirstRep()));
062    if (src.hasStatus())
063      tgt.setStatusElement(convertMedicationDispenseStatus(src.getStatusElement()));
064    if (src.hasMedication())
065      tgt.setMedication(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getMedication()));
066    if (src.hasSubject())
067      tgt.setPatient(Reference10_40.convertReference(src.getSubject()));
068    for (org.hl7.fhir.r4.model.Reference t : src.getAuthorizingPrescription())
069      tgt.addAuthorizingPrescription(Reference10_40.convertReference(t));
070    if (src.hasType())
071      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getType()));
072    if (src.hasQuantity())
073      tgt.setQuantity(SimpleQuantity10_40.convertSimpleQuantity(src.getQuantity()));
074    if (src.hasDaysSupply())
075      tgt.setDaysSupply(SimpleQuantity10_40.convertSimpleQuantity(src.getDaysSupply()));
076    if (src.hasWhenPreparedElement())
077      tgt.setWhenPreparedElement(DateTime10_40.convertDateTime(src.getWhenPreparedElement()));
078    if (src.hasWhenHandedOverElement())
079      tgt.setWhenHandedOverElement(DateTime10_40.convertDateTime(src.getWhenHandedOverElement()));
080    if (src.hasDestination())
081      tgt.setDestination(Reference10_40.convertReference(src.getDestination()));
082    for (org.hl7.fhir.r4.model.Reference t : src.getReceiver()) tgt.addReceiver(Reference10_40.convertReference(t));
083    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) tgt.setNote(t.getText());
084    for (org.hl7.fhir.r4.model.Dosage t : src.getDosageInstruction())
085      tgt.addDosageInstruction(convertMedicationDispenseDosageInstructionComponent(t));
086    if (src.hasSubstitution())
087      tgt.setSubstitution(convertMedicationDispenseSubstitutionComponent(src.getSubstitution()));
088    return tgt;
089  }
090
091  public static org.hl7.fhir.r4.model.Dosage convertMedicationDispenseDosageInstructionComponent(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseDosageInstructionComponent src) throws FHIRException {
092    if (src == null || src.isEmpty())
093      return null;
094    org.hl7.fhir.r4.model.Dosage tgt = new org.hl7.fhir.r4.model.Dosage();
095    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
096    if (src.hasTextElement())
097      tgt.setTextElement(String10_40.convertString(src.getTextElement()));
098    if (src.hasTiming())
099      tgt.setTiming(Timing10_40.convertTiming(src.getTiming()));
100    if (src.hasAsNeeded())
101      tgt.setAsNeeded(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getAsNeeded()));
102    if (src.hasSiteCodeableConcept())
103      tgt.setSite(CodeableConcept10_40.convertCodeableConcept(src.getSiteCodeableConcept()));
104    if (src.hasRoute())
105      tgt.setRoute(CodeableConcept10_40.convertCodeableConcept(src.getRoute()));
106    if (src.hasMethod())
107      tgt.setMethod(CodeableConcept10_40.convertCodeableConcept(src.getMethod()));
108    if (src.hasDose() || src.hasRate()) {
109      DosageDoseAndRateComponent dr = tgt.addDoseAndRate();
110      if (src.hasDose())
111        dr.setDose(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getDose()));
112      if (src.hasRate())
113        dr.setRate(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getRate()));
114    }
115    if (src.hasMaxDosePerPeriod())
116      tgt.setMaxDosePerPeriod(Ratio10_40.convertRatio(src.getMaxDosePerPeriod()));
117    return tgt;
118  }
119
120  public static org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseDosageInstructionComponent convertMedicationDispenseDosageInstructionComponent(Dosage src) throws FHIRException {
121    if (src == null || src.isEmpty())
122      return null;
123    org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseDosageInstructionComponent tgt = new org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseDosageInstructionComponent();
124    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
125    tgt.setText(src.getText());
126    tgt.setTiming(Timing10_40.convertTiming(src.getTiming()));
127    tgt.setAsNeeded(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getAsNeeded()));
128    tgt.setSite(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getSite()));
129    tgt.setRoute(CodeableConcept10_40.convertCodeableConcept(src.getRoute()));
130    tgt.setMethod(CodeableConcept10_40.convertCodeableConcept(src.getMethod()));
131    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasDose())
132      tgt.setDose(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getDoseAndRate().get(0).getDose()));
133    tgt.setMaxDosePerPeriod(Ratio10_40.convertRatio(src.getMaxDosePerPeriod()));
134    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasRate())
135      tgt.setRate(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getDoseAndRate().get(0).getRate()));
136    return tgt;
137  }
138
139  private static org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus> convertMedicationDispenseStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus> src) {
140    if (src == null)
141      return null;
142    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatusEnumFactory());
143    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
144    switch (src.getValue()) {
145      case COMPLETED:
146        tgt.setValue(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus.COMPLETED);
147        break;
148      case ENTEREDINERROR:
149        tgt.setValue(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus.ENTEREDINERROR);
150        break;
151      case INPROGRESS:
152        tgt.setValue(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus.INPROGRESS);
153        break;
154      case NULL:
155        tgt.setValue(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus.NULL);
156        break;
157      case ONHOLD:
158        tgt.setValue(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus.ONHOLD);
159        break;
160      case STOPPED:
161        tgt.setValue(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus.STOPPED);
162        break;
163    }
164    return tgt;
165  }
166
167  private static org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus> convertMedicationDispenseStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseStatus> src) {
168    if (src == null)
169      return null;
170    org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatusEnumFactory());
171    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
172    switch (src.getValue()) {
173      case CANCELLED:
174        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.STOPPED);
175        break;
176      case COMPLETED:
177        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.COMPLETED);
178        break;
179      case DECLINED:
180        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.STOPPED);
181        break;
182      case ENTEREDINERROR:
183        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.ENTEREDINERROR);
184        break;
185      case INPROGRESS:
186        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.INPROGRESS);
187        break;
188      case NULL:
189        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.NULL);
190        break;
191      case ONHOLD:
192        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.ONHOLD);
193        break;
194      case PREPARATION:
195        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.INPROGRESS);
196        break;
197      case STOPPED:
198        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.STOPPED);
199        break;
200      case UNKNOWN:
201        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseStatus.NULL);
202        break;
203    }
204    return tgt;
205  }
206
207  public static org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseSubstitutionComponent convertMedicationDispenseSubstitutionComponent(org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseSubstitutionComponent src) throws FHIRException {
208    if (src == null || src.isEmpty())
209      return null;
210    org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseSubstitutionComponent tgt = new org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseSubstitutionComponent();
211    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
212    if (src.hasType())
213      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getType()));
214    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReason())
215      tgt.addReason(CodeableConcept10_40.convertCodeableConcept(t));
216    for (org.hl7.fhir.r4.model.Reference t : src.getResponsibleParty())
217      tgt.addResponsibleParty(Reference10_40.convertReference(t));
218    return tgt;
219  }
220
221  public static org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseSubstitutionComponent convertMedicationDispenseSubstitutionComponent(org.hl7.fhir.dstu2.model.MedicationDispense.MedicationDispenseSubstitutionComponent src) throws FHIRException {
222    if (src == null || src.isEmpty())
223      return null;
224    org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseSubstitutionComponent tgt = new org.hl7.fhir.r4.model.MedicationDispense.MedicationDispenseSubstitutionComponent();
225    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
226    if (src.hasType())
227      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getType()));
228    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getReason())
229      tgt.addReason(CodeableConcept10_40.convertCodeableConcept(t));
230    for (org.hl7.fhir.dstu2.model.Reference t : src.getResponsibleParty())
231      tgt.addResponsibleParty(Reference10_40.convertReference(t));
232    return tgt;
233  }
234}