001package org.hl7.fhir.convertors.conv30_40.resources30_40;
002
003import java.util.stream.Collectors;
004
005import org.hl7.fhir.convertors.context.ConversionContext30_40;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Reference30_40;
007import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Attachment30_40;
008import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.CodeableConcept30_40;
009import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.ContactPoint30_40;
010import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Identifier30_40;
011import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Period30_40;
012import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Boolean30_40;
013import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.String30_40;
014import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Time30_40;
015import org.hl7.fhir.exceptions.FHIRException;
016import org.hl7.fhir.r4.model.CodeableConcept;
017import org.hl7.fhir.r4.model.Enumeration;
018import org.hl7.fhir.r4.model.HealthcareService;
019import org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceEligibilityComponent;
020
021public class HealthcareService30_40 {
022
023  public static org.hl7.fhir.dstu3.model.HealthcareService convertHealthcareService(org.hl7.fhir.r4.model.HealthcareService src) throws FHIRException {
024    if (src == null)
025      return null;
026    org.hl7.fhir.dstu3.model.HealthcareService tgt = new org.hl7.fhir.dstu3.model.HealthcareService();
027    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
028    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
029      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
030    if (src.hasActive())
031      tgt.setActiveElement(Boolean30_40.convertBoolean(src.getActiveElement()));
032    if (src.hasProvidedBy())
033      tgt.setProvidedBy(Reference30_40.convertReference(src.getProvidedBy()));
034    if (src.hasCategory())
035      tgt.setCategory(CodeableConcept30_40.convertCodeableConcept(src.getCategoryFirstRep()));
036    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getType())
037      tgt.addType(CodeableConcept30_40.convertCodeableConcept(t));
038    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getSpecialty())
039      tgt.addSpecialty(CodeableConcept30_40.convertCodeableConcept(t));
040    for (org.hl7.fhir.r4.model.Reference t : src.getLocation()) tgt.addLocation(Reference30_40.convertReference(t));
041    if (src.hasName())
042      tgt.setNameElement(String30_40.convertString(src.getNameElement()));
043    if (src.hasComment())
044      tgt.setCommentElement(String30_40.convertString(src.getCommentElement()));
045    if (src.hasExtraDetails())
046      tgt.setExtraDetails(src.getExtraDetails());
047    if (src.hasPhoto())
048      tgt.setPhoto(Attachment30_40.convertAttachment(src.getPhoto()));
049    for (org.hl7.fhir.r4.model.ContactPoint t : src.getTelecom())
050      tgt.addTelecom(ContactPoint30_40.convertContactPoint(t));
051    for (org.hl7.fhir.r4.model.Reference t : src.getCoverageArea())
052      tgt.addCoverageArea(Reference30_40.convertReference(t));
053    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getServiceProvisionCode())
054      tgt.addServiceProvisionCode(CodeableConcept30_40.convertCodeableConcept(t));
055    if (src.hasEligibility()) {
056      tgt.setEligibility(CodeableConcept30_40.convertCodeableConcept(src.getEligibilityFirstRep().getCode()));
057      if (src.getEligibilityFirstRep().hasComment())
058        tgt.setEligibilityNoteElement(String30_40.convertString(src.getCommentElement()));
059    }
060    for (CodeableConcept t : src.getProgram()) tgt.addProgramName(t.getText());
061    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getCharacteristic())
062      tgt.addCharacteristic(CodeableConcept30_40.convertCodeableConcept(t));
063    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReferralMethod())
064      tgt.addReferralMethod(CodeableConcept30_40.convertCodeableConcept(t));
065    if (src.hasAppointmentRequired())
066      tgt.setAppointmentRequiredElement(Boolean30_40.convertBoolean(src.getAppointmentRequiredElement()));
067    for (org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceAvailableTimeComponent t : src.getAvailableTime())
068      tgt.addAvailableTime(convertHealthcareServiceAvailableTimeComponent(t));
069    for (org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceNotAvailableComponent t : src.getNotAvailable())
070      tgt.addNotAvailable(convertHealthcareServiceNotAvailableComponent(t));
071    if (src.hasAvailabilityExceptions())
072      tgt.setAvailabilityExceptionsElement(String30_40.convertString(src.getAvailabilityExceptionsElement()));
073    for (org.hl7.fhir.r4.model.Reference t : src.getEndpoint()) tgt.addEndpoint(Reference30_40.convertReference(t));
074    return tgt;
075  }
076
077  public static org.hl7.fhir.r4.model.HealthcareService convertHealthcareService(org.hl7.fhir.dstu3.model.HealthcareService src) throws FHIRException {
078    if (src == null)
079      return null;
080    org.hl7.fhir.r4.model.HealthcareService tgt = new org.hl7.fhir.r4.model.HealthcareService();
081    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
082    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
083      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
084    if (src.hasActive())
085      tgt.setActiveElement(Boolean30_40.convertBoolean(src.getActiveElement()));
086    if (src.hasProvidedBy())
087      tgt.setProvidedBy(Reference30_40.convertReference(src.getProvidedBy()));
088    if (src.hasCategory())
089      tgt.addCategory(CodeableConcept30_40.convertCodeableConcept(src.getCategory()));
090    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getType())
091      tgt.addType(CodeableConcept30_40.convertCodeableConcept(t));
092    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getSpecialty())
093      tgt.addSpecialty(CodeableConcept30_40.convertCodeableConcept(t));
094    for (org.hl7.fhir.dstu3.model.Reference t : src.getLocation()) tgt.addLocation(Reference30_40.convertReference(t));
095    if (src.hasName())
096      tgt.setNameElement(String30_40.convertString(src.getNameElement()));
097    if (src.hasComment())
098      tgt.setCommentElement(String30_40.convertString(src.getCommentElement()));
099    if (src.hasExtraDetails())
100      tgt.setExtraDetails(src.getExtraDetails());
101    if (src.hasPhoto())
102      tgt.setPhoto(Attachment30_40.convertAttachment(src.getPhoto()));
103    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
104      tgt.addTelecom(ContactPoint30_40.convertContactPoint(t));
105    for (org.hl7.fhir.dstu3.model.Reference t : src.getCoverageArea())
106      tgt.addCoverageArea(Reference30_40.convertReference(t));
107    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getServiceProvisionCode())
108      tgt.addServiceProvisionCode(CodeableConcept30_40.convertCodeableConcept(t));
109    if (src.hasEligibility() || src.hasEligibilityNote()) {
110      HealthcareServiceEligibilityComponent t = tgt.addEligibility();
111      t.setCode(CodeableConcept30_40.convertCodeableConcept(src.getEligibility()));
112      if (src.hasEligibilityNote())
113        t.setComment(src.getEligibilityNote());
114    }
115    for (org.hl7.fhir.dstu3.model.StringType t : src.getProgramName()) tgt.addProgram().setText(t.getValue());
116    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCharacteristic())
117      tgt.addCharacteristic(CodeableConcept30_40.convertCodeableConcept(t));
118    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReferralMethod())
119      tgt.addReferralMethod(CodeableConcept30_40.convertCodeableConcept(t));
120    if (src.hasAppointmentRequired())
121      tgt.setAppointmentRequiredElement(Boolean30_40.convertBoolean(src.getAppointmentRequiredElement()));
122    for (org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent t : src.getAvailableTime())
123      tgt.addAvailableTime(convertHealthcareServiceAvailableTimeComponent(t));
124    for (org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent t : src.getNotAvailable())
125      tgt.addNotAvailable(convertHealthcareServiceNotAvailableComponent(t));
126    if (src.hasAvailabilityExceptions())
127      tgt.setAvailabilityExceptionsElement(String30_40.convertString(src.getAvailabilityExceptionsElement()));
128    for (org.hl7.fhir.dstu3.model.Reference t : src.getEndpoint()) tgt.addEndpoint(Reference30_40.convertReference(t));
129    return tgt;
130  }
131
132  public static org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent convertHealthcareServiceAvailableTimeComponent(org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceAvailableTimeComponent src) throws FHIRException {
133    if (src == null)
134      return null;
135    org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent tgt = new org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent();
136    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
137    tgt.setDaysOfWeek(src.getDaysOfWeek().stream()
138      .map(HealthcareService30_40::convertDaysOfWeek)
139      .collect(Collectors.toList()));
140    if (src.hasAllDay())
141      tgt.setAllDayElement(Boolean30_40.convertBoolean(src.getAllDayElement()));
142    if (src.hasAvailableStartTime())
143      tgt.setAvailableStartTimeElement(Time30_40.convertTime(src.getAvailableStartTimeElement()));
144    if (src.hasAvailableEndTime())
145      tgt.setAvailableEndTimeElement(Time30_40.convertTime(src.getAvailableEndTimeElement()));
146    return tgt;
147  }
148
149  public static org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceAvailableTimeComponent convertHealthcareServiceAvailableTimeComponent(org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent src) throws FHIRException {
150    if (src == null)
151      return null;
152    org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceAvailableTimeComponent tgt = new org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceAvailableTimeComponent();
153    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
154    tgt.setDaysOfWeek(src.getDaysOfWeek().stream()
155      .map(HealthcareService30_40::convertDaysOfWeek)
156      .collect(Collectors.toList()));
157    if (src.hasAllDay())
158      tgt.setAllDayElement(Boolean30_40.convertBoolean(src.getAllDayElement()));
159    if (src.hasAvailableStartTime())
160      tgt.setAvailableStartTimeElement(Time30_40.convertTime(src.getAvailableStartTimeElement()));
161    if (src.hasAvailableEndTime())
162      tgt.setAvailableEndTimeElement(Time30_40.convertTime(src.getAvailableEndTimeElement()));
163    return tgt;
164  }
165
166  public static org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceNotAvailableComponent convertHealthcareServiceNotAvailableComponent(org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent src) throws FHIRException {
167    if (src == null)
168      return null;
169    org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceNotAvailableComponent tgt = new org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceNotAvailableComponent();
170    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
171    if (src.hasDescription())
172      tgt.setDescriptionElement(String30_40.convertString(src.getDescriptionElement()));
173    if (src.hasDuring())
174      tgt.setDuring(Period30_40.convertPeriod(src.getDuring()));
175    return tgt;
176  }
177
178  public static org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent convertHealthcareServiceNotAvailableComponent(org.hl7.fhir.r4.model.HealthcareService.HealthcareServiceNotAvailableComponent src) throws FHIRException {
179    if (src == null)
180      return null;
181    org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent tgt = new org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent();
182    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
183    if (src.hasDescription())
184      tgt.setDescriptionElement(String30_40.convertString(src.getDescriptionElement()));
185    if (src.hasDuring())
186      tgt.setDuring(Period30_40.convertPeriod(src.getDuring()));
187    return tgt;
188  }
189
190
191  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.HealthcareService.DaysOfWeek> convertDaysOfWeek(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek> src) throws FHIRException {
192      if (src == null || src.isEmpty())
193          return null;
194      Enumeration<HealthcareService.DaysOfWeek> tgt = new Enumeration<>(new HealthcareService.DaysOfWeekEnumFactory());
195      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
196      if (src.getValue() == null) {
197          tgt.setValue(null);
198      } else {
199          switch (src.getValue()) {
200              case MON:
201                  tgt.setValue(HealthcareService.DaysOfWeek.MON);
202                  break;
203              case TUE:
204                  tgt.setValue(HealthcareService.DaysOfWeek.TUE);
205                  break;
206              case WED:
207                  tgt.setValue(HealthcareService.DaysOfWeek.WED);
208                  break;
209              case THU:
210                  tgt.setValue(HealthcareService.DaysOfWeek.THU);
211                  break;
212              case FRI:
213                  tgt.setValue(HealthcareService.DaysOfWeek.FRI);
214                  break;
215              case SAT:
216                  tgt.setValue(HealthcareService.DaysOfWeek.SAT);
217                  break;
218              case SUN:
219                  tgt.setValue(HealthcareService.DaysOfWeek.SUN);
220                  break;
221              default:
222                  tgt.setValue(HealthcareService.DaysOfWeek.NULL);
223                  break;
224          }
225      }
226      return tgt;
227  }
228
229  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek> convertDaysOfWeek(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.HealthcareService.DaysOfWeek> src) throws FHIRException {
230      if (src == null || src.isEmpty())
231          return null;
232      org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeekEnumFactory());
233      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
234      if (src.getValue() == null) {
235          tgt.setValue(null);
236      } else {
237          switch (src.getValue()) {
238              case MON:
239                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.MON);
240                  break;
241              case TUE:
242                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.TUE);
243                  break;
244              case WED:
245                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.WED);
246                  break;
247              case THU:
248                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.THU);
249                  break;
250              case FRI:
251                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.FRI);
252                  break;
253              case SAT:
254                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.SAT);
255                  break;
256              case SUN:
257                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.SUN);
258                  break;
259              default:
260                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.NULL);
261                  break;
262          }
263      }
264      return tgt;
265  }
266}