001package org.hl7.fhir.convertors.conv30_40.resources30_40;
002
003import java.util.List;
004
005import org.hl7.fhir.convertors.context.ConversionContext30_40;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Reference30_40;
007import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Annotation30_40;
008import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.CodeableConcept30_40;
009import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Identifier30_40;
010import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Boolean30_40;
011import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.DateTime30_40;
012import org.hl7.fhir.dstu3.model.ProcedureRequest;
013import org.hl7.fhir.exceptions.FHIRException;
014import org.hl7.fhir.r4.model.Enumeration;
015import org.hl7.fhir.r4.model.Reference;
016import org.hl7.fhir.r4.model.ServiceRequest;
017
018public class ProcedureRequest30_40 {
019
020  static public org.hl7.fhir.r4.model.ServiceRequest convertProcedureRequest(org.hl7.fhir.dstu3.model.ProcedureRequest src) throws FHIRException {
021    if (src == null)
022      return null;
023    org.hl7.fhir.r4.model.ServiceRequest tgt = new org.hl7.fhir.r4.model.ServiceRequest();
024    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
025    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier()) {
026      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
027    }
028    for (org.hl7.fhir.dstu3.model.Reference t : src.getBasedOn()) {
029      tgt.addBasedOn(Reference30_40.convertReference(t));
030    }
031    for (org.hl7.fhir.dstu3.model.Reference t : src.getReplaces()) {
032      tgt.addReplaces(Reference30_40.convertReference(t));
033    }
034    if (src.hasRequisition()) {
035      if (src.hasRequisition())
036        tgt.setRequisition(Identifier30_40.convertIdentifier(src.getRequisition()));
037    }
038    if (src.hasStatus()) {
039      if (src.hasStatus())
040        tgt.setStatusElement(convertProcedureRequestStatus(src.getStatusElement()));
041    }
042    if (src.hasIntent()) {
043      if (src.hasIntent())
044        tgt.setIntentElement(convertProcedureRequestIntent(src.getIntentElement()));
045    }
046    if (src.hasPriority()) {
047      if (src.hasPriority())
048        tgt.setPriorityElement(convertProcedureRequestPriority(src.getPriorityElement()));
049    }
050    if (src.hasDoNotPerform()) {
051      if (src.hasDoNotPerformElement())
052        tgt.setDoNotPerformElement(Boolean30_40.convertBoolean(src.getDoNotPerformElement()));
053    }
054    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCategory()) {
055      tgt.addCategory(CodeableConcept30_40.convertCodeableConcept(t));
056    }
057    if (src.hasCode()) {
058      if (src.hasCode())
059        tgt.setCode(CodeableConcept30_40.convertCodeableConcept(src.getCode()));
060    }
061    if (src.hasSubject()) {
062      if (src.hasSubject())
063        tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
064    }
065    if (src.hasContext()) {
066      if (src.hasContext())
067        tgt.setEncounter(Reference30_40.convertReference(src.getContext()));
068    }
069    if (src.hasOccurrence()) {
070      if (src.hasOccurrence())
071        tgt.setOccurrence(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getOccurrence()));
072    }
073    if (src.hasAsNeeded()) {
074      if (src.hasAsNeeded())
075        tgt.setAsNeeded(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getAsNeeded()));
076    }
077    if (src.hasAuthoredOn()) {
078      if (src.hasAuthoredOnElement())
079        tgt.setAuthoredOnElement(DateTime30_40.convertDateTime(src.getAuthoredOnElement()));
080    }
081    if (src.hasRequester()) {
082      org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestRequesterComponent requester = src.getRequester();
083      if (requester.hasAgent()) {
084        tgt.setRequester(Reference30_40.convertReference(requester.getAgent()));
085      }
086    }
087    if (src.hasPerformerType()) {
088      if (src.hasPerformerType())
089        tgt.setPerformerType(CodeableConcept30_40.convertCodeableConcept(src.getPerformerType()));
090    }
091    if (src.hasPerformer()) {
092      if (src.hasPerformer())
093        tgt.addPerformer(Reference30_40.convertReference(src.getPerformer()));
094    }
095    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReasonCode()) {
096      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
097    }
098    for (org.hl7.fhir.dstu3.model.Reference t : src.getReasonReference()) {
099      tgt.addReasonReference(Reference30_40.convertReference(t));
100    }
101    for (org.hl7.fhir.dstu3.model.Reference t : src.getSupportingInfo()) {
102      tgt.addSupportingInfo(Reference30_40.convertReference(t));
103    }
104    for (org.hl7.fhir.dstu3.model.Reference t : src.getSpecimen()) {
105      tgt.addSpecimen(Reference30_40.convertReference(t));
106    }
107    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getBodySite()) {
108      tgt.addBodySite(CodeableConcept30_40.convertCodeableConcept(t));
109    }
110    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) {
111      tgt.addNote(Annotation30_40.convertAnnotation(t));
112    }
113    for (org.hl7.fhir.dstu3.model.Reference t : src.getRelevantHistory()) {
114      tgt.addRelevantHistory(Reference30_40.convertReference(t));
115    }
116    return tgt;
117  }
118
119  static public org.hl7.fhir.dstu3.model.ProcedureRequest convertProcedureRequest(org.hl7.fhir.r4.model.ServiceRequest src) throws FHIRException {
120    if (src == null)
121      return null;
122    org.hl7.fhir.dstu3.model.ProcedureRequest tgt = new org.hl7.fhir.dstu3.model.ProcedureRequest();
123    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
124    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier()) {
125      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
126    }
127    for (org.hl7.fhir.r4.model.Reference t : src.getBasedOn()) {
128      tgt.addBasedOn(Reference30_40.convertReference(t));
129    }
130    for (org.hl7.fhir.r4.model.Reference t : src.getReplaces()) {
131      tgt.addReplaces(Reference30_40.convertReference(t));
132    }
133    if (src.hasRequisition()) {
134      if (src.hasRequisition())
135        tgt.setRequisition(Identifier30_40.convertIdentifier(src.getRequisition()));
136    }
137    if (src.hasStatus()) {
138      if (src.hasStatus())
139        tgt.setStatusElement(convertProcedureRequestStatus(src.getStatusElement()));
140    }
141    if (src.hasIntent()) {
142      if (src.hasIntent())
143        tgt.setIntentElement(convertProcedureRequestIntent(src.getIntentElement()));
144    }
145    if (src.hasPriority()) {
146      if (src.hasPriority())
147        tgt.setPriorityElement(convertProcedureRequestPriority(src.getPriorityElement()));
148    }
149    if (src.hasDoNotPerform()) {
150      if (src.hasDoNotPerformElement())
151        tgt.setDoNotPerformElement(Boolean30_40.convertBoolean(src.getDoNotPerformElement()));
152    }
153    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getCategory()) {
154      tgt.addCategory(CodeableConcept30_40.convertCodeableConcept(t));
155    }
156    if (src.hasCode()) {
157      if (src.hasCode())
158        tgt.setCode(CodeableConcept30_40.convertCodeableConcept(src.getCode()));
159    }
160    if (src.hasSubject()) {
161      if (src.hasSubject())
162        tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
163    }
164    if (src.hasEncounter()) {
165      if (src.hasEncounter())
166        tgt.setContext(Reference30_40.convertReference(src.getEncounter()));
167    }
168    if (src.hasOccurrence()) {
169      if (src.hasOccurrence())
170        tgt.setOccurrence(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getOccurrence()));
171    }
172    if (src.hasAsNeeded()) {
173      if (src.hasAsNeeded())
174        tgt.setAsNeeded(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getAsNeeded()));
175    }
176    if (src.hasAuthoredOn()) {
177      if (src.hasAuthoredOnElement())
178        tgt.setAuthoredOnElement(DateTime30_40.convertDateTime(src.getAuthoredOnElement()));
179    }
180    if (src.hasRequester()) {
181      tgt.setRequester(new org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestRequesterComponent(Reference30_40.convertReference(src.getRequester())));
182    }
183    if (src.hasPerformerType()) {
184      if (src.hasPerformerType())
185        tgt.setPerformerType(CodeableConcept30_40.convertCodeableConcept(src.getPerformerType()));
186    }
187    List<Reference> performers = src.getPerformer();
188    if (performers.size() > 0) {
189      tgt.setPerformer(Reference30_40.convertReference(performers.get(0)));
190      if (performers.size() > 1) {
191      }
192    }
193    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReasonCode()) {
194      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
195    }
196    for (org.hl7.fhir.r4.model.Reference t : src.getReasonReference()) {
197      tgt.addReasonReference(Reference30_40.convertReference(t));
198    }
199    for (org.hl7.fhir.r4.model.Reference t : src.getSupportingInfo()) {
200      tgt.addSupportingInfo(Reference30_40.convertReference(t));
201    }
202    for (org.hl7.fhir.r4.model.Reference t : src.getSpecimen()) {
203      tgt.addSpecimen(Reference30_40.convertReference(t));
204    }
205    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getBodySite()) {
206      tgt.addBodySite(CodeableConcept30_40.convertCodeableConcept(t));
207    }
208    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) {
209      tgt.addNote(Annotation30_40.convertAnnotation(t));
210    }
211    for (org.hl7.fhir.r4.model.Reference t : src.getRelevantHistory()) {
212      tgt.addRelevantHistory(Reference30_40.convertReference(t));
213    }
214    return tgt;
215  }
216
217  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ServiceRequest.ServiceRequestIntent> convertProcedureRequestIntent(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestIntent> src) throws FHIRException {
218      if (src == null || src.isEmpty())
219          return null;
220      Enumeration<ServiceRequest.ServiceRequestIntent> tgt = new Enumeration<>(new ServiceRequest.ServiceRequestIntentEnumFactory());
221      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
222      if (src.getValue() == null) {
223          tgt.setValue(null);
224      } else {
225          switch (src.getValue()) {
226              case FILLERORDER:
227                  tgt.setValue(ServiceRequest.ServiceRequestIntent.FILLERORDER);
228                  break;
229              case INSTANCEORDER:
230                  tgt.setValue(ServiceRequest.ServiceRequestIntent.INSTANCEORDER);
231                  break;
232              case OPTION:
233                  tgt.setValue(ServiceRequest.ServiceRequestIntent.OPTION);
234                  break;
235              case ORDER:
236                  tgt.setValue(ServiceRequest.ServiceRequestIntent.ORDER);
237                  break;
238              case ORIGINALORDER:
239                  tgt.setValue(ServiceRequest.ServiceRequestIntent.ORIGINALORDER);
240                  break;
241              case PLAN:
242                  tgt.setValue(ServiceRequest.ServiceRequestIntent.PLAN);
243                  break;
244              case PROPOSAL:
245                  tgt.setValue(ServiceRequest.ServiceRequestIntent.PROPOSAL);
246                  break;
247              case REFLEXORDER:
248                  tgt.setValue(ServiceRequest.ServiceRequestIntent.REFLEXORDER);
249                  break;
250              default:
251                  tgt.setValue(ServiceRequest.ServiceRequestIntent.NULL);
252                  break;
253          }
254      }
255      return tgt;
256  }
257
258  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestIntent> convertProcedureRequestIntent(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ServiceRequest.ServiceRequestIntent> src) throws FHIRException {
259      if (src == null || src.isEmpty())
260          return null;
261      org.hl7.fhir.dstu3.model.Enumeration<ProcedureRequest.ProcedureRequestIntent> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new ProcedureRequest.ProcedureRequestIntentEnumFactory());
262      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
263      if (src.getValue() == null) {
264          tgt.setValue(null);
265      } else {
266          switch (src.getValue()) {
267              case DIRECTIVE:
268                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.NULL);
269                  break;
270              case FILLERORDER:
271                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.FILLERORDER);
272                  break;
273              case INSTANCEORDER:
274                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.INSTANCEORDER);
275                  break;
276              case OPTION:
277                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.OPTION);
278                  break;
279              case ORDER:
280                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.ORDER);
281                  break;
282              case ORIGINALORDER:
283                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.ORIGINALORDER);
284                  break;
285              case PLAN:
286                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.PLAN);
287                  break;
288              case PROPOSAL:
289                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.PROPOSAL);
290                  break;
291              case REFLEXORDER:
292                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.REFLEXORDER);
293                  break;
294              default:
295                  tgt.setValue(ProcedureRequest.ProcedureRequestIntent.NULL);
296                  break;
297          }
298      }
299      return tgt;
300  }
301
302  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestPriority> convertProcedureRequestPriority(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ServiceRequest.ServiceRequestPriority> src) throws FHIRException {
303      if (src == null || src.isEmpty())
304          return null;
305      org.hl7.fhir.dstu3.model.Enumeration<ProcedureRequest.ProcedureRequestPriority> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
306      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
307      if (src.getValue() == null) {
308          tgt.setValue(null);
309      } else {
310          switch (src.getValue()) {
311              case ASAP:
312                  tgt.setValue(ProcedureRequest.ProcedureRequestPriority.ASAP);
313                  break;
314              case ROUTINE:
315                  tgt.setValue(ProcedureRequest.ProcedureRequestPriority.ROUTINE);
316                  break;
317              case STAT:
318                  tgt.setValue(ProcedureRequest.ProcedureRequestPriority.STAT);
319                  break;
320              case URGENT:
321                  tgt.setValue(ProcedureRequest.ProcedureRequestPriority.URGENT);
322                  break;
323              default:
324                  tgt.setValue(ProcedureRequest.ProcedureRequestPriority.NULL);
325                  break;
326          }
327      }
328      return tgt;
329  }
330
331  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ServiceRequest.ServiceRequestPriority> convertProcedureRequestPriority(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestPriority> src) throws FHIRException {
332      if (src == null || src.isEmpty())
333          return null;
334      Enumeration<ServiceRequest.ServiceRequestPriority> tgt = new Enumeration<>(new ServiceRequest.ServiceRequestPriorityEnumFactory());
335      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
336      if (src.getValue() == null) {
337          tgt.setValue(null);
338      } else {
339          switch (src.getValue()) {
340              case ASAP:
341                  tgt.setValue(ServiceRequest.ServiceRequestPriority.ASAP);
342                  break;
343              case ROUTINE:
344                  tgt.setValue(ServiceRequest.ServiceRequestPriority.ROUTINE);
345                  break;
346              case STAT:
347                  tgt.setValue(ServiceRequest.ServiceRequestPriority.STAT);
348                  break;
349              case URGENT:
350                  tgt.setValue(ServiceRequest.ServiceRequestPriority.URGENT);
351                  break;
352              default:
353                  tgt.setValue(ServiceRequest.ServiceRequestPriority.NULL);
354                  break;
355          }
356      }
357      return tgt;
358  }
359
360  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestStatus> convertProcedureRequestStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ServiceRequest.ServiceRequestStatus> src) throws FHIRException {
361      if (src == null || src.isEmpty())
362          return null;
363      org.hl7.fhir.dstu3.model.Enumeration<ProcedureRequest.ProcedureRequestStatus> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new ProcedureRequest.ProcedureRequestStatusEnumFactory());
364      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
365      if (src.getValue() == null) {
366          tgt.setValue(null);
367      } else {
368          switch (src.getValue()) {
369              case ACTIVE:
370                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.ACTIVE);
371                  break;
372              case COMPLETED:
373                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.COMPLETED);
374                  break;
375              case DRAFT:
376                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.DRAFT);
377                  break;
378              case ENTEREDINERROR:
379                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.ENTEREDINERROR);
380                  break;
381              case ONHOLD:
382                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.SUSPENDED);
383                  break;
384              case REVOKED:
385                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.CANCELLED);
386                  break;
387              case UNKNOWN:
388                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.UNKNOWN);
389                  break;
390              default:
391                  tgt.setValue(ProcedureRequest.ProcedureRequestStatus.NULL);
392                  break;
393          }
394      }
395      return tgt;
396  }
397
398  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ServiceRequest.ServiceRequestStatus> convertProcedureRequestStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ProcedureRequest.ProcedureRequestStatus> src) throws FHIRException {
399      if (src == null || src.isEmpty())
400          return null;
401      Enumeration<ServiceRequest.ServiceRequestStatus> tgt = new Enumeration<>(new ServiceRequest.ServiceRequestStatusEnumFactory());
402      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
403      if (src.getValue() == null) {
404          tgt.setValue(null);
405      } else {
406          switch (src.getValue()) {
407              case ACTIVE:
408                  tgt.setValue(ServiceRequest.ServiceRequestStatus.ACTIVE);
409                  break;
410              case CANCELLED:
411                  tgt.setValue(ServiceRequest.ServiceRequestStatus.REVOKED);
412                  break;
413              case COMPLETED:
414                  tgt.setValue(ServiceRequest.ServiceRequestStatus.COMPLETED);
415                  break;
416              case DRAFT:
417                  tgt.setValue(ServiceRequest.ServiceRequestStatus.DRAFT);
418                  break;
419              case ENTEREDINERROR:
420                  tgt.setValue(ServiceRequest.ServiceRequestStatus.ENTEREDINERROR);
421                  break;
422              case SUSPENDED:
423                  tgt.setValue(ServiceRequest.ServiceRequestStatus.ONHOLD);
424                  break;
425              case UNKNOWN:
426                  tgt.setValue(ServiceRequest.ServiceRequestStatus.UNKNOWN);
427                  break;
428              default:
429                  tgt.setValue(ServiceRequest.ServiceRequestStatus.NULL);
430                  break;
431          }
432      }
433      return tgt;
434  }
435}