001package org.hl7.fhir.convertors.conv30_40.resources30_40;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_40;
004import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Reference30_40;
005import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.*;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.String30_40;
007import org.hl7.fhir.dstu3.model.SimpleQuantity;
008import org.hl7.fhir.exceptions.FHIRException;
009
010public class MedicationAdministration30_40 {
011
012  public static org.hl7.fhir.dstu3.model.MedicationAdministration convertMedicationAdministration(org.hl7.fhir.r4.model.MedicationAdministration src) throws FHIRException {
013    if (src == null)
014      return null;
015    org.hl7.fhir.dstu3.model.MedicationAdministration tgt = new org.hl7.fhir.dstu3.model.MedicationAdministration();
016    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
017    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
018      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
019    for (org.hl7.fhir.r4.model.UriType t : src.getInstantiates()) tgt.addDefinition().setReference(t.getValue());
020    for (org.hl7.fhir.r4.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference30_40.convertReference(t));
021    if (src.hasStatus())
022      tgt.setStatusElement(convertMedicationAdministrationStatus(src.getStatusElement()));
023    if (src.hasCategory())
024      tgt.setCategory(CodeableConcept30_40.convertCodeableConcept(src.getCategory()));
025    if (src.hasMedication())
026      tgt.setMedication(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getMedication()));
027    if (src.hasSubject())
028      tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
029    if (src.hasContext())
030      tgt.setContext(Reference30_40.convertReference(src.getContext()));
031    for (org.hl7.fhir.r4.model.Reference t : src.getSupportingInformation())
032      tgt.addSupportingInformation(Reference30_40.convertReference(t));
033    if (src.hasEffective())
034      tgt.setEffective(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getEffective()));
035    for (org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationPerformerComponent t : src.getPerformer())
036      tgt.addPerformer(convertMedicationAdministrationPerformerComponent(t));
037    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReasonCode())
038      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
039    for (org.hl7.fhir.r4.model.Reference t : src.getReasonReference())
040      tgt.addReasonReference(Reference30_40.convertReference(t));
041    if (src.hasRequest())
042      tgt.setPrescription(Reference30_40.convertReference(src.getRequest()));
043    for (org.hl7.fhir.r4.model.Reference t : src.getDevice()) tgt.addDevice(Reference30_40.convertReference(t));
044    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_40.convertAnnotation(t));
045    if (src.hasDosage())
046      tgt.setDosage(convertMedicationAdministrationDosageComponent(src.getDosage()));
047    for (org.hl7.fhir.r4.model.Reference t : src.getEventHistory())
048      tgt.addEventHistory(Reference30_40.convertReference(t));
049    return tgt;
050  }
051
052  public static org.hl7.fhir.r4.model.MedicationAdministration convertMedicationAdministration(org.hl7.fhir.dstu3.model.MedicationAdministration src) throws FHIRException {
053    if (src == null)
054      return null;
055    org.hl7.fhir.r4.model.MedicationAdministration tgt = new org.hl7.fhir.r4.model.MedicationAdministration();
056    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
057    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
058      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
059    for (org.hl7.fhir.dstu3.model.Reference t : src.getDefinition()) tgt.addInstantiates(t.getReference());
060    for (org.hl7.fhir.dstu3.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference30_40.convertReference(t));
061    if (src.hasStatus())
062      tgt.setStatusElement(convertMedicationAdministrationStatus(src.getStatusElement()));
063    if (src.hasCategory())
064      tgt.setCategory(CodeableConcept30_40.convertCodeableConcept(src.getCategory()));
065    if (src.hasMedication())
066      tgt.setMedication(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getMedication()));
067    if (src.hasSubject())
068      tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
069    if (src.hasContext())
070      tgt.setContext(Reference30_40.convertReference(src.getContext()));
071    for (org.hl7.fhir.dstu3.model.Reference t : src.getSupportingInformation())
072      tgt.addSupportingInformation(Reference30_40.convertReference(t));
073    if (src.hasEffective())
074      tgt.setEffective(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getEffective()));
075    for (org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationPerformerComponent t : src.getPerformer())
076      tgt.addPerformer(convertMedicationAdministrationPerformerComponent(t));
077    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReasonCode())
078      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
079    for (org.hl7.fhir.dstu3.model.Reference t : src.getReasonReference())
080      tgt.addReasonReference(Reference30_40.convertReference(t));
081    if (src.hasPrescription())
082      tgt.setRequest(Reference30_40.convertReference(src.getPrescription()));
083    for (org.hl7.fhir.dstu3.model.Reference t : src.getDevice()) tgt.addDevice(Reference30_40.convertReference(t));
084    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_40.convertAnnotation(t));
085    if (src.hasDosage())
086      tgt.setDosage(convertMedicationAdministrationDosageComponent(src.getDosage()));
087    for (org.hl7.fhir.dstu3.model.Reference t : src.getEventHistory())
088      tgt.addEventHistory(Reference30_40.convertReference(t));
089    return tgt;
090  }
091
092  public static org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationDosageComponent convertMedicationAdministrationDosageComponent(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationDosageComponent src) throws FHIRException {
093    if (src == null)
094      return null;
095    org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationDosageComponent tgt = new org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationDosageComponent();
096    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
097    if (src.hasText())
098      tgt.setTextElement(String30_40.convertString(src.getTextElement()));
099    if (src.hasSite())
100      tgt.setSite(CodeableConcept30_40.convertCodeableConcept(src.getSite()));
101    if (src.hasRoute())
102      tgt.setRoute(CodeableConcept30_40.convertCodeableConcept(src.getRoute()));
103    if (src.hasMethod())
104      tgt.setMethod(CodeableConcept30_40.convertCodeableConcept(src.getMethod()));
105    if (src.hasDose())
106      tgt.setDose(SimpleQuantity30_40.convertSimpleQuantity(src.getDose()));
107    if (src.hasRate())
108      tgt.setRate(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getRate()));
109    return tgt;
110  }
111
112  public static org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationDosageComponent convertMedicationAdministrationDosageComponent(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationDosageComponent src) throws FHIRException {
113    if (src == null)
114      return null;
115    org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationDosageComponent tgt = new org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationDosageComponent();
116    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
117    if (src.hasText())
118      tgt.setTextElement(String30_40.convertString(src.getTextElement()));
119    if (src.hasSite())
120      tgt.setSite(CodeableConcept30_40.convertCodeableConcept(src.getSite()));
121    if (src.hasRoute())
122      tgt.setRoute(CodeableConcept30_40.convertCodeableConcept(src.getRoute()));
123    if (src.hasMethod())
124      tgt.setMethod(CodeableConcept30_40.convertCodeableConcept(src.getMethod()));
125    if (src.hasDose())
126      tgt.setDose(SimpleQuantity30_40.convertSimpleQuantity(src.getDose()));
127    if (src.hasRate()) {
128      if (src.hasRateQuantity()) {
129        tgt.setRate(new SimpleQuantity());
130        Quantity30_40.copyQuantity(src.getRateQuantity(), tgt.getRateSimpleQuantity());
131      } else {
132        tgt.setRate(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getRate()));
133      }
134    }
135    return tgt;
136  }
137
138  public static org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationPerformerComponent convertMedicationAdministrationPerformerComponent(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationPerformerComponent src) throws FHIRException {
139    if (src == null)
140      return null;
141    org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationPerformerComponent tgt = new org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationPerformerComponent();
142    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
143    if (src.hasActor())
144      tgt.setActor(Reference30_40.convertReference(src.getActor()));
145    return tgt;
146  }
147
148  public static org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationPerformerComponent convertMedicationAdministrationPerformerComponent(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationPerformerComponent src) throws FHIRException {
149    if (src == null)
150      return null;
151    org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationPerformerComponent tgt = new org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationPerformerComponent();
152    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
153    if (src.hasActor())
154      tgt.setActor(Reference30_40.convertReference(src.getActor()));
155    return tgt;
156  }
157
158  private static org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus> convertMedicationAdministrationStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus> src) {
159    if (src == null)
160      return null;
161    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatusEnumFactory());
162    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
163    //
164    switch (src.getValue()) {
165      case COMPLETED:
166        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.COMPLETED);
167        break;
168      case ENTEREDINERROR:
169        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.ENTEREDINERROR);
170        break;
171      case INPROGRESS:
172        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.INPROGRESS);
173        break;
174      case NOTDONE:
175        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.STOPPED);
176        break;
177      case NULL:
178        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.NULL);
179        break;
180      case ONHOLD:
181        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.ONHOLD);
182        break;
183      case STOPPED:
184        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.STOPPED);
185        break;
186      case UNKNOWN:
187        tgt.setValue(org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus.UNKNOWN);
188        break;
189    }
190    return tgt;
191  }
192
193  private static org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus> convertMedicationAdministrationStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.MedicationAdministration.MedicationAdministrationStatus> src) {
194    if (src == null)
195      return null;
196    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatusEnumFactory());
197    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
198    //
199    switch (src.getValue()) {
200      case COMPLETED:
201        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.COMPLETED);
202        break;
203      case ENTEREDINERROR:
204        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.ENTEREDINERROR);
205        break;
206      case INPROGRESS:
207        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.INPROGRESS);
208        break;
209      case NULL:
210        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.NULL);
211        break;
212      case ONHOLD:
213        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.ONHOLD);
214        break;
215      case STOPPED:
216        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.STOPPED);
217        break;
218      case UNKNOWN:
219        tgt.setValue(org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationStatus.UNKNOWN);
220        break;
221    }
222    return tgt;
223  }
224}