001package org.hl7.fhir.convertors.conv30_40.resources30_40;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_40;
004import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Reference30_40;
005import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Annotation30_40;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.CodeableConcept30_40;
007import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Identifier30_40;
008import org.hl7.fhir.exceptions.FHIRException;
009import org.hl7.fhir.r4.model.Enumeration;
010import org.hl7.fhir.r4.model.Procedure;
011
012public class Procedure30_40 {
013
014  static public org.hl7.fhir.r4.model.Procedure convertProcedure(org.hl7.fhir.dstu3.model.Procedure src) throws FHIRException {
015    if (src == null)
016      return null;
017    org.hl7.fhir.r4.model.Procedure tgt = new org.hl7.fhir.r4.model.Procedure();
018    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
019    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier()) {
020      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
021    }
022    for (org.hl7.fhir.dstu3.model.Reference t : src.getBasedOn()) {
023      tgt.addBasedOn(Reference30_40.convertReference(t));
024    }
025    for (org.hl7.fhir.dstu3.model.Reference t : src.getPartOf()) {
026      tgt.addPartOf(Reference30_40.convertReference(t));
027    }
028    if (src.getNotDone()) {
029      tgt.setStatus(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.NOTDONE);
030    } else {
031      if (src.hasStatus())
032        tgt.setStatusElement(convertProcedureStatus(src.getStatusElement()));
033    }
034    if (src.hasNotDoneReason()) {
035      if (src.hasNotDoneReason())
036        tgt.setStatusReason(CodeableConcept30_40.convertCodeableConcept(src.getNotDoneReason()));
037    }
038    if (src.hasCategory()) {
039      if (src.hasCategory())
040        tgt.setCategory(CodeableConcept30_40.convertCodeableConcept(src.getCategory()));
041    }
042    if (src.hasCode()) {
043      if (src.hasCode())
044        tgt.setCode(CodeableConcept30_40.convertCodeableConcept(src.getCode()));
045    }
046    if (src.hasSubject()) {
047      if (src.hasSubject())
048        tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
049    }
050    if (src.hasContext()) {
051      if (src.hasContext())
052        tgt.setEncounter(Reference30_40.convertReference(src.getContext()));
053    }
054    if (src.hasPerformed()) {
055      if (src.hasPerformed())
056        tgt.setPerformed(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getPerformed()));
057    }
058    for (org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent t : src.getPerformer()) {
059      tgt.addPerformer(convertProcedurePerformerComponent(t));
060    }
061    if (src.hasLocation()) {
062      if (src.hasLocation())
063        tgt.setLocation(Reference30_40.convertReference(src.getLocation()));
064    }
065    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReasonCode()) {
066      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
067    }
068    for (org.hl7.fhir.dstu3.model.Reference t : src.getReasonReference()) {
069      tgt.addReasonReference(Reference30_40.convertReference(t));
070    }
071    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getBodySite()) {
072      tgt.addBodySite(CodeableConcept30_40.convertCodeableConcept(t));
073    }
074    if (src.hasOutcome()) {
075      if (src.hasOutcome())
076        tgt.setOutcome(CodeableConcept30_40.convertCodeableConcept(src.getOutcome()));
077    }
078    for (org.hl7.fhir.dstu3.model.Reference t : src.getReport()) {
079      tgt.addReport(Reference30_40.convertReference(t));
080    }
081    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getComplication()) {
082      tgt.addComplication(CodeableConcept30_40.convertCodeableConcept(t));
083    }
084    for (org.hl7.fhir.dstu3.model.Reference t : src.getComplicationDetail()) {
085      tgt.addComplicationDetail(Reference30_40.convertReference(t));
086    }
087    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getFollowUp()) {
088      tgt.addFollowUp(CodeableConcept30_40.convertCodeableConcept(t));
089    }
090    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) {
091      tgt.addNote(Annotation30_40.convertAnnotation(t));
092    }
093    for (org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice()) {
094      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
095    }
096    for (org.hl7.fhir.dstu3.model.Reference t : src.getUsedReference()) {
097      tgt.addUsedReference(Reference30_40.convertReference(t));
098    }
099    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getUsedCode()) {
100      tgt.addUsedCode(CodeableConcept30_40.convertCodeableConcept(t));
101    }
102    return tgt;
103  }
104
105  static public org.hl7.fhir.dstu3.model.Procedure convertProcedure(org.hl7.fhir.r4.model.Procedure src) throws FHIRException {
106    if (src == null)
107      return null;
108    org.hl7.fhir.dstu3.model.Procedure tgt = new org.hl7.fhir.dstu3.model.Procedure();
109    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
110    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier()) {
111      tgt.addIdentifier(Identifier30_40.convertIdentifier(t));
112    }
113    for (org.hl7.fhir.r4.model.Reference t : src.getBasedOn()) {
114      tgt.addBasedOn(Reference30_40.convertReference(t));
115    }
116    for (org.hl7.fhir.r4.model.Reference t : src.getPartOf()) {
117      tgt.addPartOf(Reference30_40.convertReference(t));
118    }
119    if (src.hasStatus()) {
120      org.hl7.fhir.r4.model.Procedure.ProcedureStatus status = src.getStatus();
121      if (org.hl7.fhir.r4.model.Procedure.ProcedureStatus.NOTDONE.equals(status)) {
122        tgt.setStatus(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.SUSPENDED);
123        tgt.setNotDone(true);
124        if (src.hasStatusReason())
125          tgt.setNotDoneReason(CodeableConcept30_40.convertCodeableConcept(src.getStatusReason()));
126      } else {
127        if (src.hasStatus())
128          tgt.setStatusElement(convertProcedureStatus(src.getStatusElement()));
129        tgt.setNotDone(false);
130      }
131    }
132    if (src.hasCategory()) {
133      if (src.hasCategory())
134        tgt.setCategory(CodeableConcept30_40.convertCodeableConcept(src.getCategory()));
135    }
136    if (src.hasCode()) {
137      if (src.hasCode())
138        tgt.setCode(CodeableConcept30_40.convertCodeableConcept(src.getCode()));
139    }
140    if (src.hasSubject()) {
141      if (src.hasSubject())
142        tgt.setSubject(Reference30_40.convertReference(src.getSubject()));
143    }
144    if (src.hasEncounter()) {
145      if (src.hasEncounter())
146        tgt.setContext(Reference30_40.convertReference(src.getEncounter()));
147    }
148    if (src.hasPerformed()) {
149      if (src.hasPerformed())
150        tgt.setPerformed(ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getPerformed()));
151    }
152    for (org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent t : src.getPerformer()) {
153      tgt.addPerformer(convertProcedurePerformerComponent(t));
154    }
155    if (src.hasLocation()) {
156      if (src.hasLocation())
157        tgt.setLocation(Reference30_40.convertReference(src.getLocation()));
158    }
159    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReasonCode()) {
160      tgt.addReasonCode(CodeableConcept30_40.convertCodeableConcept(t));
161    }
162    for (org.hl7.fhir.r4.model.Reference t : src.getReasonReference()) {
163      tgt.addReasonReference(Reference30_40.convertReference(t));
164    }
165    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getBodySite()) {
166      tgt.addBodySite(CodeableConcept30_40.convertCodeableConcept(t));
167    }
168    if (src.hasOutcome()) {
169      if (src.hasOutcome())
170        tgt.setOutcome(CodeableConcept30_40.convertCodeableConcept(src.getOutcome()));
171    }
172    for (org.hl7.fhir.r4.model.Reference t : src.getReport()) {
173      tgt.addReport(Reference30_40.convertReference(t));
174    }
175    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getComplication()) {
176      tgt.addComplication(CodeableConcept30_40.convertCodeableConcept(t));
177    }
178    for (org.hl7.fhir.r4.model.Reference t : src.getComplicationDetail()) {
179      tgt.addComplicationDetail(Reference30_40.convertReference(t));
180    }
181    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getFollowUp()) {
182      tgt.addFollowUp(CodeableConcept30_40.convertCodeableConcept(t));
183    }
184    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) {
185      tgt.addNote(Annotation30_40.convertAnnotation(t));
186    }
187    for (org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice()) {
188      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
189    }
190    for (org.hl7.fhir.r4.model.Reference t : src.getUsedReference()) {
191      tgt.addUsedReference(Reference30_40.convertReference(t));
192    }
193    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getUsedCode()) {
194      tgt.addUsedCode(CodeableConcept30_40.convertCodeableConcept(t));
195    }
196    return tgt;
197  }
198
199  static public org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
200    if (src == null)
201      return null;
202    org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent();
203    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
204    if (src.hasAction()) {
205      if (src.hasAction())
206        tgt.setAction(CodeableConcept30_40.convertCodeableConcept(src.getAction()));
207    }
208    if (src.hasManipulated()) {
209      if (src.hasManipulated())
210        tgt.setManipulated(Reference30_40.convertReference(src.getManipulated()));
211    }
212    return tgt;
213  }
214
215  static public org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
216    if (src == null)
217      return null;
218    org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent();
219    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
220    if (src.hasAction()) {
221      if (src.hasAction())
222        tgt.setAction(CodeableConcept30_40.convertCodeableConcept(src.getAction()));
223    }
224    if (src.hasManipulated()) {
225      if (src.hasManipulated())
226        tgt.setManipulated(Reference30_40.convertReference(src.getManipulated()));
227    }
228    return tgt;
229  }
230
231  static public org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
232    if (src == null)
233      return null;
234    org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent();
235    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
236    if (src.hasRole()) {
237      if (src.hasRole())
238        tgt.setFunction(CodeableConcept30_40.convertCodeableConcept(src.getRole()));
239    }
240    if (src.hasActor()) {
241      if (src.hasActor())
242        tgt.setActor(Reference30_40.convertReference(src.getActor()));
243    }
244    if (src.hasOnBehalfOf()) {
245      if (src.hasOnBehalfOf())
246        tgt.setOnBehalfOf(Reference30_40.convertReference(src.getOnBehalfOf()));
247    }
248    return tgt;
249  }
250
251  static public org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
252    if (src == null)
253      return null;
254    org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent();
255    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
256    if (src.hasFunction()) {
257      if (src.hasFunction())
258        tgt.setRole(CodeableConcept30_40.convertCodeableConcept(src.getFunction()));
259    }
260    if (src.hasActor()) {
261      if (src.hasActor())
262        tgt.setActor(Reference30_40.convertReference(src.getActor()));
263    }
264    if (src.hasOnBehalfOf()) {
265      if (src.hasOnBehalfOf())
266        tgt.setOnBehalfOf(Reference30_40.convertReference(src.getOnBehalfOf()));
267    }
268    return tgt;
269  }
270
271  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Procedure.ProcedureStatus> convertProcedureStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus> src) throws FHIRException {
272      if (src == null || src.isEmpty())
273          return null;
274      Enumeration<Procedure.ProcedureStatus> tgt = new Enumeration<>(new Procedure.ProcedureStatusEnumFactory());
275      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
276      if (src.getValue() == null) {
277          tgt.setValue(null);
278      } else {
279          switch (src.getValue()) {
280              case PREPARATION:
281                  tgt.setValue(Procedure.ProcedureStatus.PREPARATION);
282                  break;
283              case INPROGRESS:
284                  tgt.setValue(Procedure.ProcedureStatus.INPROGRESS);
285                  break;
286              case SUSPENDED:
287                  tgt.setValue(Procedure.ProcedureStatus.ONHOLD);
288                  break;
289              case ABORTED:
290                  tgt.setValue(Procedure.ProcedureStatus.STOPPED);
291                  break;
292              case COMPLETED:
293                  tgt.setValue(Procedure.ProcedureStatus.COMPLETED);
294                  break;
295              case ENTEREDINERROR:
296                  tgt.setValue(Procedure.ProcedureStatus.ENTEREDINERROR);
297                  break;
298              case UNKNOWN:
299                  tgt.setValue(Procedure.ProcedureStatus.UNKNOWN);
300                  break;
301              default:
302                  tgt.setValue(Procedure.ProcedureStatus.NULL);
303                  break;
304          }
305      }
306      return tgt;
307  }
308
309  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus> convertProcedureStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Procedure.ProcedureStatus> src) throws FHIRException {
310      if (src == null || src.isEmpty())
311          return null;
312      org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.Procedure.ProcedureStatusEnumFactory());
313      ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
314      if (src.getValue() == null) {
315          tgt.setValue(null);
316      } else {
317          switch (src.getValue()) {
318              case PREPARATION:
319                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.PREPARATION);
320                  break;
321              case INPROGRESS:
322                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.INPROGRESS);
323                  break;
324              case ONHOLD:
325                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.SUSPENDED);
326                  break;
327              case STOPPED:
328                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.ABORTED);
329                  break;
330              case COMPLETED:
331                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.COMPLETED);
332                  break;
333              case ENTEREDINERROR:
334                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.ENTEREDINERROR);
335                  break;
336              case UNKNOWN:
337                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.UNKNOWN);
338                  break;
339              default:
340                  tgt.setValue(org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus.NULL);
341                  break;
342          }
343      }
344      return tgt;
345  }
346}