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