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