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