001package org.hl7.fhir.convertors.conv30_40.datatypes30_40;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_40;
004import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.CodeableConcept30_40;
005import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Ratio30_40;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.SimpleQuantity30_40;
007import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Timing30_40;
008import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Integer30_40;
009import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.String30_40;
010import org.hl7.fhir.exceptions.FHIRException;
011
012public class Dosage30_40 {
013  public static org.hl7.fhir.r4.model.Dosage convertDosage(org.hl7.fhir.dstu3.model.Dosage src) throws FHIRException {
014    if (src == null) return null;
015    org.hl7.fhir.r4.model.Dosage tgt = new org.hl7.fhir.r4.model.Dosage();
016    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
017    if (src.hasSequence()) tgt.setSequenceElement(Integer30_40.convertInteger(src.getSequenceElement()));
018    if (src.hasText()) tgt.setTextElement(String30_40.convertString(src.getTextElement()));
019    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getAdditionalInstruction())
020      tgt.addAdditionalInstruction(CodeableConcept30_40.convertCodeableConcept(t));
021    if (src.hasPatientInstruction())
022      tgt.setPatientInstructionElement(String30_40.convertString(src.getPatientInstructionElement()));
023    if (src.hasTiming()) tgt.setTiming(Timing30_40.convertTiming(src.getTiming()));
024    if (src.hasAsNeeded())
025      tgt.setAsNeeded(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getAsNeeded()));
026    if (src.hasSite()) tgt.setSite(CodeableConcept30_40.convertCodeableConcept(src.getSite()));
027    if (src.hasRoute()) tgt.setRoute(CodeableConcept30_40.convertCodeableConcept(src.getRoute()));
028    if (src.hasMethod()) tgt.setMethod(CodeableConcept30_40.convertCodeableConcept(src.getMethod()));
029    if (src.hasDose() || src.hasRate()) {
030      org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent dr = tgt.addDoseAndRate();
031      if (src.hasDose())
032        dr.setDose(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getDose()));
033      if (src.hasRate())
034        dr.setRate(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getRate()));
035    }
036    if (src.hasMaxDosePerPeriod()) tgt.setMaxDosePerPeriod(Ratio30_40.convertRatio(src.getMaxDosePerPeriod()));
037    if (src.hasMaxDosePerAdministration())
038      tgt.setMaxDosePerAdministration(SimpleQuantity30_40.convertSimpleQuantity(src.getMaxDosePerAdministration()));
039    if (src.hasMaxDosePerLifetime())
040      tgt.setMaxDosePerLifetime(SimpleQuantity30_40.convertSimpleQuantity(src.getMaxDosePerLifetime()));
041    return tgt;
042  }
043
044  public static org.hl7.fhir.dstu3.model.Dosage convertDosage(org.hl7.fhir.r4.model.Dosage src) throws FHIRException {
045    if (src == null) return null;
046    org.hl7.fhir.dstu3.model.Dosage tgt = new org.hl7.fhir.dstu3.model.Dosage();
047    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
048    if (src.hasSequence()) tgt.setSequenceElement(Integer30_40.convertInteger(src.getSequenceElement()));
049    if (src.hasText()) tgt.setTextElement(String30_40.convertString(src.getTextElement()));
050    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getAdditionalInstruction())
051      tgt.addAdditionalInstruction(CodeableConcept30_40.convertCodeableConcept(t));
052    if (src.hasPatientInstruction())
053      tgt.setPatientInstructionElement(String30_40.convertString(src.getPatientInstructionElement()));
054    if (src.hasTiming()) tgt.setTiming(Timing30_40.convertTiming(src.getTiming()));
055    if (src.hasAsNeeded())
056      tgt.setAsNeeded(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getAsNeeded()));
057    if (src.hasSite()) tgt.setSite(CodeableConcept30_40.convertCodeableConcept(src.getSite()));
058    if (src.hasRoute()) tgt.setRoute(CodeableConcept30_40.convertCodeableConcept(src.getRoute()));
059    if (src.hasMethod()) tgt.setMethod(CodeableConcept30_40.convertCodeableConcept(src.getMethod()));
060    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasDose()) {
061      if (src.getDoseAndRate().get(0).getDose() instanceof org.hl7.fhir.r4.model.Quantity) {
062        tgt.setDose(SimpleQuantity30_40.convertSimpleQuantity((org.hl7.fhir.r4.model.Quantity) src.getDoseAndRate().get(0).getDose()));
063      } else {
064        tgt.setDose(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getDoseAndRate().get(0).getDose()));
065      }
066    }
067    if (src.hasMaxDosePerPeriod()) tgt.setMaxDosePerPeriod(Ratio30_40.convertRatio(src.getMaxDosePerPeriod()));
068    if (src.hasMaxDosePerAdministration())
069      tgt.setMaxDosePerAdministration(SimpleQuantity30_40.convertSimpleQuantity(src.getMaxDosePerAdministration()));
070    if (src.hasMaxDosePerLifetime())
071      tgt.setMaxDosePerLifetime(SimpleQuantity30_40.convertSimpleQuantity(src.getMaxDosePerLifetime()));
072    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasRate()) {
073      if (src.getDoseAndRate().get(0).getRate() instanceof org.hl7.fhir.r4.model.Quantity) {
074        tgt.setRate(SimpleQuantity30_40.convertSimpleQuantity((org.hl7.fhir.r4.model.Quantity) src.getDoseAndRate().get(0).getRate()));
075      } else {
076        tgt.setRate(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getDoseAndRate().get(0).getRate()));
077      }
078    }
079    return tgt;
080  }
081}