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