001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import org.hl7.fhir.convertors.context.ConversionContext10_30;
004import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30;
005import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.CodeableConcept10_30;
006import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
007import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Period10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.String10_30;
009import org.hl7.fhir.dstu2.model.CodeableConcept;
010import org.hl7.fhir.dstu2.model.Enumeration;
011import org.hl7.fhir.dstu2.model.ReferralRequest;
012import org.hl7.fhir.dstu3.model.ReferralRequest.ReferralPriority;
013import org.hl7.fhir.exceptions.FHIRException;
014
015public class ReferralRequest10_30 {
016
017  static public org.hl7.fhir.dstu2.model.CodeableConcept convertReferralPriorityCode(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralPriority priority) {
018    org.hl7.fhir.dstu2.model.CodeableConcept cc = new org.hl7.fhir.dstu2.model.CodeableConcept();
019    switch (priority) {
020      case ROUTINE:
021        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("routine");
022        break;
023      case URGENT:
024        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("urgent");
025        break;
026      case STAT:
027        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("stat");
028        break;
029      case ASAP:
030        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("asap");
031        break;
032      default:
033        return null;
034    }
035    return cc;
036  }
037
038  static public ReferralPriority convertReferralPriorityCode(CodeableConcept priority) {
039    for (org.hl7.fhir.dstu2.model.Coding c : priority.getCoding()) {
040      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "routine".equals(c.getCode()))
041        return org.hl7.fhir.dstu3.model.ReferralRequest.ReferralPriority.ROUTINE;
042      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "urgent".equals(c.getCode()))
043        return org.hl7.fhir.dstu3.model.ReferralRequest.ReferralPriority.URGENT;
044      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "stat".equals(c.getCode()))
045        return org.hl7.fhir.dstu3.model.ReferralRequest.ReferralPriority.STAT;
046      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "asap".equals(c.getCode()))
047        return org.hl7.fhir.dstu3.model.ReferralRequest.ReferralPriority.ASAP;
048    }
049    return null;
050  }
051
052  public static org.hl7.fhir.dstu2.model.ReferralRequest convertReferralRequest(org.hl7.fhir.dstu3.model.ReferralRequest src) throws FHIRException {
053    if (src == null || src.isEmpty())
054      return null;
055    org.hl7.fhir.dstu2.model.ReferralRequest tgt = new org.hl7.fhir.dstu2.model.ReferralRequest();
056    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
057    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
058      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
059    if (src.hasStatus())
060      tgt.setStatusElement(convertReferralStatus(src.getStatusElement()));
061    if (src.hasType())
062      tgt.setType(CodeableConcept10_30.convertCodeableConcept(src.getType()));
063    if (src.hasPriority())
064      tgt.setPriority(convertReferralPriorityCode(src.getPriority()));
065    if (src.hasSubject())
066      tgt.setPatient(Reference10_30.convertReference(src.getSubject()));
067    if (src.hasOccurrencePeriod())
068      tgt.setFulfillmentTime(Period10_30.convertPeriod(src.getOccurrencePeriod()));
069    tgt.setRequester(Reference10_30.convertReference(src.getRequester().getAgent()));
070    if (src.hasSpecialty())
071      tgt.setSpecialty(CodeableConcept10_30.convertCodeableConcept(src.getSpecialty()));
072    for (org.hl7.fhir.dstu3.model.Reference t : src.getRecipient())
073      tgt.addRecipient(Reference10_30.convertReference(t));
074    for (org.hl7.fhir.dstu3.model.CodeableConcept cc : src.getReasonCode())
075      tgt.setReason(CodeableConcept10_30.convertCodeableConcept(cc));
076    if (src.hasDescriptionElement())
077      tgt.setDescriptionElement(String10_30.convertString(src.getDescriptionElement()));
078    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getServiceRequested())
079      tgt.addServiceRequested(CodeableConcept10_30.convertCodeableConcept(t));
080    for (org.hl7.fhir.dstu3.model.Reference t : src.getSupportingInfo())
081      tgt.addSupportingInformation(Reference10_30.convertReference(t));
082    return tgt;
083  }
084
085  public static org.hl7.fhir.dstu3.model.ReferralRequest convertReferralRequest(org.hl7.fhir.dstu2.model.ReferralRequest src) throws FHIRException {
086    if (src == null || src.isEmpty())
087      return null;
088    org.hl7.fhir.dstu3.model.ReferralRequest tgt = new org.hl7.fhir.dstu3.model.ReferralRequest();
089    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
090    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
091      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
092    if (src.hasStatus())
093      tgt.setStatusElement(convertReferralStatus(src.getStatusElement()));
094    if (src.hasType())
095      tgt.setType(CodeableConcept10_30.convertCodeableConcept(src.getType()));
096    if (src.hasPriority())
097      tgt.setPriority(convertReferralPriorityCode(src.getPriority()));
098    if (src.hasPatient())
099      tgt.setSubject(Reference10_30.convertReference(src.getPatient()));
100    if (src.hasFulfillmentTime())
101      tgt.setOccurrence(Period10_30.convertPeriod(src.getFulfillmentTime()));
102    tgt.getRequester().setAgent(Reference10_30.convertReference(src.getRequester()));
103    if (src.hasSpecialty())
104      tgt.setSpecialty(CodeableConcept10_30.convertCodeableConcept(src.getSpecialty()));
105    for (org.hl7.fhir.dstu2.model.Reference t : src.getRecipient())
106      tgt.addRecipient(Reference10_30.convertReference(t));
107    if (src.hasReason())
108      tgt.addReasonCode(CodeableConcept10_30.convertCodeableConcept(src.getReason()));
109    if (src.hasDescriptionElement())
110      tgt.setDescriptionElement(String10_30.convertString(src.getDescriptionElement()));
111    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getServiceRequested())
112      tgt.addServiceRequested(CodeableConcept10_30.convertCodeableConcept(t));
113    for (org.hl7.fhir.dstu2.model.Reference t : src.getSupportingInformation())
114      tgt.addSupportingInfo(Reference10_30.convertReference(t));
115    return tgt;
116  }
117
118  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ReferralRequest.ReferralStatus> convertReferralStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus> src) throws FHIRException {
119      if (src == null || src.isEmpty())
120          return null;
121      Enumeration<ReferralRequest.ReferralStatus> tgt = new Enumeration<>(new ReferralRequest.ReferralStatusEnumFactory());
122      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
123      if (src.getValue() == null) {
124          tgt.setValue(null);
125      } else {
126          switch (src.getValue()) {
127              case DRAFT:
128                  tgt.setValue(ReferralRequest.ReferralStatus.DRAFT);
129                  break;
130              case ACTIVE:
131                  tgt.setValue(ReferralRequest.ReferralStatus.ACTIVE);
132                  break;
133              case CANCELLED:
134                  tgt.setValue(ReferralRequest.ReferralStatus.CANCELLED);
135                  break;
136              case COMPLETED:
137                  tgt.setValue(ReferralRequest.ReferralStatus.COMPLETED);
138                  break;
139              case ENTEREDINERROR:
140                  tgt.setValue(ReferralRequest.ReferralStatus.REJECTED);
141                  break;
142              default:
143                  tgt.setValue(ReferralRequest.ReferralStatus.NULL);
144                  break;
145          }
146      }
147      return tgt;
148  }
149
150  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus> convertReferralStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ReferralRequest.ReferralStatus> src) throws FHIRException {
151      if (src == null || src.isEmpty())
152          return null;
153      org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatusEnumFactory());
154      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
155      if (src.getValue() == null) {
156          tgt.setValue(null);
157      } else {
158          switch (src.getValue()) {
159              case DRAFT:
160                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.DRAFT);
161                  break;
162              case REQUESTED:
163                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.DRAFT);
164                  break;
165              case ACTIVE:
166                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.ACTIVE);
167                  break;
168              case CANCELLED:
169                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.CANCELLED);
170                  break;
171              case ACCEPTED:
172                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.ACTIVE);
173                  break;
174              case REJECTED:
175                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.ENTEREDINERROR);
176                  break;
177              case COMPLETED:
178                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.COMPLETED);
179                  break;
180              default:
181                  tgt.setValue(org.hl7.fhir.dstu3.model.ReferralRequest.ReferralRequestStatus.NULL);
182                  break;
183          }
184      }
185      return tgt;
186  }
187}