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