001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import java.util.stream.Collectors;
004
005import org.hl7.fhir.convertors.context.ConversionContext10_30;
006import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30;
007import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Attachment10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.CodeableConcept10_30;
009import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.ContactPoint10_30;
010import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
011import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Period10_30;
012import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Boolean10_30;
013import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.String10_30;
014import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Time10_30;
015import org.hl7.fhir.dstu2.model.Enumeration;
016import org.hl7.fhir.dstu2.model.HealthcareService;
017import org.hl7.fhir.exceptions.FHIRException;
018
019public class HealthcareService10_30 {
020
021  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.HealthcareService.DaysOfWeek> convertDaysOfWeek(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek> src) throws FHIRException {
022      if (src == null || src.isEmpty())
023          return null;
024      Enumeration<HealthcareService.DaysOfWeek> tgt = new Enumeration<>(new HealthcareService.DaysOfWeekEnumFactory());
025      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
026      if (src.getValue() == null) {
027          tgt.setValue(null);
028      } else {
029          switch (src.getValue()) {
030              case MON:
031                  tgt.setValue(HealthcareService.DaysOfWeek.MON);
032                  break;
033              case TUE:
034                  tgt.setValue(HealthcareService.DaysOfWeek.TUE);
035                  break;
036              case WED:
037                  tgt.setValue(HealthcareService.DaysOfWeek.WED);
038                  break;
039              case THU:
040                  tgt.setValue(HealthcareService.DaysOfWeek.THU);
041                  break;
042              case FRI:
043                  tgt.setValue(HealthcareService.DaysOfWeek.FRI);
044                  break;
045              case SAT:
046                  tgt.setValue(HealthcareService.DaysOfWeek.SAT);
047                  break;
048              case SUN:
049                  tgt.setValue(HealthcareService.DaysOfWeek.SUN);
050                  break;
051              default:
052                  tgt.setValue(HealthcareService.DaysOfWeek.NULL);
053                  break;
054          }
055      }
056      return tgt;
057  }
058
059  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek> convertDaysOfWeek(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.HealthcareService.DaysOfWeek> src) throws FHIRException {
060      if (src == null || src.isEmpty())
061          return null;
062      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());
063      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
064      if (src.getValue() == null) {
065          tgt.setValue(null);
066      } else {
067          switch (src.getValue()) {
068              case MON:
069                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.MON);
070                  break;
071              case TUE:
072                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.TUE);
073                  break;
074              case WED:
075                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.WED);
076                  break;
077              case THU:
078                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.THU);
079                  break;
080              case FRI:
081                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.FRI);
082                  break;
083              case SAT:
084                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.SAT);
085                  break;
086              case SUN:
087                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.SUN);
088                  break;
089              default:
090                  tgt.setValue(org.hl7.fhir.dstu3.model.HealthcareService.DaysOfWeek.NULL);
091                  break;
092          }
093      }
094      return tgt;
095  }
096
097  public static org.hl7.fhir.dstu2.model.HealthcareService convertHealthcareService(org.hl7.fhir.dstu3.model.HealthcareService src) throws FHIRException {
098    if (src == null || src.isEmpty())
099      return null;
100    org.hl7.fhir.dstu2.model.HealthcareService tgt = new org.hl7.fhir.dstu2.model.HealthcareService();
101    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
102    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
103      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
104    if (src.hasProvidedBy())
105      tgt.setProvidedBy(Reference10_30.convertReference(src.getProvidedBy()));
106    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getSpecialty()) {
107      if (!tgt.hasServiceType())
108        tgt.addServiceType();
109      tgt.getServiceType().get(0).addSpecialty(CodeableConcept10_30.convertCodeableConcept(t));
110    }
111    for (org.hl7.fhir.dstu3.model.Reference t : src.getLocation()) tgt.setLocation(Reference10_30.convertReference(t));
112    if (src.hasCommentElement())
113      tgt.setCommentElement(String10_30.convertString(src.getCommentElement()));
114    if (src.hasExtraDetailsElement())
115      tgt.setExtraDetailsElement(String10_30.convertString(src.getExtraDetailsElement()));
116    if (src.hasPhoto())
117      tgt.setPhoto(Attachment10_30.convertAttachment(src.getPhoto()));
118    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
119      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
120    for (org.hl7.fhir.dstu3.model.Reference t : src.getCoverageArea())
121      tgt.addCoverageArea(Reference10_30.convertReference(t));
122    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getServiceProvisionCode())
123      tgt.addServiceProvisionCode(CodeableConcept10_30.convertCodeableConcept(t));
124    if (src.hasEligibility())
125      tgt.setEligibility(CodeableConcept10_30.convertCodeableConcept(src.getEligibility()));
126    if (src.hasEligibilityNoteElement())
127      tgt.setEligibilityNoteElement(String10_30.convertString(src.getEligibilityNoteElement()));
128    for (org.hl7.fhir.dstu3.model.StringType t : src.getProgramName()) tgt.addProgramName(t.getValue());
129    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCharacteristic())
130      tgt.addCharacteristic(CodeableConcept10_30.convertCodeableConcept(t));
131    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReferralMethod())
132      tgt.addReferralMethod(CodeableConcept10_30.convertCodeableConcept(t));
133    if (src.hasAppointmentRequiredElement())
134      tgt.setAppointmentRequiredElement(Boolean10_30.convertBoolean(src.getAppointmentRequiredElement()));
135    for (org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent t : src.getAvailableTime())
136      tgt.addAvailableTime(convertHealthcareServiceAvailableTimeComponent(t));
137    for (org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent t : src.getNotAvailable())
138      tgt.addNotAvailable(convertHealthcareServiceNotAvailableComponent(t));
139    if (src.hasAvailabilityExceptionsElement())
140      tgt.setAvailabilityExceptionsElement(String10_30.convertString(src.getAvailabilityExceptionsElement()));
141    return tgt;
142  }
143
144  public static org.hl7.fhir.dstu3.model.HealthcareService convertHealthcareService(org.hl7.fhir.dstu2.model.HealthcareService src) throws FHIRException {
145    if (src == null || src.isEmpty())
146      return null;
147    org.hl7.fhir.dstu3.model.HealthcareService tgt = new org.hl7.fhir.dstu3.model.HealthcareService();
148    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
149    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
150      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
151    if (src.hasProvidedBy())
152      tgt.setProvidedBy(Reference10_30.convertReference(src.getProvidedBy()));
153    for (org.hl7.fhir.dstu2.model.HealthcareService.ServiceTypeComponent t : src.getServiceType()) {
154      for (org.hl7.fhir.dstu2.model.CodeableConcept tj : t.getSpecialty())
155        tgt.addSpecialty(CodeableConcept10_30.convertCodeableConcept(tj));
156    }
157    if (src.hasLocation())
158      tgt.addLocation(Reference10_30.convertReference(src.getLocation()));
159    if (src.hasCommentElement())
160      tgt.setCommentElement(String10_30.convertString(src.getCommentElement()));
161    if (src.hasExtraDetailsElement())
162      tgt.setExtraDetailsElement(String10_30.convertString(src.getExtraDetailsElement()));
163    if (src.hasPhoto())
164      tgt.setPhoto(Attachment10_30.convertAttachment(src.getPhoto()));
165    for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom())
166      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
167    for (org.hl7.fhir.dstu2.model.Reference t : src.getCoverageArea())
168      tgt.addCoverageArea(Reference10_30.convertReference(t));
169    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getServiceProvisionCode())
170      tgt.addServiceProvisionCode(CodeableConcept10_30.convertCodeableConcept(t));
171    if (src.hasEligibility())
172      tgt.setEligibility(CodeableConcept10_30.convertCodeableConcept(src.getEligibility()));
173    if (src.hasEligibilityNoteElement())
174      tgt.setEligibilityNoteElement(String10_30.convertString(src.getEligibilityNoteElement()));
175    for (org.hl7.fhir.dstu2.model.StringType t : src.getProgramName()) tgt.addProgramName(t.getValue());
176    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getCharacteristic())
177      tgt.addCharacteristic(CodeableConcept10_30.convertCodeableConcept(t));
178    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getReferralMethod())
179      tgt.addReferralMethod(CodeableConcept10_30.convertCodeableConcept(t));
180    if (src.hasAppointmentRequiredElement())
181      tgt.setAppointmentRequiredElement(Boolean10_30.convertBoolean(src.getAppointmentRequiredElement()));
182    for (org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceAvailableTimeComponent t : src.getAvailableTime())
183      tgt.addAvailableTime(convertHealthcareServiceAvailableTimeComponent(t));
184    for (org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceNotAvailableComponent t : src.getNotAvailable())
185      tgt.addNotAvailable(convertHealthcareServiceNotAvailableComponent(t));
186    if (src.hasAvailabilityExceptionsElement())
187      tgt.setAvailabilityExceptionsElement(String10_30.convertString(src.getAvailabilityExceptionsElement()));
188    return tgt;
189  }
190
191  public static org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent convertHealthcareServiceAvailableTimeComponent(org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceAvailableTimeComponent src) throws FHIRException {
192    if (src == null || src.isEmpty())
193      return null;
194    org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent tgt = new org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent();
195    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
196    tgt.setDaysOfWeek(src.getDaysOfWeek().stream()
197      .map(HealthcareService10_30::convertDaysOfWeek)
198      .collect(Collectors.toList()));
199    if (src.hasAllDayElement())
200      tgt.setAllDayElement(Boolean10_30.convertBoolean(src.getAllDayElement()));
201    if (src.hasAvailableStartTimeElement())
202      tgt.setAvailableStartTimeElement(Time10_30.convertTime(src.getAvailableStartTimeElement()));
203    if (src.hasAvailableEndTimeElement())
204      tgt.setAvailableEndTimeElement(Time10_30.convertTime(src.getAvailableEndTimeElement()));
205    return tgt;
206  }
207
208  public static org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceAvailableTimeComponent convertHealthcareServiceAvailableTimeComponent(org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceAvailableTimeComponent src) throws FHIRException {
209    if (src == null || src.isEmpty())
210      return null;
211    org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceAvailableTimeComponent tgt = new org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceAvailableTimeComponent();
212    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
213    tgt.setDaysOfWeek(src.getDaysOfWeek().stream()
214      .map(HealthcareService10_30::convertDaysOfWeek)
215      .collect(Collectors.toList()));
216    if (src.hasAllDayElement())
217      tgt.setAllDayElement(Boolean10_30.convertBoolean(src.getAllDayElement()));
218    if (src.hasAvailableStartTimeElement())
219      tgt.setAvailableStartTimeElement(Time10_30.convertTime(src.getAvailableStartTimeElement()));
220    if (src.hasAvailableEndTimeElement())
221      tgt.setAvailableEndTimeElement(Time10_30.convertTime(src.getAvailableEndTimeElement()));
222    return tgt;
223  }
224
225  public static org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent convertHealthcareServiceNotAvailableComponent(org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceNotAvailableComponent src) throws FHIRException {
226    if (src == null || src.isEmpty())
227      return null;
228    org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent tgt = new org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent();
229    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
230    if (src.hasDescriptionElement())
231      tgt.setDescriptionElement(String10_30.convertString(src.getDescriptionElement()));
232    if (src.hasDuring())
233      tgt.setDuring(Period10_30.convertPeriod(src.getDuring()));
234    return tgt;
235  }
236
237  public static org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceNotAvailableComponent convertHealthcareServiceNotAvailableComponent(org.hl7.fhir.dstu3.model.HealthcareService.HealthcareServiceNotAvailableComponent src) throws FHIRException {
238    if (src == null || src.isEmpty())
239      return null;
240    org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceNotAvailableComponent tgt = new org.hl7.fhir.dstu2.model.HealthcareService.HealthcareServiceNotAvailableComponent();
241    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
242    if (src.hasDescriptionElement())
243      tgt.setDescriptionElement(String10_30.convertString(src.getDescriptionElement()));
244    if (src.hasDuring())
245      tgt.setDuring(Period10_30.convertPeriod(src.getDuring()));
246    return tgt;
247  }
248}