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