001package org.hl7.fhir.convertors.conv40_50.datatypes40_50.metadata40_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext40_50;
004import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.String40_50;
005import org.hl7.fhir.exceptions.FHIRException;
006
007public class TriggerDefinition40_50 {
008  public static org.hl7.fhir.r5.model.TriggerDefinition convertTriggerDefinition(org.hl7.fhir.r4.model.TriggerDefinition src) throws FHIRException {
009    if (src == null) return null;
010    org.hl7.fhir.r5.model.TriggerDefinition tgt = new org.hl7.fhir.r5.model.TriggerDefinition();
011    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
012    if (src.hasType()) tgt.setTypeElement(convertTriggerType(src.getTypeElement()));
013    if (src.hasName()) tgt.setNameElement(String40_50.convertString(src.getNameElement()));
014    if (src.hasTiming())
015      tgt.setTiming(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getTiming()));
016    for (org.hl7.fhir.r4.model.DataRequirement t : src.getData())
017      tgt.addData(DataRequirement40_50.convertDataRequirement(t));
018    if (src.hasCondition()) tgt.setCondition(Expression40_50.convertExpression(src.getCondition()));
019    return tgt;
020  }
021
022  public static org.hl7.fhir.r4.model.TriggerDefinition convertTriggerDefinition(org.hl7.fhir.r5.model.TriggerDefinition src) throws FHIRException {
023    if (src == null) return null;
024    org.hl7.fhir.r4.model.TriggerDefinition tgt = new org.hl7.fhir.r4.model.TriggerDefinition();
025    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
026    if (src.hasType()) tgt.setTypeElement(convertTriggerType(src.getTypeElement()));
027    if (src.hasName()) tgt.setNameElement(String40_50.convertString(src.getNameElement()));
028    if (src.hasTiming())
029      tgt.setTiming(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getTiming()));
030    for (org.hl7.fhir.r5.model.DataRequirement t : src.getData())
031      tgt.addData(DataRequirement40_50.convertDataRequirement(t));
032    if (src.hasCondition()) tgt.setCondition(Expression40_50.convertExpression(src.getCondition()));
033    return tgt;
034  }
035
036  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.TriggerDefinition.TriggerType> convertTriggerType(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.TriggerDefinition.TriggerType> src) throws FHIRException {
037    if (src == null || src.isEmpty()) return null;
038    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.TriggerDefinition.TriggerType> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.TriggerDefinition.TriggerTypeEnumFactory());
039    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
040    if (src.getValue() == null) {
041      tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.NULL);
042    } else {
043      switch (src.getValue()) {
044        case NAMEDEVENT:
045          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.NAMEDEVENT);
046          break;
047        case PERIODIC:
048          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.PERIODIC);
049          break;
050        case DATACHANGED:
051          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.DATACHANGED);
052          break;
053        case DATAADDED:
054          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.DATAADDED);
055          break;
056        case DATAMODIFIED:
057          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.DATAMODIFIED);
058          break;
059        case DATAREMOVED:
060          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.DATAREMOVED);
061          break;
062        case DATAACCESSED:
063          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.DATAACCESSED);
064          break;
065        case DATAACCESSENDED:
066          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.DATAACCESSENDED);
067          break;
068        default:
069          tgt.setValue(org.hl7.fhir.r5.model.TriggerDefinition.TriggerType.NULL);
070          break;
071      }
072    }
073    return tgt;
074  }
075
076  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.TriggerDefinition.TriggerType> convertTriggerType(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.TriggerDefinition.TriggerType> src) throws FHIRException {
077    if (src == null || src.isEmpty()) return null;
078    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.TriggerDefinition.TriggerType> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.TriggerDefinition.TriggerTypeEnumFactory());
079    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
080    if (src.getValue() == null) {
081      tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.NULL);
082    } else {
083      switch (src.getValue()) {
084        case NAMEDEVENT:
085          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.NAMEDEVENT);
086          break;
087        case PERIODIC:
088          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.PERIODIC);
089          break;
090        case DATACHANGED:
091          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.DATACHANGED);
092          break;
093        case DATAADDED:
094          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.DATAADDED);
095          break;
096        case DATAMODIFIED:
097          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.DATAMODIFIED);
098          break;
099        case DATAREMOVED:
100          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.DATAREMOVED);
101          break;
102        case DATAACCESSED:
103          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.DATAACCESSED);
104          break;
105        case DATAACCESSENDED:
106          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.DATAACCESSENDED);
107          break;
108        default:
109          tgt.setValue(org.hl7.fhir.r4.model.TriggerDefinition.TriggerType.NULL);
110          break;
111      }
112    }
113    return tgt;
114  }
115}