001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_50;
004import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.ContactPoint30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Period30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Boolean30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Time30_50;
012import org.hl7.fhir.exceptions.FHIRException;
013
014import java.util.stream.Collectors;
015
016public class PractitionerRole30_50 {
017
018  public static org.hl7.fhir.dstu3.model.PractitionerRole convertPractitionerRole(org.hl7.fhir.r5.model.PractitionerRole src) throws FHIRException {
019    if (src == null)
020      return null;
021    org.hl7.fhir.dstu3.model.PractitionerRole tgt = new org.hl7.fhir.dstu3.model.PractitionerRole();
022    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
023    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
024      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
025    if (src.hasActive())
026      tgt.setActiveElement(Boolean30_50.convertBoolean(src.getActiveElement()));
027    if (src.hasPeriod())
028      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
029    if (src.hasPractitioner())
030      tgt.setPractitioner(Reference30_50.convertReference(src.getPractitioner()));
031    if (src.hasOrganization())
032      tgt.setOrganization(Reference30_50.convertReference(src.getOrganization()));
033    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCode())
034      tgt.addCode(CodeableConcept30_50.convertCodeableConcept(t));
035    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getSpecialty())
036      tgt.addSpecialty(CodeableConcept30_50.convertCodeableConcept(t));
037    for (org.hl7.fhir.r5.model.Reference t : src.getLocation()) tgt.addLocation(Reference30_50.convertReference(t));
038    for (org.hl7.fhir.r5.model.Reference t : src.getHealthcareService())
039      tgt.addHealthcareService(Reference30_50.convertReference(t));
040    for (org.hl7.fhir.r5.model.ContactPoint t : src.getTelecom())
041      tgt.addTelecom(ContactPoint30_50.convertContactPoint(t));
042    for (org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleAvailableTimeComponent t : src.getAvailableTime())
043      tgt.addAvailableTime(convertPractitionerRoleAvailableTimeComponent(t));
044    for (org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleNotAvailableComponent t : src.getNotAvailable())
045      tgt.addNotAvailable(convertPractitionerRoleNotAvailableComponent(t));
046    if (src.hasAvailabilityExceptions())
047      tgt.setAvailabilityExceptionsElement(String30_50.convertString(src.getAvailabilityExceptionsElement()));
048    for (org.hl7.fhir.r5.model.Reference t : src.getEndpoint()) tgt.addEndpoint(Reference30_50.convertReference(t));
049    return tgt;
050  }
051
052  public static org.hl7.fhir.r5.model.PractitionerRole convertPractitionerRole(org.hl7.fhir.dstu3.model.PractitionerRole src) throws FHIRException {
053    if (src == null)
054      return null;
055    org.hl7.fhir.r5.model.PractitionerRole tgt = new org.hl7.fhir.r5.model.PractitionerRole();
056    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
057    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
058      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
059    if (src.hasActive())
060      tgt.setActiveElement(Boolean30_50.convertBoolean(src.getActiveElement()));
061    if (src.hasPeriod())
062      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
063    if (src.hasPractitioner())
064      tgt.setPractitioner(Reference30_50.convertReference(src.getPractitioner()));
065    if (src.hasOrganization())
066      tgt.setOrganization(Reference30_50.convertReference(src.getOrganization()));
067    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCode())
068      tgt.addCode(CodeableConcept30_50.convertCodeableConcept(t));
069    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getSpecialty())
070      tgt.addSpecialty(CodeableConcept30_50.convertCodeableConcept(t));
071    for (org.hl7.fhir.dstu3.model.Reference t : src.getLocation()) tgt.addLocation(Reference30_50.convertReference(t));
072    for (org.hl7.fhir.dstu3.model.Reference t : src.getHealthcareService())
073      tgt.addHealthcareService(Reference30_50.convertReference(t));
074    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
075      tgt.addTelecom(ContactPoint30_50.convertContactPoint(t));
076    for (org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleAvailableTimeComponent t : src.getAvailableTime())
077      tgt.addAvailableTime(convertPractitionerRoleAvailableTimeComponent(t));
078    for (org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleNotAvailableComponent t : src.getNotAvailable())
079      tgt.addNotAvailable(convertPractitionerRoleNotAvailableComponent(t));
080    if (src.hasAvailabilityExceptions())
081      tgt.setAvailabilityExceptionsElement(String30_50.convertString(src.getAvailabilityExceptionsElement()));
082    for (org.hl7.fhir.dstu3.model.Reference t : src.getEndpoint()) tgt.addEndpoint(Reference30_50.convertReference(t));
083    return tgt;
084  }
085
086  public static org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleAvailableTimeComponent convertPractitionerRoleAvailableTimeComponent(org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleAvailableTimeComponent src) throws FHIRException {
087    if (src == null)
088      return null;
089    org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleAvailableTimeComponent tgt = new org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleAvailableTimeComponent();
090    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
091    tgt.setDaysOfWeek(src.getDaysOfWeek().stream()
092      .map(PractitionerRole30_50::convertDaysOfWeek)
093      .collect(Collectors.toList()));
094    if (src.hasAllDay())
095      tgt.setAllDayElement(Boolean30_50.convertBoolean(src.getAllDayElement()));
096    if (src.hasAvailableStartTime())
097      tgt.setAvailableStartTimeElement(Time30_50.convertTime(src.getAvailableStartTimeElement()));
098    if (src.hasAvailableEndTime())
099      tgt.setAvailableEndTimeElement(Time30_50.convertTime(src.getAvailableEndTimeElement()));
100    return tgt;
101  }
102
103  public static org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleAvailableTimeComponent convertPractitionerRoleAvailableTimeComponent(org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleAvailableTimeComponent src) throws FHIRException {
104    if (src == null)
105      return null;
106    org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleAvailableTimeComponent tgt = new org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleAvailableTimeComponent();
107    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
108    tgt.setDaysOfWeek(src.getDaysOfWeek().stream()
109      .map(PractitionerRole30_50::convertDaysOfWeek)
110      .collect(Collectors.toList()));
111    if (src.hasAllDay())
112      tgt.setAllDayElement(Boolean30_50.convertBoolean(src.getAllDayElement()));
113    if (src.hasAvailableStartTime())
114      tgt.setAvailableStartTimeElement(Time30_50.convertTime(src.getAvailableStartTimeElement()));
115    if (src.hasAvailableEndTime())
116      tgt.setAvailableEndTimeElement(Time30_50.convertTime(src.getAvailableEndTimeElement()));
117    return tgt;
118  }
119
120  public static org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleNotAvailableComponent convertPractitionerRoleNotAvailableComponent(org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleNotAvailableComponent src) throws FHIRException {
121    if (src == null)
122      return null;
123    org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleNotAvailableComponent tgt = new org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleNotAvailableComponent();
124    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
125    if (src.hasDescription())
126      tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
127    if (src.hasDuring())
128      tgt.setDuring(Period30_50.convertPeriod(src.getDuring()));
129    return tgt;
130  }
131
132  public static org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleNotAvailableComponent convertPractitionerRoleNotAvailableComponent(org.hl7.fhir.dstu3.model.PractitionerRole.PractitionerRoleNotAvailableComponent src) throws FHIRException {
133    if (src == null)
134      return null;
135    org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleNotAvailableComponent tgt = new org.hl7.fhir.r5.model.PractitionerRole.PractitionerRoleNotAvailableComponent();
136    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
137    if (src.hasDescription())
138      tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
139    if (src.hasDuring())
140      tgt.setDuring(Period30_50.convertPeriod(src.getDuring()));
141    return tgt;
142  }
143
144  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek> convertDaysOfWeek(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.DaysOfWeek> src) throws FHIRException {
145    if (src == null || src.isEmpty())
146      return null;
147    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeekEnumFactory());
148    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
149    switch (src.getValue()) {
150      case MON:
151        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.MON);
152        break;
153      case TUE:
154        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.TUE);
155        break;
156      case WED:
157        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.WED);
158        break;
159      case THU:
160        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.THU);
161        break;
162      case FRI:
163        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.FRI);
164        break;
165      case SAT:
166        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.SAT);
167        break;
168      case SUN:
169        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.SUN);
170        break;
171      default:
172        tgt.setValue(org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek.NULL);
173        break;
174    }
175    return tgt;
176  }
177
178  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.DaysOfWeek> convertDaysOfWeek(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.PractitionerRole.DaysOfWeek> src) throws FHIRException {
179    if (src == null || src.isEmpty()) return null;
180    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.DaysOfWeek> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Enumerations.DaysOfWeekEnumFactory());
181    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
182    if (src.getValue() == null) {
183      tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.NULL);
184    } else {
185      switch (src.getValue()) {
186        case MON:
187          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.MON);
188          break;
189        case TUE:
190          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.TUE);
191          break;
192        case WED:
193          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.WED);
194          break;
195        case THU:
196          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.THU);
197          break;
198        case FRI:
199          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.FRI);
200          break;
201        case SAT:
202          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.SAT);
203          break;
204        case SUN:
205          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.SUN);
206          break;
207        default:
208          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.NULL);
209          break;
210      }
211    }
212    return tgt;
213  }
214}