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;
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 Observation43_50 {
044
045  public static org.hl7.fhir.r5.model.Observation convertObservation(org.hl7.fhir.r4b.model.Observation src) throws FHIRException {
046    if (src == null)
047      return null;
048    org.hl7.fhir.r5.model.Observation tgt = new org.hl7.fhir.r5.model.Observation();
049    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt);
050    for (org.hl7.fhir.r4b.model.Identifier t : src.getIdentifier())
051      tgt.addIdentifier(Identifier43_50.convertIdentifier(t));
052    for (org.hl7.fhir.r4b.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference43_50.convertReference(t));
053    for (org.hl7.fhir.r4b.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference43_50.convertReference(t));
054    if (src.hasStatus())
055      tgt.setStatusElement(convertObservationStatus(src.getStatusElement()));
056    for (org.hl7.fhir.r4b.model.CodeableConcept t : src.getCategory())
057      tgt.addCategory(CodeableConcept43_50.convertCodeableConcept(t));
058    if (src.hasCode())
059      tgt.setCode(CodeableConcept43_50.convertCodeableConcept(src.getCode()));
060    if (src.hasSubject())
061      tgt.setSubject(Reference43_50.convertReference(src.getSubject()));
062    for (org.hl7.fhir.r4b.model.Reference t : src.getFocus()) tgt.addFocus(Reference43_50.convertReference(t));
063    if (src.hasEncounter())
064      tgt.setEncounter(Reference43_50.convertReference(src.getEncounter()));
065    if (src.hasEffective())
066      tgt.setEffective(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getEffective()));
067    if (src.hasIssued())
068      tgt.setIssuedElement(Instant43_50.convertInstant(src.getIssuedElement()));
069    for (org.hl7.fhir.r4b.model.Reference t : src.getPerformer()) tgt.addPerformer(Reference43_50.convertReference(t));
070    if (src.hasValue()) {
071      tgt.setValue(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getValue()));
072    }
073    if (src.hasDataAbsentReason())
074      tgt.setDataAbsentReason(CodeableConcept43_50.convertCodeableConcept(src.getDataAbsentReason()));
075    for (org.hl7.fhir.r4b.model.CodeableConcept t : src.getInterpretation())
076      tgt.addInterpretation(CodeableConcept43_50.convertCodeableConcept(t));
077    for (org.hl7.fhir.r4b.model.Annotation t : src.getNote()) tgt.addNote(Annotation43_50.convertAnnotation(t));
078    if (src.hasBodySite())
079      tgt.setBodySite(CodeableConcept43_50.convertCodeableConcept(src.getBodySite()));
080    if (src.hasMethod())
081      tgt.setMethod(CodeableConcept43_50.convertCodeableConcept(src.getMethod()));
082    if (src.hasSpecimen())
083      tgt.setSpecimen(Reference43_50.convertReference(src.getSpecimen()));
084    if (src.hasDevice())
085      tgt.setDevice(Reference43_50.convertReference(src.getDevice()));
086    for (org.hl7.fhir.r4b.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
087      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
088    for (org.hl7.fhir.r4b.model.Reference t : src.getHasMember()) tgt.addHasMember(Reference43_50.convertReference(t));
089    for (org.hl7.fhir.r4b.model.Reference t : src.getDerivedFrom())
090      tgt.addDerivedFrom(Reference43_50.convertReference(t));
091    for (org.hl7.fhir.r4b.model.Observation.ObservationComponentComponent t : src.getComponent())
092      tgt.addComponent(convertObservationComponentComponent(t));
093    return tgt;
094  }
095
096  public static org.hl7.fhir.r4b.model.Observation convertObservation(org.hl7.fhir.r5.model.Observation src) throws FHIRException {
097    if (src == null)
098      return null;
099    org.hl7.fhir.r4b.model.Observation tgt = new org.hl7.fhir.r4b.model.Observation();
100    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt);
101    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
102      tgt.addIdentifier(Identifier43_50.convertIdentifier(t));
103    for (org.hl7.fhir.r5.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference43_50.convertReference(t));
104    for (org.hl7.fhir.r5.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference43_50.convertReference(t));
105    if (src.hasStatus())
106      tgt.setStatusElement(convertObservationStatus(src.getStatusElement()));
107    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCategory())
108      tgt.addCategory(CodeableConcept43_50.convertCodeableConcept(t));
109    if (src.hasCode())
110      tgt.setCode(CodeableConcept43_50.convertCodeableConcept(src.getCode()));
111    if (src.hasSubject())
112      tgt.setSubject(Reference43_50.convertReference(src.getSubject()));
113    for (org.hl7.fhir.r5.model.Reference t : src.getFocus()) tgt.addFocus(Reference43_50.convertReference(t));
114    if (src.hasEncounter())
115      tgt.setEncounter(Reference43_50.convertReference(src.getEncounter()));
116    if (src.hasEffective())
117      tgt.setEffective(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getEffective()));
118    if (src.hasIssued())
119      tgt.setIssuedElement(Instant43_50.convertInstant(src.getIssuedElement()));
120    for (org.hl7.fhir.r5.model.Reference t : src.getPerformer()) tgt.addPerformer(Reference43_50.convertReference(t));
121    if (src.hasValue()) {
122      tgt.setValue(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getValue()));
123    }
124    if (src.hasDataAbsentReason())
125      tgt.setDataAbsentReason(CodeableConcept43_50.convertCodeableConcept(src.getDataAbsentReason()));
126    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getInterpretation())
127      tgt.addInterpretation(CodeableConcept43_50.convertCodeableConcept(t));
128    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation43_50.convertAnnotation(t));
129    if (src.hasBodySite())
130      tgt.setBodySite(CodeableConcept43_50.convertCodeableConcept(src.getBodySite()));
131    if (src.hasMethod())
132      tgt.setMethod(CodeableConcept43_50.convertCodeableConcept(src.getMethod()));
133    if (src.hasSpecimen())
134      tgt.setSpecimen(Reference43_50.convertReference(src.getSpecimen()));
135    if (src.hasDevice())
136      tgt.setDevice(Reference43_50.convertReference(src.getDevice()));
137    for (org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
138      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
139    for (org.hl7.fhir.r5.model.Reference t : src.getHasMember()) tgt.addHasMember(Reference43_50.convertReference(t));
140    for (org.hl7.fhir.r5.model.Reference t : src.getDerivedFrom())
141      tgt.addDerivedFrom(Reference43_50.convertReference(t));
142    for (org.hl7.fhir.r5.model.Observation.ObservationComponentComponent t : src.getComponent())
143      tgt.addComponent(convertObservationComponentComponent(t));
144    return tgt;
145  }
146
147  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 {
148    if (src == null || src.isEmpty())
149      return null;
150    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.ObservationStatus> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Enumerations.ObservationStatusEnumFactory());
151    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt);
152    switch (src.getValue()) {
153      case REGISTERED:
154        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.REGISTERED);
155        break;
156      case PRELIMINARY:
157        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.PRELIMINARY);
158        break;
159      case FINAL:
160        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.FINAL);
161        break;
162      case AMENDED:
163        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.AMENDED);
164        break;
165      case CORRECTED:
166        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.CORRECTED);
167        break;
168      case CANCELLED:
169        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.CANCELLED);
170        break;
171      case ENTEREDINERROR:
172        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.ENTEREDINERROR);
173        break;
174      case UNKNOWN:
175        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.UNKNOWN);
176        break;
177      default:
178        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ObservationStatus.NULL);
179        break;
180    }
181    return tgt;
182  }
183
184  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 {
185    if (src == null || src.isEmpty())
186      return null;
187    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());
188    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt);
189    switch (src.getValue()) {
190      case REGISTERED:
191        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.REGISTERED);
192        break;
193      case PRELIMINARY:
194        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.PRELIMINARY);
195        break;
196      case FINAL:
197        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.FINAL);
198        break;
199      case AMENDED:
200        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.AMENDED);
201        break;
202      case CORRECTED:
203        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.CORRECTED);
204        break;
205      case CANCELLED:
206        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.CANCELLED);
207        break;
208      case ENTEREDINERROR:
209        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.ENTEREDINERROR);
210        break;
211      case UNKNOWN:
212        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.UNKNOWN);
213        break;
214      default:
215        tgt.setValue(org.hl7.fhir.r4b.model.Enumerations.ObservationStatus.NULL);
216        break;
217    }
218    return tgt;
219  }
220
221  public static org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent convertObservationReferenceRangeComponent(org.hl7.fhir.r4b.model.Observation.ObservationReferenceRangeComponent src) throws FHIRException {
222    if (src == null)
223      return null;
224    org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent tgt = new org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent();
225    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
226    if (src.hasLow())
227      tgt.setLow(SimpleQuantity43_50.convertSimpleQuantity(src.getLow()));
228    if (src.hasHigh())
229      tgt.setHigh(SimpleQuantity43_50.convertSimpleQuantity(src.getHigh()));
230    if (src.hasType())
231      tgt.setType(CodeableConcept43_50.convertCodeableConcept(src.getType()));
232    for (org.hl7.fhir.r4b.model.CodeableConcept t : src.getAppliesTo())
233      tgt.addAppliesTo(CodeableConcept43_50.convertCodeableConcept(t));
234    if (src.hasAge())
235      tgt.setAge(Range43_50.convertRange(src.getAge()));
236    if (src.hasText())
237      tgt.setTextElement(String43_50.convertStringToMarkdown(src.getTextElement()));
238    return tgt;
239  }
240
241  public static org.hl7.fhir.r4b.model.Observation.ObservationReferenceRangeComponent convertObservationReferenceRangeComponent(org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent src) throws FHIRException {
242    if (src == null)
243      return null;
244    org.hl7.fhir.r4b.model.Observation.ObservationReferenceRangeComponent tgt = new org.hl7.fhir.r4b.model.Observation.ObservationReferenceRangeComponent();
245    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
246    if (src.hasLow())
247      tgt.setLow(SimpleQuantity43_50.convertSimpleQuantity(src.getLow()));
248    if (src.hasHigh())
249      tgt.setHigh(SimpleQuantity43_50.convertSimpleQuantity(src.getHigh()));
250    if (src.hasType())
251      tgt.setType(CodeableConcept43_50.convertCodeableConcept(src.getType()));
252    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getAppliesTo())
253      tgt.addAppliesTo(CodeableConcept43_50.convertCodeableConcept(t));
254    if (src.hasAge())
255      tgt.setAge(Range43_50.convertRange(src.getAge()));
256    if (src.hasText())
257      tgt.setTextElement(String43_50.convertString(src.getTextElement()));
258    return tgt;
259  }
260
261  public static org.hl7.fhir.r5.model.Observation.ObservationComponentComponent convertObservationComponentComponent(org.hl7.fhir.r4b.model.Observation.ObservationComponentComponent src) throws FHIRException {
262    if (src == null)
263      return null;
264    org.hl7.fhir.r5.model.Observation.ObservationComponentComponent tgt = new org.hl7.fhir.r5.model.Observation.ObservationComponentComponent();
265    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
266    if (src.hasCode())
267      tgt.setCode(CodeableConcept43_50.convertCodeableConcept(src.getCode()));
268    if (src.hasValue())
269      tgt.setValue(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getValue()));
270    if (src.hasDataAbsentReason())
271      tgt.setDataAbsentReason(CodeableConcept43_50.convertCodeableConcept(src.getDataAbsentReason()));
272    for (org.hl7.fhir.r4b.model.CodeableConcept t : src.getInterpretation())
273      tgt.addInterpretation(CodeableConcept43_50.convertCodeableConcept(t));
274    for (org.hl7.fhir.r4b.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
275      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
276    return tgt;
277  }
278
279  public static org.hl7.fhir.r4b.model.Observation.ObservationComponentComponent convertObservationComponentComponent(org.hl7.fhir.r5.model.Observation.ObservationComponentComponent src) throws FHIRException {
280    if (src == null)
281      return null;
282    org.hl7.fhir.r4b.model.Observation.ObservationComponentComponent tgt = new org.hl7.fhir.r4b.model.Observation.ObservationComponentComponent();
283    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
284    if (src.hasCode())
285      tgt.setCode(CodeableConcept43_50.convertCodeableConcept(src.getCode()));
286    if (src.hasValue())
287      tgt.setValue(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getValue()));
288    if (src.hasDataAbsentReason())
289      tgt.setDataAbsentReason(CodeableConcept43_50.convertCodeableConcept(src.getDataAbsentReason()));
290    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getInterpretation())
291      tgt.addInterpretation(CodeableConcept43_50.convertCodeableConcept(t));
292    for (org.hl7.fhir.r5.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
293      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
294    return tgt;
295  }
296}