001package org.hl7.fhir.convertors.conv10_40.resources10_40;
002
003import org.hl7.fhir.convertors.context.ConversionContext10_40;
004import org.hl7.fhir.convertors.conv10_40.datatypes10_40.Reference10_40;
005import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.CodeableConcept10_40;
006import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Identifier10_40;
007import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Range10_40;
008import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.SimpleQuantity10_40;
009import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.Instant10_40;
010import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.String10_40;
011import org.hl7.fhir.dstu2.model.Enumeration;
012import org.hl7.fhir.dstu2.model.Observation;
013import org.hl7.fhir.exceptions.FHIRException;
014
015public class Observation10_40 {
016
017  public static org.hl7.fhir.dstu2.model.Observation convertObservation(org.hl7.fhir.r4.model.Observation src) throws FHIRException {
018    if (src == null || src.isEmpty())
019      return null;
020    org.hl7.fhir.dstu2.model.Observation tgt = new org.hl7.fhir.dstu2.model.Observation();
021    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
022    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
023      tgt.addIdentifier(Identifier10_40.convertIdentifier(t));
024    if (src.hasStatus())
025      tgt.setStatusElement(convertObservationStatus(src.getStatusElement()));
026    for (org.hl7.fhir.r4.model.CodeableConcept c : src.getCategory())
027      tgt.setCategory(CodeableConcept10_40.convertCodeableConcept(c));
028    if (src.hasCode())
029      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
030    if (src.hasSubject())
031      tgt.setSubject(Reference10_40.convertReference(src.getSubject()));
032    if (src.hasEncounter())
033      tgt.setEncounter(Reference10_40.convertReference(src.getEncounter()));
034    if (src.hasEffective())
035      tgt.setEffective(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getEffective()));
036    if (src.hasIssuedElement())
037      tgt.setIssuedElement(Instant10_40.convertInstant(src.getIssuedElement()));
038    for (org.hl7.fhir.r4.model.Reference t : src.getPerformer()) tgt.addPerformer(Reference10_40.convertReference(t));
039    if (src.hasValue())
040      tgt.setValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getValue()));
041    if (src.hasDataAbsentReason())
042      tgt.setDataAbsentReason(CodeableConcept10_40.convertCodeableConcept(src.getDataAbsentReason()));
043    if (src.hasInterpretation())
044      tgt.setInterpretation(CodeableConcept10_40.convertCodeableConcept(src.getInterpretationFirstRep()));
045    if (src.hasNote())
046      tgt.setComments(src.getNoteFirstRep().getText());
047    if (src.hasBodySite())
048      tgt.setBodySite(CodeableConcept10_40.convertCodeableConcept(src.getBodySite()));
049    if (src.hasMethod())
050      tgt.setMethod(CodeableConcept10_40.convertCodeableConcept(src.getMethod()));
051    if (src.hasSpecimen())
052      tgt.setSpecimen(Reference10_40.convertReference(src.getSpecimen()));
053    if (src.hasDevice())
054      tgt.setDevice(Reference10_40.convertReference(src.getDevice()));
055    for (org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
056      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
057    for (org.hl7.fhir.r4.model.Reference t : src.getHasMember())
058      tgt.addRelated(convertObservationRelatedComponent(t, org.hl7.fhir.dstu2.model.Observation.ObservationRelationshipType.HASMEMBER));
059    for (org.hl7.fhir.r4.model.Reference t : src.getDerivedFrom())
060      tgt.addRelated(convertObservationRelatedComponent(t, org.hl7.fhir.dstu2.model.Observation.ObservationRelationshipType.DERIVEDFROM));
061    for (org.hl7.fhir.r4.model.Observation.ObservationComponentComponent t : src.getComponent())
062      tgt.addComponent(convertObservationComponentComponent(t));
063    return tgt;
064  }
065
066  public static org.hl7.fhir.r4.model.Observation convertObservation(org.hl7.fhir.dstu2.model.Observation src) throws FHIRException {
067    if (src == null || src.isEmpty())
068      return null;
069    org.hl7.fhir.r4.model.Observation tgt = new org.hl7.fhir.r4.model.Observation();
070    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
071    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
072      tgt.addIdentifier(Identifier10_40.convertIdentifier(t));
073    if (src.hasStatus())
074      tgt.setStatusElement(convertObservationStatus(src.getStatusElement()));
075    if (src.hasCategory())
076      tgt.addCategory(CodeableConcept10_40.convertCodeableConcept(src.getCategory()));
077    if (src.hasCode())
078      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
079    if (src.hasSubject())
080      tgt.setSubject(Reference10_40.convertReference(src.getSubject()));
081    if (src.hasEncounter())
082      tgt.setEncounter(Reference10_40.convertReference(src.getEncounter()));
083    if (src.hasEffective())
084      tgt.setEffective(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getEffective()));
085    if (src.hasIssuedElement())
086      tgt.setIssuedElement(Instant10_40.convertInstant(src.getIssuedElement()));
087    for (org.hl7.fhir.dstu2.model.Reference t : src.getPerformer())
088      tgt.addPerformer(Reference10_40.convertReference(t));
089    if (src.hasValue())
090      tgt.setValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getValue()));
091    if (src.hasDataAbsentReason())
092      tgt.setDataAbsentReason(CodeableConcept10_40.convertCodeableConcept(src.getDataAbsentReason()));
093    if (src.hasInterpretation())
094      tgt.addInterpretation(CodeableConcept10_40.convertCodeableConcept(src.getInterpretation()));
095    if (src.hasComments())
096      tgt.addNote().setText(src.getComments());
097    if (src.hasBodySite())
098      tgt.setBodySite(CodeableConcept10_40.convertCodeableConcept(src.getBodySite()));
099    if (src.hasMethod())
100      tgt.setMethod(CodeableConcept10_40.convertCodeableConcept(src.getMethod()));
101    if (src.hasSpecimen())
102      tgt.setSpecimen(Reference10_40.convertReference(src.getSpecimen()));
103    if (src.hasDevice())
104      tgt.setDevice(Reference10_40.convertReference(src.getDevice()));
105    for (org.hl7.fhir.dstu2.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
106      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
107    for (org.hl7.fhir.dstu2.model.Observation.ObservationRelatedComponent t : src.getRelated())
108      if (t.getType() == org.hl7.fhir.dstu2.model.Observation.ObservationRelationshipType.HASMEMBER)
109        tgt.addHasMember(Reference10_40.convertReference(t.getTarget()));
110      else if (t.getType() == org.hl7.fhir.dstu2.model.Observation.ObservationRelationshipType.DERIVEDFROM)
111        tgt.addDerivedFrom(Reference10_40.convertReference(t.getTarget()));
112    for (org.hl7.fhir.dstu2.model.Observation.ObservationComponentComponent t : src.getComponent())
113      tgt.addComponent(convertObservationComponentComponent(t));
114    return tgt;
115  }
116
117  public static org.hl7.fhir.dstu2.model.Observation.ObservationComponentComponent convertObservationComponentComponent(org.hl7.fhir.r4.model.Observation.ObservationComponentComponent src) throws FHIRException {
118    if (src == null || src.isEmpty())
119      return null;
120    org.hl7.fhir.dstu2.model.Observation.ObservationComponentComponent tgt = new org.hl7.fhir.dstu2.model.Observation.ObservationComponentComponent();
121    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
122    if (src.hasCode())
123      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
124    if (src.hasValue())
125      tgt.setValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getValue()));
126    if (src.hasDataAbsentReason())
127      tgt.setDataAbsentReason(CodeableConcept10_40.convertCodeableConcept(src.getDataAbsentReason()));
128    for (org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
129      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
130    return tgt;
131  }
132
133  public static org.hl7.fhir.r4.model.Observation.ObservationComponentComponent convertObservationComponentComponent(org.hl7.fhir.dstu2.model.Observation.ObservationComponentComponent src) throws FHIRException {
134    if (src == null || src.isEmpty())
135      return null;
136    org.hl7.fhir.r4.model.Observation.ObservationComponentComponent tgt = new org.hl7.fhir.r4.model.Observation.ObservationComponentComponent();
137    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
138    if (src.hasCode())
139      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
140    if (src.hasValue())
141      tgt.setValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getValue()));
142    if (src.hasDataAbsentReason())
143      tgt.setDataAbsentReason(CodeableConcept10_40.convertCodeableConcept(src.getDataAbsentReason()));
144    for (org.hl7.fhir.dstu2.model.Observation.ObservationReferenceRangeComponent t : src.getReferenceRange())
145      tgt.addReferenceRange(convertObservationReferenceRangeComponent(t));
146    return tgt;
147  }
148
149  public static org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent convertObservationReferenceRangeComponent(org.hl7.fhir.dstu2.model.Observation.ObservationReferenceRangeComponent src) throws FHIRException {
150    if (src == null || src.isEmpty())
151      return null;
152    org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent tgt = new org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent();
153    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
154    if (src.hasLow())
155      tgt.setLow(SimpleQuantity10_40.convertSimpleQuantity(src.getLow()));
156    if (src.hasHigh())
157      tgt.setHigh(SimpleQuantity10_40.convertSimpleQuantity(src.getHigh()));
158    if (src.hasMeaning())
159      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getMeaning()));
160    if (src.hasAge())
161      tgt.setAge(Range10_40.convertRange(src.getAge()));
162    if (src.hasTextElement())
163      tgt.setTextElement(String10_40.convertString(src.getTextElement()));
164    return tgt;
165  }
166
167  public static org.hl7.fhir.dstu2.model.Observation.ObservationReferenceRangeComponent convertObservationReferenceRangeComponent(org.hl7.fhir.r4.model.Observation.ObservationReferenceRangeComponent src) throws FHIRException {
168    if (src == null || src.isEmpty())
169      return null;
170    org.hl7.fhir.dstu2.model.Observation.ObservationReferenceRangeComponent tgt = new org.hl7.fhir.dstu2.model.Observation.ObservationReferenceRangeComponent();
171    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
172    if (src.hasLow())
173      tgt.setLow(SimpleQuantity10_40.convertSimpleQuantity(src.getLow()));
174    if (src.hasHigh())
175      tgt.setHigh(SimpleQuantity10_40.convertSimpleQuantity(src.getHigh()));
176    if (src.hasType())
177      tgt.setMeaning(CodeableConcept10_40.convertCodeableConcept(src.getType()));
178    if (src.hasAge())
179      tgt.setAge(Range10_40.convertRange(src.getAge()));
180    if (src.hasTextElement())
181      tgt.setTextElement(String10_40.convertString(src.getTextElement()));
182    return tgt;
183  }
184
185  public static org.hl7.fhir.dstu2.model.Observation.ObservationRelatedComponent convertObservationRelatedComponent(org.hl7.fhir.r4.model.Reference src, org.hl7.fhir.dstu2.model.Observation.ObservationRelationshipType type) throws FHIRException {
186    if (src == null)
187      return null;
188    org.hl7.fhir.dstu2.model.Observation.ObservationRelatedComponent tgt = new org.hl7.fhir.dstu2.model.Observation.ObservationRelatedComponent();
189    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
190    tgt.setType(type);
191    tgt.setTarget(Reference10_40.convertReference(src));
192    return tgt;
193  }
194
195  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Observation.ObservationStatus> convertObservationStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Observation.ObservationStatus> src) throws FHIRException {
196      if (src == null || src.isEmpty())
197          return null;
198      Enumeration<Observation.ObservationStatus> tgt = new Enumeration<>(new Observation.ObservationStatusEnumFactory());
199      ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
200      if (src.getValue() == null) {
201          tgt.setValue(null);
202      } else {
203          switch (src.getValue()) {
204              case REGISTERED:
205                  tgt.setValue(Observation.ObservationStatus.REGISTERED);
206                  break;
207              case PRELIMINARY:
208                  tgt.setValue(Observation.ObservationStatus.PRELIMINARY);
209                  break;
210              case FINAL:
211                  tgt.setValue(Observation.ObservationStatus.FINAL);
212                  break;
213              case AMENDED:
214                  tgt.setValue(Observation.ObservationStatus.AMENDED);
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  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Observation.ObservationStatus> convertObservationStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Observation.ObservationStatus> src) throws FHIRException {
234      if (src == null || src.isEmpty())
235          return null;
236      org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Observation.ObservationStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Observation.ObservationStatusEnumFactory());
237      ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
238      if (src.getValue() == null) {
239          tgt.setValue(null);
240      } else {
241          switch (src.getValue()) {
242              case REGISTERED:
243                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.REGISTERED);
244                  break;
245              case PRELIMINARY:
246                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.PRELIMINARY);
247                  break;
248              case FINAL:
249                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.FINAL);
250                  break;
251              case AMENDED:
252                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.AMENDED);
253                  break;
254              case CANCELLED:
255                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.CANCELLED);
256                  break;
257              case ENTEREDINERROR:
258                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.ENTEREDINERROR);
259                  break;
260              case UNKNOWN:
261                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.UNKNOWN);
262                  break;
263              default:
264                  tgt.setValue(org.hl7.fhir.r4.model.Observation.ObservationStatus.NULL);
265                  break;
266          }
267      }
268      return tgt;
269  }
270}