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