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}