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