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.Duration10_50;
007import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Identifier10_50;
008import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Period10_50;
009import org.hl7.fhir.exceptions.FHIRException;
010import org.hl7.fhir.r5.model.CodeableReference;
011import org.hl7.fhir.r5.model.Encounter;
012import org.hl7.fhir.r5.model.Encounter.ReasonComponent;
013import org.hl7.fhir.r5.model.Enumeration;
014import org.hl7.fhir.r5.model.Enumerations;
015
016public class Encounter10_50 {
017
018  public static org.hl7.fhir.dstu2.model.Encounter convertEncounter(org.hl7.fhir.r5.model.Encounter src) throws FHIRException {
019    if (src == null || src.isEmpty())
020      return null;
021    org.hl7.fhir.dstu2.model.Encounter tgt = new org.hl7.fhir.dstu2.model.Encounter();
022    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
023    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
024      tgt.addIdentifier(Identifier10_50.convertIdentifier(t));
025    if (src.hasStatus())
026      tgt.setStatusElement(convertEncounterState(src.getStatusElement()));
027    if (src.hasClass_())
028      tgt.setClass_( convertEncounterClass(src.getClass_FirstRep().getCodingFirstRep()));
029    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getType())
030      tgt.addType(CodeableConcept10_50.convertCodeableConcept(t));
031    if (src.hasPriority())
032      tgt.setPriority(CodeableConcept10_50.convertCodeableConcept(src.getPriority()));
033    if (src.hasSubject())
034      tgt.setPatient(Reference10_50.convertReference(src.getSubject()));
035    for (org.hl7.fhir.r5.model.Reference t : src.getEpisodeOfCare())
036      tgt.addEpisodeOfCare(Reference10_50.convertReference(t));
037    for (org.hl7.fhir.r5.model.Reference t : src.getBasedOn())
038      tgt.addIncomingReferral(Reference10_50.convertReference(t));
039    for (org.hl7.fhir.r5.model.Encounter.EncounterParticipantComponent t : src.getParticipant())
040      tgt.addParticipant(convertEncounterParticipantComponent(t));
041    if (src.hasAppointment())
042      tgt.setAppointment(Reference10_50.convertReference(src.getAppointmentFirstRep()));
043    if (src.hasActualPeriod())
044      tgt.setPeriod(Period10_50.convertPeriod(src.getActualPeriod()));
045    if (src.hasLength())
046      tgt.setLength(Duration10_50.convertDuration(src.getLength()));
047    for (ReasonComponent t1 : src.getReason())
048      for (CodeableReference t : t1.getValue())
049        if (t.hasConcept())
050          tgt.addReason(CodeableConcept10_50.convertCodeableConcept(t.getConcept()));
051    if (src.hasAdmission() || src.hasDietPreference() || src.hasSpecialArrangement() || src.hasSpecialCourtesy())
052      tgt.setHospitalization(convertEncounterHospitalizationComponent(src.getAdmission(), src));
053    for (org.hl7.fhir.r5.model.Encounter.EncounterLocationComponent t : src.getLocation())
054      tgt.addLocation(convertEncounterLocationComponent(t));
055    if (src.hasServiceProvider())
056      tgt.setServiceProvider(Reference10_50.convertReference(src.getServiceProvider()));
057    if (src.hasPartOf())
058      tgt.setPartOf(Reference10_50.convertReference(src.getPartOf()));
059    return tgt;
060  }
061
062  public static org.hl7.fhir.r5.model.Encounter convertEncounter(org.hl7.fhir.dstu2.model.Encounter src) throws FHIRException {
063    if (src == null || src.isEmpty())
064      return null;
065    org.hl7.fhir.r5.model.Encounter tgt = new org.hl7.fhir.r5.model.Encounter();
066    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
067    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
068      tgt.addIdentifier(Identifier10_50.convertIdentifier(t));
069    if (src.hasStatus())
070      tgt.setStatusElement(convertEncounterState(src.getStatusElement()));
071    if (src.hasClass_())
072      tgt.addClass_(new org.hl7.fhir.r5.model.CodeableConcept().addCoding(convertEncounterClass(src.getClass_())));
073    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getType())
074      tgt.addType(CodeableConcept10_50.convertCodeableConcept(t));
075    if (src.hasPriority())
076      tgt.setPriority(CodeableConcept10_50.convertCodeableConcept(src.getPriority()));
077    if (src.hasPatient())
078      tgt.setSubject(Reference10_50.convertReference(src.getPatient()));
079    for (org.hl7.fhir.dstu2.model.Reference t : src.getEpisodeOfCare())
080      tgt.addEpisodeOfCare(Reference10_50.convertReference(t));
081    for (org.hl7.fhir.dstu2.model.Reference t : src.getIncomingReferral())
082      tgt.addBasedOn(Reference10_50.convertReference(t));
083    for (org.hl7.fhir.dstu2.model.Encounter.EncounterParticipantComponent t : src.getParticipant())
084      tgt.addParticipant(convertEncounterParticipantComponent(t));
085    if (src.hasAppointment())
086      tgt.addAppointment(Reference10_50.convertReference(src.getAppointment()));
087    if (src.hasPeriod())
088      tgt.setActualPeriod(Period10_50.convertPeriod(src.getPeriod()));
089    if (src.hasLength())
090      tgt.setLength(Duration10_50.convertDuration(src.getLength()));
091    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getReason())
092      tgt.addReason().addValue(CodeableConcept10_50.convertCodeableConceptToCodableReference(t));
093    if (src.hasHospitalization())
094      tgt.setAdmission(convertEncounterHospitalizationComponent(src.getHospitalization(), tgt));
095    for (org.hl7.fhir.dstu2.model.Encounter.EncounterLocationComponent t : src.getLocation())
096      tgt.addLocation(convertEncounterLocationComponent(t));
097    if (src.hasServiceProvider())
098      tgt.setServiceProvider(Reference10_50.convertReference(src.getServiceProvider()));
099    if (src.hasPartOf())
100      tgt.setPartOf(Reference10_50.convertReference(src.getPartOf()));
101    return tgt;
102  }
103
104  public static org.hl7.fhir.dstu2.model.Encounter.EncounterClass convertEncounterClass(org.hl7.fhir.r5.model.Coding src) throws FHIRException {
105    if (src == null || src.isEmpty())
106      return null;
107    if (src.getSystem().equals("http://terminology.hl7.org/v3/ActCode")) {
108      if (src.getCode().equals("IMP"))
109        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.INPATIENT;
110      if (src.getCode().equals("AMB"))
111        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.AMBULATORY;
112      if (src.getCode().equals("EMER"))
113        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.EMERGENCY;
114      if (src.getCode().equals("HH"))
115        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.HOME;
116      if (src.getCode().equals("FLD"))
117        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.FIELD;
118      if (src.getCode().equals(""))
119        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.DAYTIME;
120      if (src.getCode().equals("VR"))
121        return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.VIRTUAL;
122    }
123    return org.hl7.fhir.dstu2.model.Encounter.EncounterClass.NULL;
124  }
125
126  public static org.hl7.fhir.r5.model.Coding convertEncounterClass(org.hl7.fhir.dstu2.model.Encounter.EncounterClass src) throws FHIRException {
127    if (src == null)
128      return null;
129    switch (src) {
130      case INPATIENT:
131        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("IMP");
132      case OUTPATIENT:
133        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("AMB");
134      case AMBULATORY:
135        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("AMB");
136      case EMERGENCY:
137        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("EMER");
138      case HOME:
139        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("HH");
140      case FIELD:
141        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("FLD");
142      case DAYTIME:
143        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("SS");
144      case VIRTUAL:
145        return new org.hl7.fhir.r5.model.Coding().setSystem("http://terminology.hl7.org/v3/ActCode").setCode("VR");
146      default:
147        return null;
148    }
149  }
150
151  public static org.hl7.fhir.r5.model.Encounter.EncounterAdmissionComponent convertEncounterHospitalizationComponent(org.hl7.fhir.dstu2.model.Encounter.EncounterHospitalizationComponent src, org.hl7.fhir.r5.model.Encounter tgte) throws FHIRException {
152    if (src == null || src.isEmpty())
153      return null;
154    org.hl7.fhir.r5.model.Encounter.EncounterAdmissionComponent tgt = new org.hl7.fhir.r5.model.Encounter.EncounterAdmissionComponent();
155    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
156    if (src.hasPreAdmissionIdentifier())
157      tgt.setPreAdmissionIdentifier(Identifier10_50.convertIdentifier(src.getPreAdmissionIdentifier()));
158    if (src.hasOrigin())
159      tgt.setOrigin(Reference10_50.convertReference(src.getOrigin()));
160    if (src.hasAdmitSource())
161      tgt.setAdmitSource(CodeableConcept10_50.convertCodeableConcept(src.getAdmitSource()));
162    if (src.hasReAdmission())
163      tgt.setReAdmission(CodeableConcept10_50.convertCodeableConcept(src.getReAdmission()));
164    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getDietPreference())
165      tgte.addDietPreference(CodeableConcept10_50.convertCodeableConcept(t));
166    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getSpecialCourtesy())
167      tgte.addSpecialCourtesy(CodeableConcept10_50.convertCodeableConcept(t));
168    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getSpecialArrangement())
169      tgte.addSpecialArrangement(CodeableConcept10_50.convertCodeableConcept(t));
170    if (src.hasDestination())
171      tgt.setDestination(Reference10_50.convertReference(src.getDestination()));
172    if (src.hasDischargeDisposition())
173      tgt.setDischargeDisposition(CodeableConcept10_50.convertCodeableConcept(src.getDischargeDisposition()));
174    return tgt;
175  }
176
177  public static org.hl7.fhir.dstu2.model.Encounter.EncounterHospitalizationComponent convertEncounterHospitalizationComponent(org.hl7.fhir.r5.model.Encounter.EncounterAdmissionComponent src, org.hl7.fhir.r5.model.Encounter srce) throws FHIRException {
178    if (src == null || src.isEmpty())
179      return null;
180    org.hl7.fhir.dstu2.model.Encounter.EncounterHospitalizationComponent tgt = new org.hl7.fhir.dstu2.model.Encounter.EncounterHospitalizationComponent();
181    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
182    if (src.hasPreAdmissionIdentifier())
183      tgt.setPreAdmissionIdentifier(Identifier10_50.convertIdentifier(src.getPreAdmissionIdentifier()));
184    if (src.hasOrigin())
185      tgt.setOrigin(Reference10_50.convertReference(src.getOrigin()));
186    if (src.hasAdmitSource())
187      tgt.setAdmitSource(CodeableConcept10_50.convertCodeableConcept(src.getAdmitSource()));
188    if (src.hasReAdmission())
189      tgt.setReAdmission(CodeableConcept10_50.convertCodeableConcept(src.getReAdmission()));
190    for (org.hl7.fhir.r5.model.CodeableConcept t : srce.getDietPreference())
191      tgt.addDietPreference(CodeableConcept10_50.convertCodeableConcept(t));
192    for (org.hl7.fhir.r5.model.CodeableConcept t : srce.getSpecialCourtesy())
193      tgt.addSpecialCourtesy(CodeableConcept10_50.convertCodeableConcept(t));
194    for (org.hl7.fhir.r5.model.CodeableConcept t : srce.getSpecialArrangement())
195      tgt.addSpecialArrangement(CodeableConcept10_50.convertCodeableConcept(t));
196    if (src.hasDestination())
197      tgt.setDestination(Reference10_50.convertReference(src.getDestination()));
198    if (src.hasDischargeDisposition())
199      tgt.setDischargeDisposition(CodeableConcept10_50.convertCodeableConcept(src.getDischargeDisposition()));
200    return tgt;
201  }
202
203  public static org.hl7.fhir.r5.model.Encounter.EncounterLocationComponent convertEncounterLocationComponent(org.hl7.fhir.dstu2.model.Encounter.EncounterLocationComponent src) throws FHIRException {
204    if (src == null || src.isEmpty())
205      return null;
206    org.hl7.fhir.r5.model.Encounter.EncounterLocationComponent tgt = new org.hl7.fhir.r5.model.Encounter.EncounterLocationComponent();
207    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
208    if (src.hasLocation())
209      tgt.setLocation(Reference10_50.convertReference(src.getLocation()));
210    if (src.hasStatus())
211      tgt.setStatusElement(convertEncounterLocationStatus(src.getStatusElement()));
212    if (src.hasPeriod())
213      tgt.setPeriod(Period10_50.convertPeriod(src.getPeriod()));
214    return tgt;
215  }
216
217  public static org.hl7.fhir.dstu2.model.Encounter.EncounterLocationComponent convertEncounterLocationComponent(org.hl7.fhir.r5.model.Encounter.EncounterLocationComponent src) throws FHIRException {
218    if (src == null || src.isEmpty())
219      return null;
220    org.hl7.fhir.dstu2.model.Encounter.EncounterLocationComponent tgt = new org.hl7.fhir.dstu2.model.Encounter.EncounterLocationComponent();
221    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
222    if (src.hasLocation())
223      tgt.setLocation(Reference10_50.convertReference(src.getLocation()));
224    if (src.hasStatus())
225      tgt.setStatusElement(convertEncounterLocationStatus(src.getStatusElement()));
226    if (src.hasPeriod())
227      tgt.setPeriod(Period10_50.convertPeriod(src.getPeriod()));
228    return tgt;
229  }
230
231  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Encounter.EncounterLocationStatus> convertEncounterLocationStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus> src) throws FHIRException {
232      if (src == null || src.isEmpty())
233          return null;
234      Enumeration<Encounter.EncounterLocationStatus> tgt = new Enumeration<>(new Encounter.EncounterLocationStatusEnumFactory());
235      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
236      if (src.getValue() == null) {
237          tgt.setValue(null);
238      } else {
239          switch (src.getValue()) {
240              case PLANNED:
241                  tgt.setValue(Encounter.EncounterLocationStatus.PLANNED);
242                  break;
243              case ACTIVE:
244                  tgt.setValue(Encounter.EncounterLocationStatus.ACTIVE);
245                  break;
246              case RESERVED:
247                  tgt.setValue(Encounter.EncounterLocationStatus.RESERVED);
248                  break;
249              case COMPLETED:
250                  tgt.setValue(Encounter.EncounterLocationStatus.COMPLETED);
251                  break;
252              default:
253                  tgt.setValue(Encounter.EncounterLocationStatus.NULL);
254                  break;
255          }
256      }
257      return tgt;
258  }
259
260  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus> convertEncounterLocationStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Encounter.EncounterLocationStatus> src) throws FHIRException {
261      if (src == null || src.isEmpty())
262          return null;
263      org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatusEnumFactory());
264      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
265      if (src.getValue() == null) {
266          tgt.setValue(null);
267      } else {
268          switch (src.getValue()) {
269              case PLANNED:
270                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus.PLANNED);
271                  break;
272              case ACTIVE:
273                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus.ACTIVE);
274                  break;
275              case RESERVED:
276                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus.RESERVED);
277                  break;
278              case COMPLETED:
279                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus.COMPLETED);
280                  break;
281              default:
282                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterLocationStatus.NULL);
283                  break;
284          }
285      }
286      return tgt;
287  }
288
289  public static org.hl7.fhir.r5.model.Encounter.EncounterParticipantComponent convertEncounterParticipantComponent(org.hl7.fhir.dstu2.model.Encounter.EncounterParticipantComponent src) throws FHIRException {
290    if (src == null || src.isEmpty())
291      return null;
292    org.hl7.fhir.r5.model.Encounter.EncounterParticipantComponent tgt = new org.hl7.fhir.r5.model.Encounter.EncounterParticipantComponent();
293    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
294    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getType())
295      tgt.addType(CodeableConcept10_50.convertCodeableConcept(t));
296    if (src.hasPeriod())
297      tgt.setPeriod(Period10_50.convertPeriod(src.getPeriod()));
298    if (src.hasIndividual())
299      tgt.setActor(Reference10_50.convertReference(src.getIndividual()));
300    return tgt;
301  }
302
303  public static org.hl7.fhir.dstu2.model.Encounter.EncounterParticipantComponent convertEncounterParticipantComponent(org.hl7.fhir.r5.model.Encounter.EncounterParticipantComponent src) throws FHIRException {
304    if (src == null || src.isEmpty())
305      return null;
306    org.hl7.fhir.dstu2.model.Encounter.EncounterParticipantComponent tgt = new org.hl7.fhir.dstu2.model.Encounter.EncounterParticipantComponent();
307    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
308    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getType())
309      tgt.addType(CodeableConcept10_50.convertCodeableConcept(t));
310    if (src.hasPeriod())
311      tgt.setPeriod(Period10_50.convertPeriod(src.getPeriod()));
312    if (src.hasActor())
313      tgt.setIndividual(Reference10_50.convertReference(src.getActor()));
314    return tgt;
315  }
316
317  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Encounter.EncounterState> convertEncounterState(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.EncounterStatus> src) throws FHIRException {
318      if (src == null || src.isEmpty())
319          return null;
320      org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Encounter.EncounterState> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Encounter.EncounterStateEnumFactory());
321      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
322      if (src.getValue() == null) {
323          tgt.setValue(null);
324      } else {
325          switch (src.getValue()) {
326              case PLANNED:
327                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterState.PLANNED);
328                  break;
329              case INPROGRESS:
330                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterState.INPROGRESS);
331                  break;
332              case COMPLETED:
333                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterState.FINISHED);
334                  break;
335              case CANCELLED:
336                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterState.CANCELLED);
337                  break;
338              default:
339                  tgt.setValue(org.hl7.fhir.dstu2.model.Encounter.EncounterState.NULL);
340                  break;
341          }
342      }
343      return tgt;
344  }
345
346  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.EncounterStatus> convertEncounterState(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Encounter.EncounterState> src) throws FHIRException {
347      if (src == null || src.isEmpty())
348          return null;
349      Enumeration<Enumerations.EncounterStatus> tgt = new Enumeration<>(new Enumerations.EncounterStatusEnumFactory());
350      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
351      if (src.getValue() == null) {
352          tgt.setValue(null);
353      } else {
354          switch (src.getValue()) {
355              case PLANNED:
356                  tgt.setValue(Enumerations.EncounterStatus.PLANNED);
357                  break;
358              case ARRIVED:
359                  tgt.setValue(Enumerations.EncounterStatus.INPROGRESS);
360                  break;
361              case INPROGRESS:
362                  tgt.setValue(Enumerations.EncounterStatus.INPROGRESS);
363                  break;
364              case ONLEAVE:
365                  tgt.setValue(Enumerations.EncounterStatus.INPROGRESS);
366                  break;
367              case FINISHED:
368                  tgt.setValue(Enumerations.EncounterStatus.COMPLETED);
369                  break;
370              case CANCELLED:
371                  tgt.setValue(Enumerations.EncounterStatus.CANCELLED);
372                  break;
373              default:
374                  tgt.setValue(Enumerations.EncounterStatus.NULL);
375                  break;
376          }
377      }
378      return tgt;
379  }
380}