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