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