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