001package org.hl7.fhir.convertors.conv10_50.resources10_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext10_50;
004import org.hl7.fhir.convertors.conv10_50.datatypes10_50.Reference10_50;
005import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.CodeableConcept10_50;
006import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Identifier10_50;
007import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Ratio10_50;
008import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Timing10_50;
009import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.Boolean10_50;
010import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.DateTime10_50;
011import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.String10_50;
012import org.hl7.fhir.exceptions.FHIRException;
013import org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent;
014
015public class MedicationStatement10_50 {
016
017  public static org.hl7.fhir.dstu2.model.MedicationStatement convertMedicationStatement(org.hl7.fhir.r5.model.MedicationUsage src) throws FHIRException {
018    if (src == null || src.isEmpty())
019      return null;
020    org.hl7.fhir.dstu2.model.MedicationStatement tgt = new org.hl7.fhir.dstu2.model.MedicationStatement();
021    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
022    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
023      tgt.addIdentifier(Identifier10_50.convertIdentifier(t));
024    if (src.hasStatus())
025      tgt.setStatusElement(convertMedicationStatementStatus(src.getStatusElement()));
026    if (src.getMedication().hasConcept()) {
027      tgt.setMedication(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getMedication().getConcept()));
028    }
029    if (src.getMedication().hasReference()) {
030      tgt.setMedication(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getMedication().getReference()));
031    }
032    if (src.hasSubject())
033      tgt.setPatient(Reference10_50.convertReference(src.getSubject()));
034    if (src.hasEffective())
035      tgt.setEffective(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getEffective()));
036    if (src.hasInformationSource())
037      tgt.setInformationSource(Reference10_50.convertReference(src.getInformationSourceFirstRep()));
038    for (org.hl7.fhir.r5.model.Reference t : src.getDerivedFrom())
039      tgt.addSupportingInformation(Reference10_50.convertReference(t));
040    if (src.hasDateAsserted())
041      tgt.setDateAssertedElement(DateTime10_50.convertDateTime(src.getDateAssertedElement()));
042    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.setNote(t.getText());
043    for (org.hl7.fhir.r5.model.Dosage t : src.getDosage()) tgt.addDosage(convertMedicationStatementDosageComponent(t));
044    return tgt;
045  }
046
047  public static org.hl7.fhir.r5.model.MedicationUsage convertMedicationStatement(org.hl7.fhir.dstu2.model.MedicationStatement src) throws FHIRException {
048    if (src == null || src.isEmpty())
049      return null;
050    org.hl7.fhir.r5.model.MedicationUsage tgt = new org.hl7.fhir.r5.model.MedicationUsage();
051    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
052    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
053      tgt.addIdentifier(Identifier10_50.convertIdentifier(t));
054    if (src.hasStatus())
055      tgt.setStatusElement(convertMedicationStatementStatus(src.getStatusElement()));
056    if (src.hasMedicationCodeableConcept()) {
057      tgt.getMedication().setConcept(CodeableConcept10_50.convertCodeableConcept(src.getMedicationCodeableConcept()));
058    }
059    if (src.hasMedicationReference()) {
060      tgt.getMedication().setReference(Reference10_50.convertReference(src.getMedicationReference()));
061    }
062    if (src.hasPatient())
063      tgt.setSubject(Reference10_50.convertReference(src.getPatient()));
064    if (src.hasEffective())
065      tgt.setEffective(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getEffective()));
066    if (src.hasInformationSource())
067      tgt.addInformationSource(Reference10_50.convertReference(src.getInformationSource()));
068    for (org.hl7.fhir.dstu2.model.Reference t : src.getSupportingInformation())
069      tgt.addDerivedFrom(Reference10_50.convertReference(t));
070    if (src.hasDateAsserted())
071      tgt.setDateAssertedElement(DateTime10_50.convertDateTime(src.getDateAssertedElement()));
072    if (src.hasNote())
073      tgt.addNote().setText(src.getNote());
074    for (org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementDosageComponent t : src.getDosage())
075      tgt.addDosage(convertMedicationStatementDosageComponent(t));
076    return tgt;
077  }
078
079  public static org.hl7.fhir.r5.model.Dosage convertMedicationStatementDosageComponent(org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementDosageComponent src) throws FHIRException {
080    if (src == null || src.isEmpty())
081      return null;
082    org.hl7.fhir.r5.model.Dosage tgt = new org.hl7.fhir.r5.model.Dosage();
083    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
084    if (src.hasTextElement())
085      tgt.setTextElement(String10_50.convertString(src.getTextElement()));
086    if (src.hasTiming())
087      tgt.setTiming(Timing10_50.convertTiming(src.getTiming()));
088    if (src.hasAsNeededBooleanType())
089      tgt.setAsNeededElement(Boolean10_50.convertBoolean(src.getAsNeededBooleanType()));
090    if (src.hasSiteCodeableConcept())
091      tgt.setSite(CodeableConcept10_50.convertCodeableConcept(src.getSiteCodeableConcept()));
092    if (src.hasRoute())
093      tgt.setRoute(CodeableConcept10_50.convertCodeableConcept(src.getRoute()));
094    if (src.hasMethod())
095      tgt.setMethod(CodeableConcept10_50.convertCodeableConcept(src.getMethod()));
096    if (src.hasRate()) {
097      DosageDoseAndRateComponent dr = tgt.addDoseAndRate();
098      if (src.hasRate())
099        dr.setRate(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getRate()));
100    }
101    if (src.hasMaxDosePerPeriod())
102      tgt.addMaxDosePerPeriod(Ratio10_50.convertRatio(src.getMaxDosePerPeriod()));
103    return tgt;
104  }
105
106  public static org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementDosageComponent convertMedicationStatementDosageComponent(org.hl7.fhir.r5.model.Dosage src) throws FHIRException {
107    if (src == null || src.isEmpty())
108      return null;
109    org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementDosageComponent tgt = new org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementDosageComponent();
110    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
111    if (src.hasTextElement())
112      tgt.setTextElement(String10_50.convertString(src.getTextElement()));
113    if (src.hasTiming())
114      tgt.setTiming(Timing10_50.convertTiming(src.getTiming()));
115    if (src.hasAsNeeded())
116      tgt.setAsNeeded(Boolean10_50.convertBoolean(src.getAsNeededElement()));
117    if (src.hasSite())
118      tgt.setSite(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getSite()));
119    if (src.hasRoute())
120      tgt.setRoute(CodeableConcept10_50.convertCodeableConcept(src.getRoute()));
121    if (src.hasMethod())
122      tgt.setMethod(CodeableConcept10_50.convertCodeableConcept(src.getMethod()));
123    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasRate())
124      tgt.setRate(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getDoseAndRate().get(0).getRate()));
125    if (src.hasMaxDosePerPeriod())
126      tgt.setMaxDosePerPeriod(Ratio10_50.convertRatio(src.getMaxDosePerPeriodFirstRep()));
127    return tgt;
128  }
129
130  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes> convertMedicationStatementStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus> src) throws FHIRException {
131    if (src == null || src.isEmpty())
132      return null;
133    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodesEnumFactory());
134    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
135    switch (src.getValue()) {
136      case ACTIVE:
137        tgt.setValue(org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes.RECORDED);
138        break;
139      case COMPLETED:
140        tgt.setValue(org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes.RECORDED);
141        break;
142      case ENTEREDINERROR:
143        tgt.setValue(org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes.ENTEREDINERROR);
144        break;
145      case INTENDED:
146        tgt.setValue(org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes.RECORDED);
147        break;
148      default:
149        tgt.setValue(org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes.NULL);
150        break;
151    }
152    return tgt;
153  }
154
155  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus> convertMedicationStatementStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.MedicationUsage.MedicationUsageStatusCodes> src) throws FHIRException {
156    if (src == null || src.isEmpty())
157      return null;
158    org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatusEnumFactory());
159    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
160    switch (src.getValue()) {
161//            case ACTIVE:
162//                tgt.setValue(org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus.ACTIVE);
163//                break;
164      case RECORDED:
165        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus.COMPLETED);
166        break;
167      case ENTEREDINERROR:
168        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus.ENTEREDINERROR);
169        break;
170      case DRAFT:
171        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus.ACTIVE);
172        break;
173      default:
174        tgt.setValue(org.hl7.fhir.dstu2.model.MedicationStatement.MedicationStatementStatus.NULL);
175        break;
176    }
177    return tgt;
178  }
179}