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.Identifier30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Period30_50;
008import org.hl7.fhir.exceptions.FHIRException;
009import org.hl7.fhir.r5.model.Enumeration;
010import org.hl7.fhir.r5.model.EpisodeOfCare;
011
012public class EpisodeOfCare30_50 {
013
014  public static org.hl7.fhir.dstu3.model.EpisodeOfCare convertEpisodeOfCare(org.hl7.fhir.r5.model.EpisodeOfCare src) throws FHIRException {
015    if (src == null)
016      return null;
017    org.hl7.fhir.dstu3.model.EpisodeOfCare tgt = new org.hl7.fhir.dstu3.model.EpisodeOfCare();
018    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
019    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
020      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
021    if (src.hasStatus())
022      tgt.setStatusElement(convertEpisodeOfCareStatus(src.getStatusElement()));
023    for (org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent t : src.getStatusHistory())
024      tgt.addStatusHistory(convertEpisodeOfCareStatusHistoryComponent(t));
025    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getType())
026      tgt.addType(CodeableConcept30_50.convertCodeableConcept(t));
027    for (org.hl7.fhir.r5.model.EpisodeOfCare.DiagnosisComponent t : src.getDiagnosis())
028      tgt.addDiagnosis(convertDiagnosisComponent(t));
029    if (src.hasPatient())
030      tgt.setPatient(Reference30_50.convertReference(src.getPatient()));
031    if (src.hasManagingOrganization())
032      tgt.setManagingOrganization(Reference30_50.convertReference(src.getManagingOrganization()));
033    if (src.hasPeriod())
034      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
035    for (org.hl7.fhir.r5.model.Reference t : src.getReferralRequest())
036      tgt.addReferralRequest(Reference30_50.convertReference(t));
037    if (src.hasCareManager())
038      tgt.setCareManager(Reference30_50.convertReference(src.getCareManager()));
039    for (org.hl7.fhir.r5.model.Reference t : src.getCareTeam()) tgt.addTeam(Reference30_50.convertReference(t));
040    for (org.hl7.fhir.r5.model.Reference t : src.getAccount()) tgt.addAccount(Reference30_50.convertReference(t));
041    return tgt;
042  }
043
044  public static org.hl7.fhir.r5.model.EpisodeOfCare convertEpisodeOfCare(org.hl7.fhir.dstu3.model.EpisodeOfCare src) throws FHIRException {
045    if (src == null)
046      return null;
047    org.hl7.fhir.r5.model.EpisodeOfCare tgt = new org.hl7.fhir.r5.model.EpisodeOfCare();
048    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
049    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
050      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
051    if (src.hasStatus())
052      tgt.setStatusElement(convertEpisodeOfCareStatus(src.getStatusElement()));
053    for (org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent t : src.getStatusHistory())
054      tgt.addStatusHistory(convertEpisodeOfCareStatusHistoryComponent(t));
055    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getType())
056      tgt.addType(CodeableConcept30_50.convertCodeableConcept(t));
057    for (org.hl7.fhir.dstu3.model.EpisodeOfCare.DiagnosisComponent t : src.getDiagnosis())
058      tgt.addDiagnosis(convertDiagnosisComponent(t));
059    if (src.hasPatient())
060      tgt.setPatient(Reference30_50.convertReference(src.getPatient()));
061    if (src.hasManagingOrganization())
062      tgt.setManagingOrganization(Reference30_50.convertReference(src.getManagingOrganization()));
063    if (src.hasPeriod())
064      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
065    for (org.hl7.fhir.dstu3.model.Reference t : src.getReferralRequest())
066      tgt.addReferralRequest(Reference30_50.convertReference(t));
067    if (src.hasCareManager())
068      tgt.setCareManager(Reference30_50.convertReference(src.getCareManager()));
069    for (org.hl7.fhir.dstu3.model.Reference t : src.getTeam()) tgt.addCareTeam(Reference30_50.convertReference(t));
070    for (org.hl7.fhir.dstu3.model.Reference t : src.getAccount()) tgt.addAccount(Reference30_50.convertReference(t));
071    return tgt;
072  }
073
074  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatus> convertEpisodeOfCareStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus> src) throws FHIRException {
075      if (src == null || src.isEmpty())
076          return null;
077      Enumeration<EpisodeOfCare.EpisodeOfCareStatus> tgt = new Enumeration<>(new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
078      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
079      if (src.getValue() == null) {
080          tgt.setValue(null);
081      } else {
082          switch (src.getValue()) {
083              case PLANNED:
084                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.PLANNED);
085                  break;
086              case WAITLIST:
087                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.WAITLIST);
088                  break;
089              case ACTIVE:
090                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.ACTIVE);
091                  break;
092              case ONHOLD:
093                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.ONHOLD);
094                  break;
095              case FINISHED:
096                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.FINISHED);
097                  break;
098              case CANCELLED:
099                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.CANCELLED);
100                  break;
101              case ENTEREDINERROR:
102                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.ENTEREDINERROR);
103                  break;
104              default:
105                  tgt.setValue(EpisodeOfCare.EpisodeOfCareStatus.NULL);
106                  break;
107          }
108      }
109      return tgt;
110  }
111
112  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus> convertEpisodeOfCareStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatus> src) throws FHIRException {
113      if (src == null || src.isEmpty())
114          return null;
115      org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
116      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
117      if (src.getValue() == null) {
118          tgt.setValue(null);
119      } else {
120          switch (src.getValue()) {
121              case PLANNED:
122                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.PLANNED);
123                  break;
124              case WAITLIST:
125                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.WAITLIST);
126                  break;
127              case ACTIVE:
128                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.ACTIVE);
129                  break;
130              case ONHOLD:
131                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.ONHOLD);
132                  break;
133              case FINISHED:
134                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.FINISHED);
135                  break;
136              case CANCELLED:
137                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.CANCELLED);
138                  break;
139              case ENTEREDINERROR:
140                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.ENTEREDINERROR);
141                  break;
142              default:
143                  tgt.setValue(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatus.NULL);
144                  break;
145          }
146      }
147      return tgt;
148  }
149
150  public static org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent convertEpisodeOfCareStatusHistoryComponent(org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent src) throws FHIRException {
151    if (src == null)
152      return null;
153    org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent tgt = new org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
154    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
155    if (src.hasStatus())
156      tgt.setStatusElement(convertEpisodeOfCareStatus(src.getStatusElement()));
157    if (src.hasPeriod())
158      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
159    return tgt;
160  }
161
162  public static org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent convertEpisodeOfCareStatusHistoryComponent(org.hl7.fhir.dstu3.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent src) throws FHIRException {
163    if (src == null)
164      return null;
165    org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent tgt = new org.hl7.fhir.r5.model.EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
166    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
167    if (src.hasStatus())
168      tgt.setStatusElement(convertEpisodeOfCareStatus(src.getStatusElement()));
169    if (src.hasPeriod())
170      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
171    return tgt;
172  }
173
174  public static org.hl7.fhir.r5.model.EpisodeOfCare.DiagnosisComponent convertDiagnosisComponent(org.hl7.fhir.dstu3.model.EpisodeOfCare.DiagnosisComponent src) throws FHIRException {
175    if (src == null) return null;
176    org.hl7.fhir.r5.model.EpisodeOfCare.DiagnosisComponent tgt = new org.hl7.fhir.r5.model.EpisodeOfCare.DiagnosisComponent();
177    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
178    if (src.hasCondition()) tgt.addCondition(Reference30_50.convertReferenceToCodableReference(src.getCondition()));
179    if (src.hasRole()) tgt.setUse(CodeableConcept30_50.convertCodeableConcept(src.getRole()));
180//    if (src.hasRank()) tgt.setRankElement(PositiveInt30_50.convertPositiveInt(src.getRankElement()));
181    return tgt;
182  }
183
184  public static org.hl7.fhir.dstu3.model.EpisodeOfCare.DiagnosisComponent convertDiagnosisComponent(org.hl7.fhir.r5.model.EpisodeOfCare.DiagnosisComponent src) throws FHIRException {
185    if (src == null) return null;
186    org.hl7.fhir.dstu3.model.EpisodeOfCare.DiagnosisComponent tgt = new org.hl7.fhir.dstu3.model.EpisodeOfCare.DiagnosisComponent();
187    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
188    if (src.hasCondition()) tgt.setCondition(Reference30_50.convertCodeableReferenceToReference(src.getConditionFirstRep()));
189    if (src.hasUse()) tgt.setRole(CodeableConcept30_50.convertCodeableConcept(src.getUse()));
190//    if (src.hasRank()) tgt.setRankElement(PositiveInt30_50.convertPositiveInt(src.getRankElement()));
191    return tgt;
192  }
193}