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