
001package org.hl7.fhir.convertors.conv10_40.datatypes10_40; 002 003import java.util.List; 004import java.util.stream.Collectors; 005 006import org.hl7.fhir.convertors.VersionConvertorConstants; 007import org.hl7.fhir.convertors.context.ConversionContext10_40; 008import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Coding10_40; 009import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.Boolean10_40; 010import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.Code10_40; 011import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.Id10_40; 012import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.Integer10_40; 013import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.MarkDown10_40; 014import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.String10_40; 015import org.hl7.fhir.dstu2.utils.ToolingExtensions; 016import org.hl7.fhir.exceptions.FHIRException; 017import org.hl7.fhir.r4.conformance.ProfileUtilities; 018import org.hl7.fhir.r4.model.ElementDefinition; 019import org.hl7.fhir.r4.model.Enumerations; 020import org.hl7.fhir.utilities.Utilities; 021 022public class ElementDefinition10_40 { 023 public static org.hl7.fhir.r4.model.ElementDefinition convertElementDefinition(org.hl7.fhir.dstu2.model.ElementDefinition src, List<String> slicePaths, List<org.hl7.fhir.dstu2.model.ElementDefinition> context, int pos) throws FHIRException { 024 if (src == null || src.isEmpty()) return null; 025 org.hl7.fhir.r4.model.ElementDefinition tgt = new org.hl7.fhir.r4.model.ElementDefinition(); 026 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 027 if (src.hasPathElement()) tgt.setPathElement(String10_40.convertString(src.getPathElement())); 028 tgt.setRepresentation(src.getRepresentation().stream().map(ElementDefinition10_40::convertPropertyRepresentation).collect(Collectors.toList())); 029 if (src.hasName()) { 030 if (slicePaths.contains(src.getPath())) tgt.setSliceNameElement(String10_40.convertString(src.getNameElement())); 031 if (src.hasNameElement()) tgt.setIdElement(String10_40.convertString(src.getNameElement())); 032 } 033 if (src.hasLabel()) tgt.setLabelElement(String10_40.convertString(src.getLabelElement())); 034 for (org.hl7.fhir.dstu2.model.Coding t : src.getCode()) tgt.addCode(Coding10_40.convertCoding(t)); 035 if (src.hasSlicing()) tgt.setSlicing(convertElementDefinitionSlicingComponent(src.getSlicing(), context, pos)); 036 if (src.hasShort()) tgt.setShortElement(String10_40.convertString(src.getShortElement())); 037 if (src.hasDefinition()) tgt.setDefinitionElement(MarkDown10_40.convertMarkdown(src.getDefinitionElement())); 038 if (src.hasComments()) tgt.setCommentElement(MarkDown10_40.convertMarkdown(src.getCommentsElement())); 039 if (src.hasRequirements()) tgt.setRequirementsElement(MarkDown10_40.convertMarkdown(src.getRequirementsElement())); 040 for (org.hl7.fhir.dstu2.model.StringType t : src.getAlias()) tgt.addAlias(t.getValue()); 041 if (src.hasMin()) tgt.setMin(src.getMin()); 042 if (src.hasMax()) tgt.setMaxElement(String10_40.convertString(src.getMaxElement())); 043 if (src.hasBase()) tgt.setBase(convertElementDefinitionBaseComponent(src.getBase())); 044 if (src.hasNameReference()) tgt.setContentReference("#" + src.getNameReference()); 045 for (org.hl7.fhir.dstu2.model.ElementDefinition.TypeRefComponent t : src.getType()) 046 convertElementDefinitionTypeComponent(t, tgt.getType()); 047 if (src.hasDefaultValue()) 048 tgt.setDefaultValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getDefaultValue())); 049 if (src.hasMeaningWhenMissing()) 050 tgt.setMeaningWhenMissingElement(MarkDown10_40.convertMarkdown(src.getMeaningWhenMissingElement())); 051 if (src.hasFixed()) 052 tgt.setFixed(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getFixed())); 053 if (src.hasPattern()) 054 tgt.setPattern(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getPattern())); 055 if (src.hasExample()) 056 tgt.addExample().setLabel("General").setValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getExample())); 057 if (src.hasMinValue()) 058 tgt.setMinValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getMinValue())); 059 if (src.hasMaxValue()) 060 tgt.setMaxValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getMaxValue())); 061 if (src.hasMaxLength()) tgt.setMaxLengthElement(Integer10_40.convertInteger(src.getMaxLengthElement())); 062 for (org.hl7.fhir.dstu2.model.IdType t : src.getCondition()) tgt.addCondition(t.getValue()); 063 for (org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionConstraintComponent t : src.getConstraint()) 064 tgt.addConstraint(convertElementDefinitionConstraintComponent(t)); 065 if (src.hasMustSupport()) tgt.setMustSupportElement(Boolean10_40.convertBoolean(src.getMustSupportElement())); 066 if (src.hasIsModifier()) tgt.setIsModifierElement(Boolean10_40.convertBoolean(src.getIsModifierElement())); 067 if (tgt.getIsModifier()) { 068 String reason = org.hl7.fhir.dstu2.utils.ToolingExtensions.readStringExtension(src, VersionConvertorConstants.EXT_MODIFIER_REASON_EXTENSION); 069 if (Utilities.noString(reason)) reason = VersionConvertorConstants.EXT_MODIFIER_REASON_LEGACY; 070 tgt.setIsModifierReason(reason); 071 } 072 if (src.hasIsSummary()) tgt.setIsSummaryElement(Boolean10_40.convertBoolean(src.getIsSummaryElement())); 073 if (src.hasBinding()) tgt.setBinding(convertElementDefinitionBindingComponent(src.getBinding())); 074 for (org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionMappingComponent t : src.getMapping()) 075 tgt.addMapping(convertElementDefinitionMappingComponent(t)); 076 if (!tgt.hasId()) tgt.setId(tgt.getPath()); 077 return tgt; 078 } 079 080 public static org.hl7.fhir.dstu2.model.ElementDefinition convertElementDefinition(org.hl7.fhir.r4.model.ElementDefinition src) throws FHIRException { 081 if (src == null || src.isEmpty()) return null; 082 org.hl7.fhir.dstu2.model.ElementDefinition tgt = new org.hl7.fhir.dstu2.model.ElementDefinition(); 083 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 084 if (src.hasPathElement()) tgt.setPathElement(String10_40.convertString(src.getPathElement())); 085 tgt.setRepresentation(src.getRepresentation().stream().map(ElementDefinition10_40::convertPropertyRepresentation).collect(Collectors.toList())); 086 if (src.hasSliceName()) tgt.setNameElement(String10_40.convertString(src.getSliceNameElement())); 087 else tgt.setNameElement(String10_40.convertString(src.getIdElement())); 088 if (src.hasLabelElement()) tgt.setLabelElement(String10_40.convertString(src.getLabelElement())); 089 for (org.hl7.fhir.r4.model.Coding t : src.getCode()) tgt.addCode(Coding10_40.convertCoding(t)); 090 if (src.hasSlicing()) tgt.setSlicing(convertElementDefinitionSlicingComponent(src.getSlicing())); 091 if (src.hasShortElement()) tgt.setShortElement(String10_40.convertString(src.getShortElement())); 092 if (src.hasDefinitionElement()) tgt.setDefinitionElement(MarkDown10_40.convertMarkdown(src.getDefinitionElement())); 093 if (src.hasCommentElement()) tgt.setCommentsElement(MarkDown10_40.convertMarkdown(src.getCommentElement())); 094 if (src.hasRequirementsElement()) 095 tgt.setRequirementsElement(MarkDown10_40.convertMarkdown(src.getRequirementsElement())); 096 for (org.hl7.fhir.r4.model.StringType t : src.getAlias()) tgt.addAlias(t.getValue()); 097 tgt.setMin(src.getMin()); 098 if (src.hasMaxElement()) tgt.setMaxElement(String10_40.convertString(src.getMaxElement())); 099 if (src.hasBase()) tgt.setBase(convertElementDefinitionBaseComponent(src.getBase())); 100 if (src.hasContentReference()) tgt.setNameReference(src.getContentReference().substring(1)); 101 for (org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent t : src.getType()) 102 convertElementDefinitionTypeComponent(t, tgt.getType()); 103 if (src.hasDefaultValue()) 104 tgt.setDefaultValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getDefaultValue())); 105 if (src.hasMeaningWhenMissingElement()) 106 tgt.setMeaningWhenMissingElement(MarkDown10_40.convertMarkdown(src.getMeaningWhenMissingElement())); 107 if (src.hasFixed()) 108 tgt.setFixed(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getFixed())); 109 if (src.hasPattern()) 110 tgt.setPattern(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getPattern())); 111 if (src.hasExample()) 112 tgt.setExample(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getExampleFirstRep().getValue())); 113 if (src.hasMinValue()) 114 tgt.setMinValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getMinValue())); 115 if (src.hasMaxValue()) 116 tgt.setMaxValue(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getMaxValue())); 117 if (src.hasMaxLengthElement()) tgt.setMaxLengthElement(Integer10_40.convertInteger(src.getMaxLengthElement())); 118 for (org.hl7.fhir.r4.model.IdType t : src.getCondition()) tgt.addCondition(t.getValue()); 119 for (org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionConstraintComponent t : src.getConstraint()) 120 tgt.addConstraint(convertElementDefinitionConstraintComponent(t)); 121 if (src.hasMustSupportElement()) 122 tgt.setMustSupportElement(Boolean10_40.convertBoolean(src.getMustSupportElement())); 123 if (src.hasIsModifierElement()) tgt.setIsModifierElement(Boolean10_40.convertBoolean(src.getIsModifierElement())); 124 if (src.hasIsModifierReason() && !VersionConvertorConstants.EXT_MODIFIER_REASON_LEGACY.equals(src.getIsModifierReason())) 125 org.hl7.fhir.dstu2.utils.ToolingExtensions.setStringExtension(tgt, VersionConvertorConstants.EXT_MODIFIER_REASON_EXTENSION, src.getIsModifierReason()); 126 if (src.hasIsSummaryElement()) tgt.setIsSummaryElement(Boolean10_40.convertBoolean(src.getIsSummaryElement())); 127 if (src.hasBinding()) tgt.setBinding(convertElementDefinitionBindingComponent(src.getBinding())); 128 for (org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionMappingComponent t : src.getMapping()) 129 tgt.addMapping(convertElementDefinitionMappingComponent(t)); 130 return tgt; 131 } 132 133 static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation> convertPropertyRepresentation(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.PropertyRepresentation> src) throws FHIRException { 134 if (src == null || src.isEmpty()) return null; 135 org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentationEnumFactory()); 136 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 137 if (src.getValue() == null) { 138 tgt.setValue(null); 139} else { 140 switch(src.getValue()) { 141 case XMLATTR: 142 tgt.setValue(ElementDefinition.PropertyRepresentation.XMLATTR); 143 break; 144 default: 145 tgt.setValue(ElementDefinition.PropertyRepresentation.NULL); 146 break; 147 } 148} 149 return tgt; 150 } 151 152 static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.PropertyRepresentation> convertPropertyRepresentation(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation> src) throws FHIRException { 153 if (src == null || src.isEmpty()) return null; 154 org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.PropertyRepresentation> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.ElementDefinition.PropertyRepresentationEnumFactory()); 155 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 156 if (src.getValue() == null) { 157 tgt.setValue(null); 158} else { 159 switch(src.getValue()) { 160 case XMLATTR: 161 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.PropertyRepresentation.XMLATTR); 162 break; 163 default: 164 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.PropertyRepresentation.NULL); 165 break; 166 } 167} 168 return tgt; 169 } 170 171 public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent convertElementDefinitionSlicingComponent(org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionSlicingComponent src, List<org.hl7.fhir.dstu2.model.ElementDefinition> context, int pos) throws FHIRException { 172 if (src == null || src.isEmpty()) return null; 173 org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent(); 174 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 175 org.hl7.fhir.dstu2.model.ElementDefinition slicingElement = context.get(pos); 176 for (org.hl7.fhir.dstu2.model.StringType t : src.getDiscriminator()) { 177 boolean isExists = false; 178 if (!t.asStringValue().contains("@")) { 179 int slices = 0; 180 boolean existsSlicePresent = false; 181 boolean notExistsSlicePresent = false; 182 String existsPath = slicingElement.getPath() + "." + t.asStringValue(); 183 for (int i = pos + 1; i < context.size(); i++) { 184 org.hl7.fhir.dstu2.model.ElementDefinition e = context.get(i); 185 if (e.getPath().equals(slicingElement.getPath())) slices++; 186 else if (!e.getPath().startsWith(slicingElement.getPath() + ".")) break; 187 else if (e.getPath().equals(existsPath)) { 188 if (e.hasMin() && e.getMin() > 0) existsSlicePresent = true; 189 else if (e.hasMax() && e.getMax().equals("0")) notExistsSlicePresent = true; 190 } 191 } 192 isExists = (slices == 2 && existsSlicePresent && notExistsSlicePresent) || (slices == 1 && existsSlicePresent != notExistsSlicePresent); 193 } 194 tgt.addDiscriminator(ProfileUtilities.interpretR2Discriminator(t.getValue(), isExists)); 195 } 196 if (src.hasDescriptionElement()) tgt.setDescriptionElement(String10_40.convertString(src.getDescriptionElement())); 197 if (src.hasOrderedElement()) tgt.setOrderedElement(Boolean10_40.convertBoolean(src.getOrderedElement())); 198 if (src.hasRules()) tgt.setRulesElement(convertSlicingRules(src.getRulesElement())); 199 return tgt; 200 } 201 202 public static org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionSlicingComponent convertElementDefinitionSlicingComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent src) throws FHIRException { 203 if (src == null || src.isEmpty()) return null; 204 org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionSlicingComponent tgt = new org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionSlicingComponent(); 205 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 206 for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent t : src.getDiscriminator()) 207 tgt.addDiscriminator(ProfileUtilities.buildR2Discriminator(t)); 208 if (src.hasDescriptionElement()) tgt.setDescriptionElement(String10_40.convertString(src.getDescriptionElement())); 209 if (src.hasOrderedElement()) tgt.setOrderedElement(Boolean10_40.convertBoolean(src.getOrderedElement())); 210 if (src.hasRules()) tgt.setRulesElement(convertSlicingRules(src.getRulesElement())); 211 return tgt; 212 } 213 214 static public org.hl7.fhir.r4.model.Enumeration<ElementDefinition.SlicingRules> convertSlicingRules(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules> src) throws FHIRException { 215 if (src == null || src.isEmpty()) return null; 216 org.hl7.fhir.r4.model.Enumeration<ElementDefinition.SlicingRules> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new ElementDefinition.SlicingRulesEnumFactory()); 217 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 218 if (src.getValue() == null) { 219 tgt.setValue(null); 220} else { 221 switch(src.getValue()) { 222 case CLOSED: 223 tgt.setValue(ElementDefinition.SlicingRules.CLOSED); 224 break; 225 case OPEN: 226 tgt.setValue(ElementDefinition.SlicingRules.OPEN); 227 break; 228 case OPENATEND: 229 tgt.setValue(ElementDefinition.SlicingRules.OPENATEND); 230 break; 231 default: 232 tgt.setValue(ElementDefinition.SlicingRules.NULL); 233 break; 234 } 235} 236 return tgt; 237 } 238 239 static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules> convertSlicingRules(org.hl7.fhir.r4.model.Enumeration<ElementDefinition.SlicingRules> src) throws FHIRException { 240 if (src == null || src.isEmpty()) return null; 241 org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRulesEnumFactory()); 242 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 243 if (src.getValue() == null) { 244 tgt.setValue(null); 245} else { 246 switch(src.getValue()) { 247 case CLOSED: 248 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules.CLOSED); 249 break; 250 case OPEN: 251 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules.OPEN); 252 break; 253 case OPENATEND: 254 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules.OPENATEND); 255 break; 256 default: 257 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.SlicingRules.NULL); 258 break; 259 } 260} 261 return tgt; 262 } 263 264 public static ElementDefinition.ElementDefinitionBaseComponent convertElementDefinitionBaseComponent(org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBaseComponent src) throws FHIRException { 265 if (src == null || src.isEmpty()) return null; 266 ElementDefinition.ElementDefinitionBaseComponent tgt = new ElementDefinition.ElementDefinitionBaseComponent(); 267 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 268 if (src.hasPathElement()) tgt.setPathElement(String10_40.convertString(src.getPathElement())); 269 tgt.setMin(src.getMin()); 270 if (src.hasMaxElement()) tgt.setMaxElement(String10_40.convertString(src.getMaxElement())); 271 return tgt; 272 } 273 274 public static org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBaseComponent convertElementDefinitionBaseComponent(ElementDefinition.ElementDefinitionBaseComponent src) throws FHIRException { 275 if (src == null || src.isEmpty()) return null; 276 org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBaseComponent tgt = new org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBaseComponent(); 277 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 278 if (src.hasPathElement()) tgt.setPathElement(String10_40.convertString(src.getPathElement())); 279 tgt.setMin(src.getMin()); 280 if (src.hasMaxElement()) tgt.setMaxElement(String10_40.convertString(src.getMaxElement())); 281 return tgt; 282 } 283 284 public static void convertElementDefinitionTypeComponent(org.hl7.fhir.dstu2.model.ElementDefinition.TypeRefComponent src, List<ElementDefinition.TypeRefComponent> list) throws FHIRException { 285 if (src == null) return; 286 ElementDefinition.TypeRefComponent tgt = null; 287 for (ElementDefinition.TypeRefComponent t : list) 288 if (t.getCode().equals(src.getCode())) tgt = t; 289 if (tgt == null) { 290 tgt = new ElementDefinition.TypeRefComponent(); 291 list.add(tgt); 292 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 293 tgt.setCode(src.getCode()); 294 } 295 if (tgt.hasTarget()) { 296 for (org.hl7.fhir.dstu2.model.UriType u : src.getProfile()) tgt.addTargetProfile(u.getValue()); 297 } else { 298 for (org.hl7.fhir.dstu2.model.UriType u : src.getProfile()) tgt.addProfile(u.getValue()); 299 } 300 for (org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode> t : src.getAggregation()) { 301 org.hl7.fhir.r4.model.Enumeration<ElementDefinition.AggregationMode> a = convertAggregationMode(t); 302 if (!tgt.hasAggregation(a.getValue())) 303 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(t, tgt.addAggregationElement().setValue(a.getValue())); 304 } 305 } 306 307 public static void convertElementDefinitionTypeComponent(ElementDefinition.TypeRefComponent src, List<org.hl7.fhir.dstu2.model.ElementDefinition.TypeRefComponent> list) throws FHIRException { 308 if (src == null) return; 309 org.hl7.fhir.dstu2.model.ElementDefinition.TypeRefComponent tgt = new org.hl7.fhir.dstu2.model.ElementDefinition.TypeRefComponent(); 310 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 311 tgt.setCode(src.getCode()); 312 list.add(tgt); 313 if (src.hasTarget()) { 314 for (org.hl7.fhir.r4.model.UriType u : src.getTargetProfile()) { 315 tgt.addProfile(u.getValue()); 316 } 317 } else { 318 for (org.hl7.fhir.r4.model.UriType u : src.getProfile()) { 319 tgt.addProfile(u.getValue()); 320 } 321 } 322 } 323 324 static public org.hl7.fhir.r4.model.Enumeration<ElementDefinition.AggregationMode> convertAggregationMode(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode> src) throws FHIRException { 325 if (src == null || src.isEmpty()) return null; 326 org.hl7.fhir.r4.model.Enumeration<ElementDefinition.AggregationMode> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new ElementDefinition.AggregationModeEnumFactory()); 327 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 328 if (src.getValue() == null) { 329 tgt.setValue(null); 330} else { 331 switch(src.getValue()) { 332 case CONTAINED: 333 tgt.setValue(ElementDefinition.AggregationMode.CONTAINED); 334 break; 335 case REFERENCED: 336 tgt.setValue(ElementDefinition.AggregationMode.REFERENCED); 337 break; 338 case BUNDLED: 339 tgt.setValue(ElementDefinition.AggregationMode.BUNDLED); 340 break; 341 default: 342 tgt.setValue(ElementDefinition.AggregationMode.NULL); 343 break; 344 } 345} 346 return tgt; 347 } 348 349 static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode> convertAggregationMode(org.hl7.fhir.r4.model.Enumeration<ElementDefinition.AggregationMode> src) throws FHIRException { 350 if (src == null || src.isEmpty()) return null; 351 org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.ElementDefinition.AggregationModeEnumFactory()); 352 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 353 if (src.getValue() == null) { 354 tgt.setValue(null); 355} else { 356 switch(src.getValue()) { 357 case CONTAINED: 358 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode.CONTAINED); 359 break; 360 case REFERENCED: 361 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode.REFERENCED); 362 break; 363 case BUNDLED: 364 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode.BUNDLED); 365 break; 366 default: 367 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.AggregationMode.NULL); 368 break; 369 } 370} 371 return tgt; 372 } 373 374 public static ElementDefinition.ElementDefinitionConstraintComponent convertElementDefinitionConstraintComponent(org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionConstraintComponent src) throws FHIRException { 375 if (src == null || src.isEmpty()) return null; 376 ElementDefinition.ElementDefinitionConstraintComponent tgt = new ElementDefinition.ElementDefinitionConstraintComponent(); 377 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 378 if (src.hasKeyElement()) tgt.setKeyElement(Id10_40.convertId(src.getKeyElement())); 379 if (src.hasRequirementsElement()) 380 tgt.setRequirementsElement(String10_40.convertString(src.getRequirementsElement())); 381 if (src.hasSeverity()) tgt.setSeverityElement(convertConstraintSeverity(src.getSeverityElement())); 382 if (src.hasHumanElement()) tgt.setHumanElement(String10_40.convertString(src.getHumanElement())); 383 tgt.setExpression(ToolingExtensions.readStringExtension(src, ToolingExtensions.EXT_EXPRESSION)); 384 if (src.hasXpathElement()) tgt.setXpathElement(String10_40.convertString(src.getXpathElement())); 385 return tgt; 386 } 387 388 public static org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionConstraintComponent convertElementDefinitionConstraintComponent(ElementDefinition.ElementDefinitionConstraintComponent src) throws FHIRException { 389 if (src == null || src.isEmpty()) return null; 390 org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionConstraintComponent tgt = new org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionConstraintComponent(); 391 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 392 if (src.hasKeyElement()) tgt.setKeyElement(Id10_40.convertId(src.getKeyElement())); 393 if (src.hasRequirementsElement()) 394 tgt.setRequirementsElement(String10_40.convertString(src.getRequirementsElement())); 395 if (src.hasSeverity()) tgt.setSeverityElement(convertConstraintSeverity(src.getSeverityElement())); 396 if (src.hasHumanElement()) tgt.setHumanElement(String10_40.convertString(src.getHumanElement())); 397 if (src.hasExpression()) 398 ToolingExtensions.addStringExtension(tgt, ToolingExtensions.EXT_EXPRESSION, src.getExpression()); 399 if (src.hasXpathElement()) tgt.setXpathElement(String10_40.convertString(src.getXpathElement())); 400 return tgt; 401 } 402 403 static public org.hl7.fhir.r4.model.Enumeration<ElementDefinition.ConstraintSeverity> convertConstraintSeverity(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverity> src) throws FHIRException { 404 if (src == null || src.isEmpty()) return null; 405 org.hl7.fhir.r4.model.Enumeration<ElementDefinition.ConstraintSeverity> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new ElementDefinition.ConstraintSeverityEnumFactory()); 406 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 407 if (src.getValue() == null) { 408 tgt.setValue(null); 409} else { 410 switch(src.getValue()) { 411 case ERROR: 412 tgt.setValue(ElementDefinition.ConstraintSeverity.ERROR); 413 break; 414 case WARNING: 415 tgt.setValue(ElementDefinition.ConstraintSeverity.WARNING); 416 break; 417 default: 418 tgt.setValue(ElementDefinition.ConstraintSeverity.NULL); 419 break; 420 } 421} 422 return tgt; 423 } 424 425 static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverity> convertConstraintSeverity(org.hl7.fhir.r4.model.Enumeration<ElementDefinition.ConstraintSeverity> src) throws FHIRException { 426 if (src == null || src.isEmpty()) return null; 427 org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverity> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverityEnumFactory()); 428 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 429 if (src.getValue() == null) { 430 tgt.setValue(null); 431} else { 432 switch(src.getValue()) { 433 case ERROR: 434 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverity.ERROR); 435 break; 436 case WARNING: 437 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverity.WARNING); 438 break; 439 default: 440 tgt.setValue(org.hl7.fhir.dstu2.model.ElementDefinition.ConstraintSeverity.NULL); 441 break; 442 } 443} 444 return tgt; 445 } 446 447 public static ElementDefinition.ElementDefinitionBindingComponent convertElementDefinitionBindingComponent(org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBindingComponent src) throws FHIRException { 448 if (src == null || src.isEmpty()) return null; 449 ElementDefinition.ElementDefinitionBindingComponent tgt = new ElementDefinition.ElementDefinitionBindingComponent(); 450 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 451 if (src.hasStrength()) tgt.setStrengthElement(convertBindingStrength(src.getStrengthElement())); 452 if (src.hasDescriptionElement()) tgt.setDescriptionElement(String10_40.convertString(src.getDescriptionElement())); 453 if (src.hasValueSet()) { 454 org.hl7.fhir.r4.model.Type vs = ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getValueSet()); 455 if (vs != null) { 456 tgt.setValueSet(vs instanceof org.hl7.fhir.r4.model.Reference ? ((org.hl7.fhir.r4.model.Reference) vs).getReference() : vs.primitiveValue()); 457 tgt.setValueSet(VersionConvertorConstants.refToVS(tgt.getValueSet())); 458 } 459 } 460 return tgt; 461 } 462 463 public static org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBindingComponent convertElementDefinitionBindingComponent(ElementDefinition.ElementDefinitionBindingComponent src) throws FHIRException { 464 if (src == null || src.isEmpty()) return null; 465 org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBindingComponent tgt = new org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionBindingComponent(); 466 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 467 if (src.hasStrength()) tgt.setStrengthElement(convertBindingStrength(src.getStrengthElement())); 468 if (src.hasDescriptionElement()) tgt.setDescriptionElement(String10_40.convertString(src.getDescriptionElement())); 469 if (src.hasValueSet()) { 470 String vsr = VersionConvertorConstants.vsToRef(src.getValueSet()); 471 if (vsr != null) tgt.setValueSet(new org.hl7.fhir.dstu2.model.UriType(vsr)); 472 else tgt.setValueSet(new org.hl7.fhir.dstu2.model.Reference(src.getValueSet())); 473 } 474 return tgt; 475 } 476 477 static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Enumerations.BindingStrength> convertBindingStrength(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Enumerations.BindingStrength> src) throws FHIRException { 478 if (src == null || src.isEmpty()) return null; 479 org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Enumerations.BindingStrength> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Enumerations.BindingStrengthEnumFactory()); 480 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 481 if (src.getValue() == null) { 482 tgt.setValue(null); 483} else { 484 switch(src.getValue()) { 485 case REQUIRED: 486 tgt.setValue(Enumerations.BindingStrength.REQUIRED); 487 break; 488 case EXTENSIBLE: 489 tgt.setValue(Enumerations.BindingStrength.EXTENSIBLE); 490 break; 491 case PREFERRED: 492 tgt.setValue(Enumerations.BindingStrength.PREFERRED); 493 break; 494 case EXAMPLE: 495 tgt.setValue(Enumerations.BindingStrength.EXAMPLE); 496 break; 497 default: 498 tgt.setValue(Enumerations.BindingStrength.NULL); 499 break; 500 } 501} 502 return tgt; 503 } 504 505 static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Enumerations.BindingStrength> convertBindingStrength(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Enumerations.BindingStrength> src) throws FHIRException { 506 if (src == null || src.isEmpty()) return null; 507 org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Enumerations.BindingStrength> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Enumerations.BindingStrengthEnumFactory()); 508 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 509 if (src.getValue() == null) { 510 tgt.setValue(null); 511} else { 512 switch(src.getValue()) { 513 case REQUIRED: 514 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.BindingStrength.REQUIRED); 515 break; 516 case EXTENSIBLE: 517 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.BindingStrength.EXTENSIBLE); 518 break; 519 case PREFERRED: 520 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.BindingStrength.PREFERRED); 521 break; 522 case EXAMPLE: 523 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.BindingStrength.EXAMPLE); 524 break; 525 default: 526 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.BindingStrength.NULL); 527 break; 528 } 529} 530 return tgt; 531 } 532 533 public static ElementDefinition.ElementDefinitionMappingComponent convertElementDefinitionMappingComponent(org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionMappingComponent src) throws FHIRException { 534 if (src == null || src.isEmpty()) return null; 535 ElementDefinition.ElementDefinitionMappingComponent tgt = new ElementDefinition.ElementDefinitionMappingComponent(); 536 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 537 if (src.hasIdentityElement()) tgt.setIdentityElement(Id10_40.convertId(src.getIdentityElement())); 538 if (src.hasLanguageElement()) tgt.setLanguageElement(Code10_40.convertCode(src.getLanguageElement())); 539 if (src.hasMapElement()) tgt.setMapElement(String10_40.convertString(src.getMapElement())); 540 return tgt; 541 } 542 543 public static org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionMappingComponent convertElementDefinitionMappingComponent(ElementDefinition.ElementDefinitionMappingComponent src) throws FHIRException { 544 if (src == null || src.isEmpty()) return null; 545 org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionMappingComponent tgt = new org.hl7.fhir.dstu2.model.ElementDefinition.ElementDefinitionMappingComponent(); 546 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 547 if (src.hasIdentityElement()) tgt.setIdentityElement(Id10_40.convertId(src.getIdentityElement())); 548 if (src.hasLanguageElement()) tgt.setLanguageElement(Code10_40.convertCode(src.getLanguageElement())); 549 if (src.hasMapElement()) tgt.setMapElement(String10_40.convertString(src.getMapElement())); 550 return tgt; 551 } 552}