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