001package org.hl7.fhir.convertors.conv40_50.resources40_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext40_50;
004import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.CodeableConcept40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Identifier40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Boolean40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Decimal40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Integer40_50;
009import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.String40_50;
010import org.hl7.fhir.exceptions.FHIRException;
011
012import java.util.stream.Collectors;
013
014/*
015  Copyright (c) 2011+, HL7, Inc.
016  All rights reserved.
017  
018  Redistribution and use in source and binary forms, with or without modification, 
019  are permitted provided that the following conditions are met:
020  
021   * Redistributions of source code must retain the above copyright notice, this 
022     list of conditions and the following disclaimer.
023   * Redistributions in binary form must reproduce the above copyright notice, 
024     this list of conditions and the following disclaimer in the documentation 
025     and/or other materials provided with the distribution.
026   * Neither the name of HL7 nor the names of its contributors may be used to 
027     endorse or promote products derived from this software without specific 
028     prior written permission.
029  
030  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
031  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
032  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
033  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
034  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
035  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
036  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
037  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
038  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
039  POSSIBILITY OF SUCH DAMAGE.
040  
041*/
042// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
043public class ObservationDefinition40_50 {
044
045  public static org.hl7.fhir.r5.model.ObservationDefinition convertObservationDefinition(org.hl7.fhir.r4.model.ObservationDefinition src) throws FHIRException {
046    if (src == null)
047      return null;
048    org.hl7.fhir.r5.model.ObservationDefinition tgt = new org.hl7.fhir.r5.model.ObservationDefinition();
049    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
050    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getCategory())
051      tgt.addCategory(CodeableConcept40_50.convertCodeableConcept(t));
052    if (src.hasCode())
053      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
054    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
055      tgt.setIdentifier(Identifier40_50.convertIdentifier(t));
056    tgt.setPermittedDataType(src.getPermittedDataType().stream()
057      .map(ObservationDefinition40_50::convertObservationDataType)
058      .collect(Collectors.toList()));
059    if (src.hasMultipleResultsAllowed())
060      tgt.setMultipleResultsAllowedElement(Boolean40_50.convertBoolean(src.getMultipleResultsAllowedElement()));
061    if (src.hasMethod())
062      tgt.setMethod(CodeableConcept40_50.convertCodeableConcept(src.getMethod()));
063    if (src.hasPreferredReportName())
064      tgt.setPreferredReportNameElement(String40_50.convertString(src.getPreferredReportNameElement()));
065    if (src.hasQuantitativeDetails())
066      tgt.setQuantitativeDetails(convertObservationDefinitionQuantitativeDetailsComponent(src.getQuantitativeDetails()));
067//        for (org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent t : src.getQualifiedInterval()) tgt.addQualifiedInterval(convertObservationDefinitionQualifiedIntervalComponent(t));
068//        if (src.hasValidCodedValueSet())
069//            tgt.setValidCodedValueSet(convertReference(src.getValidCodedValueSet()));
070//        if (src.hasNormalCodedValueSet())
071//            tgt.setNormalCodedValueSet(convertReference(src.getNormalCodedValueSet()));
072//        if (src.hasAbnormalCodedValueSet())
073//            tgt.setAbnormalCodedValueSet(convertReference(src.getAbnormalCodedValueSet()));
074//        if (src.hasCriticalCodedValueSet())
075//            tgt.setCriticalCodedValueSet(convertReference(src.getCriticalCodedValueSet()));
076    return tgt;
077  }
078
079  public static org.hl7.fhir.r4.model.ObservationDefinition convertObservationDefinition(org.hl7.fhir.r5.model.ObservationDefinition src) throws FHIRException {
080    if (src == null)
081      return null;
082    org.hl7.fhir.r4.model.ObservationDefinition tgt = new org.hl7.fhir.r4.model.ObservationDefinition();
083    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
084    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCategory())
085      tgt.addCategory(CodeableConcept40_50.convertCodeableConcept(t));
086    if (src.hasCode())
087      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
088    if (src.hasIdentifier())
089      tgt.addIdentifier(Identifier40_50.convertIdentifier(src.getIdentifier()));
090    tgt.setPermittedDataType(src.getPermittedDataType().stream()
091      .map(ObservationDefinition40_50::convertObservationDataType)
092      .collect(Collectors.toList()));
093    if (src.hasMultipleResultsAllowed())
094      tgt.setMultipleResultsAllowedElement(Boolean40_50.convertBoolean(src.getMultipleResultsAllowedElement()));
095    if (src.hasMethod())
096      tgt.setMethod(CodeableConcept40_50.convertCodeableConcept(src.getMethod()));
097    if (src.hasPreferredReportName())
098      tgt.setPreferredReportNameElement(String40_50.convertString(src.getPreferredReportNameElement()));
099    if (src.hasQuantitativeDetails())
100      tgt.setQuantitativeDetails(convertObservationDefinitionQuantitativeDetailsComponent(src.getQuantitativeDetails()));
101//        for (org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent t : src.getQualifiedInterval()) tgt.addQualifiedInterval(convertObservationDefinitionQualifiedIntervalComponent(t));
102//        if (src.hasValidCodedValueSet())
103//            tgt.setValidCodedValueSet(convertReference(src.getValidCodedValueSet()));
104//        if (src.hasNormalCodedValueSet())
105//            tgt.setNormalCodedValueSet(convertReference(src.getNormalCodedValueSet()));
106//        if (src.hasAbnormalCodedValueSet())
107//            tgt.setAbnormalCodedValueSet(convertReference(src.getAbnormalCodedValueSet()));
108//        if (src.hasCriticalCodedValueSet())
109//            tgt.setCriticalCodedValueSet(convertReference(src.getCriticalCodedValueSet()));
110    return tgt;
111  }
112
113  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType> convertObservationDataType(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType> src) throws FHIRException {
114    if (src == null || src.isEmpty())
115      return null;
116    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataTypeEnumFactory());
117    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
118    switch (src.getValue()) {
119      case QUANTITY:
120        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.QUANTITY);
121        break;
122      case CODEABLECONCEPT:
123        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.CODEABLECONCEPT);
124        break;
125      case STRING:
126        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.STRING);
127        break;
128      case BOOLEAN:
129        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.BOOLEAN);
130        break;
131      case INTEGER:
132        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.INTEGER);
133        break;
134      case RANGE:
135        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.RANGE);
136        break;
137      case RATIO:
138        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.RATIO);
139        break;
140      case SAMPLEDDATA:
141        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.SAMPLEDDATA);
142        break;
143      case TIME:
144        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.TIME);
145        break;
146      case DATETIME:
147        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.DATETIME);
148        break;
149      case PERIOD:
150        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.PERIOD);
151        break;
152      default:
153        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType.NULL);
154        break;
155    }
156    return tgt;
157  }
158
159  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType> convertObservationDataType(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ObservationDefinition.ObservationDataType> src) throws FHIRException {
160    if (src == null || src.isEmpty())
161      return null;
162    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataTypeEnumFactory());
163    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
164    switch (src.getValue()) {
165      case QUANTITY:
166        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.QUANTITY);
167        break;
168      case CODEABLECONCEPT:
169        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.CODEABLECONCEPT);
170        break;
171      case STRING:
172        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.STRING);
173        break;
174      case BOOLEAN:
175        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.BOOLEAN);
176        break;
177      case INTEGER:
178        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.INTEGER);
179        break;
180      case RANGE:
181        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.RANGE);
182        break;
183      case RATIO:
184        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.RATIO);
185        break;
186      case SAMPLEDDATA:
187        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.SAMPLEDDATA);
188        break;
189      case TIME:
190        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.TIME);
191        break;
192      case DATETIME:
193        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.DATETIME);
194        break;
195      case PERIOD:
196        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.PERIOD);
197        break;
198      default:
199        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDataType.NULL);
200        break;
201    }
202    return tgt;
203  }
204
205  public static org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent convertObservationDefinitionQuantitativeDetailsComponent(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent src) throws FHIRException {
206    if (src == null)
207      return null;
208    org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent tgt = new org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
209    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
210    if (src.hasCustomaryUnit())
211      tgt.setCustomaryUnit(CodeableConcept40_50.convertCodeableConcept(src.getCustomaryUnit()));
212    if (src.hasUnit())
213      tgt.setUnit(CodeableConcept40_50.convertCodeableConcept(src.getUnit()));
214    if (src.hasConversionFactor())
215      tgt.setConversionFactorElement(Decimal40_50.convertDecimal(src.getConversionFactorElement()));
216    if (src.hasDecimalPrecision())
217      tgt.setDecimalPrecisionElement(Integer40_50.convertInteger(src.getDecimalPrecisionElement()));
218    return tgt;
219  }
220
221  public static org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent convertObservationDefinitionQuantitativeDetailsComponent(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent src) throws FHIRException {
222    if (src == null)
223      return null;
224    org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent tgt = new org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
225    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
226    if (src.hasCustomaryUnit())
227      tgt.setCustomaryUnit(CodeableConcept40_50.convertCodeableConcept(src.getCustomaryUnit()));
228    if (src.hasUnit())
229      tgt.setUnit(CodeableConcept40_50.convertCodeableConcept(src.getUnit()));
230    if (src.hasConversionFactor())
231      tgt.setConversionFactorElement(Decimal40_50.convertDecimal(src.getConversionFactorElement()));
232    if (src.hasDecimalPrecision())
233      tgt.setDecimalPrecisionElement(Integer40_50.convertInteger(src.getDecimalPrecisionElement()));
234    return tgt;
235  }
236
237//    public static org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent convertObservationDefinitionQualifiedIntervalComponent(org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent src) throws FHIRException {
238//        if (src == null)
239//            return null;
240//        org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent tgt = new org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
241//        copyElement(src, tgt);
242//        if (src.hasCategory())
243//            tgt.setCategoryElement(convertObservationRangeCategory(src.getCategoryElement()));
244//        if (src.hasRange())
245//            tgt.setRange(convertRange(src.getRange()));
246//        if (src.hasContext())
247//            tgt.setContext(convertCodeableConcept(src.getContext()));
248//        for (org.hl7.fhir.r4.model.CodeableConcept t : src.getAppliesTo()) tgt.addAppliesTo(convertCodeableConcept(t));
249//        if (src.hasGender())
250//            tgt.setGenderElement(Enumerations40_50.convertAdministrativeGender(src.getGenderElement()));
251//        if (src.hasAge())
252//            tgt.setAge(convertRange(src.getAge()));
253//        if (src.hasGestationalAge())
254//            tgt.setGestationalAge(convertRange(src.getGestationalAge()));
255//        if (src.hasCondition())
256//            tgt.setConditionElement(convertString(src.getConditionElement()));
257//        return tgt;
258//    }
259//
260//    public static org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent convertObservationDefinitionQualifiedIntervalComponent(org.hl7.fhir.r5.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent src) throws FHIRException {
261//        if (src == null)
262//            return null;
263//        org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent tgt = new org.hl7.fhir.r4.model.ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
264//        copyElement(src, tgt);
265//        if (src.hasCategory())
266//            tgt.setCategoryElement(convertObservationRangeCategory(src.getCategoryElement()));
267//        if (src.hasRange())
268//            tgt.setRange(convertRange(src.getRange()));
269//        if (src.hasContext())
270//            tgt.setContext(convertCodeableConcept(src.getContext()));
271//        for (org.hl7.fhir.r5.model.CodeableConcept t : src.getAppliesTo()) tgt.addAppliesTo(convertCodeableConcept(t));
272//        if (src.hasGender())
273//            tgt.setGenderElement(Enumerations40_50.convertAdministrativeGender(src.getGenderElement()));
274//        if (src.hasAge())
275//            tgt.setAge(convertRange(src.getAge()));
276//        if (src.hasGestationalAge())
277//            tgt.setGestationalAge(convertRange(src.getGestationalAge()));
278//        if (src.hasCondition())
279//            tgt.setConditionElement(convertString(src.getConditionElement()));
280//        return tgt;
281//    }
282
283  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory> convertObservationRangeCategory(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory> src) throws FHIRException {
284    if (src == null || src.isEmpty())
285      return null;
286    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategoryEnumFactory());
287    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
288    switch (src.getValue()) {
289      case REFERENCE:
290        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory.REFERENCE);
291        break;
292      case CRITICAL:
293        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory.CRITICAL);
294        break;
295      case ABSOLUTE:
296        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory.ABSOLUTE);
297        break;
298      default:
299        tgt.setValue(org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory.NULL);
300        break;
301    }
302    return tgt;
303  }
304
305  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory> convertObservationRangeCategory(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ObservationDefinition.ObservationRangeCategory> src) throws FHIRException {
306    if (src == null || src.isEmpty())
307      return null;
308    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategoryEnumFactory());
309    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
310    switch (src.getValue()) {
311      case REFERENCE:
312        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory.REFERENCE);
313        break;
314      case CRITICAL:
315        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory.CRITICAL);
316        break;
317      case ABSOLUTE:
318        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory.ABSOLUTE);
319        break;
320      default:
321        tgt.setValue(org.hl7.fhir.r4.model.ObservationDefinition.ObservationRangeCategory.NULL);
322        break;
323    }
324    return tgt;
325  }
326}