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.Annotation10_40;
006import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.CodeableConcept10_40;
007import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Identifier10_40;
008import org.hl7.fhir.exceptions.FHIRException;
009import org.hl7.fhir.r4.model.Procedure;
010
011public class Procedure10_40 {
012
013  public static org.hl7.fhir.r4.model.Procedure convertProcedure(org.hl7.fhir.dstu2.model.Procedure src) throws FHIRException {
014    if (src == null || src.isEmpty())
015      return null;
016    org.hl7.fhir.r4.model.Procedure tgt = new org.hl7.fhir.r4.model.Procedure();
017    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
018    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
019      tgt.addIdentifier(Identifier10_40.convertIdentifier(t));
020    if (src.hasSubject())
021      tgt.setSubject(Reference10_40.convertReference(src.getSubject()));
022    if (src.hasStatus() && src.hasNotPerformed()) {
023      if (src.getNotPerformed()) {
024        tgt.setStatus(Procedure.ProcedureStatus.NOTDONE);
025      } else {
026        tgt.setStatus(convertProcedureStatus(src.getStatus()));
027      }
028    }
029    if (src.hasCategory())
030      tgt.setCategory(CodeableConcept10_40.convertCodeableConcept(src.getCategory()));
031    if (src.hasCode())
032      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
033    if (src.hasReasonNotPerformed())
034      tgt.setStatusReason(CodeableConcept10_40.convertCodeableConcept(src.getReasonNotPerformed().get(0)));
035    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getBodySite())
036      tgt.addBodySite(CodeableConcept10_40.convertCodeableConcept(t));
037    if (src.hasReasonCodeableConcept())
038      tgt.addReasonCode(CodeableConcept10_40.convertCodeableConcept(src.getReasonCodeableConcept()));
039    if (src.hasReasonReference())
040      tgt.addReasonReference(Reference10_40.convertReference(src.getReasonReference()));
041    if (src.hasPerformed())
042      tgt.setPerformed(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getPerformed()));
043    for (org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent t : src.getPerformer())
044      tgt.addPerformer(convertProcedurePerformerComponent(t));
045    if (src.hasEncounter())
046      tgt.setEncounter(Reference10_40.convertReference(src.getEncounter()));
047    if (src.hasLocation())
048      tgt.setLocation(Reference10_40.convertReference(src.getLocation()));
049    if (src.hasOutcome())
050      tgt.setOutcome(CodeableConcept10_40.convertCodeableConcept(src.getOutcome()));
051    for (org.hl7.fhir.dstu2.model.Reference t : src.getReport()) tgt.addReport(Reference10_40.convertReference(t));
052    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getComplication())
053      tgt.addComplication(CodeableConcept10_40.convertCodeableConcept(t));
054    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getFollowUp())
055      tgt.addFollowUp(CodeableConcept10_40.convertCodeableConcept(t));
056    if (src.hasRequest())
057      tgt.addBasedOn(Reference10_40.convertReference(src.getRequest()));
058    for (org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice())
059      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
060    for (org.hl7.fhir.dstu2.model.Annotation note : src.getNotes())
061      tgt.addNote(Annotation10_40.convertAnnotation(note));
062    for (org.hl7.fhir.dstu2.model.Reference r : src.getUsed()) tgt.addUsedReference(Reference10_40.convertReference(r));
063    return tgt;
064  }
065
066  private static org.hl7.fhir.r4.model.Procedure.ProcedureStatus convertProcedureStatus(org.hl7.fhir.dstu2.model.Procedure.ProcedureStatus src) {
067    switch (src) {
068      case ENTEREDINERROR:
069        return org.hl7.fhir.r4.model.Procedure.ProcedureStatus.ENTEREDINERROR;
070      case INPROGRESS:
071        return org.hl7.fhir.r4.model.Procedure.ProcedureStatus.INPROGRESS;
072      case ABORTED:
073        return org.hl7.fhir.r4.model.Procedure.ProcedureStatus.STOPPED;
074      case COMPLETED:
075        return org.hl7.fhir.r4.model.Procedure.ProcedureStatus.COMPLETED;
076      default:
077        return org.hl7.fhir.r4.model.Procedure.ProcedureStatus.NULL;
078    }
079  }
080
081  public static org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.dstu2.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
082    if (src == null || src.isEmpty())
083      return null;
084    org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent();
085    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
086    if (src.hasActor())
087      tgt.setActor(Reference10_40.convertReference(src.getActor()));
088    if (src.hasRole())
089      tgt.setFunction(CodeableConcept10_40.convertCodeableConcept(src.getRole()));
090    return tgt;
091  }
092
093  public static org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.dstu2.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
094    if (src == null || src.isEmpty())
095      return null;
096    org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent();
097    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
098    if (src.hasAction())
099      tgt.setAction(CodeableConcept10_40.convertCodeableConcept(src.getAction()));
100    if (src.hasManipulated())
101      tgt.setManipulated(Reference10_40.convertReference(src.getManipulated()));
102    return tgt;
103  }
104}