001package org.hl7.fhir.convertors.conv30_50.datatypes30_50;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.VersionConvertorResourceNameMapper;
005import org.hl7.fhir.convertors.context.ConversionContext30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Coding30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50;
008import org.hl7.fhir.exceptions.FHIRException;
009import org.hl7.fhir.r5.model.DataType;
010import org.hl7.fhir.r5.model.Enumerations;
011
012public class DataRequirement30_50 {
013  public static org.hl7.fhir.r5.model.DataRequirement convertDataRequirement(org.hl7.fhir.dstu3.model.DataRequirement src) throws FHIRException {
014    if (src == null) return null;
015    org.hl7.fhir.r5.model.DataRequirement tgt = new org.hl7.fhir.r5.model.DataRequirement();
016    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt, VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME);
017    if (src.hasType()) {
018      if (src.hasExtension(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME)) {
019        tgt.setType(Enumerations.FHIRTypes.fromCode(src.getExtensionString(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME)));
020      } else {
021        String n = VersionConvertorResourceNameMapper.mapName3to5(src.getType());
022        if (n != null) {
023          tgt.setType(Enumerations.FHIRTypes.fromCode(n));
024        }
025        tgt.addExtension(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME, new org.hl7.fhir.r5.model.CodeType(src.getType()));
026      }
027    }
028    for (org.hl7.fhir.dstu3.model.UriType t : src.getProfile()) tgt.addProfile(t.getValue());
029    for (org.hl7.fhir.dstu3.model.StringType t : src.getMustSupport()) tgt.addMustSupport(t.getValue());
030    for (org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementCodeFilterComponent t : src.getCodeFilter())
031      tgt.addCodeFilter(convertDataRequirementCodeFilterComponent(t));
032    for (org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementDateFilterComponent t : src.getDateFilter())
033      tgt.addDateFilter(convertDataRequirementDateFilterComponent(t));
034    return tgt;
035  }
036
037  public static org.hl7.fhir.dstu3.model.DataRequirement convertDataRequirement(org.hl7.fhir.r5.model.DataRequirement src) throws FHIRException {
038    if (src == null) return null;
039    org.hl7.fhir.dstu3.model.DataRequirement tgt = new org.hl7.fhir.dstu3.model.DataRequirement();
040    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt, VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME);
041    if (src.hasType() || src.hasExtension(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME)) {
042      if (src.hasExtension(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME)) {
043        tgt.setType(src.getExtensionString(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME));
044      } else {
045        String n = VersionConvertorResourceNameMapper.mapName5to3(src.getType().toCode());
046        if (n != null) {
047          tgt.setType(n);
048        }
049        tgt.addExtension(VersionConvertorConstants.EXT_ACTUAL_RESOURCE_NAME, new org.hl7.fhir.dstu3.model.CodeType(src.getType().toCode()));
050      }
051    }
052    for (org.hl7.fhir.r5.model.UriType t : src.getProfile()) tgt.addProfile(t.getValue());
053    for (org.hl7.fhir.r5.model.StringType t : src.getMustSupport()) tgt.addMustSupport(t.getValue());
054    for (org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent t : src.getCodeFilter())
055      tgt.addCodeFilter(convertDataRequirementCodeFilterComponent(t));
056    for (org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent t : src.getDateFilter())
057      tgt.addDateFilter(convertDataRequirementDateFilterComponent(t));
058    return tgt;
059  }
060
061  public static org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent convertDataRequirementCodeFilterComponent(org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementCodeFilterComponent src) throws FHIRException {
062    if (src == null) return null;
063    org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent tgt = new org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent();
064    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
065    if (src.hasPath()) tgt.setPathElement(String30_50.convertString(src.getPathElement()));
066    if (src.hasValueSet()) {
067      DataType t = ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getValueSet());
068      if (t instanceof org.hl7.fhir.r5.model.Reference)
069        tgt.setValueSet(((org.hl7.fhir.r5.model.Reference) t).getReference());
070      else tgt.setValueSet(t.primitiveValue());
071      tgt.setValueSet(VersionConvertorConstants.refToVS(tgt.getValueSet()));
072    }
073    for (org.hl7.fhir.dstu3.model.CodeType t : src.getValueCode()) tgt.addCode(Coding30_50.convertCoding(t));
074    for (org.hl7.fhir.dstu3.model.Coding t : src.getValueCoding()) tgt.addCode(Coding30_50.convertCoding(t));
075    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getValueCodeableConcept())
076      tgt.addCode(Coding30_50.convertCoding(t));
077    return tgt;
078  }
079
080  public static org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementCodeFilterComponent convertDataRequirementCodeFilterComponent(org.hl7.fhir.r5.model.DataRequirement.DataRequirementCodeFilterComponent src) throws FHIRException {
081    if (src == null) return null;
082    org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementCodeFilterComponent tgt = new org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementCodeFilterComponent();
083    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
084    if (src.hasPath()) tgt.setPathElement(String30_50.convertString(src.getPathElement()));
085    if (src.hasValueSet()) {
086      String vsr = VersionConvertorConstants.vsToRef(src.getValueSet());
087      if (vsr != null) tgt.setValueSet(new org.hl7.fhir.dstu3.model.UriType(vsr));
088      else tgt.setValueSet(new org.hl7.fhir.dstu3.model.Reference(src.getValueSet()));
089    }
090    for (org.hl7.fhir.r5.model.Coding t : src.getCode()) {
091      tgt.addValueCoding(Coding30_50.convertCoding(t));
092    }
093    return tgt;
094  }
095
096  public static org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent convertDataRequirementDateFilterComponent(org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementDateFilterComponent src) throws FHIRException {
097    if (src == null) return null;
098    org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent tgt = new org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent();
099    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
100    if (src.hasPath()) tgt.setPathElement(String30_50.convertString(src.getPathElement()));
101    if (src.hasValue())
102      tgt.setValue(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getValue()));
103    return tgt;
104  }
105
106  public static org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementDateFilterComponent convertDataRequirementDateFilterComponent(org.hl7.fhir.r5.model.DataRequirement.DataRequirementDateFilterComponent src) throws FHIRException {
107    if (src == null) return null;
108    org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementDateFilterComponent tgt = new org.hl7.fhir.dstu3.model.DataRequirement.DataRequirementDateFilterComponent();
109    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
110    if (src.hasPath()) tgt.setPathElement(String30_50.convertString(src.getPathElement()));
111    if (src.hasValue())
112      tgt.setValue(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getValue()));
113    return tgt;
114  }
115}