001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import org.hl7.fhir.convertors.context.ConversionContext10_30;
004import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30;
005import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Annotation10_30;
006import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.CodeableConcept10_30;
007import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Boolean10_30;
009import org.hl7.fhir.dstu3.model.Enumeration;
010import org.hl7.fhir.dstu3.model.Procedure;
011import org.hl7.fhir.exceptions.FHIRException;
012
013public class Procedure10_30 {
014
015  public static org.hl7.fhir.dstu2.model.Procedure convertProcedure(org.hl7.fhir.dstu3.model.Procedure src) throws FHIRException {
016    if (src == null || src.isEmpty())
017      return null;
018    org.hl7.fhir.dstu2.model.Procedure tgt = new org.hl7.fhir.dstu2.model.Procedure();
019    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
020    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
021      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
022    if (src.hasSubject())
023      tgt.setSubject(Reference10_30.convertReference(src.getSubject()));
024    if (src.hasStatus())
025      tgt.setStatusElement(convertProcedureStatus(src.getStatusElement()));
026    if (src.hasCategory())
027      tgt.setCategory(CodeableConcept10_30.convertCodeableConcept(src.getCategory()));
028    if (src.hasCode())
029      tgt.setCode(CodeableConcept10_30.convertCodeableConcept(src.getCode()));
030    if (src.hasNotDoneElement())
031      tgt.setNotPerformedElement(Boolean10_30.convertBoolean(src.getNotDoneElement()));
032    if (src.hasNotDoneReason())
033      tgt.addReasonNotPerformed(CodeableConcept10_30.convertCodeableConcept(src.getNotDoneReason()));
034    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getBodySite())
035      tgt.addBodySite(CodeableConcept10_30.convertCodeableConcept(t));
036    if (src.hasReasonCode())
037      tgt.setReason(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getReasonCodeFirstRep()));
038    for (org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent t : src.getPerformer())
039      tgt.addPerformer(convertProcedurePerformerComponent(t));
040    if (src.hasPerformed())
041      tgt.setPerformed(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getPerformed()));
042    if (src.hasContext())
043      tgt.setEncounter(Reference10_30.convertReference(src.getContext()));
044    if (src.hasLocation())
045      tgt.setLocation(Reference10_30.convertReference(src.getLocation()));
046    if (src.hasOutcome())
047      tgt.setOutcome(CodeableConcept10_30.convertCodeableConcept(src.getOutcome()));
048    for (org.hl7.fhir.dstu3.model.Reference t : src.getReport()) tgt.addReport(Reference10_30.convertReference(t));
049    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getComplication())
050      tgt.addComplication(CodeableConcept10_30.convertCodeableConcept(t));
051    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getFollowUp())
052      tgt.addFollowUp(CodeableConcept10_30.convertCodeableConcept(t));
053    if (src.hasBasedOn())
054      tgt.setRequest(Reference10_30.convertReference(src.getBasedOnFirstRep()));
055    for (org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice())
056      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
057    for (org.hl7.fhir.dstu3.model.Annotation note : src.getNote())
058      tgt.addNotes(Annotation10_30.convertAnnotation(note));
059    for (org.hl7.fhir.dstu3.model.Reference r : src.getUsedReference()) tgt.addUsed(Reference10_30.convertReference(r));
060    return tgt;
061  }
062
063  public static org.hl7.fhir.dstu3.model.Procedure convertProcedure(org.hl7.fhir.dstu2.model.Procedure src) throws FHIRException {
064    if (src == null || src.isEmpty())
065      return null;
066    org.hl7.fhir.dstu3.model.Procedure tgt = new org.hl7.fhir.dstu3.model.Procedure();
067    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
068    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
069      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
070    if (src.hasSubject())
071      tgt.setSubject(Reference10_30.convertReference(src.getSubject()));
072    if (src.hasStatus())
073      tgt.setStatusElement(convertProcedureStatus(src.getStatusElement()));
074    if (src.hasCategory())
075      tgt.setCategory(CodeableConcept10_30.convertCodeableConcept(src.getCategory()));
076    if (src.hasCode())
077      tgt.setCode(CodeableConcept10_30.convertCodeableConcept(src.getCode()));
078    if (src.hasNotPerformedElement())
079      tgt.setNotDoneElement(Boolean10_30.convertBoolean(src.getNotPerformedElement()));
080    if (src.hasReasonNotPerformed())
081      tgt.setNotDoneReason(CodeableConcept10_30.convertCodeableConcept(src.getReasonNotPerformed().get(0)));
082    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getBodySite())
083      tgt.addBodySite(CodeableConcept10_30.convertCodeableConcept(t));
084    if (src.hasReasonCodeableConcept())
085      tgt.addReasonCode(CodeableConcept10_30.convertCodeableConcept(src.getReasonCodeableConcept()));
086    for (org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent t : src.getPerformer())
087      tgt.addPerformer(convertProcedurePerformerComponent(t));
088    if (src.hasPerformed())
089      tgt.setPerformed(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getPerformed()));
090    if (src.hasEncounter())
091      tgt.setContext(Reference10_30.convertReference(src.getEncounter()));
092    if (src.hasLocation())
093      tgt.setLocation(Reference10_30.convertReference(src.getLocation()));
094    if (src.hasOutcome())
095      tgt.setOutcome(CodeableConcept10_30.convertCodeableConcept(src.getOutcome()));
096    for (org.hl7.fhir.dstu2.model.Reference t : src.getReport()) tgt.addReport(Reference10_30.convertReference(t));
097    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getComplication())
098      tgt.addComplication(CodeableConcept10_30.convertCodeableConcept(t));
099    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getFollowUp())
100      tgt.addFollowUp(CodeableConcept10_30.convertCodeableConcept(t));
101    if (src.hasRequest())
102      tgt.addBasedOn(Reference10_30.convertReference(src.getRequest()));
103    for (org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice())
104      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
105    for (org.hl7.fhir.dstu2.model.Annotation note : src.getNotes())
106      tgt.addNote(Annotation10_30.convertAnnotation(note));
107    for (org.hl7.fhir.dstu2.model.Reference r : src.getUsed()) tgt.addUsedReference(Reference10_30.convertReference(r));
108    return tgt;
109  }
110
111  public static org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
112    if (src == null || src.isEmpty())
113      return null;
114    org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent();
115    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
116    if (src.hasAction())
117      tgt.setAction(CodeableConcept10_30.convertCodeableConcept(src.getAction()));
118    if (src.hasManipulated())
119      tgt.setManipulated(Reference10_30.convertReference(src.getManipulated()));
120    return tgt;
121  }
122
123  public static org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.dstu3.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
124    if (src == null || src.isEmpty())
125      return null;
126    org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent();
127    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
128    if (src.hasAction())
129      tgt.setAction(CodeableConcept10_30.convertCodeableConcept(src.getAction()));
130    if (src.hasManipulated())
131      tgt.setManipulated(Reference10_30.convertReference(src.getManipulated()));
132    return tgt;
133  }
134
135  public static org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
136    if (src == null || src.isEmpty())
137      return null;
138    org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent();
139    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
140    if (src.hasActor())
141      tgt.setActor(Reference10_30.convertReference(src.getActor()));
142    if (src.hasRole())
143      tgt.setRole(CodeableConcept10_30.convertCodeableConcept(src.getRole()));
144    return tgt;
145  }
146
147  public static org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
148    if (src == null || src.isEmpty())
149      return null;
150    org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.dstu3.model.Procedure.ProcedurePerformerComponent();
151    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
152    if (src.hasActor())
153      tgt.setActor(Reference10_30.convertReference(src.getActor()));
154    if (src.hasRole())
155      tgt.setRole(CodeableConcept10_30.convertCodeableConcept(src.getRole()));
156    return tgt;
157  }
158
159  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus> convertProcedureStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus> src) throws FHIRException {
160      if (src == null || src.isEmpty())
161          return null;
162      Enumeration<Procedure.ProcedureStatus> tgt = new Enumeration<>(new Procedure.ProcedureStatusEnumFactory());
163      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
164      if (src.getValue() == null) {
165          tgt.setValue(null);
166      } else {
167          switch (src.getValue()) {
168              case INPROGRESS:
169                  tgt.setValue(Procedure.ProcedureStatus.INPROGRESS);
170                  break;
171              case ABORTED:
172                  tgt.setValue(Procedure.ProcedureStatus.ABORTED);
173                  break;
174              case COMPLETED:
175                  tgt.setValue(Procedure.ProcedureStatus.COMPLETED);
176                  break;
177              case ENTEREDINERROR:
178                  tgt.setValue(Procedure.ProcedureStatus.ENTEREDINERROR);
179                  break;
180              default:
181                  tgt.setValue(Procedure.ProcedureStatus.NULL);
182                  break;
183          }
184      }
185      return tgt;
186  }
187
188  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus> convertProcedureStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Procedure.ProcedureStatus> src) throws FHIRException {
189      if (src == null || src.isEmpty())
190          return null;
191      org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Procedure.ProcedureStatusEnumFactory());
192      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
193      if (src.getValue() == null) {
194          tgt.setValue(null);
195      } else {
196          switch (src.getValue()) {
197              case INPROGRESS:
198                  tgt.setValue(org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus.INPROGRESS);
199                  break;
200              case ABORTED:
201                  tgt.setValue(org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus.ABORTED);
202                  break;
203              case COMPLETED:
204                  tgt.setValue(org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus.COMPLETED);
205                  break;
206              case ENTEREDINERROR:
207                  tgt.setValue(org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus.ENTEREDINERROR);
208                  break;
209              default:
210                  tgt.setValue(org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus.NULL);
211                  break;
212          }
213      }
214      return tgt;
215  }
216}