001package org.hl7.fhir.convertors.conv30_50.datatypes30_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_50;
004import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Ratio30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.SimpleQuantity30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Timing30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Integer30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50;
010import org.hl7.fhir.exceptions.FHIRException;
011
012public class Dosage30_50 {
013  public static org.hl7.fhir.r5.model.Dosage convertDosage(org.hl7.fhir.dstu3.model.Dosage src) throws FHIRException {
014    if (src == null) return null;
015    org.hl7.fhir.r5.model.Dosage tgt = new org.hl7.fhir.r5.model.Dosage();
016    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
017    if (src.hasSequence()) tgt.setSequenceElement(Integer30_50.convertInteger(src.getSequenceElement()));
018    if (src.hasText()) tgt.setTextElement(String30_50.convertString(src.getTextElement()));
019    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getAdditionalInstruction())
020      tgt.addAdditionalInstruction(CodeableConcept30_50.convertCodeableConcept(t));
021    if (src.hasPatientInstruction())
022      tgt.setPatientInstructionElement(String30_50.convertString(src.getPatientInstructionElement()));
023    if (src.hasTiming()) tgt.setTiming(Timing30_50.convertTiming(src.getTiming()));
024    if (src.hasAsNeeded())
025      tgt.setAsNeeded(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getAsNeeded()));
026    if (src.hasSite()) tgt.setSite(CodeableConcept30_50.convertCodeableConcept(src.getSite()));
027    if (src.hasRoute()) tgt.setRoute(CodeableConcept30_50.convertCodeableConcept(src.getRoute()));
028    if (src.hasMethod()) tgt.setMethod(CodeableConcept30_50.convertCodeableConcept(src.getMethod()));
029    if (src.hasDose() || src.hasRate()) {
030      org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent dr = tgt.addDoseAndRate();
031      if (src.hasDose())
032        dr.setDose(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getDose()));
033      if (src.hasRate())
034        dr.setRate(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getRate()));
035    }
036    if (src.hasMaxDosePerPeriod()) tgt.setMaxDosePerPeriod(Ratio30_50.convertRatio(src.getMaxDosePerPeriod()));
037    if (src.hasMaxDosePerAdministration())
038      tgt.setMaxDosePerAdministration(SimpleQuantity30_50.convertSimpleQuantity(src.getMaxDosePerAdministration()));
039    if (src.hasMaxDosePerLifetime())
040      tgt.setMaxDosePerLifetime(SimpleQuantity30_50.convertSimpleQuantity(src.getMaxDosePerLifetime()));
041    return tgt;
042  }
043
044  public static org.hl7.fhir.dstu3.model.Dosage convertDosage(org.hl7.fhir.r5.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_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
048    if (src.hasSequence()) tgt.setSequenceElement(Integer30_50.convertInteger(src.getSequenceElement()));
049    if (src.hasText()) tgt.setTextElement(String30_50.convertString(src.getTextElement()));
050    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getAdditionalInstruction())
051      tgt.addAdditionalInstruction(CodeableConcept30_50.convertCodeableConcept(t));
052    if (src.hasPatientInstruction())
053      tgt.setPatientInstructionElement(String30_50.convertString(src.getPatientInstructionElement()));
054    if (src.hasTiming()) tgt.setTiming(Timing30_50.convertTiming(src.getTiming()));
055    if (src.hasAsNeeded())
056      tgt.setAsNeeded(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getAsNeeded()));
057    if (src.hasSite()) tgt.setSite(CodeableConcept30_50.convertCodeableConcept(src.getSite()));
058    if (src.hasRoute()) tgt.setRoute(CodeableConcept30_50.convertCodeableConcept(src.getRoute()));
059    if (src.hasMethod()) tgt.setMethod(CodeableConcept30_50.convertCodeableConcept(src.getMethod()));
060    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasDose())
061      tgt.setDose(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getDoseAndRate().get(0).getDose()));
062    if (src.hasMaxDosePerPeriod()) tgt.setMaxDosePerPeriod(Ratio30_50.convertRatio(src.getMaxDosePerPeriod()));
063    if (src.hasMaxDosePerAdministration())
064      tgt.setMaxDosePerAdministration(SimpleQuantity30_50.convertSimpleQuantity(src.getMaxDosePerAdministration()));
065    if (src.hasMaxDosePerLifetime())
066      tgt.setMaxDosePerLifetime(SimpleQuantity30_50.convertSimpleQuantity(src.getMaxDosePerLifetime()));
067    if (src.hasDoseAndRate() && src.getDoseAndRate().get(0).hasRate())
068      tgt.setRate(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getDoseAndRate().get(0).getRate()));
069    return tgt;
070  }
071}