001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_50;
004import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Annotation30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.DateTime30_50;
009import org.hl7.fhir.dstu3.model.DeviceUseStatement;
010import org.hl7.fhir.dstu3.model.Enumeration;
011import org.hl7.fhir.exceptions.FHIRException;
012import org.hl7.fhir.r5.model.CodeableReference;
013import org.hl7.fhir.r5.model.DeviceUsage;
014
015public class DeviceUseStatement30_50 {
016
017  public static org.hl7.fhir.dstu3.model.DeviceUseStatement convertDeviceUseStatement(org.hl7.fhir.r5.model.DeviceUsage src) throws FHIRException {
018    if (src == null)
019      return null;
020    org.hl7.fhir.dstu3.model.DeviceUseStatement tgt = new org.hl7.fhir.dstu3.model.DeviceUseStatement();
021    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
022    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
023      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
024    if (src.hasStatus())
025      tgt.setStatusElement(convertDeviceUseStatementStatus(src.getStatusElement()));
026    if (src.hasPatient())
027      tgt.setSubject(Reference30_50.convertReference(src.getPatient()));
028    if (src.hasTiming())
029      tgt.setTiming(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getTiming()));
030    if (src.hasDateAsserted())
031      tgt.setRecordedOnElement(DateTime30_50.convertDateTime(src.getDateAssertedElement()));
032    if (src.hasInformationSource())
033      tgt.setSource(Reference30_50.convertReference(src.getInformationSource()));
034    if (src.getDevice().hasReference())
035      tgt.setDevice(Reference30_50.convertReference(src.getDevice().getReference()));
036    for (CodeableReference t : src.getReason())
037      if (t.hasConcept())
038        tgt.addIndication(CodeableConcept30_50.convertCodeableConcept(t.getConcept()));
039    if (src.getBodySite().hasConcept())
040      tgt.setBodySite(CodeableConcept30_50.convertCodeableConcept(src.getBodySite().getConcept()));
041    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_50.convertAnnotation(t));
042    return tgt;
043  }
044
045  public static org.hl7.fhir.r5.model.DeviceUsage convertDeviceUseStatement(org.hl7.fhir.dstu3.model.DeviceUseStatement src) throws FHIRException {
046    if (src == null)
047      return null;
048    org.hl7.fhir.r5.model.DeviceUsage tgt = new org.hl7.fhir.r5.model.DeviceUsage();
049    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
050    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
051      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
052    if (src.hasStatus())
053      tgt.setStatusElement(convertDeviceUseStatementStatus(src.getStatusElement()));
054    if (src.hasSubject())
055      tgt.setPatient(Reference30_50.convertReference(src.getSubject()));
056    if (src.hasTiming())
057      tgt.setTiming(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getTiming()));
058    if (src.hasRecordedOn())
059      tgt.setDateAssertedElement(DateTime30_50.convertDateTime(src.getRecordedOnElement()));
060    if (src.hasSource())
061      tgt.setInformationSource(Reference30_50.convertReference(src.getSource()));
062    if (src.hasDevice())
063      tgt.getDevice().setReference(Reference30_50.convertReference(src.getDevice()));
064    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getIndication())
065      tgt.addReason(Reference30_50.convertCodeableConceptToCodableReference(t));
066    if (src.hasBodySite())
067      tgt.getBodySite().setConcept(CodeableConcept30_50.convertCodeableConcept(src.getBodySite()));
068    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_50.convertAnnotation(t));
069    return tgt;
070  }
071
072  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.DeviceUseStatement.DeviceUseStatementStatus> convertDeviceUseStatementStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.DeviceUsage.DeviceUsageStatus> src) throws FHIRException {
073      if (src == null || src.isEmpty())
074          return null;
075      Enumeration<DeviceUseStatement.DeviceUseStatementStatus> tgt = new Enumeration<>(new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
076      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
077      if (src.getValue() == null) {
078          tgt.setValue(null);
079      } else {
080          switch (src.getValue()) {
081              case ACTIVE:
082                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.ACTIVE);
083                  break;
084              case COMPLETED:
085                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.COMPLETED);
086                  break;
087              case ENTEREDINERROR:
088                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.ENTEREDINERROR);
089                  break;
090              case INTENDED:
091                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.INTENDED);
092                  break;
093              case STOPPED:
094                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.STOPPED);
095                  break;
096              case ONHOLD:
097                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.ONHOLD);
098                  break;
099              default:
100                  tgt.setValue(DeviceUseStatement.DeviceUseStatementStatus.NULL);
101                  break;
102          }
103      }
104      return tgt;
105  }
106
107  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.DeviceUsage.DeviceUsageStatus> convertDeviceUseStatementStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.DeviceUseStatement.DeviceUseStatementStatus> src) throws FHIRException {
108      if (src == null || src.isEmpty())
109          return null;
110      org.hl7.fhir.r5.model.Enumeration<DeviceUsage.DeviceUsageStatus> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new DeviceUsage.DeviceUsageStatusEnumFactory());
111      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
112      if (src.getValue() == null) {
113          tgt.setValue(null);
114      } else {
115          switch (src.getValue()) {
116              case ACTIVE:
117                  tgt.setValue(DeviceUsage.DeviceUsageStatus.ACTIVE);
118                  break;
119              case COMPLETED:
120                  tgt.setValue(DeviceUsage.DeviceUsageStatus.COMPLETED);
121                  break;
122              case ENTEREDINERROR:
123                  tgt.setValue(DeviceUsage.DeviceUsageStatus.ENTEREDINERROR);
124                  break;
125              case INTENDED:
126                  tgt.setValue(DeviceUsage.DeviceUsageStatus.INTENDED);
127                  break;
128              case STOPPED:
129                  tgt.setValue(DeviceUsage.DeviceUsageStatus.STOPPED);
130                  break;
131              case ONHOLD:
132                  tgt.setValue(DeviceUsage.DeviceUsageStatus.ONHOLD);
133                  break;
134              default:
135                  tgt.setValue(DeviceUsage.DeviceUsageStatus.NULL);
136                  break;
137          }
138      }
139      return tgt;
140  }
141}