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