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