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