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