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