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