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