001package org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext40_50;
004import org.hl7.fhir.convertors.conv40_50.datatypes40_50.BackboneElement40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.CodeableConcept40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Ratio40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.SimpleQuantity40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Timing40_50;
009import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Boolean40_50;
010import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Integer40_50;
011import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.String40_50;
012import org.hl7.fhir.exceptions.FHIRException;
013
014public class Dosage40_50 {
015  public static org.hl7.fhir.r5.model.Dosage convertDosage(org.hl7.fhir.r4.model.Dosage src) throws FHIRException {
016    if (src == null) return null;
017    org.hl7.fhir.r5.model.Dosage tgt = new org.hl7.fhir.r5.model.Dosage();
018    BackboneElement40_50.copyBackboneElement(src, tgt);
019    if (src.hasSequence()) tgt.setSequenceElement(Integer40_50.convertInteger(src.getSequenceElement()));
020    if (src.hasText()) tgt.setTextElement(String40_50.convertString(src.getTextElement()));
021    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getAdditionalInstruction())
022      tgt.addAdditionalInstruction(CodeableConcept40_50.convertCodeableConcept(t));
023    if (src.hasPatientInstruction())
024      tgt.setPatientInstructionElement(String40_50.convertString(src.getPatientInstructionElement()));
025    if (src.hasTiming()) tgt.setTiming(Timing40_50.convertTiming(src.getTiming()));
026    if (src.hasAsNeededBooleanType())
027      tgt.setAsNeededElement(Boolean40_50.convertBoolean(src.getAsNeededBooleanType()));
028    if (src.hasAsNeededCodeableConcept()) {
029      tgt.addAsNeededFor(CodeableConcept40_50.convertCodeableConcept(src.getAsNeededCodeableConcept()));      
030    }
031    if (src.hasSite()) tgt.setSite(CodeableConcept40_50.convertCodeableConcept(src.getSite()));
032    if (src.hasRoute()) tgt.setRoute(CodeableConcept40_50.convertCodeableConcept(src.getRoute()));
033    if (src.hasMethod()) tgt.setMethod(CodeableConcept40_50.convertCodeableConcept(src.getMethod()));
034    for (org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent t : src.getDoseAndRate())
035      tgt.addDoseAndRate(convertDosageDoseAndRateComponent(t));
036    if (src.hasMaxDosePerPeriod()) tgt.addMaxDosePerPeriod(Ratio40_50.convertRatio(src.getMaxDosePerPeriod()));
037    if (src.hasMaxDosePerAdministration())
038      tgt.setMaxDosePerAdministration(SimpleQuantity40_50.convertSimpleQuantity(src.getMaxDosePerAdministration()));
039    if (src.hasMaxDosePerLifetime())
040      tgt.setMaxDosePerLifetime(SimpleQuantity40_50.convertSimpleQuantity(src.getMaxDosePerLifetime()));
041    return tgt;
042  }
043
044  public static org.hl7.fhir.r4.model.Dosage convertDosage(org.hl7.fhir.r5.model.Dosage src) throws FHIRException {
045    if (src == null) return null;
046    org.hl7.fhir.r4.model.Dosage tgt = new org.hl7.fhir.r4.model.Dosage();
047    BackboneElement40_50.copyBackboneElement(src, tgt);
048    if (src.hasSequence()) tgt.setSequenceElement(Integer40_50.convertInteger(src.getSequenceElement()));
049    if (src.hasText()) tgt.setTextElement(String40_50.convertString(src.getTextElement()));
050    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getAdditionalInstruction())
051      tgt.addAdditionalInstruction(CodeableConcept40_50.convertCodeableConcept(t));
052    if (src.hasPatientInstruction())
053      tgt.setPatientInstructionElement(String40_50.convertString(src.getPatientInstructionElement()));
054    if (src.hasTiming()) tgt.setTiming(Timing40_50.convertTiming(src.getTiming()));
055    if (src.hasAsNeeded())
056      tgt.setAsNeeded(Boolean40_50.convertBoolean(src.getAsNeededElement()));
057    if (src.hasAsNeededFor())
058      tgt.setAsNeeded(CodeableConcept40_50.convertCodeableConcept(src.getAsNeededForFirstRep()));
059    if (src.hasSite()) tgt.setSite(CodeableConcept40_50.convertCodeableConcept(src.getSite()));
060    if (src.hasRoute()) tgt.setRoute(CodeableConcept40_50.convertCodeableConcept(src.getRoute()));
061    if (src.hasMethod()) tgt.setMethod(CodeableConcept40_50.convertCodeableConcept(src.getMethod()));
062    for (org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent t : src.getDoseAndRate())
063      tgt.addDoseAndRate(convertDosageDoseAndRateComponent(t));
064    if (src.hasMaxDosePerPeriod()) tgt.setMaxDosePerPeriod(Ratio40_50.convertRatio(src.getMaxDosePerPeriodFirstRep()));
065    if (src.hasMaxDosePerAdministration())
066      tgt.setMaxDosePerAdministration(SimpleQuantity40_50.convertSimpleQuantity(src.getMaxDosePerAdministration()));
067    if (src.hasMaxDosePerLifetime())
068      tgt.setMaxDosePerLifetime(SimpleQuantity40_50.convertSimpleQuantity(src.getMaxDosePerLifetime()));
069    return tgt;
070  }
071
072  public static org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent convertDosageDoseAndRateComponent(org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent src) throws FHIRException {
073    if (src == null) return null;
074    org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent tgt = new org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent();
075    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
076    if (src.hasType()) tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
077    if (src.hasDose())
078      tgt.setDose(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getDose()));
079    if (src.hasRate())
080      tgt.setRate(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getRate()));
081    return tgt;
082  }
083
084  public static org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent convertDosageDoseAndRateComponent(org.hl7.fhir.r5.model.Dosage.DosageDoseAndRateComponent src) throws FHIRException {
085    if (src == null) return null;
086    org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent tgt = new org.hl7.fhir.r4.model.Dosage.DosageDoseAndRateComponent();
087    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
088    if (src.hasType()) tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
089    if (src.hasDose())
090      tgt.setDose(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getDose()));
091    if (src.hasRate())
092      tgt.setRate(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getRate()));
093    return tgt;
094  }
095}