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.Utilities40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Coding40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.PositiveInt40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.String40_50;
009import org.hl7.fhir.exceptions.FHIRException;
010
011public class DataRequirement40_50 {
012  public static org.hl7.fhir.r5.model.DataRequirement convertDataRequirement(org.hl7.fhir.r4.model.DataRequirement src) throws FHIRException {
013    if (src == null) return null;
014    org.hl7.fhir.r5.model.DataRequirement tgt = new org.hl7.fhir.r5.model.DataRequirement();
015    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
016    if (src.hasType()) {
017      Utilities40_50.convertType(src.getTypeElement(), tgt.getTypeElement());   
018    }
019    for (org.hl7.fhir.r4.model.CanonicalType t : src.getProfile())
020      tgt.getProfile().add(Canonical40_50.convertCanonical(t));
021    if (src.hasSubject())
022      tgt.setSubject(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getSubject()));
023    for (org.hl7.fhir.r4.model.StringType t : src.getMustSupport())
024      tgt.getMustSupport().add(String40_50.convertString(t));
025    for (org.hl7.fhir.r4.model.DataRequirement.DataRequirementCodeFilterComponent t : src.getCodeFilter())
026      tgt.addCodeFilter(convertDataRequirementCodeFilterComponent(t));
027    for (org.hl7.fhir.r4.model.DataRequirement.DataRequirementDateFilterComponent t : src.getDateFilter())
028      tgt.addDateFilter(convertDataRequirementDateFilterComponent(t));
029    if (src.hasLimit()) tgt.setLimitElement(PositiveInt40_50.convertPositiveInt(src.getLimitElement()));
030    for (org.hl7.fhir.r4.model.DataRequirement.DataRequirementSortComponent t : src.getSort())
031      tgt.addSort(convertDataRequirementSortComponent(t));
032    return tgt;
033  }
034
035  public static org.hl7.fhir.r4.model.DataRequirement convertDataRequirement(org.hl7.fhir.r5.model.DataRequirement src) throws FHIRException {
036    if (src == null) return null;
037    org.hl7.fhir.r4.model.DataRequirement tgt = new org.hl7.fhir.r4.model.DataRequirement();
038    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
039    if (src.hasType()) {
040      Utilities40_50.convertType(src.getTypeElement(), tgt.getTypeElement());   
041    }
042    for (org.hl7.fhir.r5.model.CanonicalType t : src.getProfile())
043      tgt.getProfile().add(Canonical40_50.convertCanonical(t));
044    if (src.hasSubject())
045      tgt.setSubject(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getSubject()));
046    for (org.hl7.fhir.r5.model.StringType t : src.getMustSupport())
047      tgt.getMustSupport().add(String40_50.convertString(t));
048    for (org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent t : src.getCodeFilter())
049      tgt.addCodeFilter(convertDataRequirementCodeFilterComponent(t));
050    for (org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent t : src.getDateFilter())
051      tgt.addDateFilter(convertDataRequirementDateFilterComponent(t));
052    if (src.hasLimit()) tgt.setLimitElement(PositiveInt40_50.convertPositiveInt(src.getLimitElement()));
053    for (org.hl7.fhir.r5.model.DataRequirement.DataRequirementSortComponent t : src.getSort())
054      tgt.addSort(convertDataRequirementSortComponent(t));
055    return tgt;
056  }
057
058  public static org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent convertDataRequirementCodeFilterComponent(org.hl7.fhir.r4.model.DataRequirement.DataRequirementCodeFilterComponent src) throws FHIRException {
059    if (src == null) return null;
060    org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent tgt = new org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent();
061    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
062    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
063    if (src.hasSearchParam()) tgt.setSearchParamElement(String40_50.convertString(src.getSearchParamElement()));
064    if (src.hasValueSet()) tgt.setValueSetElement(Canonical40_50.convertCanonical(src.getValueSetElement()));
065    for (org.hl7.fhir.r4.model.Coding t : src.getCode()) tgt.addCode(Coding40_50.convertCoding(t));
066    return tgt;
067  }
068
069  public static org.hl7.fhir.r4.model.DataRequirement.DataRequirementCodeFilterComponent convertDataRequirementCodeFilterComponent(org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent src) throws FHIRException {
070    if (src == null) return null;
071    org.hl7.fhir.r4.model.DataRequirement.DataRequirementCodeFilterComponent tgt = new org.hl7.fhir.r4.model.DataRequirement.DataRequirementCodeFilterComponent();
072    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
073    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
074    if (src.hasSearchParam()) tgt.setSearchParamElement(String40_50.convertString(src.getSearchParamElement()));
075    if (src.hasValueSet()) tgt.setValueSetElement(Canonical40_50.convertCanonical(src.getValueSetElement()));
076    for (org.hl7.fhir.r5.model.Coding t : src.getCode()) tgt.addCode(Coding40_50.convertCoding(t));
077    return tgt;
078  }
079
080  public static org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent convertDataRequirementDateFilterComponent(org.hl7.fhir.r4.model.DataRequirement.DataRequirementDateFilterComponent src) throws FHIRException {
081    if (src == null) return null;
082    org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent tgt = new org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent();
083    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
084    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
085    if (src.hasSearchParam()) tgt.setSearchParamElement(String40_50.convertString(src.getSearchParamElement()));
086    if (src.hasValue())
087      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
088    return tgt;
089  }
090
091  public static org.hl7.fhir.r4.model.DataRequirement.DataRequirementDateFilterComponent convertDataRequirementDateFilterComponent(org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent src) throws FHIRException {
092    if (src == null) return null;
093    org.hl7.fhir.r4.model.DataRequirement.DataRequirementDateFilterComponent tgt = new org.hl7.fhir.r4.model.DataRequirement.DataRequirementDateFilterComponent();
094    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
095    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
096    if (src.hasSearchParam()) tgt.setSearchParamElement(String40_50.convertString(src.getSearchParamElement()));
097    if (src.hasValue())
098      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
099    return tgt;
100  }
101
102  public static org.hl7.fhir.r5.model.DataRequirement.DataRequirementSortComponent convertDataRequirementSortComponent(org.hl7.fhir.r4.model.DataRequirement.DataRequirementSortComponent src) throws FHIRException {
103    if (src == null) return null;
104    org.hl7.fhir.r5.model.DataRequirement.DataRequirementSortComponent tgt = new org.hl7.fhir.r5.model.DataRequirement.DataRequirementSortComponent();
105    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
106    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
107    if (src.hasDirection()) tgt.setDirectionElement(convertSortDirection(src.getDirectionElement()));
108    return tgt;
109  }
110
111  public static org.hl7.fhir.r4.model.DataRequirement.DataRequirementSortComponent convertDataRequirementSortComponent(org.hl7.fhir.r5.model.DataRequirement.DataRequirementSortComponent src) throws FHIRException {
112    if (src == null) return null;
113    org.hl7.fhir.r4.model.DataRequirement.DataRequirementSortComponent tgt = new org.hl7.fhir.r4.model.DataRequirement.DataRequirementSortComponent();
114    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
115    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
116    if (src.hasDirection()) tgt.setDirectionElement(convertSortDirection(src.getDirectionElement()));
117    return tgt;
118  }
119
120  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.DataRequirement.SortDirection> convertSortDirection(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.DataRequirement.SortDirection> src) throws FHIRException {
121    if (src == null || src.isEmpty()) return null;
122    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.DataRequirement.SortDirection> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.DataRequirement.SortDirectionEnumFactory());
123    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
124    if (src.getValue() == null) {
125      tgt.setValue(org.hl7.fhir.r5.model.DataRequirement.SortDirection.NULL);
126    } else {
127      switch (src.getValue()) {
128        case ASCENDING:
129          tgt.setValue(org.hl7.fhir.r5.model.DataRequirement.SortDirection.ASCENDING);
130          break;
131        case DESCENDING:
132          tgt.setValue(org.hl7.fhir.r5.model.DataRequirement.SortDirection.DESCENDING);
133          break;
134        default:
135          tgt.setValue(org.hl7.fhir.r5.model.DataRequirement.SortDirection.NULL);
136          break;
137      }
138    }
139    return tgt;
140  }
141
142  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.DataRequirement.SortDirection> convertSortDirection(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.DataRequirement.SortDirection> src) throws FHIRException {
143    if (src == null || src.isEmpty()) return null;
144    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.DataRequirement.SortDirection> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.DataRequirement.SortDirectionEnumFactory());
145    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
146    if (src.getValue() == null) {
147      tgt.setValue(org.hl7.fhir.r4.model.DataRequirement.SortDirection.NULL);
148    } else {
149      switch (src.getValue()) {
150        case ASCENDING:
151          tgt.setValue(org.hl7.fhir.r4.model.DataRequirement.SortDirection.ASCENDING);
152          break;
153        case DESCENDING:
154          tgt.setValue(org.hl7.fhir.r4.model.DataRequirement.SortDirection.DESCENDING);
155          break;
156        default:
157          tgt.setValue(org.hl7.fhir.r4.model.DataRequirement.SortDirection.NULL);
158          break;
159      }
160    }
161    return tgt;
162  }
163}