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.Annotation40_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.Identifier40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Range40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.SimpleQuantity40_50;
009import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Instant40_50;
010import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.String40_50;
011import org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_50.Reference40_50;
012import org.hl7.fhir.exceptions.FHIRException;
013import org.hl7.fhir.r4.model.Observation;
014import org.hl7.fhir.r5.model.Enumeration;
015import org.hl7.fhir.r5.model.Enumerations;
016
017/*
018  Copyright (c) 2011+, HL7, Inc.
019  All rights reserved.
020  
021  Redistribution and use in source and binary forms, with or without modification, 
022  are permitted provided that the following conditions are met:
023  
024   * Redistributions of source code must retain the above copyright notice, this 
025     list of conditions and the following disclaimer.
026   * Redistributions in binary form must reproduce the above copyright notice, 
027     this list of conditions and the following disclaimer in the documentation 
028     and/or other materials provided with the distribution.
029   * Neither the name of HL7 nor the names of its contributors may be used to 
030     endorse or promote products derived from this software without specific 
031     prior written permission.
032  
033  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
034  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
035  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
036  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
037  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
038  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
039  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
040  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
041  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
042  POSSIBILITY OF SUCH DAMAGE.
043  
044*/
045// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
046public class Observation40_50 {
047
048  public static org.hl7.fhir.r5.model.Observation convertObservation(org.hl7.fhir.r4.model.Observation src) throws FHIRException {
049    if (src == null)
050      return null;
051    org.hl7.fhir.r5.model.Observation tgt = new org.hl7.fhir.r5.model.Observation();
052    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
053    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
054      tgt.addIdentifier(Identifier40_50.convertIdentifier(t));
055    for (org.hl7.fhir.r4.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference40_50.convertReference(t));
056    for (org.hl7.fhir.r4.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference40_50.convertReference(t));
057    if (src.hasStatus())
058      tgt.setStatusElement(convertObservationStatus(src.getStatusElement()));
059    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getCategory())
060      tgt.addCategory(CodeableConcept40_50.convertCodeableConcept(t));
061    if (src.hasCode())
062      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
063    if (src.hasSubject())
064      tgt.setSubject(Reference40_50.convertReference(src.getSubject()));
065    for (org.hl7.fhir.r4.model.Reference t : src.getFocus()) tgt.addFocus(Reference40_50.convertReference(t));
066    if (src.hasEncounter())
067      tgt.setEncounter(Reference40_50.convertReference(src.getEncounter()));
068    if (src.hasEffective())
069      tgt.setEffective(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getEffective()));
070    if (src.hasIssued())
071      tgt.setIssuedElement(Instant40_50.convertInstant(src.getIssuedElement()));
072    for (org.hl7.fhir.r4.model.Reference t : src.getPerformer()) tgt.addPerformer(Reference40_50.convertReference(t));
073    if (src.hasValue()) {
074      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
075    }
076
077    if (src.hasDataAbsentReason())
078      tgt.setDataAbsentReason(CodeableConcept40_50.convertCodeableConcept(src.getDataAbsentReason()));
079    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getInterpretation())
080      tgt.addInterpretation(CodeableConcept40_50.convertCodeableConcept(t));
081    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) tgt.addNote(Annotation40_50.convertAnnotation(t));
082    if (src.hasBodySite())
083      tgt.setBodySite(CodeableConcept40_50.convertCodeableConcept(src.getBodySite()));
084    if (src.hasMethod())
085      tgt.setMethod(CodeableConcept40_50.convertCodeableConcept(src.getMethod()));
086    if (src.hasSpecimen())
087      tgt.setSpecimen(Reference40_50.convertReference(src.getSpecimen()));
088    if (src.hasDevice())
089      tgt.setDevice(Reference40_50.convertReference(src.getDevice()));
090    for (org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
091      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
092    for (org.hl7.fhir.r4.model.Reference t : src.getHasMember()) tgt.addHasMember(Reference40_50.convertReference(t));
093    for (org.hl7.fhir.r4.model.Reference t : src.getDerivedFrom())
094      tgt.addDerivedFrom(Reference40_50.convertReference(t));
095    for (org.hl7.fhir.r4.model.Observation.ObservationComponentComponent t : src.getComponent())
096      tgt.addComponent(convertObservationComponentComponent(t));
097    return tgt;
098  }
099
100  public static org.hl7.fhir.r4.model.Observation convertObservation(org.hl7.fhir.r5.model.Observation src) throws FHIRException {
101    if (src == null)
102      return null;
103    org.hl7.fhir.r4.model.Observation tgt = new org.hl7.fhir.r4.model.Observation();
104    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
105    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
106      tgt.addIdentifier(Identifier40_50.convertIdentifier(t));
107    for (org.hl7.fhir.r5.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference40_50.convertReference(t));
108    for (org.hl7.fhir.r5.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference40_50.convertReference(t));
109    if (src.hasStatus())
110      tgt.setStatusElement(convertObservationStatus(src.getStatusElement()));
111    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCategory())
112      tgt.addCategory(CodeableConcept40_50.convertCodeableConcept(t));
113    if (src.hasCode())
114      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
115    if (src.hasSubject())
116      tgt.setSubject(Reference40_50.convertReference(src.getSubject()));
117    for (org.hl7.fhir.r5.model.Reference t : src.getFocus()) tgt.addFocus(Reference40_50.convertReference(t));
118    if (src.hasEncounter())
119      tgt.setEncounter(Reference40_50.convertReference(src.getEncounter()));
120    if (src.hasEffective())
121      tgt.setEffective(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getEffective()));
122    if (src.hasIssued())
123      tgt.setIssuedElement(Instant40_50.convertInstant(src.getIssuedElement()));
124    for (org.hl7.fhir.r5.model.Reference t : src.getPerformer()) tgt.addPerformer(Reference40_50.convertReference(t));
125    if (src.hasValue()) {
126      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
127    }
128    if (src.hasDataAbsentReason())
129      tgt.setDataAbsentReason(CodeableConcept40_50.convertCodeableConcept(src.getDataAbsentReason()));
130    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getInterpretation())
131      tgt.addInterpretation(CodeableConcept40_50.convertCodeableConcept(t));
132    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation40_50.convertAnnotation(t));
133    if (src.hasBodySite())
134      tgt.setBodySite(CodeableConcept40_50.convertCodeableConcept(src.getBodySite()));
135    if (src.hasMethod())
136      tgt.setMethod(CodeableConcept40_50.convertCodeableConcept(src.getMethod()));
137    if (src.hasSpecimen())
138      tgt.setSpecimen(Reference40_50.convertReference(src.getSpecimen()));
139    if (src.hasDevice())
140      tgt.setDevice(Reference40_50.convertReference(src.getDevice()));
141    for (org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
142      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
143    for (org.hl7.fhir.r5.model.Reference t : src.getHasMember()) tgt.addHasMember(Reference40_50.convertReference(t));
144    for (org.hl7.fhir.r5.model.Reference t : src.getDerivedFrom())
145      tgt.addDerivedFrom(Reference40_50.convertReference(t));
146    for (org.hl7.fhir.r5.model.Observation.ObservationComponentComponent t : src.getComponent())
147      tgt.addComponent(convertObservationComponentComponent(t));
148    return tgt;
149  }
150
151  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.ObservationStatus> convertObservationStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Observation.ObservationStatus> src) throws FHIRException {
152      if (src == null || src.isEmpty())
153          return null;
154      Enumeration<Enumerations.ObservationStatus> tgt = new Enumeration<>(new Enumerations.ObservationStatusEnumFactory());
155      ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
156      if (src.getValue() == null) {
157          tgt.setValue(null);
158      } else {
159          switch (src.getValue()) {
160              case REGISTERED:
161                  tgt.setValue(Enumerations.ObservationStatus.REGISTERED);
162                  break;
163              case PRELIMINARY:
164                  tgt.setValue(Enumerations.ObservationStatus.PRELIMINARY);
165                  break;
166              case FINAL:
167                  tgt.setValue(Enumerations.ObservationStatus.FINAL);
168                  break;
169              case AMENDED:
170                  tgt.setValue(Enumerations.ObservationStatus.AMENDED);
171                  break;
172              case CORRECTED:
173                  tgt.setValue(Enumerations.ObservationStatus.CORRECTED);
174                  break;
175              case CANCELLED:
176                  tgt.setValue(Enumerations.ObservationStatus.CANCELLED);
177                  break;
178              case ENTEREDINERROR:
179                  tgt.setValue(Enumerations.ObservationStatus.ENTEREDINERROR);
180                  break;
181              case UNKNOWN:
182                  tgt.setValue(Enumerations.ObservationStatus.UNKNOWN);
183                  break;
184              default:
185                  tgt.setValue(Enumerations.ObservationStatus.NULL);
186                  break;
187          }
188      }
189      return tgt;
190  }
191
192  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Observation.ObservationStatus> convertObservationStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.ObservationStatus> src) throws FHIRException {
193      if (src == null || src.isEmpty())
194          return null;
195      org.hl7.fhir.r4.model.Enumeration<Observation.ObservationStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new Observation.ObservationStatusEnumFactory());
196      ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
197      if (src.getValue() == null) {
198          tgt.setValue(null);
199      } else {
200          switch (src.getValue()) {
201              case REGISTERED:
202                  tgt.setValue(Observation.ObservationStatus.REGISTERED);
203                  break;
204              case PRELIMINARY:
205                  tgt.setValue(Observation.ObservationStatus.PRELIMINARY);
206                  break;
207              case FINAL:
208                  tgt.setValue(Observation.ObservationStatus.FINAL);
209                  break;
210              case AMENDED:
211                  tgt.setValue(Observation.ObservationStatus.AMENDED);
212                  break;
213              case CORRECTED:
214                  tgt.setValue(Observation.ObservationStatus.CORRECTED);
215                  break;
216              case CANCELLED:
217                  tgt.setValue(Observation.ObservationStatus.CANCELLED);
218                  break;
219              case ENTEREDINERROR:
220                  tgt.setValue(Observation.ObservationStatus.ENTEREDINERROR);
221                  break;
222              case UNKNOWN:
223                  tgt.setValue(Observation.ObservationStatus.UNKNOWN);
224                  break;
225              default:
226                  tgt.setValue(Observation.ObservationStatus.NULL);
227                  break;
228          }
229      }
230      return tgt;
231  }
232
233  public static org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent convertObservationReferenceRangeComponent(org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent src) throws FHIRException {
234    if (src == null)
235      return null;
236    org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent tgt = new org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent();
237    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
238    if (src.hasLow())
239      tgt.setLow(SimpleQuantity40_50.convertSimpleQuantity(src.getLow()));
240    if (src.hasHigh())
241      tgt.setHigh(SimpleQuantity40_50.convertSimpleQuantity(src.getHigh()));
242    if (src.hasType())
243      tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
244    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getAppliesTo())
245      tgt.addAppliesTo(CodeableConcept40_50.convertCodeableConcept(t));
246    if (src.hasAge())
247      tgt.setAge(Range40_50.convertRange(src.getAge()));
248    if (src.hasText())
249      tgt.setTextElement(String40_50.convertStringToMarkdown(src.getTextElement()));
250    return tgt;
251  }
252
253  public static org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent convertObservationReferenceRangeComponent(org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent src) throws FHIRException {
254    if (src == null)
255      return null;
256    org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent tgt = new org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent();
257    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
258    if (src.hasLow())
259      tgt.setLow(SimpleQuantity40_50.convertSimpleQuantity(src.getLow()));
260    if (src.hasHigh())
261      tgt.setHigh(SimpleQuantity40_50.convertSimpleQuantity(src.getHigh()));
262    if (src.hasType())
263      tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
264    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getAppliesTo())
265      tgt.addAppliesTo(CodeableConcept40_50.convertCodeableConcept(t));
266    if (src.hasAge())
267      tgt.setAge(Range40_50.convertRange(src.getAge()));
268    if (src.hasText())
269      tgt.setTextElement(String40_50.convertString(src.getTextElement()));
270    return tgt;
271  }
272
273  public static org.hl7.fhir.r5.model.Observation.ObservationComponentComponent convertObservationComponentComponent(org.hl7.fhir.r4.model.Observation.ObservationComponentComponent src) throws FHIRException {
274    if (src == null)
275      return null;
276    org.hl7.fhir.r5.model.Observation.ObservationComponentComponent tgt = new org.hl7.fhir.r5.model.Observation.ObservationComponentComponent();
277    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
278    if (src.hasCode())
279      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
280    if (src.hasValue()) {
281      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
282    }
283    if (src.hasDataAbsentReason())
284      tgt.setDataAbsentReason(CodeableConcept40_50.convertCodeableConcept(src.getDataAbsentReason()));
285    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getInterpretation())
286      tgt.addInterpretation(CodeableConcept40_50.convertCodeableConcept(t));
287    for (org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
288      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
289    return tgt;
290  }
291
292  public static org.hl7.fhir.r4.model.Observation.ObservationComponentComponent convertObservationComponentComponent(org.hl7.fhir.r5.model.Observation.ObservationComponentComponent src) throws FHIRException {
293    if (src == null)
294      return null;
295    org.hl7.fhir.r4.model.Observation.ObservationComponentComponent tgt = new org.hl7.fhir.r4.model.Observation.ObservationComponentComponent();
296    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
297    if (src.hasCode())
298      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
299    if (src.hasValue()) {
300      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
301    }
302    if (src.hasDataAbsentReason())
303      tgt.setDataAbsentReason(CodeableConcept40_50.convertCodeableConcept(src.getDataAbsentReason()));
304    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getInterpretation())
305      tgt.addInterpretation(CodeableConcept40_50.convertCodeableConcept(t));
306    for (org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
307      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
308    return tgt;
309  }
310}