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.primitivetypes10_30.DateTime10_30;
008import org.hl7.fhir.dstu3.model.CommunicationRequest;
009import org.hl7.fhir.dstu3.model.Enumeration;
010import org.hl7.fhir.exceptions.FHIRException;
011
012public class CommunicationRequest10_30 {
013
014  public static org.hl7.fhir.dstu2.model.CommunicationRequest convertCommunicationRequest(org.hl7.fhir.dstu3.model.CommunicationRequest src) throws FHIRException {
015    if (src == null || src.isEmpty())
016      return null;
017    org.hl7.fhir.dstu2.model.CommunicationRequest tgt = new org.hl7.fhir.dstu2.model.CommunicationRequest();
018    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
019    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
020      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
021    if (src.hasCategory())
022      tgt.setCategory(CodeableConcept10_30.convertCodeableConcept(src.getCategoryFirstRep()));
023    if (src.hasSender())
024      tgt.setSender(Reference10_30.convertReference(src.getSender()));
025    for (org.hl7.fhir.dstu3.model.Reference t : src.getRecipient())
026      tgt.addRecipient(Reference10_30.convertReference(t));
027    for (org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestPayloadComponent t : src.getPayload())
028      tgt.addPayload(convertCommunicationRequestPayloadComponent(t));
029    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getMedium())
030      tgt.addMedium(CodeableConcept10_30.convertCodeableConcept(t));
031    tgt.setRequester(Reference10_30.convertReference(src.getRequester().getAgent()));
032    if (src.hasStatus())
033      tgt.setStatusElement(convertCommunicationRequestStatus(src.getStatusElement()));
034    if (src.hasContext())
035      tgt.setEncounter(Reference10_30.convertReference(src.getContext()));
036    if (src.hasOccurrence())
037      tgt.setScheduled(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getOccurrence()));
038    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReasonCode())
039      tgt.addReason(CodeableConcept10_30.convertCodeableConcept(t));
040    if (src.hasAuthoredOnElement())
041      tgt.setRequestedOnElement(DateTime10_30.convertDateTime(src.getAuthoredOnElement()));
042    if (src.hasSubject())
043      tgt.setSubject(Reference10_30.convertReference(src.getSubject()));
044    if (src.hasPriority())
045      tgt.setPriority(convertPriorityCode(src.getPriority()));
046    return tgt;
047  }
048
049  public static org.hl7.fhir.dstu3.model.CommunicationRequest convertCommunicationRequest(org.hl7.fhir.dstu2.model.CommunicationRequest src) throws FHIRException {
050    if (src == null || src.isEmpty())
051      return null;
052    org.hl7.fhir.dstu3.model.CommunicationRequest tgt = new org.hl7.fhir.dstu3.model.CommunicationRequest();
053    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
054    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
055      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
056    if (src.hasCategory())
057      tgt.addCategory(CodeableConcept10_30.convertCodeableConcept(src.getCategory()));
058    if (src.hasSender())
059      tgt.setSender(Reference10_30.convertReference(src.getSender()));
060    for (org.hl7.fhir.dstu2.model.Reference t : src.getRecipient())
061      tgt.addRecipient(Reference10_30.convertReference(t));
062    for (org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestPayloadComponent t : src.getPayload())
063      tgt.addPayload(convertCommunicationRequestPayloadComponent(t));
064    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getMedium())
065      tgt.addMedium(CodeableConcept10_30.convertCodeableConcept(t));
066    tgt.getRequester().setAgent(Reference10_30.convertReference(src.getRequester()));
067    if (src.hasStatus())
068      tgt.setStatusElement(convertCommunicationRequestStatus(src.getStatusElement()));
069    if (src.hasEncounter())
070      tgt.setContext(Reference10_30.convertReference(src.getEncounter()));
071    if (src.hasScheduled())
072      tgt.setOccurrence(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getScheduled()));
073    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getReason())
074      tgt.addReasonCode(CodeableConcept10_30.convertCodeableConcept(t));
075    if (src.hasRequestedOnElement())
076      tgt.setAuthoredOnElement(DateTime10_30.convertDateTime(src.getRequestedOnElement()));
077    if (src.hasSubject())
078      tgt.setSubject(Reference10_30.convertReference(src.getSubject()));
079    if (src.hasPriority())
080      tgt.setPriority(convertPriorityCode(src.getPriority()));
081    return tgt;
082  }
083
084  public static org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestPayloadComponent convertCommunicationRequestPayloadComponent(org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestPayloadComponent src) throws FHIRException {
085    if (src == null || src.isEmpty())
086      return null;
087    org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestPayloadComponent tgt = new org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestPayloadComponent();
088    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
089    if (src.hasContent())
090      tgt.setContent(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getContent()));
091    return tgt;
092  }
093
094  public static org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestPayloadComponent convertCommunicationRequestPayloadComponent(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestPayloadComponent src) throws FHIRException {
095    if (src == null || src.isEmpty())
096      return null;
097    org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestPayloadComponent tgt = new org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestPayloadComponent();
098    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
099    if (src.hasContent())
100      tgt.setContent(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getContent()));
101    return tgt;
102  }
103
104  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestStatus> convertCommunicationRequestStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus> src) throws FHIRException {
105      if (src == null || src.isEmpty())
106          return null;
107      Enumeration<CommunicationRequest.CommunicationRequestStatus> tgt = new Enumeration<>(new CommunicationRequest.CommunicationRequestStatusEnumFactory());
108      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
109      if (src.getValue() == null) {
110          tgt.setValue(null);
111      } else {
112          switch (src.getValue()) {
113              case PROPOSED:
114                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.DRAFT);
115                  break;
116              case PLANNED:
117                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.ACTIVE);
118                  break;
119              case REQUESTED:
120                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.ACTIVE);
121                  break;
122              case RECEIVED:
123                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.ACTIVE);
124                  break;
125              case ACCEPTED:
126                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.ACTIVE);
127                  break;
128              case INPROGRESS:
129                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.ACTIVE);
130                  break;
131              case COMPLETED:
132                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.COMPLETED);
133                  break;
134              case SUSPENDED:
135                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.SUSPENDED);
136                  break;
137              case REJECTED:
138                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.ENTEREDINERROR);
139                  break;
140              default:
141                  tgt.setValue(CommunicationRequest.CommunicationRequestStatus.NULL);
142                  break;
143          }
144      }
145      return tgt;
146  }
147
148  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus> convertCommunicationRequestStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationRequestStatus> src) throws FHIRException {
149      if (src == null || src.isEmpty())
150          return null;
151      org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatusEnumFactory());
152      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
153      if (src.getValue() == null) {
154          tgt.setValue(null);
155      } else {
156          switch (src.getValue()) {
157              case DRAFT:
158                  tgt.setValue(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus.PROPOSED);
159                  break;
160              case ACTIVE:
161                  tgt.setValue(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus.INPROGRESS);
162                  break;
163              case COMPLETED:
164                  tgt.setValue(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus.COMPLETED);
165                  break;
166              case SUSPENDED:
167                  tgt.setValue(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus.SUSPENDED);
168                  break;
169              case ENTEREDINERROR:
170                  tgt.setValue(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus.REJECTED);
171                  break;
172              default:
173                  tgt.setValue(org.hl7.fhir.dstu2.model.CommunicationRequest.CommunicationRequestStatus.NULL);
174                  break;
175          }
176      }
177      return tgt;
178  }
179
180  static public org.hl7.fhir.dstu2.model.CodeableConcept convertPriorityCode(org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationPriority priority) {
181    org.hl7.fhir.dstu2.model.CodeableConcept cc = new org.hl7.fhir.dstu2.model.CodeableConcept();
182    switch (priority) {
183      case ROUTINE:
184        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("routine");
185        break;
186      case URGENT:
187        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("urgent");
188        break;
189      case STAT:
190        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("stat");
191        break;
192      case ASAP:
193        cc.addCoding().setSystem("http://hl7.org/fhir/diagnostic-order-priority").setCode("asap");
194        break;
195      default:
196        return null;
197    }
198    return cc;
199  }
200
201  static public org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationPriority convertPriorityCode(org.hl7.fhir.dstu2.model.CodeableConcept priority) {
202    for (org.hl7.fhir.dstu2.model.Coding c : priority.getCoding()) {
203      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "routine".equals(c.getCode()))
204        return org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationPriority.ROUTINE;
205      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "urgent".equals(c.getCode()))
206        return org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationPriority.URGENT;
207      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "stat".equals(c.getCode()))
208        return org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationPriority.STAT;
209      if ("http://hl7.org/fhir/diagnostic-order-priority".equals(c.getSystem()) && "asap".equals(c.getCode()))
210        return org.hl7.fhir.dstu3.model.CommunicationRequest.CommunicationPriority.ASAP;
211    }
212    return null;
213  }
214}