001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_50;
004import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Dosage30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Annotation30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.SimpleQuantity30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Boolean30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.DateTime30_50;
012import org.hl7.fhir.dstu3.model.Enumeration;
013import org.hl7.fhir.dstu3.model.MedicationDispense;
014import org.hl7.fhir.exceptions.FHIRException;
015
016public class MedicationDispense30_50 {
017
018  public static org.hl7.fhir.dstu3.model.MedicationDispense convertMedicationDispense(org.hl7.fhir.r5.model.MedicationDispense src) throws FHIRException {
019    if (src == null)
020      return null;
021    org.hl7.fhir.dstu3.model.MedicationDispense tgt = new org.hl7.fhir.dstu3.model.MedicationDispense();
022    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
023    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
024      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
025    for (org.hl7.fhir.r5.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference30_50.convertReference(t));
026    if (src.hasStatus())
027      tgt.setStatusElement(convertMedicationDispenseStatus(src.getStatusElement()));
028    if (src.hasCategory())
029      tgt.setCategory(CodeableConcept30_50.convertCodeableConcept(src.getCategoryFirstRep()));
030    if (src.getMedication().hasConcept())
031      tgt.setMedication(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getMedication().getConcept()));
032    if (src.getMedication().hasReference())
033      tgt.setMedication(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getMedication().getReference()));
034    if (src.hasSubject())
035      tgt.setSubject(Reference30_50.convertReference(src.getSubject()));
036    if (src.hasEncounter())
037      tgt.setContext(Reference30_50.convertReference(src.getEncounter()));
038    for (org.hl7.fhir.r5.model.Reference t : src.getSupportingInformation())
039      tgt.addSupportingInformation(Reference30_50.convertReference(t));
040    for (org.hl7.fhir.r5.model.MedicationDispense.MedicationDispensePerformerComponent t : src.getPerformer())
041      tgt.addPerformer(convertMedicationDispensePerformerComponent(t));
042    for (org.hl7.fhir.r5.model.Reference t : src.getAuthorizingPrescription())
043      tgt.addAuthorizingPrescription(Reference30_50.convertReference(t));
044    if (src.hasType())
045      tgt.setType(CodeableConcept30_50.convertCodeableConcept(src.getType()));
046    if (src.hasQuantity())
047      tgt.setQuantity(SimpleQuantity30_50.convertSimpleQuantity(src.getQuantity()));
048    if (src.hasDaysSupply())
049      tgt.setDaysSupply(SimpleQuantity30_50.convertSimpleQuantity(src.getDaysSupply()));
050    if (src.hasWhenPrepared())
051      tgt.setWhenPreparedElement(DateTime30_50.convertDateTime(src.getWhenPreparedElement()));
052    if (src.hasWhenHandedOver())
053      tgt.setWhenHandedOverElement(DateTime30_50.convertDateTime(src.getWhenHandedOverElement()));
054    if (src.hasDestination())
055      tgt.setDestination(Reference30_50.convertReference(src.getDestination()));
056    for (org.hl7.fhir.r5.model.Reference t : src.getReceiver()) tgt.addReceiver(Reference30_50.convertReference(t));
057    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_50.convertAnnotation(t));
058    for (org.hl7.fhir.r5.model.Dosage t : src.getDosageInstruction())
059      tgt.addDosageInstruction(Dosage30_50.convertDosage(t));
060    if (src.hasSubstitution())
061      tgt.setSubstitution(convertMedicationDispenseSubstitutionComponent(src.getSubstitution()));
062//    for (org.hl7.fhir.r5.model.Reference t : src.getDetectedIssue())
063//      tgt.addDetectedIssue(Reference30_50.convertReference(t));
064    for (org.hl7.fhir.r5.model.Reference t : src.getEventHistory())
065      tgt.addEventHistory(Reference30_50.convertReference(t));
066    return tgt;
067  }
068
069  public static org.hl7.fhir.r5.model.MedicationDispense convertMedicationDispense(org.hl7.fhir.dstu3.model.MedicationDispense src) throws FHIRException {
070    if (src == null)
071      return null;
072    org.hl7.fhir.r5.model.MedicationDispense tgt = new org.hl7.fhir.r5.model.MedicationDispense();
073    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
074    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
075      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
076    for (org.hl7.fhir.dstu3.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference30_50.convertReference(t));
077    if (src.hasStatus())
078      tgt.setStatusElement(convertMedicationDispenseStatus(src.getStatusElement()));
079    if (src.hasCategory())
080      tgt.addCategory(CodeableConcept30_50.convertCodeableConcept(src.getCategory()));
081    if (src.hasMedicationCodeableConcept())
082      tgt.getMedication().setConcept(CodeableConcept30_50.convertCodeableConcept(src.getMedicationCodeableConcept()));
083    if (src.hasMedicationReference())
084      tgt.getMedication().setReference(Reference30_50.convertReference(src.getMedicationReference()));
085    if (src.hasSubject())
086      tgt.setSubject(Reference30_50.convertReference(src.getSubject()));
087    if (src.hasContext())
088      tgt.setEncounter(Reference30_50.convertReference(src.getContext()));
089    for (org.hl7.fhir.dstu3.model.Reference t : src.getSupportingInformation())
090      tgt.addSupportingInformation(Reference30_50.convertReference(t));
091    for (org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispensePerformerComponent t : src.getPerformer())
092      tgt.addPerformer(convertMedicationDispensePerformerComponent(t));
093    for (org.hl7.fhir.dstu3.model.Reference t : src.getAuthorizingPrescription())
094      tgt.addAuthorizingPrescription(Reference30_50.convertReference(t));
095    if (src.hasType())
096      tgt.setType(CodeableConcept30_50.convertCodeableConcept(src.getType()));
097    if (src.hasQuantity())
098      tgt.setQuantity(SimpleQuantity30_50.convertSimpleQuantity(src.getQuantity()));
099    if (src.hasDaysSupply())
100      tgt.setDaysSupply(SimpleQuantity30_50.convertSimpleQuantity(src.getDaysSupply()));
101    if (src.hasWhenPrepared())
102      tgt.setWhenPreparedElement(DateTime30_50.convertDateTime(src.getWhenPreparedElement()));
103    if (src.hasWhenHandedOver())
104      tgt.setWhenHandedOverElement(DateTime30_50.convertDateTime(src.getWhenHandedOverElement()));
105    if (src.hasDestination())
106      tgt.setDestination(Reference30_50.convertReference(src.getDestination()));
107    for (org.hl7.fhir.dstu3.model.Reference t : src.getReceiver()) tgt.addReceiver(Reference30_50.convertReference(t));
108    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_50.convertAnnotation(t));
109    for (org.hl7.fhir.dstu3.model.Dosage t : src.getDosageInstruction())
110      tgt.addDosageInstruction(Dosage30_50.convertDosage(t));
111    if (src.hasSubstitution())
112      tgt.setSubstitution(convertMedicationDispenseSubstitutionComponent(src.getSubstitution()));
113//    for (org.hl7.fhir.dstu3.model.Reference t : src.getDetectedIssue())
114//      tgt.addDetectedIssue(Reference30_50.convertReference(t));
115    for (org.hl7.fhir.dstu3.model.Reference t : src.getEventHistory())
116      tgt.addEventHistory(Reference30_50.convertReference(t));
117    return tgt;
118  }
119
120  public static org.hl7.fhir.r5.model.MedicationDispense.MedicationDispensePerformerComponent convertMedicationDispensePerformerComponent(org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispensePerformerComponent src) throws FHIRException {
121    if (src == null)
122      return null;
123    org.hl7.fhir.r5.model.MedicationDispense.MedicationDispensePerformerComponent tgt = new org.hl7.fhir.r5.model.MedicationDispense.MedicationDispensePerformerComponent();
124    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
125    if (src.hasActor())
126      tgt.setActor(Reference30_50.convertReference(src.getActor()));
127    return tgt;
128  }
129
130  public static org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispensePerformerComponent convertMedicationDispensePerformerComponent(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispensePerformerComponent src) throws FHIRException {
131    if (src == null)
132      return null;
133    org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispensePerformerComponent tgt = new org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispensePerformerComponent();
134    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
135    if (src.hasActor())
136      tgt.setActor(Reference30_50.convertReference(src.getActor()));
137    return tgt;
138  }
139
140  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispenseStatus> convertMedicationDispenseStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes> src) throws FHIRException {
141      if (src == null)
142          return null;
143      Enumeration<MedicationDispense.MedicationDispenseStatus> tgt = new Enumeration<MedicationDispense.MedicationDispenseStatus>();
144      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
145      if (src.getValue() == null) {
146          tgt.setValue(null);
147      } else {
148          switch (src.getValue()) {
149              case PREPARATION:
150                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.PREPARATION);
151                  break;
152              case INPROGRESS:
153                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.INPROGRESS);
154                  break;
155              case ONHOLD:
156                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.ONHOLD);
157                  break;
158              case COMPLETED:
159                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.COMPLETED);
160                  break;
161              case ENTEREDINERROR:
162                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.ENTEREDINERROR);
163                  break;
164              case STOPPED:
165                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.STOPPED);
166                  break;
167              case DECLINED:
168                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.STOPPED);
169                  break;
170              case NULL:
171                  tgt.setValue(MedicationDispense.MedicationDispenseStatus.NULL);
172                  break;
173          }
174      }
175      return tgt;
176  }
177
178  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes> convertMedicationDispenseStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispenseStatus> src) throws FHIRException {
179      if (src == null)
180          return null;
181      org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes> tgt = new org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes>(new org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodesEnumFactory());
182      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
183      if (src.getValue() == null) {
184          tgt.setValue(null);
185      } else {
186          switch (src.getValue()) {
187              case PREPARATION:
188                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.PREPARATION);
189                  break;
190              case INPROGRESS:
191                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.INPROGRESS);
192                  break;
193              case ONHOLD:
194                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.ONHOLD);
195                  break;
196              case COMPLETED:
197                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.COMPLETED);
198                  break;
199              case ENTEREDINERROR:
200                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.ENTEREDINERROR);
201                  break;
202              case STOPPED:
203                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.STOPPED);
204                  break;
205              case NULL:
206                  tgt.setValue(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseStatusCodes.NULL);
207                  break;
208          }
209      }
210      return tgt;
211  }
212
213  public static org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseSubstitutionComponent convertMedicationDispenseSubstitutionComponent(org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispenseSubstitutionComponent src) throws FHIRException {
214    if (src == null)
215      return null;
216    org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseSubstitutionComponent tgt = new org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseSubstitutionComponent();
217    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
218    if (src.hasWasSubstituted())
219      tgt.setWasSubstitutedElement(Boolean30_50.convertBoolean(src.getWasSubstitutedElement()));
220    if (src.hasType())
221      tgt.setType(CodeableConcept30_50.convertCodeableConcept(src.getType()));
222    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReason())
223      tgt.addReason(CodeableConcept30_50.convertCodeableConcept(t));
224    for (org.hl7.fhir.dstu3.model.Reference t : src.getResponsibleParty())
225      tgt.setResponsibleParty(Reference30_50.convertReference(t));
226    return tgt;
227  }
228
229  public static org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispenseSubstitutionComponent convertMedicationDispenseSubstitutionComponent(org.hl7.fhir.r5.model.MedicationDispense.MedicationDispenseSubstitutionComponent src) throws FHIRException {
230    if (src == null)
231      return null;
232    org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispenseSubstitutionComponent tgt = new org.hl7.fhir.dstu3.model.MedicationDispense.MedicationDispenseSubstitutionComponent();
233    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
234    if (src.hasWasSubstituted())
235      tgt.setWasSubstitutedElement(Boolean30_50.convertBoolean(src.getWasSubstitutedElement()));
236    if (src.hasType())
237      tgt.setType(CodeableConcept30_50.convertCodeableConcept(src.getType()));
238    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getReason())
239      tgt.addReason(CodeableConcept30_50.convertCodeableConcept(t));
240    if (src.hasResponsibleParty())
241      tgt.addResponsibleParty(Reference30_50.convertReference(src.getResponsibleParty()));
242    return tgt;
243  }
244}