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