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