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