001package org.hl7.fhir.r5.model; 002 003 004/* 005 Copyright (c) 2011+, HL7, Inc. 006 All rights reserved. 007 008 Redistribution and use in source and binary forms, with or without modification, \ 009 are permitted provided that the following conditions are met: 010 011 * Redistributions of source code must retain the above copyright notice, this \ 012 list of conditions and the following disclaimer. 013 * Redistributions in binary form must reproduce the above copyright notice, \ 014 this list of conditions and the following disclaimer in the documentation \ 015 and/or other materials provided with the distribution. 016 * Neither the name of HL7 nor the names of its contributors may be used to 017 endorse or promote products derived from this software without specific 018 prior written permission. 019 020 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \ 021 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \ 022 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \ 023 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \ 024 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \ 025 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \ 026 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \ 027 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \ 028 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \ 029 POSSIBILITY OF SUCH DAMAGE. 030 */ 031 032// Generated on Tue, Dec 13, 2022 17:53+1100 for FHIR vcurrent 033 034import java.util.ArrayList; 035import java.util.Date; 036import java.util.List; 037import org.hl7.fhir.utilities.Utilities; 038import org.hl7.fhir.r5.model.Enumerations.*; 039import org.hl7.fhir.instance.model.api.IBaseDatatypeElement; 040import org.hl7.fhir.exceptions.FHIRException; 041import org.hl7.fhir.instance.model.api.ICompositeType; 042import ca.uhn.fhir.model.api.annotation.Child; 043import ca.uhn.fhir.model.api.annotation.ChildOrder; 044import ca.uhn.fhir.model.api.annotation.DatatypeDef; 045import ca.uhn.fhir.model.api.annotation.Description; 046import ca.uhn.fhir.model.api.annotation.Block; 047 048import org.hl7.fhir.instance.model.api.ICompositeType; 049import org.hl7.fhir.r5.model.Enumerations.BindingStrength; 050import org.hl7.fhir.r5.model.Enumerations.BindingStrengthEnumFactory; 051import org.hl7.fhir.r5.utils.ToolingExtensions; 052import org.hl7.fhir.instance.model.api.IBaseDatatypeElement; 053import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; 054/** 055 * ElementDefinition Type: Captures constraints on each element within the resource, profile, or extension. 056 */ 057@DatatypeDef(name="ElementDefinition") 058public class ElementDefinition extends BackboneType implements ICompositeType { 059 060 public enum AdditionalBindingPurposeVS { 061 /** 062 * A required binding, for use when the binding strength is 'extensible' or 'preferred' 063 */ 064 MAXIMUM, 065 /** 066 * The minimum allowable value set - any conformant system SHALL support all these codes 067 */ 068 MINIMUM, 069 /** 070 * This value set is used as a required binding (in addition to the base binding (not a replacement), usually in a particular usage context) 071 */ 072 REQUIRED, 073 /** 074 * This value set is used as an extensible binding (in addition to the base binding (not a replacement), usually in a particular usage context) 075 */ 076 EXTENSIBLE, 077 /** 078 * This value set is a candidate to substitute for the overall conformance value set in some situations; usually these are defined in the documentation 079 */ 080 CANDIDATE, 081 /** 082 * New records are required to use this value set, but legacy records may use other codes. The definition of 'new record' is difficult, since systems often create new records based on pre-existing data. Usually 'current' bindings are mandated by an external authority that makes clear rules around this 083 */ 084 CURRENT, 085 /** 086 * This is the value set that is preferred in a given context (documentation should explain why) 087 */ 088 PREFERRED, 089 /** 090 * This value set is provided for user look up in a given context. Typically, these valuesets only include a subset of codes relevant for input in a context 091 */ 092 UI, 093 /** 094 * This value set is a good set of codes to start with when designing your system 095 */ 096 STARTER, 097 /** 098 * This value set is a component of the base value set. Usually this is called out so that documentation can be written about a portion of the value set 099 */ 100 COMPONENT, 101 /** 102 * added to help the parsers with the generic types 103 */ 104 NULL; 105 public static AdditionalBindingPurposeVS fromCode(String codeString) throws FHIRException { 106 if (codeString == null || "".equals(codeString)) 107 return null; 108 if ("maximum".equals(codeString)) 109 return MAXIMUM; 110 if ("minimum".equals(codeString)) 111 return MINIMUM; 112 if ("required".equals(codeString)) 113 return REQUIRED; 114 if ("extensible".equals(codeString)) 115 return EXTENSIBLE; 116 if ("candidate".equals(codeString)) 117 return CANDIDATE; 118 if ("current".equals(codeString)) 119 return CURRENT; 120 if ("preferred".equals(codeString)) 121 return PREFERRED; 122 if ("ui".equals(codeString)) 123 return UI; 124 if ("starter".equals(codeString)) 125 return STARTER; 126 if ("component".equals(codeString)) 127 return COMPONENT; 128 if (Configuration.isAcceptInvalidEnums()) 129 return null; 130 else 131 throw new FHIRException("Unknown AdditionalBindingPurposeVS code '"+codeString+"'"); 132 } 133 public String toCode() { 134 switch (this) { 135 case MAXIMUM: return "maximum"; 136 case MINIMUM: return "minimum"; 137 case REQUIRED: return "required"; 138 case EXTENSIBLE: return "extensible"; 139 case CANDIDATE: return "candidate"; 140 case CURRENT: return "current"; 141 case PREFERRED: return "preferred"; 142 case UI: return "ui"; 143 case STARTER: return "starter"; 144 case COMPONENT: return "component"; 145 case NULL: return null; 146 default: return "?"; 147 } 148 } 149 public String getSystem() { 150 switch (this) { 151 case MAXIMUM: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 152 case MINIMUM: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 153 case REQUIRED: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 154 case EXTENSIBLE: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 155 case CANDIDATE: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 156 case CURRENT: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 157 case PREFERRED: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 158 case UI: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 159 case STARTER: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 160 case COMPONENT: return "http://hl7.org/fhir/tools/CodeSystem/additional-binding-purpose"; 161 case NULL: return null; 162 default: return "?"; 163 } 164 } 165 public String getDefinition() { 166 switch (this) { 167 case MAXIMUM: return "A required binding, for use when the binding strength is 'extensible' or 'preferred'"; 168 case MINIMUM: return "The minimum allowable value set - any conformant system SHALL support all these codes"; 169 case REQUIRED: return "This value set is used as a required binding (in addition to the base binding (not a replacement), usually in a particular usage context)"; 170 case EXTENSIBLE: return "This value set is used as an extensible binding (in addition to the base binding (not a replacement), usually in a particular usage context)"; 171 case CANDIDATE: return "This value set is a candidate to substitute for the overall conformance value set in some situations; usually these are defined in the documentation"; 172 case CURRENT: return "New records are required to use this value set, but legacy records may use other codes. The definition of 'new record' is difficult, since systems often create new records based on pre-existing data. Usually 'current' bindings are mandated by an external authority that makes clear rules around this"; 173 case PREFERRED: return "This is the value set that is preferred in a given context (documentation should explain why)"; 174 case UI: return "This value set is provided for user look up in a given context. Typically, these valuesets only include a subset of codes relevant for input in a context"; 175 case STARTER: return "This value set is a good set of codes to start with when designing your system"; 176 case COMPONENT: return "This value set is a component of the base value set. Usually this is called out so that documentation can be written about a portion of the value set"; 177 case NULL: return null; 178 default: return "?"; 179 } 180 } 181 public String getDisplay() { 182 switch (this) { 183 case MAXIMUM: return "Maximum Binding"; 184 case MINIMUM: return "Minimum Binding"; 185 case REQUIRED: return "Required Binding"; 186 case EXTENSIBLE: return "Conformance Binding"; 187 case CANDIDATE: return "Candidate Binding"; 188 case CURRENT: return "Current Binding"; 189 case PREFERRED: return "Preferred Binding"; 190 case UI: return "UI Suggested Binding"; 191 case STARTER: return "Starter Binding"; 192 case COMPONENT: return "Component Binding"; 193 case NULL: return null; 194 default: return "?"; 195 } 196 } 197 } 198 199 public static class AdditionalBindingPurposeVSEnumFactory implements EnumFactory<AdditionalBindingPurposeVS> { 200 public AdditionalBindingPurposeVS fromCode(String codeString) throws IllegalArgumentException { 201 if (codeString == null || "".equals(codeString)) 202 if (codeString == null || "".equals(codeString)) 203 return null; 204 if ("maximum".equals(codeString)) 205 return AdditionalBindingPurposeVS.MAXIMUM; 206 if ("minimum".equals(codeString)) 207 return AdditionalBindingPurposeVS.MINIMUM; 208 if ("required".equals(codeString)) 209 return AdditionalBindingPurposeVS.REQUIRED; 210 if ("extensible".equals(codeString)) 211 return AdditionalBindingPurposeVS.EXTENSIBLE; 212 if ("candidate".equals(codeString)) 213 return AdditionalBindingPurposeVS.CANDIDATE; 214 if ("current".equals(codeString)) 215 return AdditionalBindingPurposeVS.CURRENT; 216 if ("preferred".equals(codeString)) 217 return AdditionalBindingPurposeVS.PREFERRED; 218 if ("ui".equals(codeString)) 219 return AdditionalBindingPurposeVS.UI; 220 if ("starter".equals(codeString)) 221 return AdditionalBindingPurposeVS.STARTER; 222 if ("component".equals(codeString)) 223 return AdditionalBindingPurposeVS.COMPONENT; 224 throw new IllegalArgumentException("Unknown AdditionalBindingPurposeVS code '"+codeString+"'"); 225 } 226 public Enumeration<AdditionalBindingPurposeVS> fromType(PrimitiveType<?> code) throws FHIRException { 227 if (code == null) 228 return null; 229 if (code.isEmpty()) 230 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.NULL, code); 231 String codeString = ((PrimitiveType) code).asStringValue(); 232 if (codeString == null || "".equals(codeString)) 233 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.NULL, code); 234 if ("maximum".equals(codeString)) 235 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.MAXIMUM, code); 236 if ("minimum".equals(codeString)) 237 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.MINIMUM, code); 238 if ("required".equals(codeString)) 239 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.REQUIRED, code); 240 if ("extensible".equals(codeString)) 241 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.EXTENSIBLE, code); 242 if ("candidate".equals(codeString)) 243 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.CANDIDATE, code); 244 if ("current".equals(codeString)) 245 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.CURRENT, code); 246 if ("preferred".equals(codeString)) 247 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.PREFERRED, code); 248 if ("ui".equals(codeString)) 249 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.UI, code); 250 if ("starter".equals(codeString)) 251 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.STARTER, code); 252 if ("component".equals(codeString)) 253 return new Enumeration<AdditionalBindingPurposeVS>(this, AdditionalBindingPurposeVS.COMPONENT, code); 254 throw new FHIRException("Unknown AdditionalBindingPurposeVS code '"+codeString+"'"); 255 } 256 public String toCode(AdditionalBindingPurposeVS code) { 257 if (code == AdditionalBindingPurposeVS.MAXIMUM) 258 return "maximum"; 259 if (code == AdditionalBindingPurposeVS.MINIMUM) 260 return "minimum"; 261 if (code == AdditionalBindingPurposeVS.REQUIRED) 262 return "required"; 263 if (code == AdditionalBindingPurposeVS.EXTENSIBLE) 264 return "extensible"; 265 if (code == AdditionalBindingPurposeVS.CANDIDATE) 266 return "candidate"; 267 if (code == AdditionalBindingPurposeVS.CURRENT) 268 return "current"; 269 if (code == AdditionalBindingPurposeVS.PREFERRED) 270 return "preferred"; 271 if (code == AdditionalBindingPurposeVS.UI) 272 return "ui"; 273 if (code == AdditionalBindingPurposeVS.STARTER) 274 return "starter"; 275 if (code == AdditionalBindingPurposeVS.COMPONENT) 276 return "component"; 277 return "?"; 278 } 279 public String toSystem(AdditionalBindingPurposeVS code) { 280 return code.getSystem(); 281 } 282 } 283 284 public enum AggregationMode { 285 /** 286 * The reference is a local reference to a contained resource. 287 */ 288 CONTAINED, 289 /** 290 * The reference to a resource that has to be resolved externally to the resource that includes the reference. 291 */ 292 REFERENCED, 293 /** 294 * The resource the reference points to will be found in the same bundle as the resource that includes the reference. 295 */ 296 BUNDLED, 297 /** 298 * added to help the parsers with the generic types 299 */ 300 NULL; 301 public static AggregationMode fromCode(String codeString) throws FHIRException { 302 if (codeString == null || "".equals(codeString)) 303 return null; 304 if ("contained".equals(codeString)) 305 return CONTAINED; 306 if ("referenced".equals(codeString)) 307 return REFERENCED; 308 if ("bundled".equals(codeString)) 309 return BUNDLED; 310 if (Configuration.isAcceptInvalidEnums()) 311 return null; 312 else 313 throw new FHIRException("Unknown AggregationMode code '"+codeString+"'"); 314 } 315 public String toCode() { 316 switch (this) { 317 case CONTAINED: return "contained"; 318 case REFERENCED: return "referenced"; 319 case BUNDLED: return "bundled"; 320 case NULL: return null; 321 default: return "?"; 322 } 323 } 324 public String getSystem() { 325 switch (this) { 326 case CONTAINED: return "http://hl7.org/fhir/resource-aggregation-mode"; 327 case REFERENCED: return "http://hl7.org/fhir/resource-aggregation-mode"; 328 case BUNDLED: return "http://hl7.org/fhir/resource-aggregation-mode"; 329 case NULL: return null; 330 default: return "?"; 331 } 332 } 333 public String getDefinition() { 334 switch (this) { 335 case CONTAINED: return "The reference is a local reference to a contained resource."; 336 case REFERENCED: return "The reference to a resource that has to be resolved externally to the resource that includes the reference."; 337 case BUNDLED: return "The resource the reference points to will be found in the same bundle as the resource that includes the reference."; 338 case NULL: return null; 339 default: return "?"; 340 } 341 } 342 public String getDisplay() { 343 switch (this) { 344 case CONTAINED: return "Contained"; 345 case REFERENCED: return "Referenced"; 346 case BUNDLED: return "Bundled"; 347 case NULL: return null; 348 default: return "?"; 349 } 350 } 351 } 352 353 public static class AggregationModeEnumFactory implements EnumFactory<AggregationMode> { 354 public AggregationMode fromCode(String codeString) throws IllegalArgumentException { 355 if (codeString == null || "".equals(codeString)) 356 if (codeString == null || "".equals(codeString)) 357 return null; 358 if ("contained".equals(codeString)) 359 return AggregationMode.CONTAINED; 360 if ("referenced".equals(codeString)) 361 return AggregationMode.REFERENCED; 362 if ("bundled".equals(codeString)) 363 return AggregationMode.BUNDLED; 364 throw new IllegalArgumentException("Unknown AggregationMode code '"+codeString+"'"); 365 } 366 public Enumeration<AggregationMode> fromType(PrimitiveType<?> code) throws FHIRException { 367 if (code == null) 368 return null; 369 if (code.isEmpty()) 370 return new Enumeration<AggregationMode>(this, AggregationMode.NULL, code); 371 String codeString = ((PrimitiveType) code).asStringValue(); 372 if (codeString == null || "".equals(codeString)) 373 return new Enumeration<AggregationMode>(this, AggregationMode.NULL, code); 374 if ("contained".equals(codeString)) 375 return new Enumeration<AggregationMode>(this, AggregationMode.CONTAINED, code); 376 if ("referenced".equals(codeString)) 377 return new Enumeration<AggregationMode>(this, AggregationMode.REFERENCED, code); 378 if ("bundled".equals(codeString)) 379 return new Enumeration<AggregationMode>(this, AggregationMode.BUNDLED, code); 380 throw new FHIRException("Unknown AggregationMode code '"+codeString+"'"); 381 } 382 public String toCode(AggregationMode code) { 383 if (code == AggregationMode.CONTAINED) 384 return "contained"; 385 if (code == AggregationMode.REFERENCED) 386 return "referenced"; 387 if (code == AggregationMode.BUNDLED) 388 return "bundled"; 389 return "?"; 390 } 391 public String toSystem(AggregationMode code) { 392 return code.getSystem(); 393 } 394 } 395 396 public enum ConstraintSeverity { 397 /** 398 * If the constraint is violated, the resource is not conformant. 399 */ 400 ERROR, 401 /** 402 * If the constraint is violated, the resource is conformant, but it is not necessarily following best practice. 403 */ 404 WARNING, 405 /** 406 * added to help the parsers with the generic types 407 */ 408 NULL; 409 public static ConstraintSeverity fromCode(String codeString) throws FHIRException { 410 if (codeString == null || "".equals(codeString)) 411 return null; 412 if ("error".equals(codeString)) 413 return ERROR; 414 if ("warning".equals(codeString)) 415 return WARNING; 416 if (Configuration.isAcceptInvalidEnums()) 417 return null; 418 else 419 throw new FHIRException("Unknown ConstraintSeverity code '"+codeString+"'"); 420 } 421 public String toCode() { 422 switch (this) { 423 case ERROR: return "error"; 424 case WARNING: return "warning"; 425 case NULL: return null; 426 default: return "?"; 427 } 428 } 429 public String getSystem() { 430 switch (this) { 431 case ERROR: return "http://hl7.org/fhir/constraint-severity"; 432 case WARNING: return "http://hl7.org/fhir/constraint-severity"; 433 case NULL: return null; 434 default: return "?"; 435 } 436 } 437 public String getDefinition() { 438 switch (this) { 439 case ERROR: return "If the constraint is violated, the resource is not conformant."; 440 case WARNING: return "If the constraint is violated, the resource is conformant, but it is not necessarily following best practice."; 441 case NULL: return null; 442 default: return "?"; 443 } 444 } 445 public String getDisplay() { 446 switch (this) { 447 case ERROR: return "Error"; 448 case WARNING: return "Warning"; 449 case NULL: return null; 450 default: return "?"; 451 } 452 } 453 } 454 455 public static class ConstraintSeverityEnumFactory implements EnumFactory<ConstraintSeverity> { 456 public ConstraintSeverity fromCode(String codeString) throws IllegalArgumentException { 457 if (codeString == null || "".equals(codeString)) 458 if (codeString == null || "".equals(codeString)) 459 return null; 460 if ("error".equals(codeString)) 461 return ConstraintSeverity.ERROR; 462 if ("warning".equals(codeString)) 463 return ConstraintSeverity.WARNING; 464 throw new IllegalArgumentException("Unknown ConstraintSeverity code '"+codeString+"'"); 465 } 466 public Enumeration<ConstraintSeverity> fromType(PrimitiveType<?> code) throws FHIRException { 467 if (code == null) 468 return null; 469 if (code.isEmpty()) 470 return new Enumeration<ConstraintSeverity>(this, ConstraintSeverity.NULL, code); 471 String codeString = ((PrimitiveType) code).asStringValue(); 472 if (codeString == null || "".equals(codeString)) 473 return new Enumeration<ConstraintSeverity>(this, ConstraintSeverity.NULL, code); 474 if ("error".equals(codeString)) 475 return new Enumeration<ConstraintSeverity>(this, ConstraintSeverity.ERROR, code); 476 if ("warning".equals(codeString)) 477 return new Enumeration<ConstraintSeverity>(this, ConstraintSeverity.WARNING, code); 478 throw new FHIRException("Unknown ConstraintSeverity code '"+codeString+"'"); 479 } 480 public String toCode(ConstraintSeverity code) { 481 if (code == ConstraintSeverity.ERROR) 482 return "error"; 483 if (code == ConstraintSeverity.WARNING) 484 return "warning"; 485 return "?"; 486 } 487 public String toSystem(ConstraintSeverity code) { 488 return code.getSystem(); 489 } 490 } 491 492 public enum DiscriminatorType { 493 /** 494 * The slices have different values in the nominated element, as determined by the applicable fixed value, pattern, or required ValueSet binding. 495 */ 496 VALUE, 497 /** 498 * The slices are differentiated by the presence or absence of the nominated element. There SHALL be no more than two slices. The slices are differentiated by the fact that one must have a max of 0 and the other must have a min of 1 (or more). The order in which the slices are declared doesn't matter. 499 */ 500 EXISTS, 501 /** 502 * The slices have different values in the nominated element, as determined by the applicable fixed value, pattern, or required ValueSet binding. This has the same meaning as 'value' and is deprecated. 503 */ 504 PATTERN, 505 /** 506 * The slices are differentiated by type of the nominated element. 507 */ 508 TYPE, 509 /** 510 * The slices are differentiated by conformance of the nominated element to a specified profile. Note that if the path specifies .resolve() then the profile is the target profile on the reference. In this case, validation by the possible profiles is required to differentiate the slices. 511 */ 512 PROFILE, 513 /** 514 * The slices are differentiated by their index. This is only possible if all but the last slice have min=max cardinality, and the (optional) last slice contains other undifferentiated elements. 515 */ 516 POSITION, 517 /** 518 * added to help the parsers with the generic types 519 */ 520 NULL; 521 public static DiscriminatorType fromCode(String codeString) throws FHIRException { 522 if (codeString == null || "".equals(codeString)) 523 return null; 524 if ("value".equals(codeString)) 525 return VALUE; 526 if ("exists".equals(codeString)) 527 return EXISTS; 528 if ("pattern".equals(codeString)) 529 return PATTERN; 530 if ("type".equals(codeString)) 531 return TYPE; 532 if ("profile".equals(codeString)) 533 return PROFILE; 534 if ("position".equals(codeString)) 535 return POSITION; 536 if (Configuration.isAcceptInvalidEnums()) 537 return null; 538 else 539 throw new FHIRException("Unknown DiscriminatorType code '"+codeString+"'"); 540 } 541 public String toCode() { 542 switch (this) { 543 case VALUE: return "value"; 544 case EXISTS: return "exists"; 545 case PATTERN: return "pattern"; 546 case TYPE: return "type"; 547 case PROFILE: return "profile"; 548 case POSITION: return "position"; 549 case NULL: return null; 550 default: return "?"; 551 } 552 } 553 public String getSystem() { 554 switch (this) { 555 case VALUE: return "http://hl7.org/fhir/discriminator-type"; 556 case EXISTS: return "http://hl7.org/fhir/discriminator-type"; 557 case PATTERN: return "http://hl7.org/fhir/discriminator-type"; 558 case TYPE: return "http://hl7.org/fhir/discriminator-type"; 559 case PROFILE: return "http://hl7.org/fhir/discriminator-type"; 560 case POSITION: return "http://hl7.org/fhir/discriminator-type"; 561 case NULL: return null; 562 default: return "?"; 563 } 564 } 565 public String getDefinition() { 566 switch (this) { 567 case VALUE: return "The slices have different values in the nominated element, as determined by the applicable fixed value, pattern, or required ValueSet binding."; 568 case EXISTS: return "The slices are differentiated by the presence or absence of the nominated element. There SHALL be no more than two slices. The slices are differentiated by the fact that one must have a max of 0 and the other must have a min of 1 (or more). The order in which the slices are declared doesn't matter."; 569 case PATTERN: return "The slices have different values in the nominated element, as determined by the applicable fixed value, pattern, or required ValueSet binding. This has the same meaning as 'value' and is deprecated."; 570 case TYPE: return "The slices are differentiated by type of the nominated element."; 571 case PROFILE: return "The slices are differentiated by conformance of the nominated element to a specified profile. Note that if the path specifies .resolve() then the profile is the target profile on the reference. In this case, validation by the possible profiles is required to differentiate the slices."; 572 case POSITION: return "The slices are differentiated by their index. This is only possible if all but the last slice have min=max cardinality, and the (optional) last slice contains other undifferentiated elements."; 573 case NULL: return null; 574 default: return "?"; 575 } 576 } 577 public String getDisplay() { 578 switch (this) { 579 case VALUE: return "Value"; 580 case EXISTS: return "Exists"; 581 case PATTERN: return "Pattern"; 582 case TYPE: return "Type"; 583 case PROFILE: return "Profile"; 584 case POSITION: return "Position"; 585 case NULL: return null; 586 default: return "?"; 587 } 588 } 589 } 590 591 public static class DiscriminatorTypeEnumFactory implements EnumFactory<DiscriminatorType> { 592 public DiscriminatorType fromCode(String codeString) throws IllegalArgumentException { 593 if (codeString == null || "".equals(codeString)) 594 if (codeString == null || "".equals(codeString)) 595 return null; 596 if ("value".equals(codeString)) 597 return DiscriminatorType.VALUE; 598 if ("exists".equals(codeString)) 599 return DiscriminatorType.EXISTS; 600 if ("pattern".equals(codeString)) 601 return DiscriminatorType.PATTERN; 602 if ("type".equals(codeString)) 603 return DiscriminatorType.TYPE; 604 if ("profile".equals(codeString)) 605 return DiscriminatorType.PROFILE; 606 if ("position".equals(codeString)) 607 return DiscriminatorType.POSITION; 608 throw new IllegalArgumentException("Unknown DiscriminatorType code '"+codeString+"'"); 609 } 610 public Enumeration<DiscriminatorType> fromType(PrimitiveType<?> code) throws FHIRException { 611 if (code == null) 612 return null; 613 if (code.isEmpty()) 614 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.NULL, code); 615 String codeString = ((PrimitiveType) code).asStringValue(); 616 if (codeString == null || "".equals(codeString)) 617 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.NULL, code); 618 if ("value".equals(codeString)) 619 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.VALUE, code); 620 if ("exists".equals(codeString)) 621 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.EXISTS, code); 622 if ("pattern".equals(codeString)) 623 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.PATTERN, code); 624 if ("type".equals(codeString)) 625 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.TYPE, code); 626 if ("profile".equals(codeString)) 627 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.PROFILE, code); 628 if ("position".equals(codeString)) 629 return new Enumeration<DiscriminatorType>(this, DiscriminatorType.POSITION, code); 630 throw new FHIRException("Unknown DiscriminatorType code '"+codeString+"'"); 631 } 632 public String toCode(DiscriminatorType code) { 633 if (code == DiscriminatorType.VALUE) 634 return "value"; 635 if (code == DiscriminatorType.EXISTS) 636 return "exists"; 637 if (code == DiscriminatorType.PATTERN) 638 return "pattern"; 639 if (code == DiscriminatorType.TYPE) 640 return "type"; 641 if (code == DiscriminatorType.PROFILE) 642 return "profile"; 643 if (code == DiscriminatorType.POSITION) 644 return "position"; 645 return "?"; 646 } 647 public String toSystem(DiscriminatorType code) { 648 return code.getSystem(); 649 } 650 } 651 652 public enum PropertyRepresentation { 653 /** 654 * In XML, this property is represented as an attribute not an element. 655 */ 656 XMLATTR, 657 /** 658 * This element is represented using the XML text attribute (primitives only). 659 */ 660 XMLTEXT, 661 /** 662 * The type of this element is indicated using xsi:type. 663 */ 664 TYPEATTR, 665 /** 666 * Use CDA narrative instead of XHTML. 667 */ 668 CDATEXT, 669 /** 670 * The property is represented using XHTML. 671 */ 672 XHTML, 673 /** 674 * added to help the parsers with the generic types 675 */ 676 NULL; 677 public static PropertyRepresentation fromCode(String codeString) throws FHIRException { 678 if (codeString == null || "".equals(codeString)) 679 return null; 680 if ("xmlAttr".equals(codeString)) 681 return XMLATTR; 682 if ("xmlText".equals(codeString)) 683 return XMLTEXT; 684 if ("typeAttr".equals(codeString)) 685 return TYPEATTR; 686 if ("cdaText".equals(codeString)) 687 return CDATEXT; 688 if ("xhtml".equals(codeString)) 689 return XHTML; 690 if (Configuration.isAcceptInvalidEnums()) 691 return null; 692 else 693 throw new FHIRException("Unknown PropertyRepresentation code '"+codeString+"'"); 694 } 695 public String toCode() { 696 switch (this) { 697 case XMLATTR: return "xmlAttr"; 698 case XMLTEXT: return "xmlText"; 699 case TYPEATTR: return "typeAttr"; 700 case CDATEXT: return "cdaText"; 701 case XHTML: return "xhtml"; 702 case NULL: return null; 703 default: return "?"; 704 } 705 } 706 public String getSystem() { 707 switch (this) { 708 case XMLATTR: return "http://hl7.org/fhir/property-representation"; 709 case XMLTEXT: return "http://hl7.org/fhir/property-representation"; 710 case TYPEATTR: return "http://hl7.org/fhir/property-representation"; 711 case CDATEXT: return "http://hl7.org/fhir/property-representation"; 712 case XHTML: return "http://hl7.org/fhir/property-representation"; 713 case NULL: return null; 714 default: return "?"; 715 } 716 } 717 public String getDefinition() { 718 switch (this) { 719 case XMLATTR: return "In XML, this property is represented as an attribute not an element."; 720 case XMLTEXT: return "This element is represented using the XML text attribute (primitives only)."; 721 case TYPEATTR: return "The type of this element is indicated using xsi:type."; 722 case CDATEXT: return "Use CDA narrative instead of XHTML."; 723 case XHTML: return "The property is represented using XHTML."; 724 case NULL: return null; 725 default: return "?"; 726 } 727 } 728 public String getDisplay() { 729 switch (this) { 730 case XMLATTR: return "XML Attribute"; 731 case XMLTEXT: return "XML Text"; 732 case TYPEATTR: return "Type Attribute"; 733 case CDATEXT: return "CDA Text Format"; 734 case XHTML: return "XHTML"; 735 case NULL: return null; 736 default: return "?"; 737 } 738 } 739 } 740 741 public static class PropertyRepresentationEnumFactory implements EnumFactory<PropertyRepresentation> { 742 public PropertyRepresentation fromCode(String codeString) throws IllegalArgumentException { 743 if (codeString == null || "".equals(codeString)) 744 if (codeString == null || "".equals(codeString)) 745 return null; 746 if ("xmlAttr".equals(codeString)) 747 return PropertyRepresentation.XMLATTR; 748 if ("xmlText".equals(codeString)) 749 return PropertyRepresentation.XMLTEXT; 750 if ("typeAttr".equals(codeString)) 751 return PropertyRepresentation.TYPEATTR; 752 if ("cdaText".equals(codeString)) 753 return PropertyRepresentation.CDATEXT; 754 if ("xhtml".equals(codeString)) 755 return PropertyRepresentation.XHTML; 756 throw new IllegalArgumentException("Unknown PropertyRepresentation code '"+codeString+"'"); 757 } 758 public Enumeration<PropertyRepresentation> fromType(PrimitiveType<?> code) throws FHIRException { 759 if (code == null) 760 return null; 761 if (code.isEmpty()) 762 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.NULL, code); 763 String codeString = ((PrimitiveType) code).asStringValue(); 764 if (codeString == null || "".equals(codeString)) 765 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.NULL, code); 766 if ("xmlAttr".equals(codeString)) 767 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.XMLATTR, code); 768 if ("xmlText".equals(codeString)) 769 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.XMLTEXT, code); 770 if ("typeAttr".equals(codeString)) 771 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.TYPEATTR, code); 772 if ("cdaText".equals(codeString)) 773 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.CDATEXT, code); 774 if ("xhtml".equals(codeString)) 775 return new Enumeration<PropertyRepresentation>(this, PropertyRepresentation.XHTML, code); 776 throw new FHIRException("Unknown PropertyRepresentation code '"+codeString+"'"); 777 } 778 public String toCode(PropertyRepresentation code) { 779 if (code == PropertyRepresentation.XMLATTR) 780 return "xmlAttr"; 781 if (code == PropertyRepresentation.XMLTEXT) 782 return "xmlText"; 783 if (code == PropertyRepresentation.TYPEATTR) 784 return "typeAttr"; 785 if (code == PropertyRepresentation.CDATEXT) 786 return "cdaText"; 787 if (code == PropertyRepresentation.XHTML) 788 return "xhtml"; 789 return "?"; 790 } 791 public String toSystem(PropertyRepresentation code) { 792 return code.getSystem(); 793 } 794 } 795 796 public enum ReferenceVersionRules { 797 /** 798 * The reference may be either version independent or version specific. 799 */ 800 EITHER, 801 /** 802 * The reference must be version independent. 803 */ 804 INDEPENDENT, 805 /** 806 * The reference must be version specific. 807 */ 808 SPECIFIC, 809 /** 810 * added to help the parsers with the generic types 811 */ 812 NULL; 813 public static ReferenceVersionRules fromCode(String codeString) throws FHIRException { 814 if (codeString == null || "".equals(codeString)) 815 return null; 816 if ("either".equals(codeString)) 817 return EITHER; 818 if ("independent".equals(codeString)) 819 return INDEPENDENT; 820 if ("specific".equals(codeString)) 821 return SPECIFIC; 822 if (Configuration.isAcceptInvalidEnums()) 823 return null; 824 else 825 throw new FHIRException("Unknown ReferenceVersionRules code '"+codeString+"'"); 826 } 827 public String toCode() { 828 switch (this) { 829 case EITHER: return "either"; 830 case INDEPENDENT: return "independent"; 831 case SPECIFIC: return "specific"; 832 case NULL: return null; 833 default: return "?"; 834 } 835 } 836 public String getSystem() { 837 switch (this) { 838 case EITHER: return "http://hl7.org/fhir/reference-version-rules"; 839 case INDEPENDENT: return "http://hl7.org/fhir/reference-version-rules"; 840 case SPECIFIC: return "http://hl7.org/fhir/reference-version-rules"; 841 case NULL: return null; 842 default: return "?"; 843 } 844 } 845 public String getDefinition() { 846 switch (this) { 847 case EITHER: return "The reference may be either version independent or version specific."; 848 case INDEPENDENT: return "The reference must be version independent."; 849 case SPECIFIC: return "The reference must be version specific."; 850 case NULL: return null; 851 default: return "?"; 852 } 853 } 854 public String getDisplay() { 855 switch (this) { 856 case EITHER: return "Either Specific or independent"; 857 case INDEPENDENT: return "Version independent"; 858 case SPECIFIC: return "Version Specific"; 859 case NULL: return null; 860 default: return "?"; 861 } 862 } 863 } 864 865 public static class ReferenceVersionRulesEnumFactory implements EnumFactory<ReferenceVersionRules> { 866 public ReferenceVersionRules fromCode(String codeString) throws IllegalArgumentException { 867 if (codeString == null || "".equals(codeString)) 868 if (codeString == null || "".equals(codeString)) 869 return null; 870 if ("either".equals(codeString)) 871 return ReferenceVersionRules.EITHER; 872 if ("independent".equals(codeString)) 873 return ReferenceVersionRules.INDEPENDENT; 874 if ("specific".equals(codeString)) 875 return ReferenceVersionRules.SPECIFIC; 876 throw new IllegalArgumentException("Unknown ReferenceVersionRules code '"+codeString+"'"); 877 } 878 public Enumeration<ReferenceVersionRules> fromType(PrimitiveType<?> code) throws FHIRException { 879 if (code == null) 880 return null; 881 if (code.isEmpty()) 882 return new Enumeration<ReferenceVersionRules>(this, ReferenceVersionRules.NULL, code); 883 String codeString = ((PrimitiveType) code).asStringValue(); 884 if (codeString == null || "".equals(codeString)) 885 return new Enumeration<ReferenceVersionRules>(this, ReferenceVersionRules.NULL, code); 886 if ("either".equals(codeString)) 887 return new Enumeration<ReferenceVersionRules>(this, ReferenceVersionRules.EITHER, code); 888 if ("independent".equals(codeString)) 889 return new Enumeration<ReferenceVersionRules>(this, ReferenceVersionRules.INDEPENDENT, code); 890 if ("specific".equals(codeString)) 891 return new Enumeration<ReferenceVersionRules>(this, ReferenceVersionRules.SPECIFIC, code); 892 throw new FHIRException("Unknown ReferenceVersionRules code '"+codeString+"'"); 893 } 894 public String toCode(ReferenceVersionRules code) { 895 if (code == ReferenceVersionRules.EITHER) 896 return "either"; 897 if (code == ReferenceVersionRules.INDEPENDENT) 898 return "independent"; 899 if (code == ReferenceVersionRules.SPECIFIC) 900 return "specific"; 901 return "?"; 902 } 903 public String toSystem(ReferenceVersionRules code) { 904 return code.getSystem(); 905 } 906 } 907 908 public enum SlicingRules { 909 /** 910 * No additional content is allowed other than that described by the slices in this profile. 911 */ 912 CLOSED, 913 /** 914 * Additional content is allowed anywhere in the list. 915 */ 916 OPEN, 917 /** 918 * Additional content is allowed, but only at the end of the list. Note that using this requires that the slices be ordered, which makes it hard to share uses. This should only be done where absolutely required. 919 */ 920 OPENATEND, 921 /** 922 * added to help the parsers with the generic types 923 */ 924 NULL; 925 public static SlicingRules fromCode(String codeString) throws FHIRException { 926 if (codeString == null || "".equals(codeString)) 927 return null; 928 if ("closed".equals(codeString)) 929 return CLOSED; 930 if ("open".equals(codeString)) 931 return OPEN; 932 if ("openAtEnd".equals(codeString)) 933 return OPENATEND; 934 if (Configuration.isAcceptInvalidEnums()) 935 return null; 936 else 937 throw new FHIRException("Unknown SlicingRules code '"+codeString+"'"); 938 } 939 public String toCode() { 940 switch (this) { 941 case CLOSED: return "closed"; 942 case OPEN: return "open"; 943 case OPENATEND: return "openAtEnd"; 944 case NULL: return null; 945 default: return "?"; 946 } 947 } 948 public String getSystem() { 949 switch (this) { 950 case CLOSED: return "http://hl7.org/fhir/resource-slicing-rules"; 951 case OPEN: return "http://hl7.org/fhir/resource-slicing-rules"; 952 case OPENATEND: return "http://hl7.org/fhir/resource-slicing-rules"; 953 case NULL: return null; 954 default: return "?"; 955 } 956 } 957 public String getDefinition() { 958 switch (this) { 959 case CLOSED: return "No additional content is allowed other than that described by the slices in this profile."; 960 case OPEN: return "Additional content is allowed anywhere in the list."; 961 case OPENATEND: return "Additional content is allowed, but only at the end of the list. Note that using this requires that the slices be ordered, which makes it hard to share uses. This should only be done where absolutely required."; 962 case NULL: return null; 963 default: return "?"; 964 } 965 } 966 public String getDisplay() { 967 switch (this) { 968 case CLOSED: return "Closed"; 969 case OPEN: return "Open"; 970 case OPENATEND: return "Open at End"; 971 case NULL: return null; 972 default: return "?"; 973 } 974 } 975 } 976 977 public static class SlicingRulesEnumFactory implements EnumFactory<SlicingRules> { 978 public SlicingRules fromCode(String codeString) throws IllegalArgumentException { 979 if (codeString == null || "".equals(codeString)) 980 if (codeString == null || "".equals(codeString)) 981 return null; 982 if ("closed".equals(codeString)) 983 return SlicingRules.CLOSED; 984 if ("open".equals(codeString)) 985 return SlicingRules.OPEN; 986 if ("openAtEnd".equals(codeString)) 987 return SlicingRules.OPENATEND; 988 throw new IllegalArgumentException("Unknown SlicingRules code '"+codeString+"'"); 989 } 990 public Enumeration<SlicingRules> fromType(PrimitiveType<?> code) throws FHIRException { 991 if (code == null) 992 return null; 993 if (code.isEmpty()) 994 return new Enumeration<SlicingRules>(this, SlicingRules.NULL, code); 995 String codeString = ((PrimitiveType) code).asStringValue(); 996 if (codeString == null || "".equals(codeString)) 997 return new Enumeration<SlicingRules>(this, SlicingRules.NULL, code); 998 if ("closed".equals(codeString)) 999 return new Enumeration<SlicingRules>(this, SlicingRules.CLOSED, code); 1000 if ("open".equals(codeString)) 1001 return new Enumeration<SlicingRules>(this, SlicingRules.OPEN, code); 1002 if ("openAtEnd".equals(codeString)) 1003 return new Enumeration<SlicingRules>(this, SlicingRules.OPENATEND, code); 1004 throw new FHIRException("Unknown SlicingRules code '"+codeString+"'"); 1005 } 1006 public String toCode(SlicingRules code) { 1007 if (code == SlicingRules.CLOSED) 1008 return "closed"; 1009 if (code == SlicingRules.OPEN) 1010 return "open"; 1011 if (code == SlicingRules.OPENATEND) 1012 return "openAtEnd"; 1013 return "?"; 1014 } 1015 public String toSystem(SlicingRules code) { 1016 return code.getSystem(); 1017 } 1018 } 1019 1020 @Block() 1021 public static class ElementDefinitionSlicingComponent extends Element implements IBaseDatatypeElement { 1022 /** 1023 * Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices. 1024 */ 1025 @Child(name = "discriminator", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 1026 @Description(shortDefinition="Element values that are used to distinguish the slices", formalDefinition="Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices." ) 1027 protected List<ElementDefinitionSlicingDiscriminatorComponent> discriminator; 1028 1029 /** 1030 * A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated. 1031 */ 1032 @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true) 1033 @Description(shortDefinition="Text description of how slicing works (or not)", formalDefinition="A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated." ) 1034 protected StringType description; 1035 1036 /** 1037 * If the matching elements have to occur in the same order as defined in the profile. 1038 */ 1039 @Child(name = "ordered", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=true) 1040 @Description(shortDefinition="If elements must be in same order as slices", formalDefinition="If the matching elements have to occur in the same order as defined in the profile." ) 1041 protected BooleanType ordered; 1042 1043 /** 1044 * Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end. 1045 */ 1046 @Child(name = "rules", type = {CodeType.class}, order=4, min=1, max=1, modifier=false, summary=true) 1047 @Description(shortDefinition="closed | open | openAtEnd", formalDefinition="Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end." ) 1048 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-slicing-rules") 1049 protected Enumeration<SlicingRules> rules; 1050 1051 private static final long serialVersionUID = -311635839L; 1052 1053 /** 1054 * Constructor 1055 */ 1056 public ElementDefinitionSlicingComponent() { 1057 super(); 1058 } 1059 1060 /** 1061 * Constructor 1062 */ 1063 public ElementDefinitionSlicingComponent(SlicingRules rules) { 1064 super(); 1065 this.setRules(rules); 1066 } 1067 1068 /** 1069 * @return {@link #discriminator} (Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices.) 1070 */ 1071 public List<ElementDefinitionSlicingDiscriminatorComponent> getDiscriminator() { 1072 if (this.discriminator == null) 1073 this.discriminator = new ArrayList<ElementDefinitionSlicingDiscriminatorComponent>(); 1074 return this.discriminator; 1075 } 1076 1077 /** 1078 * @return Returns a reference to <code>this</code> for easy method chaining 1079 */ 1080 public ElementDefinitionSlicingComponent setDiscriminator(List<ElementDefinitionSlicingDiscriminatorComponent> theDiscriminator) { 1081 this.discriminator = theDiscriminator; 1082 return this; 1083 } 1084 1085 public boolean hasDiscriminator() { 1086 if (this.discriminator == null) 1087 return false; 1088 for (ElementDefinitionSlicingDiscriminatorComponent item : this.discriminator) 1089 if (!item.isEmpty()) 1090 return true; 1091 return false; 1092 } 1093 1094 public ElementDefinitionSlicingDiscriminatorComponent addDiscriminator() { //3 1095 ElementDefinitionSlicingDiscriminatorComponent t = new ElementDefinitionSlicingDiscriminatorComponent(); 1096 if (this.discriminator == null) 1097 this.discriminator = new ArrayList<ElementDefinitionSlicingDiscriminatorComponent>(); 1098 this.discriminator.add(t); 1099 return t; 1100 } 1101 1102 public ElementDefinitionSlicingComponent addDiscriminator(ElementDefinitionSlicingDiscriminatorComponent t) { //3 1103 if (t == null) 1104 return this; 1105 if (this.discriminator == null) 1106 this.discriminator = new ArrayList<ElementDefinitionSlicingDiscriminatorComponent>(); 1107 this.discriminator.add(t); 1108 return this; 1109 } 1110 1111 /** 1112 * @return The first repetition of repeating field {@link #discriminator}, creating it if it does not already exist {3} 1113 */ 1114 public ElementDefinitionSlicingDiscriminatorComponent getDiscriminatorFirstRep() { 1115 if (getDiscriminator().isEmpty()) { 1116 addDiscriminator(); 1117 } 1118 return getDiscriminator().get(0); 1119 } 1120 1121 /** 1122 * @return {@link #description} (A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value 1123 */ 1124 public StringType getDescriptionElement() { 1125 if (this.description == null) 1126 if (Configuration.errorOnAutoCreate()) 1127 throw new Error("Attempt to auto-create ElementDefinitionSlicingComponent.description"); 1128 else if (Configuration.doAutoCreate()) 1129 this.description = new StringType(); // bb 1130 return this.description; 1131 } 1132 1133 public boolean hasDescriptionElement() { 1134 return this.description != null && !this.description.isEmpty(); 1135 } 1136 1137 public boolean hasDescription() { 1138 return this.description != null && !this.description.isEmpty(); 1139 } 1140 1141 /** 1142 * @param value {@link #description} (A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value 1143 */ 1144 public ElementDefinitionSlicingComponent setDescriptionElement(StringType value) { 1145 this.description = value; 1146 return this; 1147 } 1148 1149 /** 1150 * @return A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated. 1151 */ 1152 public String getDescription() { 1153 return this.description == null ? null : this.description.getValue(); 1154 } 1155 1156 /** 1157 * @param value A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated. 1158 */ 1159 public ElementDefinitionSlicingComponent setDescription(String value) { 1160 if (Utilities.noString(value)) 1161 this.description = null; 1162 else { 1163 if (this.description == null) 1164 this.description = new StringType(); 1165 this.description.setValue(value); 1166 } 1167 return this; 1168 } 1169 1170 /** 1171 * @return {@link #ordered} (If the matching elements have to occur in the same order as defined in the profile.). This is the underlying object with id, value and extensions. The accessor "getOrdered" gives direct access to the value 1172 */ 1173 public BooleanType getOrderedElement() { 1174 if (this.ordered == null) 1175 if (Configuration.errorOnAutoCreate()) 1176 throw new Error("Attempt to auto-create ElementDefinitionSlicingComponent.ordered"); 1177 else if (Configuration.doAutoCreate()) 1178 this.ordered = new BooleanType(); // bb 1179 return this.ordered; 1180 } 1181 1182 public boolean hasOrderedElement() { 1183 return this.ordered != null && !this.ordered.isEmpty(); 1184 } 1185 1186 public boolean hasOrdered() { 1187 return this.ordered != null && !this.ordered.isEmpty(); 1188 } 1189 1190 /** 1191 * @param value {@link #ordered} (If the matching elements have to occur in the same order as defined in the profile.). This is the underlying object with id, value and extensions. The accessor "getOrdered" gives direct access to the value 1192 */ 1193 public ElementDefinitionSlicingComponent setOrderedElement(BooleanType value) { 1194 this.ordered = value; 1195 return this; 1196 } 1197 1198 /** 1199 * @return If the matching elements have to occur in the same order as defined in the profile. 1200 */ 1201 public boolean getOrdered() { 1202 return this.ordered == null || this.ordered.isEmpty() ? false : this.ordered.getValue(); 1203 } 1204 1205 /** 1206 * @param value If the matching elements have to occur in the same order as defined in the profile. 1207 */ 1208 public ElementDefinitionSlicingComponent setOrdered(boolean value) { 1209 if (this.ordered == null) 1210 this.ordered = new BooleanType(); 1211 this.ordered.setValue(value); 1212 return this; 1213 } 1214 1215 /** 1216 * @return {@link #rules} (Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end.). This is the underlying object with id, value and extensions. The accessor "getRules" gives direct access to the value 1217 */ 1218 public Enumeration<SlicingRules> getRulesElement() { 1219 if (this.rules == null) 1220 if (Configuration.errorOnAutoCreate()) 1221 throw new Error("Attempt to auto-create ElementDefinitionSlicingComponent.rules"); 1222 else if (Configuration.doAutoCreate()) 1223 this.rules = new Enumeration<SlicingRules>(new SlicingRulesEnumFactory()); // bb 1224 return this.rules; 1225 } 1226 1227 public boolean hasRulesElement() { 1228 return this.rules != null && !this.rules.isEmpty(); 1229 } 1230 1231 public boolean hasRules() { 1232 return this.rules != null && !this.rules.isEmpty(); 1233 } 1234 1235 /** 1236 * @param value {@link #rules} (Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end.). This is the underlying object with id, value and extensions. The accessor "getRules" gives direct access to the value 1237 */ 1238 public ElementDefinitionSlicingComponent setRulesElement(Enumeration<SlicingRules> value) { 1239 this.rules = value; 1240 return this; 1241 } 1242 1243 /** 1244 * @return Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end. 1245 */ 1246 public SlicingRules getRules() { 1247 return this.rules == null ? null : this.rules.getValue(); 1248 } 1249 1250 /** 1251 * @param value Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end. 1252 */ 1253 public ElementDefinitionSlicingComponent setRules(SlicingRules value) { 1254 if (this.rules == null) 1255 this.rules = new Enumeration<SlicingRules>(new SlicingRulesEnumFactory()); 1256 this.rules.setValue(value); 1257 return this; 1258 } 1259 1260 protected void listChildren(List<Property> children) { 1261 super.listChildren(children); 1262 children.add(new Property("discriminator", "", "Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices.", 0, java.lang.Integer.MAX_VALUE, discriminator)); 1263 children.add(new Property("description", "string", "A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated.", 0, 1, description)); 1264 children.add(new Property("ordered", "boolean", "If the matching elements have to occur in the same order as defined in the profile.", 0, 1, ordered)); 1265 children.add(new Property("rules", "code", "Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end.", 0, 1, rules)); 1266 } 1267 1268 @Override 1269 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1270 switch (_hash) { 1271 case -1888270692: /*discriminator*/ return new Property("discriminator", "", "Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices.", 0, java.lang.Integer.MAX_VALUE, discriminator); 1272 case -1724546052: /*description*/ return new Property("description", "string", "A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated.", 0, 1, description); 1273 case -1207109523: /*ordered*/ return new Property("ordered", "boolean", "If the matching elements have to occur in the same order as defined in the profile.", 0, 1, ordered); 1274 case 108873975: /*rules*/ return new Property("rules", "code", "Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end.", 0, 1, rules); 1275 default: return super.getNamedProperty(_hash, _name, _checkValid); 1276 } 1277 1278 } 1279 1280 @Override 1281 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1282 switch (hash) { 1283 case -1888270692: /*discriminator*/ return this.discriminator == null ? new Base[0] : this.discriminator.toArray(new Base[this.discriminator.size()]); // ElementDefinitionSlicingDiscriminatorComponent 1284 case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType 1285 case -1207109523: /*ordered*/ return this.ordered == null ? new Base[0] : new Base[] {this.ordered}; // BooleanType 1286 case 108873975: /*rules*/ return this.rules == null ? new Base[0] : new Base[] {this.rules}; // Enumeration<SlicingRules> 1287 default: return super.getProperty(hash, name, checkValid); 1288 } 1289 1290 } 1291 1292 @Override 1293 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1294 switch (hash) { 1295 case -1888270692: // discriminator 1296 this.getDiscriminator().add((ElementDefinitionSlicingDiscriminatorComponent) value); // ElementDefinitionSlicingDiscriminatorComponent 1297 return value; 1298 case -1724546052: // description 1299 this.description = TypeConvertor.castToString(value); // StringType 1300 return value; 1301 case -1207109523: // ordered 1302 this.ordered = TypeConvertor.castToBoolean(value); // BooleanType 1303 return value; 1304 case 108873975: // rules 1305 value = new SlicingRulesEnumFactory().fromType(TypeConvertor.castToCode(value)); 1306 this.rules = (Enumeration) value; // Enumeration<SlicingRules> 1307 return value; 1308 default: return super.setProperty(hash, name, value); 1309 } 1310 1311 } 1312 1313 @Override 1314 public Base setProperty(String name, Base value) throws FHIRException { 1315 if (name.equals("discriminator")) { 1316 this.getDiscriminator().add((ElementDefinitionSlicingDiscriminatorComponent) value); 1317 } else if (name.equals("description")) { 1318 this.description = TypeConvertor.castToString(value); // StringType 1319 } else if (name.equals("ordered")) { 1320 this.ordered = TypeConvertor.castToBoolean(value); // BooleanType 1321 } else if (name.equals("rules")) { 1322 value = new SlicingRulesEnumFactory().fromType(TypeConvertor.castToCode(value)); 1323 this.rules = (Enumeration) value; // Enumeration<SlicingRules> 1324 } else 1325 return super.setProperty(name, value); 1326 return value; 1327 } 1328 1329 @Override 1330 public Base makeProperty(int hash, String name) throws FHIRException { 1331 switch (hash) { 1332 case -1888270692: return addDiscriminator(); 1333 case -1724546052: return getDescriptionElement(); 1334 case -1207109523: return getOrderedElement(); 1335 case 108873975: return getRulesElement(); 1336 default: return super.makeProperty(hash, name); 1337 } 1338 1339 } 1340 1341 @Override 1342 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1343 switch (hash) { 1344 case -1888270692: /*discriminator*/ return new String[] {}; 1345 case -1724546052: /*description*/ return new String[] {"string"}; 1346 case -1207109523: /*ordered*/ return new String[] {"boolean"}; 1347 case 108873975: /*rules*/ return new String[] {"code"}; 1348 default: return super.getTypesForProperty(hash, name); 1349 } 1350 1351 } 1352 1353 @Override 1354 public Base addChild(String name) throws FHIRException { 1355 if (name.equals("discriminator")) { 1356 return addDiscriminator(); 1357 } 1358 else if (name.equals("description")) { 1359 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.slicing.description"); 1360 } 1361 else if (name.equals("ordered")) { 1362 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.slicing.ordered"); 1363 } 1364 else if (name.equals("rules")) { 1365 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.slicing.rules"); 1366 } 1367 else 1368 return super.addChild(name); 1369 } 1370 1371 public ElementDefinitionSlicingComponent copy() { 1372 ElementDefinitionSlicingComponent dst = new ElementDefinitionSlicingComponent(); 1373 copyValues(dst); 1374 return dst; 1375 } 1376 1377 public void copyValues(ElementDefinitionSlicingComponent dst) { 1378 super.copyValues(dst); 1379 if (discriminator != null) { 1380 dst.discriminator = new ArrayList<ElementDefinitionSlicingDiscriminatorComponent>(); 1381 for (ElementDefinitionSlicingDiscriminatorComponent i : discriminator) 1382 dst.discriminator.add(i.copy()); 1383 }; 1384 dst.description = description == null ? null : description.copy(); 1385 dst.ordered = ordered == null ? null : ordered.copy(); 1386 dst.rules = rules == null ? null : rules.copy(); 1387 } 1388 1389 @Override 1390 public boolean equalsDeep(Base other_) { 1391 if (!super.equalsDeep(other_)) 1392 return false; 1393 if (!(other_ instanceof ElementDefinitionSlicingComponent)) 1394 return false; 1395 ElementDefinitionSlicingComponent o = (ElementDefinitionSlicingComponent) other_; 1396 return compareDeep(discriminator, o.discriminator, true) && compareDeep(description, o.description, true) 1397 && compareDeep(ordered, o.ordered, true) && compareDeep(rules, o.rules, true); 1398 } 1399 1400 @Override 1401 public boolean equalsShallow(Base other_) { 1402 if (!super.equalsShallow(other_)) 1403 return false; 1404 if (!(other_ instanceof ElementDefinitionSlicingComponent)) 1405 return false; 1406 ElementDefinitionSlicingComponent o = (ElementDefinitionSlicingComponent) other_; 1407 return compareValues(description, o.description, true) && compareValues(ordered, o.ordered, true) && compareValues(rules, o.rules, true) 1408 ; 1409 } 1410 1411 public boolean isEmpty() { 1412 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(discriminator, description 1413 , ordered, rules); 1414 } 1415 1416 public String fhirType() { 1417 return "ElementDefinition.slicing"; 1418 1419 } 1420 1421 } 1422 1423 @Block() 1424 public static class ElementDefinitionSlicingDiscriminatorComponent extends Element implements IBaseDatatypeElement { 1425 /** 1426 * How the element value is interpreted when discrimination is evaluated. 1427 */ 1428 @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true) 1429 @Description(shortDefinition="value | exists | type | profile | position", formalDefinition="How the element value is interpreted when discrimination is evaluated." ) 1430 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/discriminator-type") 1431 protected Enumeration<DiscriminatorType> type; 1432 1433 /** 1434 * A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based. 1435 */ 1436 @Child(name = "path", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=true) 1437 @Description(shortDefinition="Path to element value", formalDefinition="A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based." ) 1438 protected StringType path; 1439 1440 private static final long serialVersionUID = 1151159293L; 1441 1442 /** 1443 * Constructor 1444 */ 1445 public ElementDefinitionSlicingDiscriminatorComponent() { 1446 super(); 1447 } 1448 1449 /** 1450 * Constructor 1451 */ 1452 public ElementDefinitionSlicingDiscriminatorComponent(DiscriminatorType type, String path) { 1453 super(); 1454 this.setType(type); 1455 this.setPath(path); 1456 } 1457 1458 /** 1459 * @return {@link #type} (How the element value is interpreted when discrimination is evaluated.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value 1460 */ 1461 public Enumeration<DiscriminatorType> getTypeElement() { 1462 if (this.type == null) 1463 if (Configuration.errorOnAutoCreate()) 1464 throw new Error("Attempt to auto-create ElementDefinitionSlicingDiscriminatorComponent.type"); 1465 else if (Configuration.doAutoCreate()) 1466 this.type = new Enumeration<DiscriminatorType>(new DiscriminatorTypeEnumFactory()); // bb 1467 return this.type; 1468 } 1469 1470 public boolean hasTypeElement() { 1471 return this.type != null && !this.type.isEmpty(); 1472 } 1473 1474 public boolean hasType() { 1475 return this.type != null && !this.type.isEmpty(); 1476 } 1477 1478 /** 1479 * @param value {@link #type} (How the element value is interpreted when discrimination is evaluated.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value 1480 */ 1481 public ElementDefinitionSlicingDiscriminatorComponent setTypeElement(Enumeration<DiscriminatorType> value) { 1482 this.type = value; 1483 return this; 1484 } 1485 1486 /** 1487 * @return How the element value is interpreted when discrimination is evaluated. 1488 */ 1489 public DiscriminatorType getType() { 1490 return this.type == null ? null : this.type.getValue(); 1491 } 1492 1493 /** 1494 * @param value How the element value is interpreted when discrimination is evaluated. 1495 */ 1496 public ElementDefinitionSlicingDiscriminatorComponent setType(DiscriminatorType value) { 1497 if (this.type == null) 1498 this.type = new Enumeration<DiscriminatorType>(new DiscriminatorTypeEnumFactory()); 1499 this.type.setValue(value); 1500 return this; 1501 } 1502 1503 /** 1504 * @return {@link #path} (A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value 1505 */ 1506 public StringType getPathElement() { 1507 if (this.path == null) 1508 if (Configuration.errorOnAutoCreate()) 1509 throw new Error("Attempt to auto-create ElementDefinitionSlicingDiscriminatorComponent.path"); 1510 else if (Configuration.doAutoCreate()) 1511 this.path = new StringType(); // bb 1512 return this.path; 1513 } 1514 1515 public boolean hasPathElement() { 1516 return this.path != null && !this.path.isEmpty(); 1517 } 1518 1519 public boolean hasPath() { 1520 return this.path != null && !this.path.isEmpty(); 1521 } 1522 1523 /** 1524 * @param value {@link #path} (A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value 1525 */ 1526 public ElementDefinitionSlicingDiscriminatorComponent setPathElement(StringType value) { 1527 this.path = value; 1528 return this; 1529 } 1530 1531 /** 1532 * @return A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based. 1533 */ 1534 public String getPath() { 1535 return this.path == null ? null : this.path.getValue(); 1536 } 1537 1538 /** 1539 * @param value A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based. 1540 */ 1541 public ElementDefinitionSlicingDiscriminatorComponent setPath(String value) { 1542 if (this.path == null) 1543 this.path = new StringType(); 1544 this.path.setValue(value); 1545 return this; 1546 } 1547 1548 protected void listChildren(List<Property> children) { 1549 super.listChildren(children); 1550 children.add(new Property("type", "code", "How the element value is interpreted when discrimination is evaluated.", 0, 1, type)); 1551 children.add(new Property("path", "string", "A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based.", 0, 1, path)); 1552 } 1553 1554 @Override 1555 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1556 switch (_hash) { 1557 case 3575610: /*type*/ return new Property("type", "code", "How the element value is interpreted when discrimination is evaluated.", 0, 1, type); 1558 case 3433509: /*path*/ return new Property("path", "string", "A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based.", 0, 1, path); 1559 default: return super.getNamedProperty(_hash, _name, _checkValid); 1560 } 1561 1562 } 1563 1564 @Override 1565 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1566 switch (hash) { 1567 case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<DiscriminatorType> 1568 case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType 1569 default: return super.getProperty(hash, name, checkValid); 1570 } 1571 1572 } 1573 1574 @Override 1575 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1576 switch (hash) { 1577 case 3575610: // type 1578 value = new DiscriminatorTypeEnumFactory().fromType(TypeConvertor.castToCode(value)); 1579 this.type = (Enumeration) value; // Enumeration<DiscriminatorType> 1580 return value; 1581 case 3433509: // path 1582 this.path = TypeConvertor.castToString(value); // StringType 1583 return value; 1584 default: return super.setProperty(hash, name, value); 1585 } 1586 1587 } 1588 1589 @Override 1590 public Base setProperty(String name, Base value) throws FHIRException { 1591 if (name.equals("type")) { 1592 value = new DiscriminatorTypeEnumFactory().fromType(TypeConvertor.castToCode(value)); 1593 this.type = (Enumeration) value; // Enumeration<DiscriminatorType> 1594 } else if (name.equals("path")) { 1595 this.path = TypeConvertor.castToString(value); // StringType 1596 } else 1597 return super.setProperty(name, value); 1598 return value; 1599 } 1600 1601 @Override 1602 public Base makeProperty(int hash, String name) throws FHIRException { 1603 switch (hash) { 1604 case 3575610: return getTypeElement(); 1605 case 3433509: return getPathElement(); 1606 default: return super.makeProperty(hash, name); 1607 } 1608 1609 } 1610 1611 @Override 1612 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1613 switch (hash) { 1614 case 3575610: /*type*/ return new String[] {"code"}; 1615 case 3433509: /*path*/ return new String[] {"string"}; 1616 default: return super.getTypesForProperty(hash, name); 1617 } 1618 1619 } 1620 1621 @Override 1622 public Base addChild(String name) throws FHIRException { 1623 if (name.equals("type")) { 1624 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.slicing.discriminator.type"); 1625 } 1626 else if (name.equals("path")) { 1627 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.slicing.discriminator.path"); 1628 } 1629 else 1630 return super.addChild(name); 1631 } 1632 1633 public ElementDefinitionSlicingDiscriminatorComponent copy() { 1634 ElementDefinitionSlicingDiscriminatorComponent dst = new ElementDefinitionSlicingDiscriminatorComponent(); 1635 copyValues(dst); 1636 return dst; 1637 } 1638 1639 public void copyValues(ElementDefinitionSlicingDiscriminatorComponent dst) { 1640 super.copyValues(dst); 1641 dst.type = type == null ? null : type.copy(); 1642 dst.path = path == null ? null : path.copy(); 1643 } 1644 1645 @Override 1646 public boolean equalsDeep(Base other_) { 1647 if (!super.equalsDeep(other_)) 1648 return false; 1649 if (!(other_ instanceof ElementDefinitionSlicingDiscriminatorComponent)) 1650 return false; 1651 ElementDefinitionSlicingDiscriminatorComponent o = (ElementDefinitionSlicingDiscriminatorComponent) other_; 1652 return compareDeep(type, o.type, true) && compareDeep(path, o.path, true); 1653 } 1654 1655 @Override 1656 public boolean equalsShallow(Base other_) { 1657 if (!super.equalsShallow(other_)) 1658 return false; 1659 if (!(other_ instanceof ElementDefinitionSlicingDiscriminatorComponent)) 1660 return false; 1661 ElementDefinitionSlicingDiscriminatorComponent o = (ElementDefinitionSlicingDiscriminatorComponent) other_; 1662 return compareValues(type, o.type, true) && compareValues(path, o.path, true); 1663 } 1664 1665 public boolean isEmpty() { 1666 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, path); 1667 } 1668 1669 public String fhirType() { 1670 return "ElementDefinition.slicing.discriminator"; 1671 1672 } 1673 1674 } 1675 1676 @Block() 1677 public static class ElementDefinitionBaseComponent extends Element implements IBaseDatatypeElement { 1678 /** 1679 * The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base. 1680 */ 1681 @Child(name = "path", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true) 1682 @Description(shortDefinition="Path that identifies the base element", formalDefinition="The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base." ) 1683 protected StringType path; 1684 1685 /** 1686 * Minimum cardinality of the base element identified by the path. 1687 */ 1688 @Child(name = "min", type = {UnsignedIntType.class}, order=2, min=1, max=1, modifier=false, summary=true) 1689 @Description(shortDefinition="Min cardinality of the base element", formalDefinition="Minimum cardinality of the base element identified by the path." ) 1690 protected UnsignedIntType min; 1691 1692 /** 1693 * Maximum cardinality of the base element identified by the path. 1694 */ 1695 @Child(name = "max", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true) 1696 @Description(shortDefinition="Max cardinality of the base element", formalDefinition="Maximum cardinality of the base element identified by the path." ) 1697 protected StringType max; 1698 1699 private static final long serialVersionUID = -1412704221L; 1700 1701 /** 1702 * Constructor 1703 */ 1704 public ElementDefinitionBaseComponent() { 1705 super(); 1706 } 1707 1708 /** 1709 * Constructor 1710 */ 1711 public ElementDefinitionBaseComponent(String path, int min, String max) { 1712 super(); 1713 this.setPath(path); 1714 this.setMin(min); 1715 this.setMax(max); 1716 } 1717 1718 /** 1719 * @return {@link #path} (The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value 1720 */ 1721 public StringType getPathElement() { 1722 if (this.path == null) 1723 if (Configuration.errorOnAutoCreate()) 1724 throw new Error("Attempt to auto-create ElementDefinitionBaseComponent.path"); 1725 else if (Configuration.doAutoCreate()) 1726 this.path = new StringType(); // bb 1727 return this.path; 1728 } 1729 1730 public boolean hasPathElement() { 1731 return this.path != null && !this.path.isEmpty(); 1732 } 1733 1734 public boolean hasPath() { 1735 return this.path != null && !this.path.isEmpty(); 1736 } 1737 1738 /** 1739 * @param value {@link #path} (The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value 1740 */ 1741 public ElementDefinitionBaseComponent setPathElement(StringType value) { 1742 this.path = value; 1743 return this; 1744 } 1745 1746 /** 1747 * @return The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base. 1748 */ 1749 public String getPath() { 1750 return this.path == null ? null : this.path.getValue(); 1751 } 1752 1753 /** 1754 * @param value The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base. 1755 */ 1756 public ElementDefinitionBaseComponent setPath(String value) { 1757 if (this.path == null) 1758 this.path = new StringType(); 1759 this.path.setValue(value); 1760 return this; 1761 } 1762 1763 /** 1764 * @return {@link #min} (Minimum cardinality of the base element identified by the path.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value 1765 */ 1766 public UnsignedIntType getMinElement() { 1767 if (this.min == null) 1768 if (Configuration.errorOnAutoCreate()) 1769 throw new Error("Attempt to auto-create ElementDefinitionBaseComponent.min"); 1770 else if (Configuration.doAutoCreate()) 1771 this.min = new UnsignedIntType(); // bb 1772 return this.min; 1773 } 1774 1775 public boolean hasMinElement() { 1776 return this.min != null && !this.min.isEmpty(); 1777 } 1778 1779 public boolean hasMin() { 1780 return this.min != null && !this.min.isEmpty(); 1781 } 1782 1783 /** 1784 * @param value {@link #min} (Minimum cardinality of the base element identified by the path.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value 1785 */ 1786 public ElementDefinitionBaseComponent setMinElement(UnsignedIntType value) { 1787 this.min = value; 1788 return this; 1789 } 1790 1791 /** 1792 * @return Minimum cardinality of the base element identified by the path. 1793 */ 1794 public int getMin() { 1795 return this.min == null || this.min.isEmpty() ? 0 : this.min.getValue(); 1796 } 1797 1798 /** 1799 * @param value Minimum cardinality of the base element identified by the path. 1800 */ 1801 public ElementDefinitionBaseComponent setMin(int value) { 1802 if (this.min == null) 1803 this.min = new UnsignedIntType(); 1804 this.min.setValue(value); 1805 return this; 1806 } 1807 1808 /** 1809 * @return {@link #max} (Maximum cardinality of the base element identified by the path.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value 1810 */ 1811 public StringType getMaxElement() { 1812 if (this.max == null) 1813 if (Configuration.errorOnAutoCreate()) 1814 throw new Error("Attempt to auto-create ElementDefinitionBaseComponent.max"); 1815 else if (Configuration.doAutoCreate()) 1816 this.max = new StringType(); // bb 1817 return this.max; 1818 } 1819 1820 public boolean hasMaxElement() { 1821 return this.max != null && !this.max.isEmpty(); 1822 } 1823 1824 public boolean hasMax() { 1825 return this.max != null && !this.max.isEmpty(); 1826 } 1827 1828 /** 1829 * @param value {@link #max} (Maximum cardinality of the base element identified by the path.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value 1830 */ 1831 public ElementDefinitionBaseComponent setMaxElement(StringType value) { 1832 this.max = value; 1833 return this; 1834 } 1835 1836 /** 1837 * @return Maximum cardinality of the base element identified by the path. 1838 */ 1839 public String getMax() { 1840 return this.max == null ? null : this.max.getValue(); 1841 } 1842 1843 /** 1844 * @param value Maximum cardinality of the base element identified by the path. 1845 */ 1846 public ElementDefinitionBaseComponent setMax(String value) { 1847 if (this.max == null) 1848 this.max = new StringType(); 1849 this.max.setValue(value); 1850 return this; 1851 } 1852 1853 protected void listChildren(List<Property> children) { 1854 super.listChildren(children); 1855 children.add(new Property("path", "string", "The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base.", 0, 1, path)); 1856 children.add(new Property("min", "unsignedInt", "Minimum cardinality of the base element identified by the path.", 0, 1, min)); 1857 children.add(new Property("max", "string", "Maximum cardinality of the base element identified by the path.", 0, 1, max)); 1858 } 1859 1860 @Override 1861 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1862 switch (_hash) { 1863 case 3433509: /*path*/ return new Property("path", "string", "The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [StructureDefinition](structuredefinition.html#) without a StructureDefinition.base.", 0, 1, path); 1864 case 108114: /*min*/ return new Property("min", "unsignedInt", "Minimum cardinality of the base element identified by the path.", 0, 1, min); 1865 case 107876: /*max*/ return new Property("max", "string", "Maximum cardinality of the base element identified by the path.", 0, 1, max); 1866 default: return super.getNamedProperty(_hash, _name, _checkValid); 1867 } 1868 1869 } 1870 1871 @Override 1872 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1873 switch (hash) { 1874 case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType 1875 case 108114: /*min*/ return this.min == null ? new Base[0] : new Base[] {this.min}; // UnsignedIntType 1876 case 107876: /*max*/ return this.max == null ? new Base[0] : new Base[] {this.max}; // StringType 1877 default: return super.getProperty(hash, name, checkValid); 1878 } 1879 1880 } 1881 1882 @Override 1883 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1884 switch (hash) { 1885 case 3433509: // path 1886 this.path = TypeConvertor.castToString(value); // StringType 1887 return value; 1888 case 108114: // min 1889 this.min = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType 1890 return value; 1891 case 107876: // max 1892 this.max = TypeConvertor.castToString(value); // StringType 1893 return value; 1894 default: return super.setProperty(hash, name, value); 1895 } 1896 1897 } 1898 1899 @Override 1900 public Base setProperty(String name, Base value) throws FHIRException { 1901 if (name.equals("path")) { 1902 this.path = TypeConvertor.castToString(value); // StringType 1903 } else if (name.equals("min")) { 1904 this.min = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType 1905 } else if (name.equals("max")) { 1906 this.max = TypeConvertor.castToString(value); // StringType 1907 } else 1908 return super.setProperty(name, value); 1909 return value; 1910 } 1911 1912 @Override 1913 public Base makeProperty(int hash, String name) throws FHIRException { 1914 switch (hash) { 1915 case 3433509: return getPathElement(); 1916 case 108114: return getMinElement(); 1917 case 107876: return getMaxElement(); 1918 default: return super.makeProperty(hash, name); 1919 } 1920 1921 } 1922 1923 @Override 1924 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1925 switch (hash) { 1926 case 3433509: /*path*/ return new String[] {"string"}; 1927 case 108114: /*min*/ return new String[] {"unsignedInt"}; 1928 case 107876: /*max*/ return new String[] {"string"}; 1929 default: return super.getTypesForProperty(hash, name); 1930 } 1931 1932 } 1933 1934 @Override 1935 public Base addChild(String name) throws FHIRException { 1936 if (name.equals("path")) { 1937 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.base.path"); 1938 } 1939 else if (name.equals("min")) { 1940 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.base.min"); 1941 } 1942 else if (name.equals("max")) { 1943 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.base.max"); 1944 } 1945 else 1946 return super.addChild(name); 1947 } 1948 1949 public ElementDefinitionBaseComponent copy() { 1950 ElementDefinitionBaseComponent dst = new ElementDefinitionBaseComponent(); 1951 copyValues(dst); 1952 return dst; 1953 } 1954 1955 public void copyValues(ElementDefinitionBaseComponent dst) { 1956 super.copyValues(dst); 1957 dst.path = path == null ? null : path.copy(); 1958 dst.min = min == null ? null : min.copy(); 1959 dst.max = max == null ? null : max.copy(); 1960 } 1961 1962 @Override 1963 public boolean equalsDeep(Base other_) { 1964 if (!super.equalsDeep(other_)) 1965 return false; 1966 if (!(other_ instanceof ElementDefinitionBaseComponent)) 1967 return false; 1968 ElementDefinitionBaseComponent o = (ElementDefinitionBaseComponent) other_; 1969 return compareDeep(path, o.path, true) && compareDeep(min, o.min, true) && compareDeep(max, o.max, true) 1970 ; 1971 } 1972 1973 @Override 1974 public boolean equalsShallow(Base other_) { 1975 if (!super.equalsShallow(other_)) 1976 return false; 1977 if (!(other_ instanceof ElementDefinitionBaseComponent)) 1978 return false; 1979 ElementDefinitionBaseComponent o = (ElementDefinitionBaseComponent) other_; 1980 return compareValues(path, o.path, true) && compareValues(min, o.min, true) && compareValues(max, o.max, true) 1981 ; 1982 } 1983 1984 public boolean isEmpty() { 1985 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(path, min, max); 1986 } 1987 1988 public String fhirType() { 1989 return "ElementDefinition.base"; 1990 1991 } 1992 1993 } 1994 1995 @Block() 1996 public static class TypeRefComponent extends Element implements IBaseDatatypeElement { 1997 /** 1998 * URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models. 1999 */ 2000 @Child(name = "code", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=true) 2001 @Description(shortDefinition="Data type or Resource (reference to definition)", formalDefinition="URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models." ) 2002 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/elementdefinition-types") 2003 protected UriType code; 2004 2005 /** 2006 * Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide. 2007 */ 2008 @Child(name = "profile", type = {CanonicalType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 2009 @Description(shortDefinition="Profiles (StructureDefinition or IG) - one must apply", formalDefinition="Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide." ) 2010 protected List<CanonicalType> profile; 2011 2012 /** 2013 * Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide. 2014 */ 2015 @Child(name = "targetProfile", type = {CanonicalType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 2016 @Description(shortDefinition="Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply", formalDefinition="Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide." ) 2017 protected List<CanonicalType> targetProfile; 2018 2019 /** 2020 * If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle. 2021 */ 2022 @Child(name = "aggregation", type = {CodeType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 2023 @Description(shortDefinition="contained | referenced | bundled - how aggregated", formalDefinition="If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle." ) 2024 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-aggregation-mode") 2025 protected List<Enumeration<AggregationMode>> aggregation; 2026 2027 /** 2028 * Whether this reference needs to be version specific or version independent, or whether either can be used. 2029 */ 2030 @Child(name = "versioning", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=true) 2031 @Description(shortDefinition="either | independent | specific", formalDefinition="Whether this reference needs to be version specific or version independent, or whether either can be used." ) 2032 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/reference-version-rules") 2033 protected Enumeration<ReferenceVersionRules> versioning; 2034 2035 private static final long serialVersionUID = 957891653L; 2036 2037 /** 2038 * Constructor 2039 */ 2040 public TypeRefComponent() { 2041 super(); 2042 } 2043 2044 /** 2045 * Constructor 2046 */ 2047 public TypeRefComponent(String code) { 2048 super(); 2049 this.setCode(code); 2050 } 2051 2052 /** 2053 * @return {@link #code} (URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value 2054 */ 2055 public UriType getCodeElement() { 2056 if (this.code == null) 2057 if (Configuration.errorOnAutoCreate()) 2058 throw new Error("Attempt to auto-create TypeRefComponent.code"); 2059 else if (Configuration.doAutoCreate()) 2060 this.code = new UriType(); // bb 2061 return this.code; 2062 } 2063 2064 public boolean hasCodeElement() { 2065 return this.code != null && !this.code.isEmpty(); 2066 } 2067 2068 public boolean hasCode() { 2069 return this.code != null && !this.code.isEmpty(); 2070 } 2071 2072 /** 2073 * @param value {@link #code} (URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value 2074 */ 2075 public TypeRefComponent setCodeElement(UriType value) { 2076 this.code = value; 2077 return this; 2078 } 2079 2080 /** 2081 * @return URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models. 2082 */ 2083 public String getCode() { 2084 return this.code == null ? null : this.code.getValue(); 2085 } 2086 2087 /** 2088 * @param value URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models. 2089 */ 2090 public TypeRefComponent setCode(String value) { 2091 if (this.code == null) 2092 this.code = new UriType(); 2093 this.code.setValue(value); 2094 return this; 2095 } 2096 2097 /** 2098 * @return {@link #profile} (Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide.) 2099 */ 2100 public List<CanonicalType> getProfile() { 2101 if (this.profile == null) 2102 this.profile = new ArrayList<CanonicalType>(); 2103 return this.profile; 2104 } 2105 2106 /** 2107 * @return Returns a reference to <code>this</code> for easy method chaining 2108 */ 2109 public TypeRefComponent setProfile(List<CanonicalType> theProfile) { 2110 this.profile = theProfile; 2111 return this; 2112 } 2113 2114 public boolean hasProfile() { 2115 if (this.profile == null) 2116 return false; 2117 for (CanonicalType item : this.profile) 2118 if (!item.isEmpty()) 2119 return true; 2120 return false; 2121 } 2122 2123 /** 2124 * @return {@link #profile} (Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide.) 2125 */ 2126 public CanonicalType addProfileElement() {//2 2127 CanonicalType t = new CanonicalType(); 2128 if (this.profile == null) 2129 this.profile = new ArrayList<CanonicalType>(); 2130 this.profile.add(t); 2131 return t; 2132 } 2133 2134 /** 2135 * @param value {@link #profile} (Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide.) 2136 */ 2137 public TypeRefComponent addProfile(String value) { //1 2138 CanonicalType t = new CanonicalType(); 2139 t.setValue(value); 2140 if (this.profile == null) 2141 this.profile = new ArrayList<CanonicalType>(); 2142 this.profile.add(t); 2143 return this; 2144 } 2145 2146 /** 2147 * @param value {@link #profile} (Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide.) 2148 */ 2149 public boolean hasProfile(String value) { 2150 if (this.profile == null) 2151 return false; 2152 for (CanonicalType v : this.profile) 2153 if (v.getValue().equals(value)) // canonical 2154 return true; 2155 return false; 2156 } 2157 2158 /** 2159 * @return {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.) 2160 */ 2161 public List<CanonicalType> getTargetProfile() { 2162 if (this.targetProfile == null) 2163 this.targetProfile = new ArrayList<CanonicalType>(); 2164 return this.targetProfile; 2165 } 2166 2167 /** 2168 * @return Returns a reference to <code>this</code> for easy method chaining 2169 */ 2170 public TypeRefComponent setTargetProfile(List<CanonicalType> theTargetProfile) { 2171 this.targetProfile = theTargetProfile; 2172 return this; 2173 } 2174 2175 public boolean hasTargetProfile() { 2176 if (this.targetProfile == null) 2177 return false; 2178 for (CanonicalType item : this.targetProfile) 2179 if (!item.isEmpty()) 2180 return true; 2181 return false; 2182 } 2183 2184 /** 2185 * @return {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.) 2186 */ 2187 public CanonicalType addTargetProfileElement() {//2 2188 CanonicalType t = new CanonicalType(); 2189 if (this.targetProfile == null) 2190 this.targetProfile = new ArrayList<CanonicalType>(); 2191 this.targetProfile.add(t); 2192 return t; 2193 } 2194 2195 /** 2196 * @param value {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.) 2197 */ 2198 public TypeRefComponent addTargetProfile(String value) { //1 2199 CanonicalType t = new CanonicalType(); 2200 t.setValue(value); 2201 if (this.targetProfile == null) 2202 this.targetProfile = new ArrayList<CanonicalType>(); 2203 this.targetProfile.add(t); 2204 return this; 2205 } 2206 2207 /** 2208 * @param value {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.) 2209 */ 2210 public boolean hasTargetProfile(String value) { 2211 if (this.targetProfile == null) 2212 return false; 2213 for (CanonicalType v : this.targetProfile) 2214 if (v.getValue().equals(value)) // canonical 2215 return true; 2216 return false; 2217 } 2218 2219 /** 2220 * @return {@link #aggregation} (If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.) 2221 */ 2222 public List<Enumeration<AggregationMode>> getAggregation() { 2223 if (this.aggregation == null) 2224 this.aggregation = new ArrayList<Enumeration<AggregationMode>>(); 2225 return this.aggregation; 2226 } 2227 2228 /** 2229 * @return Returns a reference to <code>this</code> for easy method chaining 2230 */ 2231 public TypeRefComponent setAggregation(List<Enumeration<AggregationMode>> theAggregation) { 2232 this.aggregation = theAggregation; 2233 return this; 2234 } 2235 2236 public boolean hasAggregation() { 2237 if (this.aggregation == null) 2238 return false; 2239 for (Enumeration<AggregationMode> item : this.aggregation) 2240 if (!item.isEmpty()) 2241 return true; 2242 return false; 2243 } 2244 2245 /** 2246 * @return {@link #aggregation} (If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.) 2247 */ 2248 public Enumeration<AggregationMode> addAggregationElement() {//2 2249 Enumeration<AggregationMode> t = new Enumeration<AggregationMode>(new AggregationModeEnumFactory()); 2250 if (this.aggregation == null) 2251 this.aggregation = new ArrayList<Enumeration<AggregationMode>>(); 2252 this.aggregation.add(t); 2253 return t; 2254 } 2255 2256 /** 2257 * @param value {@link #aggregation} (If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.) 2258 */ 2259 public TypeRefComponent addAggregation(AggregationMode value) { //1 2260 Enumeration<AggregationMode> t = new Enumeration<AggregationMode>(new AggregationModeEnumFactory()); 2261 t.setValue(value); 2262 if (this.aggregation == null) 2263 this.aggregation = new ArrayList<Enumeration<AggregationMode>>(); 2264 this.aggregation.add(t); 2265 return this; 2266 } 2267 2268 /** 2269 * @param value {@link #aggregation} (If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.) 2270 */ 2271 public boolean hasAggregation(AggregationMode value) { 2272 if (this.aggregation == null) 2273 return false; 2274 for (Enumeration<AggregationMode> v : this.aggregation) 2275 if (v.getValue().equals(value)) // code 2276 return true; 2277 return false; 2278 } 2279 2280 /** 2281 * @return {@link #versioning} (Whether this reference needs to be version specific or version independent, or whether either can be used.). This is the underlying object with id, value and extensions. The accessor "getVersioning" gives direct access to the value 2282 */ 2283 public Enumeration<ReferenceVersionRules> getVersioningElement() { 2284 if (this.versioning == null) 2285 if (Configuration.errorOnAutoCreate()) 2286 throw new Error("Attempt to auto-create TypeRefComponent.versioning"); 2287 else if (Configuration.doAutoCreate()) 2288 this.versioning = new Enumeration<ReferenceVersionRules>(new ReferenceVersionRulesEnumFactory()); // bb 2289 return this.versioning; 2290 } 2291 2292 public boolean hasVersioningElement() { 2293 return this.versioning != null && !this.versioning.isEmpty(); 2294 } 2295 2296 public boolean hasVersioning() { 2297 return this.versioning != null && !this.versioning.isEmpty(); 2298 } 2299 2300 /** 2301 * @param value {@link #versioning} (Whether this reference needs to be version specific or version independent, or whether either can be used.). This is the underlying object with id, value and extensions. The accessor "getVersioning" gives direct access to the value 2302 */ 2303 public TypeRefComponent setVersioningElement(Enumeration<ReferenceVersionRules> value) { 2304 this.versioning = value; 2305 return this; 2306 } 2307 2308 /** 2309 * @return Whether this reference needs to be version specific or version independent, or whether either can be used. 2310 */ 2311 public ReferenceVersionRules getVersioning() { 2312 return this.versioning == null ? null : this.versioning.getValue(); 2313 } 2314 2315 /** 2316 * @param value Whether this reference needs to be version specific or version independent, or whether either can be used. 2317 */ 2318 public TypeRefComponent setVersioning(ReferenceVersionRules value) { 2319 if (value == null) 2320 this.versioning = null; 2321 else { 2322 if (this.versioning == null) 2323 this.versioning = new Enumeration<ReferenceVersionRules>(new ReferenceVersionRulesEnumFactory()); 2324 this.versioning.setValue(value); 2325 } 2326 return this; 2327 } 2328 2329 protected void listChildren(List<Property> children) { 2330 super.listChildren(children); 2331 children.add(new Property("code", "uri", "URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.", 0, 1, code)); 2332 children.add(new Property("profile", "canonical(StructureDefinition|ImplementationGuide)", "Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide.", 0, java.lang.Integer.MAX_VALUE, profile)); 2333 children.add(new Property("targetProfile", "canonical(StructureDefinition|ImplementationGuide)", "Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.", 0, java.lang.Integer.MAX_VALUE, targetProfile)); 2334 children.add(new Property("aggregation", "code", "If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.", 0, java.lang.Integer.MAX_VALUE, aggregation)); 2335 children.add(new Property("versioning", "code", "Whether this reference needs to be version specific or version independent, or whether either can be used.", 0, 1, versioning)); 2336 } 2337 2338 @Override 2339 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2340 switch (_hash) { 2341 case 3059181: /*code*/ return new Property("code", "uri", "URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.", 0, 1, code); 2342 case -309425751: /*profile*/ return new Property("profile", "canonical(StructureDefinition|ImplementationGuide)", "Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guide.", 0, java.lang.Integer.MAX_VALUE, profile); 2343 case 1994521304: /*targetProfile*/ return new Property("targetProfile", "canonical(StructureDefinition|ImplementationGuide)", "Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.", 0, java.lang.Integer.MAX_VALUE, targetProfile); 2344 case 841524962: /*aggregation*/ return new Property("aggregation", "code", "If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.", 0, java.lang.Integer.MAX_VALUE, aggregation); 2345 case -670487542: /*versioning*/ return new Property("versioning", "code", "Whether this reference needs to be version specific or version independent, or whether either can be used.", 0, 1, versioning); 2346 default: return super.getNamedProperty(_hash, _name, _checkValid); 2347 } 2348 2349 } 2350 2351 @Override 2352 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2353 switch (hash) { 2354 case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // UriType 2355 case -309425751: /*profile*/ return this.profile == null ? new Base[0] : this.profile.toArray(new Base[this.profile.size()]); // CanonicalType 2356 case 1994521304: /*targetProfile*/ return this.targetProfile == null ? new Base[0] : this.targetProfile.toArray(new Base[this.targetProfile.size()]); // CanonicalType 2357 case 841524962: /*aggregation*/ return this.aggregation == null ? new Base[0] : this.aggregation.toArray(new Base[this.aggregation.size()]); // Enumeration<AggregationMode> 2358 case -670487542: /*versioning*/ return this.versioning == null ? new Base[0] : new Base[] {this.versioning}; // Enumeration<ReferenceVersionRules> 2359 default: return super.getProperty(hash, name, checkValid); 2360 } 2361 2362 } 2363 2364 @Override 2365 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2366 switch (hash) { 2367 case 3059181: // code 2368 this.code = TypeConvertor.castToUri(value); // UriType 2369 return value; 2370 case -309425751: // profile 2371 this.getProfile().add(TypeConvertor.castToCanonical(value)); // CanonicalType 2372 return value; 2373 case 1994521304: // targetProfile 2374 this.getTargetProfile().add(TypeConvertor.castToCanonical(value)); // CanonicalType 2375 return value; 2376 case 841524962: // aggregation 2377 value = new AggregationModeEnumFactory().fromType(TypeConvertor.castToCode(value)); 2378 this.getAggregation().add((Enumeration) value); // Enumeration<AggregationMode> 2379 return value; 2380 case -670487542: // versioning 2381 value = new ReferenceVersionRulesEnumFactory().fromType(TypeConvertor.castToCode(value)); 2382 this.versioning = (Enumeration) value; // Enumeration<ReferenceVersionRules> 2383 return value; 2384 default: return super.setProperty(hash, name, value); 2385 } 2386 2387 } 2388 2389 @Override 2390 public Base setProperty(String name, Base value) throws FHIRException { 2391 if (name.equals("code")) { 2392 this.code = TypeConvertor.castToUri(value); // UriType 2393 } else if (name.equals("profile")) { 2394 this.getProfile().add(TypeConvertor.castToCanonical(value)); 2395 } else if (name.equals("targetProfile")) { 2396 this.getTargetProfile().add(TypeConvertor.castToCanonical(value)); 2397 } else if (name.equals("aggregation")) { 2398 value = new AggregationModeEnumFactory().fromType(TypeConvertor.castToCode(value)); 2399 this.getAggregation().add((Enumeration) value); 2400 } else if (name.equals("versioning")) { 2401 value = new ReferenceVersionRulesEnumFactory().fromType(TypeConvertor.castToCode(value)); 2402 this.versioning = (Enumeration) value; // Enumeration<ReferenceVersionRules> 2403 } else 2404 return super.setProperty(name, value); 2405 return value; 2406 } 2407 2408 @Override 2409 public Base makeProperty(int hash, String name) throws FHIRException { 2410 switch (hash) { 2411 case 3059181: return getCodeElement(); 2412 case -309425751: return addProfileElement(); 2413 case 1994521304: return addTargetProfileElement(); 2414 case 841524962: return addAggregationElement(); 2415 case -670487542: return getVersioningElement(); 2416 default: return super.makeProperty(hash, name); 2417 } 2418 2419 } 2420 2421 @Override 2422 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2423 switch (hash) { 2424 case 3059181: /*code*/ return new String[] {"uri"}; 2425 case -309425751: /*profile*/ return new String[] {"canonical"}; 2426 case 1994521304: /*targetProfile*/ return new String[] {"canonical"}; 2427 case 841524962: /*aggregation*/ return new String[] {"code"}; 2428 case -670487542: /*versioning*/ return new String[] {"code"}; 2429 default: return super.getTypesForProperty(hash, name); 2430 } 2431 2432 } 2433 2434 @Override 2435 public Base addChild(String name) throws FHIRException { 2436 if (name.equals("code")) { 2437 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.type.code"); 2438 } 2439 else if (name.equals("profile")) { 2440 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.type.profile"); 2441 } 2442 else if (name.equals("targetProfile")) { 2443 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.type.targetProfile"); 2444 } 2445 else if (name.equals("aggregation")) { 2446 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.type.aggregation"); 2447 } 2448 else if (name.equals("versioning")) { 2449 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.type.versioning"); 2450 } 2451 else 2452 return super.addChild(name); 2453 } 2454 2455 public TypeRefComponent copy() { 2456 TypeRefComponent dst = new TypeRefComponent(); 2457 copyValues(dst); 2458 return dst; 2459 } 2460 2461 public void copyValues(TypeRefComponent dst) { 2462 super.copyValues(dst); 2463 dst.code = code == null ? null : code.copy(); 2464 if (profile != null) { 2465 dst.profile = new ArrayList<CanonicalType>(); 2466 for (CanonicalType i : profile) 2467 dst.profile.add(i.copy()); 2468 }; 2469 if (targetProfile != null) { 2470 dst.targetProfile = new ArrayList<CanonicalType>(); 2471 for (CanonicalType i : targetProfile) 2472 dst.targetProfile.add(i.copy()); 2473 }; 2474 if (aggregation != null) { 2475 dst.aggregation = new ArrayList<Enumeration<AggregationMode>>(); 2476 for (Enumeration<AggregationMode> i : aggregation) 2477 dst.aggregation.add(i.copy()); 2478 }; 2479 dst.versioning = versioning == null ? null : versioning.copy(); 2480 } 2481 2482 @Override 2483 public boolean equalsDeep(Base other_) { 2484 if (!super.equalsDeep(other_)) 2485 return false; 2486 if (!(other_ instanceof TypeRefComponent)) 2487 return false; 2488 TypeRefComponent o = (TypeRefComponent) other_; 2489 return compareDeep(code, o.code, true) && compareDeep(profile, o.profile, true) && compareDeep(targetProfile, o.targetProfile, true) 2490 && compareDeep(aggregation, o.aggregation, true) && compareDeep(versioning, o.versioning, true) 2491 ; 2492 } 2493 2494 @Override 2495 public boolean equalsShallow(Base other_) { 2496 if (!super.equalsShallow(other_)) 2497 return false; 2498 if (!(other_ instanceof TypeRefComponent)) 2499 return false; 2500 TypeRefComponent o = (TypeRefComponent) other_; 2501 return compareValues(code, o.code, true) && compareValues(profile, o.profile, true) && compareValues(targetProfile, o.targetProfile, true) 2502 && compareValues(aggregation, o.aggregation, true) && compareValues(versioning, o.versioning, true) 2503 ; 2504 } 2505 2506 public boolean isEmpty() { 2507 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, profile, targetProfile 2508 , aggregation, versioning); 2509 } 2510 2511 public String fhirType() { 2512 return "ElementDefinition.type"; 2513 2514 } 2515 2516// added from java-adornments.txt: 2517public boolean hasTarget() { 2518 return Utilities.existsInList(getCode(), "Reference", "canonical", "CodeableReference"); 2519 } 2520 2521 /** 2522 * This code checks for the system prefix and returns the FHIR type 2523 * 2524 * @return 2525 */ 2526 public String getWorkingCode() { 2527 if (hasExtension(ToolingExtensions.EXT_FHIR_TYPE)) 2528 return getExtensionString(ToolingExtensions.EXT_FHIR_TYPE); 2529 if (!hasCodeElement()) 2530 return null; 2531 if (getCodeElement().hasExtension(ToolingExtensions.EXT_XML_TYPE)) { 2532 String s = getCodeElement().getExtensionString(ToolingExtensions.EXT_XML_TYPE); 2533 if ("xsd:gYear OR xsd:gYearMonth OR xsd:date OR xsd:dateTime".equalsIgnoreCase(s)) 2534 return "dateTime"; 2535 if ("xsd:gYear OR xsd:gYearMonth OR xsd:date".equalsIgnoreCase(s)) 2536 return "date"; 2537 if ("xsd:dateTime".equalsIgnoreCase(s)) 2538 return "instant"; 2539 if ("xsd:token".equals(s)) 2540 return "code"; 2541 if ("xsd:boolean".equals(s)) 2542 return "boolean"; 2543 if ("xsd:string".equals(s)) 2544 return "string"; 2545 if ("xsd:time".equals(s)) 2546 return "time"; 2547 if ("xsd:int".equals(s)) 2548 return "integer"; 2549 if ("xsd:decimal OR xsd:double".equals(s)) 2550 return "decimal"; 2551 if ("xsd:decimal".equalsIgnoreCase(s)) 2552 return "decimal"; 2553 if ("xsd:base64Binary".equalsIgnoreCase(s)) 2554 return "base64Binary"; 2555 if ("xsd:positiveInteger".equalsIgnoreCase(s)) 2556 return "positiveInt"; 2557 if ("xsd:nonNegativeInteger".equalsIgnoreCase(s)) 2558 return "unsignedInt"; 2559 if ("xsd:anyURI".equalsIgnoreCase(s)) 2560 return "uri"; 2561 2562 throw new Error("Unknown xml type '"+s+"'"); 2563 } 2564 return getCode(); 2565 } 2566 2567 @Override 2568 public String toString() { 2569 String res = getCode(); 2570 if (hasProfile()) { 2571 res = res + "{"; 2572 boolean first = true; 2573 for (CanonicalType s : getProfile()) { 2574 if (first) first = false; else res = res + "|"; 2575 res = res + s.getValue(); 2576 } 2577 res = res + "}"; 2578 } 2579 if (hasTargetProfile()) { 2580 res = res + "->("; 2581 boolean first = true; 2582 for (CanonicalType s : getTargetProfile()) { 2583 if (first) first = false; else res = res + "|"; 2584 res = res + s.getValue(); 2585 } 2586 res = res + ")"; 2587 } 2588 return res; 2589 } 2590 2591 public String getName() { 2592 return getWorkingCode(); 2593 } 2594 2595 public boolean isResourceReference() { 2596 return "Reference".equals(getCode()) && hasTargetProfile(); 2597 } 2598// end addition 2599 } 2600 2601 @Block() 2602 public static class ElementDefinitionExampleComponent extends Element implements IBaseDatatypeElement { 2603 /** 2604 * Describes the purpose of this example amoung the set of examples. 2605 */ 2606 @Child(name = "label", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true) 2607 @Description(shortDefinition="Describes the purpose of this example", formalDefinition="Describes the purpose of this example amoung the set of examples." ) 2608 protected StringType label; 2609 2610 /** 2611 * The actual value for the element, which must be one of the types allowed for this element. 2612 */ 2613 @Child(name = "value", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, Integer64Type.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, CodeableReference.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, RatioRange.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Availability.class, ExtendedContactDetail.class, Dosage.class, Meta.class}, order=2, min=1, max=1, modifier=false, summary=true) 2614 @Description(shortDefinition="Value of Example (one of allowed types)", formalDefinition="The actual value for the element, which must be one of the types allowed for this element." ) 2615 protected DataType value; 2616 2617 private static final long serialVersionUID = 463190922L; 2618 2619 /** 2620 * Constructor 2621 */ 2622 public ElementDefinitionExampleComponent() { 2623 super(); 2624 } 2625 2626 /** 2627 * Constructor 2628 */ 2629 public ElementDefinitionExampleComponent(String label, DataType value) { 2630 super(); 2631 this.setLabel(label); 2632 this.setValue(value); 2633 } 2634 2635 /** 2636 * @return {@link #label} (Describes the purpose of this example amoung the set of examples.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value 2637 */ 2638 public StringType getLabelElement() { 2639 if (this.label == null) 2640 if (Configuration.errorOnAutoCreate()) 2641 throw new Error("Attempt to auto-create ElementDefinitionExampleComponent.label"); 2642 else if (Configuration.doAutoCreate()) 2643 this.label = new StringType(); // bb 2644 return this.label; 2645 } 2646 2647 public boolean hasLabelElement() { 2648 return this.label != null && !this.label.isEmpty(); 2649 } 2650 2651 public boolean hasLabel() { 2652 return this.label != null && !this.label.isEmpty(); 2653 } 2654 2655 /** 2656 * @param value {@link #label} (Describes the purpose of this example amoung the set of examples.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value 2657 */ 2658 public ElementDefinitionExampleComponent setLabelElement(StringType value) { 2659 this.label = value; 2660 return this; 2661 } 2662 2663 /** 2664 * @return Describes the purpose of this example amoung the set of examples. 2665 */ 2666 public String getLabel() { 2667 return this.label == null ? null : this.label.getValue(); 2668 } 2669 2670 /** 2671 * @param value Describes the purpose of this example amoung the set of examples. 2672 */ 2673 public ElementDefinitionExampleComponent setLabel(String value) { 2674 if (this.label == null) 2675 this.label = new StringType(); 2676 this.label.setValue(value); 2677 return this; 2678 } 2679 2680 /** 2681 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2682 */ 2683 public DataType getValue() { 2684 return this.value; 2685 } 2686 2687 /** 2688 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2689 */ 2690 public Base64BinaryType getValueBase64BinaryType() throws FHIRException { 2691 if (this.value == null) 2692 this.value = new Base64BinaryType(); 2693 if (!(this.value instanceof Base64BinaryType)) 2694 throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.value.getClass().getName()+" was encountered"); 2695 return (Base64BinaryType) this.value; 2696 } 2697 2698 public boolean hasValueBase64BinaryType() { 2699 return this != null && this.value instanceof Base64BinaryType; 2700 } 2701 2702 /** 2703 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2704 */ 2705 public BooleanType getValueBooleanType() throws FHIRException { 2706 if (this.value == null) 2707 this.value = new BooleanType(); 2708 if (!(this.value instanceof BooleanType)) 2709 throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered"); 2710 return (BooleanType) this.value; 2711 } 2712 2713 public boolean hasValueBooleanType() { 2714 return this != null && this.value instanceof BooleanType; 2715 } 2716 2717 /** 2718 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2719 */ 2720 public CanonicalType getValueCanonicalType() throws FHIRException { 2721 if (this.value == null) 2722 this.value = new CanonicalType(); 2723 if (!(this.value instanceof CanonicalType)) 2724 throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.value.getClass().getName()+" was encountered"); 2725 return (CanonicalType) this.value; 2726 } 2727 2728 public boolean hasValueCanonicalType() { 2729 return this != null && this.value instanceof CanonicalType; 2730 } 2731 2732 /** 2733 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2734 */ 2735 public CodeType getValueCodeType() throws FHIRException { 2736 if (this.value == null) 2737 this.value = new CodeType(); 2738 if (!(this.value instanceof CodeType)) 2739 throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered"); 2740 return (CodeType) this.value; 2741 } 2742 2743 public boolean hasValueCodeType() { 2744 return this != null && this.value instanceof CodeType; 2745 } 2746 2747 /** 2748 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2749 */ 2750 public DateType getValueDateType() throws FHIRException { 2751 if (this.value == null) 2752 this.value = new DateType(); 2753 if (!(this.value instanceof DateType)) 2754 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.value.getClass().getName()+" was encountered"); 2755 return (DateType) this.value; 2756 } 2757 2758 public boolean hasValueDateType() { 2759 return this != null && this.value instanceof DateType; 2760 } 2761 2762 /** 2763 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2764 */ 2765 public DateTimeType getValueDateTimeType() throws FHIRException { 2766 if (this.value == null) 2767 this.value = new DateTimeType(); 2768 if (!(this.value instanceof DateTimeType)) 2769 throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered"); 2770 return (DateTimeType) this.value; 2771 } 2772 2773 public boolean hasValueDateTimeType() { 2774 return this != null && this.value instanceof DateTimeType; 2775 } 2776 2777 /** 2778 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2779 */ 2780 public DecimalType getValueDecimalType() throws FHIRException { 2781 if (this.value == null) 2782 this.value = new DecimalType(); 2783 if (!(this.value instanceof DecimalType)) 2784 throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered"); 2785 return (DecimalType) this.value; 2786 } 2787 2788 public boolean hasValueDecimalType() { 2789 return this != null && this.value instanceof DecimalType; 2790 } 2791 2792 /** 2793 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2794 */ 2795 public IdType getValueIdType() throws FHIRException { 2796 if (this.value == null) 2797 this.value = new IdType(); 2798 if (!(this.value instanceof IdType)) 2799 throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.value.getClass().getName()+" was encountered"); 2800 return (IdType) this.value; 2801 } 2802 2803 public boolean hasValueIdType() { 2804 return this != null && this.value instanceof IdType; 2805 } 2806 2807 /** 2808 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2809 */ 2810 public InstantType getValueInstantType() throws FHIRException { 2811 if (this.value == null) 2812 this.value = new InstantType(); 2813 if (!(this.value instanceof InstantType)) 2814 throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.value.getClass().getName()+" was encountered"); 2815 return (InstantType) this.value; 2816 } 2817 2818 public boolean hasValueInstantType() { 2819 return this != null && this.value instanceof InstantType; 2820 } 2821 2822 /** 2823 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2824 */ 2825 public IntegerType getValueIntegerType() throws FHIRException { 2826 if (this.value == null) 2827 this.value = new IntegerType(); 2828 if (!(this.value instanceof IntegerType)) 2829 throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered"); 2830 return (IntegerType) this.value; 2831 } 2832 2833 public boolean hasValueIntegerType() { 2834 return this != null && this.value instanceof IntegerType; 2835 } 2836 2837 /** 2838 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2839 */ 2840 public Integer64Type getValueInteger64Type() throws FHIRException { 2841 if (this.value == null) 2842 this.value = new Integer64Type(); 2843 if (!(this.value instanceof Integer64Type)) 2844 throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.value.getClass().getName()+" was encountered"); 2845 return (Integer64Type) this.value; 2846 } 2847 2848 public boolean hasValueInteger64Type() { 2849 return this != null && this.value instanceof Integer64Type; 2850 } 2851 2852 /** 2853 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2854 */ 2855 public MarkdownType getValueMarkdownType() throws FHIRException { 2856 if (this.value == null) 2857 this.value = new MarkdownType(); 2858 if (!(this.value instanceof MarkdownType)) 2859 throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.value.getClass().getName()+" was encountered"); 2860 return (MarkdownType) this.value; 2861 } 2862 2863 public boolean hasValueMarkdownType() { 2864 return this != null && this.value instanceof MarkdownType; 2865 } 2866 2867 /** 2868 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2869 */ 2870 public OidType getValueOidType() throws FHIRException { 2871 if (this.value == null) 2872 this.value = new OidType(); 2873 if (!(this.value instanceof OidType)) 2874 throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.value.getClass().getName()+" was encountered"); 2875 return (OidType) this.value; 2876 } 2877 2878 public boolean hasValueOidType() { 2879 return this != null && this.value instanceof OidType; 2880 } 2881 2882 /** 2883 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2884 */ 2885 public PositiveIntType getValuePositiveIntType() throws FHIRException { 2886 if (this.value == null) 2887 this.value = new PositiveIntType(); 2888 if (!(this.value instanceof PositiveIntType)) 2889 throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.value.getClass().getName()+" was encountered"); 2890 return (PositiveIntType) this.value; 2891 } 2892 2893 public boolean hasValuePositiveIntType() { 2894 return this != null && this.value instanceof PositiveIntType; 2895 } 2896 2897 /** 2898 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2899 */ 2900 public StringType getValueStringType() throws FHIRException { 2901 if (this.value == null) 2902 this.value = new StringType(); 2903 if (!(this.value instanceof StringType)) 2904 throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered"); 2905 return (StringType) this.value; 2906 } 2907 2908 public boolean hasValueStringType() { 2909 return this != null && this.value instanceof StringType; 2910 } 2911 2912 /** 2913 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2914 */ 2915 public TimeType getValueTimeType() throws FHIRException { 2916 if (this.value == null) 2917 this.value = new TimeType(); 2918 if (!(this.value instanceof TimeType)) 2919 throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.value.getClass().getName()+" was encountered"); 2920 return (TimeType) this.value; 2921 } 2922 2923 public boolean hasValueTimeType() { 2924 return this != null && this.value instanceof TimeType; 2925 } 2926 2927 /** 2928 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2929 */ 2930 public UnsignedIntType getValueUnsignedIntType() throws FHIRException { 2931 if (this.value == null) 2932 this.value = new UnsignedIntType(); 2933 if (!(this.value instanceof UnsignedIntType)) 2934 throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.value.getClass().getName()+" was encountered"); 2935 return (UnsignedIntType) this.value; 2936 } 2937 2938 public boolean hasValueUnsignedIntType() { 2939 return this != null && this.value instanceof UnsignedIntType; 2940 } 2941 2942 /** 2943 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2944 */ 2945 public UriType getValueUriType() throws FHIRException { 2946 if (this.value == null) 2947 this.value = new UriType(); 2948 if (!(this.value instanceof UriType)) 2949 throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.value.getClass().getName()+" was encountered"); 2950 return (UriType) this.value; 2951 } 2952 2953 public boolean hasValueUriType() { 2954 return this != null && this.value instanceof UriType; 2955 } 2956 2957 /** 2958 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2959 */ 2960 public UrlType getValueUrlType() throws FHIRException { 2961 if (this.value == null) 2962 this.value = new UrlType(); 2963 if (!(this.value instanceof UrlType)) 2964 throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.value.getClass().getName()+" was encountered"); 2965 return (UrlType) this.value; 2966 } 2967 2968 public boolean hasValueUrlType() { 2969 return this != null && this.value instanceof UrlType; 2970 } 2971 2972 /** 2973 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2974 */ 2975 public UuidType getValueUuidType() throws FHIRException { 2976 if (this.value == null) 2977 this.value = new UuidType(); 2978 if (!(this.value instanceof UuidType)) 2979 throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.value.getClass().getName()+" was encountered"); 2980 return (UuidType) this.value; 2981 } 2982 2983 public boolean hasValueUuidType() { 2984 return this != null && this.value instanceof UuidType; 2985 } 2986 2987 /** 2988 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 2989 */ 2990 public Address getValueAddress() throws FHIRException { 2991 if (this.value == null) 2992 this.value = new Address(); 2993 if (!(this.value instanceof Address)) 2994 throw new FHIRException("Type mismatch: the type Address was expected, but "+this.value.getClass().getName()+" was encountered"); 2995 return (Address) this.value; 2996 } 2997 2998 public boolean hasValueAddress() { 2999 return this != null && this.value instanceof Address; 3000 } 3001 3002 /** 3003 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3004 */ 3005 public Age getValueAge() throws FHIRException { 3006 if (this.value == null) 3007 this.value = new Age(); 3008 if (!(this.value instanceof Age)) 3009 throw new FHIRException("Type mismatch: the type Age was expected, but "+this.value.getClass().getName()+" was encountered"); 3010 return (Age) this.value; 3011 } 3012 3013 public boolean hasValueAge() { 3014 return this != null && this.value instanceof Age; 3015 } 3016 3017 /** 3018 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3019 */ 3020 public Annotation getValueAnnotation() throws FHIRException { 3021 if (this.value == null) 3022 this.value = new Annotation(); 3023 if (!(this.value instanceof Annotation)) 3024 throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.value.getClass().getName()+" was encountered"); 3025 return (Annotation) this.value; 3026 } 3027 3028 public boolean hasValueAnnotation() { 3029 return this != null && this.value instanceof Annotation; 3030 } 3031 3032 /** 3033 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3034 */ 3035 public Attachment getValueAttachment() throws FHIRException { 3036 if (this.value == null) 3037 this.value = new Attachment(); 3038 if (!(this.value instanceof Attachment)) 3039 throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.value.getClass().getName()+" was encountered"); 3040 return (Attachment) this.value; 3041 } 3042 3043 public boolean hasValueAttachment() { 3044 return this != null && this.value instanceof Attachment; 3045 } 3046 3047 /** 3048 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3049 */ 3050 public CodeableConcept getValueCodeableConcept() throws FHIRException { 3051 if (this.value == null) 3052 this.value = new CodeableConcept(); 3053 if (!(this.value instanceof CodeableConcept)) 3054 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered"); 3055 return (CodeableConcept) this.value; 3056 } 3057 3058 public boolean hasValueCodeableConcept() { 3059 return this != null && this.value instanceof CodeableConcept; 3060 } 3061 3062 /** 3063 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3064 */ 3065 public CodeableReference getValueCodeableReference() throws FHIRException { 3066 if (this.value == null) 3067 this.value = new CodeableReference(); 3068 if (!(this.value instanceof CodeableReference)) 3069 throw new FHIRException("Type mismatch: the type CodeableReference was expected, but "+this.value.getClass().getName()+" was encountered"); 3070 return (CodeableReference) this.value; 3071 } 3072 3073 public boolean hasValueCodeableReference() { 3074 return this != null && this.value instanceof CodeableReference; 3075 } 3076 3077 /** 3078 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3079 */ 3080 public Coding getValueCoding() throws FHIRException { 3081 if (this.value == null) 3082 this.value = new Coding(); 3083 if (!(this.value instanceof Coding)) 3084 throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered"); 3085 return (Coding) this.value; 3086 } 3087 3088 public boolean hasValueCoding() { 3089 return this != null && this.value instanceof Coding; 3090 } 3091 3092 /** 3093 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3094 */ 3095 public ContactPoint getValueContactPoint() throws FHIRException { 3096 if (this.value == null) 3097 this.value = new ContactPoint(); 3098 if (!(this.value instanceof ContactPoint)) 3099 throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.value.getClass().getName()+" was encountered"); 3100 return (ContactPoint) this.value; 3101 } 3102 3103 public boolean hasValueContactPoint() { 3104 return this != null && this.value instanceof ContactPoint; 3105 } 3106 3107 /** 3108 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3109 */ 3110 public Count getValueCount() throws FHIRException { 3111 if (this.value == null) 3112 this.value = new Count(); 3113 if (!(this.value instanceof Count)) 3114 throw new FHIRException("Type mismatch: the type Count was expected, but "+this.value.getClass().getName()+" was encountered"); 3115 return (Count) this.value; 3116 } 3117 3118 public boolean hasValueCount() { 3119 return this != null && this.value instanceof Count; 3120 } 3121 3122 /** 3123 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3124 */ 3125 public Distance getValueDistance() throws FHIRException { 3126 if (this.value == null) 3127 this.value = new Distance(); 3128 if (!(this.value instanceof Distance)) 3129 throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.value.getClass().getName()+" was encountered"); 3130 return (Distance) this.value; 3131 } 3132 3133 public boolean hasValueDistance() { 3134 return this != null && this.value instanceof Distance; 3135 } 3136 3137 /** 3138 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3139 */ 3140 public Duration getValueDuration() throws FHIRException { 3141 if (this.value == null) 3142 this.value = new Duration(); 3143 if (!(this.value instanceof Duration)) 3144 throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.value.getClass().getName()+" was encountered"); 3145 return (Duration) this.value; 3146 } 3147 3148 public boolean hasValueDuration() { 3149 return this != null && this.value instanceof Duration; 3150 } 3151 3152 /** 3153 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3154 */ 3155 public HumanName getValueHumanName() throws FHIRException { 3156 if (this.value == null) 3157 this.value = new HumanName(); 3158 if (!(this.value instanceof HumanName)) 3159 throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.value.getClass().getName()+" was encountered"); 3160 return (HumanName) this.value; 3161 } 3162 3163 public boolean hasValueHumanName() { 3164 return this != null && this.value instanceof HumanName; 3165 } 3166 3167 /** 3168 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3169 */ 3170 public Identifier getValueIdentifier() throws FHIRException { 3171 if (this.value == null) 3172 this.value = new Identifier(); 3173 if (!(this.value instanceof Identifier)) 3174 throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.value.getClass().getName()+" was encountered"); 3175 return (Identifier) this.value; 3176 } 3177 3178 public boolean hasValueIdentifier() { 3179 return this != null && this.value instanceof Identifier; 3180 } 3181 3182 /** 3183 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3184 */ 3185 public Money getValueMoney() throws FHIRException { 3186 if (this.value == null) 3187 this.value = new Money(); 3188 if (!(this.value instanceof Money)) 3189 throw new FHIRException("Type mismatch: the type Money was expected, but "+this.value.getClass().getName()+" was encountered"); 3190 return (Money) this.value; 3191 } 3192 3193 public boolean hasValueMoney() { 3194 return this != null && this.value instanceof Money; 3195 } 3196 3197 /** 3198 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3199 */ 3200 public Period getValuePeriod() throws FHIRException { 3201 if (this.value == null) 3202 this.value = new Period(); 3203 if (!(this.value instanceof Period)) 3204 throw new FHIRException("Type mismatch: the type Period was expected, but "+this.value.getClass().getName()+" was encountered"); 3205 return (Period) this.value; 3206 } 3207 3208 public boolean hasValuePeriod() { 3209 return this != null && this.value instanceof Period; 3210 } 3211 3212 /** 3213 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3214 */ 3215 public Quantity getValueQuantity() throws FHIRException { 3216 if (this.value == null) 3217 this.value = new Quantity(); 3218 if (!(this.value instanceof Quantity)) 3219 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered"); 3220 return (Quantity) this.value; 3221 } 3222 3223 public boolean hasValueQuantity() { 3224 return this != null && this.value instanceof Quantity; 3225 } 3226 3227 /** 3228 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3229 */ 3230 public Range getValueRange() throws FHIRException { 3231 if (this.value == null) 3232 this.value = new Range(); 3233 if (!(this.value instanceof Range)) 3234 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered"); 3235 return (Range) this.value; 3236 } 3237 3238 public boolean hasValueRange() { 3239 return this != null && this.value instanceof Range; 3240 } 3241 3242 /** 3243 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3244 */ 3245 public Ratio getValueRatio() throws FHIRException { 3246 if (this.value == null) 3247 this.value = new Ratio(); 3248 if (!(this.value instanceof Ratio)) 3249 throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.value.getClass().getName()+" was encountered"); 3250 return (Ratio) this.value; 3251 } 3252 3253 public boolean hasValueRatio() { 3254 return this != null && this.value instanceof Ratio; 3255 } 3256 3257 /** 3258 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3259 */ 3260 public RatioRange getValueRatioRange() throws FHIRException { 3261 if (this.value == null) 3262 this.value = new RatioRange(); 3263 if (!(this.value instanceof RatioRange)) 3264 throw new FHIRException("Type mismatch: the type RatioRange was expected, but "+this.value.getClass().getName()+" was encountered"); 3265 return (RatioRange) this.value; 3266 } 3267 3268 public boolean hasValueRatioRange() { 3269 return this != null && this.value instanceof RatioRange; 3270 } 3271 3272 /** 3273 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3274 */ 3275 public Reference getValueReference() throws FHIRException { 3276 if (this.value == null) 3277 this.value = new Reference(); 3278 if (!(this.value instanceof Reference)) 3279 throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered"); 3280 return (Reference) this.value; 3281 } 3282 3283 public boolean hasValueReference() { 3284 return this != null && this.value instanceof Reference; 3285 } 3286 3287 /** 3288 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3289 */ 3290 public SampledData getValueSampledData() throws FHIRException { 3291 if (this.value == null) 3292 this.value = new SampledData(); 3293 if (!(this.value instanceof SampledData)) 3294 throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.value.getClass().getName()+" was encountered"); 3295 return (SampledData) this.value; 3296 } 3297 3298 public boolean hasValueSampledData() { 3299 return this != null && this.value instanceof SampledData; 3300 } 3301 3302 /** 3303 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3304 */ 3305 public Signature getValueSignature() throws FHIRException { 3306 if (this.value == null) 3307 this.value = new Signature(); 3308 if (!(this.value instanceof Signature)) 3309 throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.value.getClass().getName()+" was encountered"); 3310 return (Signature) this.value; 3311 } 3312 3313 public boolean hasValueSignature() { 3314 return this != null && this.value instanceof Signature; 3315 } 3316 3317 /** 3318 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3319 */ 3320 public Timing getValueTiming() throws FHIRException { 3321 if (this.value == null) 3322 this.value = new Timing(); 3323 if (!(this.value instanceof Timing)) 3324 throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.value.getClass().getName()+" was encountered"); 3325 return (Timing) this.value; 3326 } 3327 3328 public boolean hasValueTiming() { 3329 return this != null && this.value instanceof Timing; 3330 } 3331 3332 /** 3333 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3334 */ 3335 public ContactDetail getValueContactDetail() throws FHIRException { 3336 if (this.value == null) 3337 this.value = new ContactDetail(); 3338 if (!(this.value instanceof ContactDetail)) 3339 throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.value.getClass().getName()+" was encountered"); 3340 return (ContactDetail) this.value; 3341 } 3342 3343 public boolean hasValueContactDetail() { 3344 return this != null && this.value instanceof ContactDetail; 3345 } 3346 3347 /** 3348 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3349 */ 3350 public DataRequirement getValueDataRequirement() throws FHIRException { 3351 if (this.value == null) 3352 this.value = new DataRequirement(); 3353 if (!(this.value instanceof DataRequirement)) 3354 throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.value.getClass().getName()+" was encountered"); 3355 return (DataRequirement) this.value; 3356 } 3357 3358 public boolean hasValueDataRequirement() { 3359 return this != null && this.value instanceof DataRequirement; 3360 } 3361 3362 /** 3363 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3364 */ 3365 public Expression getValueExpression() throws FHIRException { 3366 if (this.value == null) 3367 this.value = new Expression(); 3368 if (!(this.value instanceof Expression)) 3369 throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.value.getClass().getName()+" was encountered"); 3370 return (Expression) this.value; 3371 } 3372 3373 public boolean hasValueExpression() { 3374 return this != null && this.value instanceof Expression; 3375 } 3376 3377 /** 3378 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3379 */ 3380 public ParameterDefinition getValueParameterDefinition() throws FHIRException { 3381 if (this.value == null) 3382 this.value = new ParameterDefinition(); 3383 if (!(this.value instanceof ParameterDefinition)) 3384 throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.value.getClass().getName()+" was encountered"); 3385 return (ParameterDefinition) this.value; 3386 } 3387 3388 public boolean hasValueParameterDefinition() { 3389 return this != null && this.value instanceof ParameterDefinition; 3390 } 3391 3392 /** 3393 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3394 */ 3395 public RelatedArtifact getValueRelatedArtifact() throws FHIRException { 3396 if (this.value == null) 3397 this.value = new RelatedArtifact(); 3398 if (!(this.value instanceof RelatedArtifact)) 3399 throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.value.getClass().getName()+" was encountered"); 3400 return (RelatedArtifact) this.value; 3401 } 3402 3403 public boolean hasValueRelatedArtifact() { 3404 return this != null && this.value instanceof RelatedArtifact; 3405 } 3406 3407 /** 3408 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3409 */ 3410 public TriggerDefinition getValueTriggerDefinition() throws FHIRException { 3411 if (this.value == null) 3412 this.value = new TriggerDefinition(); 3413 if (!(this.value instanceof TriggerDefinition)) 3414 throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.value.getClass().getName()+" was encountered"); 3415 return (TriggerDefinition) this.value; 3416 } 3417 3418 public boolean hasValueTriggerDefinition() { 3419 return this != null && this.value instanceof TriggerDefinition; 3420 } 3421 3422 /** 3423 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3424 */ 3425 public UsageContext getValueUsageContext() throws FHIRException { 3426 if (this.value == null) 3427 this.value = new UsageContext(); 3428 if (!(this.value instanceof UsageContext)) 3429 throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.value.getClass().getName()+" was encountered"); 3430 return (UsageContext) this.value; 3431 } 3432 3433 public boolean hasValueUsageContext() { 3434 return this != null && this.value instanceof UsageContext; 3435 } 3436 3437 /** 3438 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3439 */ 3440 public Availability getValueAvailability() throws FHIRException { 3441 if (this.value == null) 3442 this.value = new Availability(); 3443 if (!(this.value instanceof Availability)) 3444 throw new FHIRException("Type mismatch: the type Availability was expected, but "+this.value.getClass().getName()+" was encountered"); 3445 return (Availability) this.value; 3446 } 3447 3448 public boolean hasValueAvailability() { 3449 return this != null && this.value instanceof Availability; 3450 } 3451 3452 /** 3453 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3454 */ 3455 public ExtendedContactDetail getValueExtendedContactDetail() throws FHIRException { 3456 if (this.value == null) 3457 this.value = new ExtendedContactDetail(); 3458 if (!(this.value instanceof ExtendedContactDetail)) 3459 throw new FHIRException("Type mismatch: the type ExtendedContactDetail was expected, but "+this.value.getClass().getName()+" was encountered"); 3460 return (ExtendedContactDetail) this.value; 3461 } 3462 3463 public boolean hasValueExtendedContactDetail() { 3464 return this != null && this.value instanceof ExtendedContactDetail; 3465 } 3466 3467 /** 3468 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3469 */ 3470 public Dosage getValueDosage() throws FHIRException { 3471 if (this.value == null) 3472 this.value = new Dosage(); 3473 if (!(this.value instanceof Dosage)) 3474 throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.value.getClass().getName()+" was encountered"); 3475 return (Dosage) this.value; 3476 } 3477 3478 public boolean hasValueDosage() { 3479 return this != null && this.value instanceof Dosage; 3480 } 3481 3482 /** 3483 * @return {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3484 */ 3485 public Meta getValueMeta() throws FHIRException { 3486 if (this.value == null) 3487 this.value = new Meta(); 3488 if (!(this.value instanceof Meta)) 3489 throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.value.getClass().getName()+" was encountered"); 3490 return (Meta) this.value; 3491 } 3492 3493 public boolean hasValueMeta() { 3494 return this != null && this.value instanceof Meta; 3495 } 3496 3497 public boolean hasValue() { 3498 return this.value != null && !this.value.isEmpty(); 3499 } 3500 3501 /** 3502 * @param value {@link #value} (The actual value for the element, which must be one of the types allowed for this element.) 3503 */ 3504 public ElementDefinitionExampleComponent setValue(DataType value) { 3505 if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof CodeableReference || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof RatioRange || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Availability || value instanceof ExtendedContactDetail || value instanceof Dosage || value instanceof Meta)) 3506 throw new Error("Not the right type for ElementDefinition.example.value[x]: "+value.fhirType()); 3507 this.value = value; 3508 return this; 3509 } 3510 3511 protected void listChildren(List<Property> children) { 3512 super.listChildren(children); 3513 children.add(new Property("label", "string", "Describes the purpose of this example amoung the set of examples.", 0, 1, label)); 3514 children.add(new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value)); 3515 } 3516 3517 @Override 3518 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 3519 switch (_hash) { 3520 case 102727412: /*label*/ return new Property("label", "string", "Describes the purpose of this example amoung the set of examples.", 0, 1, label); 3521 case -1410166417: /*value[x]*/ return new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3522 case 111972721: /*value*/ return new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3523 case -1535024575: /*valueBase64Binary*/ return new Property("value[x]", "base64Binary", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3524 case 733421943: /*valueBoolean*/ return new Property("value[x]", "boolean", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3525 case -786218365: /*valueCanonical*/ return new Property("value[x]", "canonical", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3526 case -766209282: /*valueCode*/ return new Property("value[x]", "code", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3527 case -766192449: /*valueDate*/ return new Property("value[x]", "date", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3528 case 1047929900: /*valueDateTime*/ return new Property("value[x]", "dateTime", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3529 case -2083993440: /*valueDecimal*/ return new Property("value[x]", "decimal", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3530 case 231604844: /*valueId*/ return new Property("value[x]", "id", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3531 case -1668687056: /*valueInstant*/ return new Property("value[x]", "instant", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3532 case -1668204915: /*valueInteger*/ return new Property("value[x]", "integer", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3533 case -1122120181: /*valueInteger64*/ return new Property("value[x]", "integer64", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3534 case -497880704: /*valueMarkdown*/ return new Property("value[x]", "markdown", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3535 case -1410178407: /*valueOid*/ return new Property("value[x]", "oid", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3536 case -1249932027: /*valuePositiveInt*/ return new Property("value[x]", "positiveInt", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3537 case -1424603934: /*valueString*/ return new Property("value[x]", "string", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3538 case -765708322: /*valueTime*/ return new Property("value[x]", "time", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3539 case 26529417: /*valueUnsignedInt*/ return new Property("value[x]", "unsignedInt", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3540 case -1410172357: /*valueUri*/ return new Property("value[x]", "uri", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3541 case -1410172354: /*valueUrl*/ return new Property("value[x]", "url", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3542 case -765667124: /*valueUuid*/ return new Property("value[x]", "uuid", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3543 case -478981821: /*valueAddress*/ return new Property("value[x]", "Address", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3544 case -1410191922: /*valueAge*/ return new Property("value[x]", "Age", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3545 case -67108992: /*valueAnnotation*/ return new Property("value[x]", "Annotation", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3546 case -475566732: /*valueAttachment*/ return new Property("value[x]", "Attachment", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3547 case 924902896: /*valueCodeableConcept*/ return new Property("value[x]", "CodeableConcept", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3548 case -257955629: /*valueCodeableReference*/ return new Property("value[x]", "CodeableReference", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3549 case -1887705029: /*valueCoding*/ return new Property("value[x]", "Coding", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3550 case 944904545: /*valueContactPoint*/ return new Property("value[x]", "ContactPoint", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3551 case 2017332766: /*valueCount*/ return new Property("value[x]", "Count", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3552 case -456359802: /*valueDistance*/ return new Property("value[x]", "Distance", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3553 case 1558135333: /*valueDuration*/ return new Property("value[x]", "Duration", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3554 case -2026205465: /*valueHumanName*/ return new Property("value[x]", "HumanName", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3555 case -130498310: /*valueIdentifier*/ return new Property("value[x]", "Identifier", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3556 case 2026560975: /*valueMoney*/ return new Property("value[x]", "Money", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3557 case -1524344174: /*valuePeriod*/ return new Property("value[x]", "Period", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3558 case -2029823716: /*valueQuantity*/ return new Property("value[x]", "Quantity", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3559 case 2030761548: /*valueRange*/ return new Property("value[x]", "Range", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3560 case 2030767386: /*valueRatio*/ return new Property("value[x]", "Ratio", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3561 case -706454461: /*valueRatioRange*/ return new Property("value[x]", "RatioRange", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3562 case 1755241690: /*valueReference*/ return new Property("value[x]", "Reference", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3563 case -962229101: /*valueSampledData*/ return new Property("value[x]", "SampledData", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3564 case -540985785: /*valueSignature*/ return new Property("value[x]", "Signature", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3565 case -1406282469: /*valueTiming*/ return new Property("value[x]", "Timing", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3566 case -1125200224: /*valueContactDetail*/ return new Property("value[x]", "ContactDetail", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3567 case 1710554248: /*valueDataRequirement*/ return new Property("value[x]", "DataRequirement", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3568 case -307517719: /*valueExpression*/ return new Property("value[x]", "Expression", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3569 case 1387478187: /*valueParameterDefinition*/ return new Property("value[x]", "ParameterDefinition", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3570 case 1748214124: /*valueRelatedArtifact*/ return new Property("value[x]", "RelatedArtifact", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3571 case 976830394: /*valueTriggerDefinition*/ return new Property("value[x]", "TriggerDefinition", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3572 case 588000479: /*valueUsageContext*/ return new Property("value[x]", "UsageContext", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3573 case 1678530924: /*valueAvailability*/ return new Property("value[x]", "Availability", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3574 case -1567222041: /*valueExtendedContactDetail*/ return new Property("value[x]", "ExtendedContactDetail", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3575 case -1858636920: /*valueDosage*/ return new Property("value[x]", "Dosage", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3576 case -765920490: /*valueMeta*/ return new Property("value[x]", "Meta", "The actual value for the element, which must be one of the types allowed for this element.", 0, 1, value); 3577 default: return super.getNamedProperty(_hash, _name, _checkValid); 3578 } 3579 3580 } 3581 3582 @Override 3583 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 3584 switch (hash) { 3585 case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType 3586 case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType 3587 default: return super.getProperty(hash, name, checkValid); 3588 } 3589 3590 } 3591 3592 @Override 3593 public Base setProperty(int hash, String name, Base value) throws FHIRException { 3594 switch (hash) { 3595 case 102727412: // label 3596 this.label = TypeConvertor.castToString(value); // StringType 3597 return value; 3598 case 111972721: // value 3599 this.value = TypeConvertor.castToType(value); // DataType 3600 return value; 3601 default: return super.setProperty(hash, name, value); 3602 } 3603 3604 } 3605 3606 @Override 3607 public Base setProperty(String name, Base value) throws FHIRException { 3608 if (name.equals("label")) { 3609 this.label = TypeConvertor.castToString(value); // StringType 3610 } else if (name.equals("value[x]")) { 3611 this.value = TypeConvertor.castToType(value); // DataType 3612 } else 3613 return super.setProperty(name, value); 3614 return value; 3615 } 3616 3617 @Override 3618 public Base makeProperty(int hash, String name) throws FHIRException { 3619 switch (hash) { 3620 case 102727412: return getLabelElement(); 3621 case -1410166417: return getValue(); 3622 case 111972721: return getValue(); 3623 default: return super.makeProperty(hash, name); 3624 } 3625 3626 } 3627 3628 @Override 3629 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 3630 switch (hash) { 3631 case 102727412: /*label*/ return new String[] {"string"}; 3632 case 111972721: /*value*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "integer64", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "CodeableReference", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "RatioRange", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Availability", "ExtendedContactDetail", "Dosage", "Meta"}; 3633 default: return super.getTypesForProperty(hash, name); 3634 } 3635 3636 } 3637 3638 @Override 3639 public Base addChild(String name) throws FHIRException { 3640 if (name.equals("label")) { 3641 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.example.label"); 3642 } 3643 else if (name.equals("valueBase64Binary")) { 3644 this.value = new Base64BinaryType(); 3645 return this.value; 3646 } 3647 else if (name.equals("valueBoolean")) { 3648 this.value = new BooleanType(); 3649 return this.value; 3650 } 3651 else if (name.equals("valueCanonical")) { 3652 this.value = new CanonicalType(); 3653 return this.value; 3654 } 3655 else if (name.equals("valueCode")) { 3656 this.value = new CodeType(); 3657 return this.value; 3658 } 3659 else if (name.equals("valueDate")) { 3660 this.value = new DateType(); 3661 return this.value; 3662 } 3663 else if (name.equals("valueDateTime")) { 3664 this.value = new DateTimeType(); 3665 return this.value; 3666 } 3667 else if (name.equals("valueDecimal")) { 3668 this.value = new DecimalType(); 3669 return this.value; 3670 } 3671 else if (name.equals("valueId")) { 3672 this.value = new IdType(); 3673 return this.value; 3674 } 3675 else if (name.equals("valueInstant")) { 3676 this.value = new InstantType(); 3677 return this.value; 3678 } 3679 else if (name.equals("valueInteger")) { 3680 this.value = new IntegerType(); 3681 return this.value; 3682 } 3683 else if (name.equals("valueInteger64")) { 3684 this.value = new Integer64Type(); 3685 return this.value; 3686 } 3687 else if (name.equals("valueMarkdown")) { 3688 this.value = new MarkdownType(); 3689 return this.value; 3690 } 3691 else if (name.equals("valueOid")) { 3692 this.value = new OidType(); 3693 return this.value; 3694 } 3695 else if (name.equals("valuePositiveInt")) { 3696 this.value = new PositiveIntType(); 3697 return this.value; 3698 } 3699 else if (name.equals("valueString")) { 3700 this.value = new StringType(); 3701 return this.value; 3702 } 3703 else if (name.equals("valueTime")) { 3704 this.value = new TimeType(); 3705 return this.value; 3706 } 3707 else if (name.equals("valueUnsignedInt")) { 3708 this.value = new UnsignedIntType(); 3709 return this.value; 3710 } 3711 else if (name.equals("valueUri")) { 3712 this.value = new UriType(); 3713 return this.value; 3714 } 3715 else if (name.equals("valueUrl")) { 3716 this.value = new UrlType(); 3717 return this.value; 3718 } 3719 else if (name.equals("valueUuid")) { 3720 this.value = new UuidType(); 3721 return this.value; 3722 } 3723 else if (name.equals("valueAddress")) { 3724 this.value = new Address(); 3725 return this.value; 3726 } 3727 else if (name.equals("valueAge")) { 3728 this.value = new Age(); 3729 return this.value; 3730 } 3731 else if (name.equals("valueAnnotation")) { 3732 this.value = new Annotation(); 3733 return this.value; 3734 } 3735 else if (name.equals("valueAttachment")) { 3736 this.value = new Attachment(); 3737 return this.value; 3738 } 3739 else if (name.equals("valueCodeableConcept")) { 3740 this.value = new CodeableConcept(); 3741 return this.value; 3742 } 3743 else if (name.equals("valueCodeableReference")) { 3744 this.value = new CodeableReference(); 3745 return this.value; 3746 } 3747 else if (name.equals("valueCoding")) { 3748 this.value = new Coding(); 3749 return this.value; 3750 } 3751 else if (name.equals("valueContactPoint")) { 3752 this.value = new ContactPoint(); 3753 return this.value; 3754 } 3755 else if (name.equals("valueCount")) { 3756 this.value = new Count(); 3757 return this.value; 3758 } 3759 else if (name.equals("valueDistance")) { 3760 this.value = new Distance(); 3761 return this.value; 3762 } 3763 else if (name.equals("valueDuration")) { 3764 this.value = new Duration(); 3765 return this.value; 3766 } 3767 else if (name.equals("valueHumanName")) { 3768 this.value = new HumanName(); 3769 return this.value; 3770 } 3771 else if (name.equals("valueIdentifier")) { 3772 this.value = new Identifier(); 3773 return this.value; 3774 } 3775 else if (name.equals("valueMoney")) { 3776 this.value = new Money(); 3777 return this.value; 3778 } 3779 else if (name.equals("valuePeriod")) { 3780 this.value = new Period(); 3781 return this.value; 3782 } 3783 else if (name.equals("valueQuantity")) { 3784 this.value = new Quantity(); 3785 return this.value; 3786 } 3787 else if (name.equals("valueRange")) { 3788 this.value = new Range(); 3789 return this.value; 3790 } 3791 else if (name.equals("valueRatio")) { 3792 this.value = new Ratio(); 3793 return this.value; 3794 } 3795 else if (name.equals("valueRatioRange")) { 3796 this.value = new RatioRange(); 3797 return this.value; 3798 } 3799 else if (name.equals("valueReference")) { 3800 this.value = new Reference(); 3801 return this.value; 3802 } 3803 else if (name.equals("valueSampledData")) { 3804 this.value = new SampledData(); 3805 return this.value; 3806 } 3807 else if (name.equals("valueSignature")) { 3808 this.value = new Signature(); 3809 return this.value; 3810 } 3811 else if (name.equals("valueTiming")) { 3812 this.value = new Timing(); 3813 return this.value; 3814 } 3815 else if (name.equals("valueContactDetail")) { 3816 this.value = new ContactDetail(); 3817 return this.value; 3818 } 3819 else if (name.equals("valueDataRequirement")) { 3820 this.value = new DataRequirement(); 3821 return this.value; 3822 } 3823 else if (name.equals("valueExpression")) { 3824 this.value = new Expression(); 3825 return this.value; 3826 } 3827 else if (name.equals("valueParameterDefinition")) { 3828 this.value = new ParameterDefinition(); 3829 return this.value; 3830 } 3831 else if (name.equals("valueRelatedArtifact")) { 3832 this.value = new RelatedArtifact(); 3833 return this.value; 3834 } 3835 else if (name.equals("valueTriggerDefinition")) { 3836 this.value = new TriggerDefinition(); 3837 return this.value; 3838 } 3839 else if (name.equals("valueUsageContext")) { 3840 this.value = new UsageContext(); 3841 return this.value; 3842 } 3843 else if (name.equals("valueAvailability")) { 3844 this.value = new Availability(); 3845 return this.value; 3846 } 3847 else if (name.equals("valueExtendedContactDetail")) { 3848 this.value = new ExtendedContactDetail(); 3849 return this.value; 3850 } 3851 else if (name.equals("valueDosage")) { 3852 this.value = new Dosage(); 3853 return this.value; 3854 } 3855 else if (name.equals("valueMeta")) { 3856 this.value = new Meta(); 3857 return this.value; 3858 } 3859 else 3860 return super.addChild(name); 3861 } 3862 3863 public ElementDefinitionExampleComponent copy() { 3864 ElementDefinitionExampleComponent dst = new ElementDefinitionExampleComponent(); 3865 copyValues(dst); 3866 return dst; 3867 } 3868 3869 public void copyValues(ElementDefinitionExampleComponent dst) { 3870 super.copyValues(dst); 3871 dst.label = label == null ? null : label.copy(); 3872 dst.value = value == null ? null : value.copy(); 3873 } 3874 3875 @Override 3876 public boolean equalsDeep(Base other_) { 3877 if (!super.equalsDeep(other_)) 3878 return false; 3879 if (!(other_ instanceof ElementDefinitionExampleComponent)) 3880 return false; 3881 ElementDefinitionExampleComponent o = (ElementDefinitionExampleComponent) other_; 3882 return compareDeep(label, o.label, true) && compareDeep(value, o.value, true); 3883 } 3884 3885 @Override 3886 public boolean equalsShallow(Base other_) { 3887 if (!super.equalsShallow(other_)) 3888 return false; 3889 if (!(other_ instanceof ElementDefinitionExampleComponent)) 3890 return false; 3891 ElementDefinitionExampleComponent o = (ElementDefinitionExampleComponent) other_; 3892 return compareValues(label, o.label, true); 3893 } 3894 3895 public boolean isEmpty() { 3896 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(label, value); 3897 } 3898 3899 public String fhirType() { 3900 return "ElementDefinition.example"; 3901 3902 } 3903 3904 } 3905 3906 @Block() 3907 public static class ElementDefinitionConstraintComponent extends Element implements IBaseDatatypeElement { 3908 /** 3909 * Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality. 3910 */ 3911 @Child(name = "key", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true) 3912 @Description(shortDefinition="Target of 'condition' reference above", formalDefinition="Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality." ) 3913 protected IdType key; 3914 3915 /** 3916 * Description of why this constraint is necessary or appropriate. 3917 */ 3918 @Child(name = "requirements", type = {MarkdownType.class}, order=2, min=0, max=1, modifier=false, summary=true) 3919 @Description(shortDefinition="Why this constraint is necessary or appropriate", formalDefinition="Description of why this constraint is necessary or appropriate." ) 3920 protected MarkdownType requirements; 3921 3922 /** 3923 * Identifies the impact constraint violation has on the conformance of the instance. 3924 */ 3925 @Child(name = "severity", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=true) 3926 @Description(shortDefinition="error | warning", formalDefinition="Identifies the impact constraint violation has on the conformance of the instance." ) 3927 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/constraint-severity") 3928 protected Enumeration<ConstraintSeverity> severity; 3929 3930 /** 3931 * If true, indicates that the warning or best practice guideline should be suppressed. 3932 */ 3933 @Child(name = "suppress", type = {BooleanType.class}, order=4, min=0, max=1, modifier=false, summary=true) 3934 @Description(shortDefinition="Suppress warning or hint in profile", formalDefinition="If true, indicates that the warning or best practice guideline should be suppressed." ) 3935 protected BooleanType suppress; 3936 3937 /** 3938 * Text that can be used to describe the constraint in messages identifying that the constraint has been violated. 3939 */ 3940 @Child(name = "human", type = {StringType.class}, order=5, min=1, max=1, modifier=false, summary=true) 3941 @Description(shortDefinition="Human description of constraint", formalDefinition="Text that can be used to describe the constraint in messages identifying that the constraint has been violated." ) 3942 protected StringType human; 3943 3944 /** 3945 * A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met. 3946 */ 3947 @Child(name = "expression", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true) 3948 @Description(shortDefinition="FHIRPath expression of constraint", formalDefinition="A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met." ) 3949 protected StringType expression; 3950 3951 /** 3952 * A reference to the original source of the constraint, for traceability purposes. 3953 */ 3954 @Child(name = "source", type = {CanonicalType.class}, order=7, min=0, max=1, modifier=false, summary=true) 3955 @Description(shortDefinition="Reference to original source of constraint", formalDefinition="A reference to the original source of the constraint, for traceability purposes." ) 3956 protected CanonicalType source; 3957 3958 private static final long serialVersionUID = 1642607838L; 3959 3960 /** 3961 * Constructor 3962 */ 3963 public ElementDefinitionConstraintComponent() { 3964 super(); 3965 } 3966 3967 /** 3968 * Constructor 3969 */ 3970 public ElementDefinitionConstraintComponent(String key, ConstraintSeverity severity, String human) { 3971 super(); 3972 this.setKey(key); 3973 this.setSeverity(severity); 3974 this.setHuman(human); 3975 } 3976 3977 /** 3978 * @return {@link #key} (Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality.). This is the underlying object with id, value and extensions. The accessor "getKey" gives direct access to the value 3979 */ 3980 public IdType getKeyElement() { 3981 if (this.key == null) 3982 if (Configuration.errorOnAutoCreate()) 3983 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.key"); 3984 else if (Configuration.doAutoCreate()) 3985 this.key = new IdType(); // bb 3986 return this.key; 3987 } 3988 3989 public boolean hasKeyElement() { 3990 return this.key != null && !this.key.isEmpty(); 3991 } 3992 3993 public boolean hasKey() { 3994 return this.key != null && !this.key.isEmpty(); 3995 } 3996 3997 /** 3998 * @param value {@link #key} (Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality.). This is the underlying object with id, value and extensions. The accessor "getKey" gives direct access to the value 3999 */ 4000 public ElementDefinitionConstraintComponent setKeyElement(IdType value) { 4001 this.key = value; 4002 return this; 4003 } 4004 4005 /** 4006 * @return Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality. 4007 */ 4008 public String getKey() { 4009 return this.key == null ? null : this.key.getValue(); 4010 } 4011 4012 /** 4013 * @param value Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality. 4014 */ 4015 public ElementDefinitionConstraintComponent setKey(String value) { 4016 if (this.key == null) 4017 this.key = new IdType(); 4018 this.key.setValue(value); 4019 return this; 4020 } 4021 4022 /** 4023 * @return {@link #requirements} (Description of why this constraint is necessary or appropriate.). This is the underlying object with id, value and extensions. The accessor "getRequirements" gives direct access to the value 4024 */ 4025 public MarkdownType getRequirementsElement() { 4026 if (this.requirements == null) 4027 if (Configuration.errorOnAutoCreate()) 4028 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.requirements"); 4029 else if (Configuration.doAutoCreate()) 4030 this.requirements = new MarkdownType(); // bb 4031 return this.requirements; 4032 } 4033 4034 public boolean hasRequirementsElement() { 4035 return this.requirements != null && !this.requirements.isEmpty(); 4036 } 4037 4038 public boolean hasRequirements() { 4039 return this.requirements != null && !this.requirements.isEmpty(); 4040 } 4041 4042 /** 4043 * @param value {@link #requirements} (Description of why this constraint is necessary or appropriate.). This is the underlying object with id, value and extensions. The accessor "getRequirements" gives direct access to the value 4044 */ 4045 public ElementDefinitionConstraintComponent setRequirementsElement(MarkdownType value) { 4046 this.requirements = value; 4047 return this; 4048 } 4049 4050 /** 4051 * @return Description of why this constraint is necessary or appropriate. 4052 */ 4053 public String getRequirements() { 4054 return this.requirements == null ? null : this.requirements.getValue(); 4055 } 4056 4057 /** 4058 * @param value Description of why this constraint is necessary or appropriate. 4059 */ 4060 public ElementDefinitionConstraintComponent setRequirements(String value) { 4061 if (value == null) 4062 this.requirements = null; 4063 else { 4064 if (this.requirements == null) 4065 this.requirements = new MarkdownType(); 4066 this.requirements.setValue(value); 4067 } 4068 return this; 4069 } 4070 4071 /** 4072 * @return {@link #severity} (Identifies the impact constraint violation has on the conformance of the instance.). This is the underlying object with id, value and extensions. The accessor "getSeverity" gives direct access to the value 4073 */ 4074 public Enumeration<ConstraintSeverity> getSeverityElement() { 4075 if (this.severity == null) 4076 if (Configuration.errorOnAutoCreate()) 4077 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.severity"); 4078 else if (Configuration.doAutoCreate()) 4079 this.severity = new Enumeration<ConstraintSeverity>(new ConstraintSeverityEnumFactory()); // bb 4080 return this.severity; 4081 } 4082 4083 public boolean hasSeverityElement() { 4084 return this.severity != null && !this.severity.isEmpty(); 4085 } 4086 4087 public boolean hasSeverity() { 4088 return this.severity != null && !this.severity.isEmpty(); 4089 } 4090 4091 /** 4092 * @param value {@link #severity} (Identifies the impact constraint violation has on the conformance of the instance.). This is the underlying object with id, value and extensions. The accessor "getSeverity" gives direct access to the value 4093 */ 4094 public ElementDefinitionConstraintComponent setSeverityElement(Enumeration<ConstraintSeverity> value) { 4095 this.severity = value; 4096 return this; 4097 } 4098 4099 /** 4100 * @return Identifies the impact constraint violation has on the conformance of the instance. 4101 */ 4102 public ConstraintSeverity getSeverity() { 4103 return this.severity == null ? null : this.severity.getValue(); 4104 } 4105 4106 /** 4107 * @param value Identifies the impact constraint violation has on the conformance of the instance. 4108 */ 4109 public ElementDefinitionConstraintComponent setSeverity(ConstraintSeverity value) { 4110 if (this.severity == null) 4111 this.severity = new Enumeration<ConstraintSeverity>(new ConstraintSeverityEnumFactory()); 4112 this.severity.setValue(value); 4113 return this; 4114 } 4115 4116 /** 4117 * @return {@link #suppress} (If true, indicates that the warning or best practice guideline should be suppressed.). This is the underlying object with id, value and extensions. The accessor "getSuppress" gives direct access to the value 4118 */ 4119 public BooleanType getSuppressElement() { 4120 if (this.suppress == null) 4121 if (Configuration.errorOnAutoCreate()) 4122 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.suppress"); 4123 else if (Configuration.doAutoCreate()) 4124 this.suppress = new BooleanType(); // bb 4125 return this.suppress; 4126 } 4127 4128 public boolean hasSuppressElement() { 4129 return this.suppress != null && !this.suppress.isEmpty(); 4130 } 4131 4132 public boolean hasSuppress() { 4133 return this.suppress != null && !this.suppress.isEmpty(); 4134 } 4135 4136 /** 4137 * @param value {@link #suppress} (If true, indicates that the warning or best practice guideline should be suppressed.). This is the underlying object with id, value and extensions. The accessor "getSuppress" gives direct access to the value 4138 */ 4139 public ElementDefinitionConstraintComponent setSuppressElement(BooleanType value) { 4140 this.suppress = value; 4141 return this; 4142 } 4143 4144 /** 4145 * @return If true, indicates that the warning or best practice guideline should be suppressed. 4146 */ 4147 public boolean getSuppress() { 4148 return this.suppress == null || this.suppress.isEmpty() ? false : this.suppress.getValue(); 4149 } 4150 4151 /** 4152 * @param value If true, indicates that the warning or best practice guideline should be suppressed. 4153 */ 4154 public ElementDefinitionConstraintComponent setSuppress(boolean value) { 4155 if (this.suppress == null) 4156 this.suppress = new BooleanType(); 4157 this.suppress.setValue(value); 4158 return this; 4159 } 4160 4161 /** 4162 * @return {@link #human} (Text that can be used to describe the constraint in messages identifying that the constraint has been violated.). This is the underlying object with id, value and extensions. The accessor "getHuman" gives direct access to the value 4163 */ 4164 public StringType getHumanElement() { 4165 if (this.human == null) 4166 if (Configuration.errorOnAutoCreate()) 4167 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.human"); 4168 else if (Configuration.doAutoCreate()) 4169 this.human = new StringType(); // bb 4170 return this.human; 4171 } 4172 4173 public boolean hasHumanElement() { 4174 return this.human != null && !this.human.isEmpty(); 4175 } 4176 4177 public boolean hasHuman() { 4178 return this.human != null && !this.human.isEmpty(); 4179 } 4180 4181 /** 4182 * @param value {@link #human} (Text that can be used to describe the constraint in messages identifying that the constraint has been violated.). This is the underlying object with id, value and extensions. The accessor "getHuman" gives direct access to the value 4183 */ 4184 public ElementDefinitionConstraintComponent setHumanElement(StringType value) { 4185 this.human = value; 4186 return this; 4187 } 4188 4189 /** 4190 * @return Text that can be used to describe the constraint in messages identifying that the constraint has been violated. 4191 */ 4192 public String getHuman() { 4193 return this.human == null ? null : this.human.getValue(); 4194 } 4195 4196 /** 4197 * @param value Text that can be used to describe the constraint in messages identifying that the constraint has been violated. 4198 */ 4199 public ElementDefinitionConstraintComponent setHuman(String value) { 4200 if (this.human == null) 4201 this.human = new StringType(); 4202 this.human.setValue(value); 4203 return this; 4204 } 4205 4206 /** 4207 * @return {@link #expression} (A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value 4208 */ 4209 public StringType getExpressionElement() { 4210 if (this.expression == null) 4211 if (Configuration.errorOnAutoCreate()) 4212 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.expression"); 4213 else if (Configuration.doAutoCreate()) 4214 this.expression = new StringType(); // bb 4215 return this.expression; 4216 } 4217 4218 public boolean hasExpressionElement() { 4219 return this.expression != null && !this.expression.isEmpty(); 4220 } 4221 4222 public boolean hasExpression() { 4223 return this.expression != null && !this.expression.isEmpty(); 4224 } 4225 4226 /** 4227 * @param value {@link #expression} (A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value 4228 */ 4229 public ElementDefinitionConstraintComponent setExpressionElement(StringType value) { 4230 this.expression = value; 4231 return this; 4232 } 4233 4234 /** 4235 * @return A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met. 4236 */ 4237 public String getExpression() { 4238 return this.expression == null ? null : this.expression.getValue(); 4239 } 4240 4241 /** 4242 * @param value A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met. 4243 */ 4244 public ElementDefinitionConstraintComponent setExpression(String value) { 4245 if (Utilities.noString(value)) 4246 this.expression = null; 4247 else { 4248 if (this.expression == null) 4249 this.expression = new StringType(); 4250 this.expression.setValue(value); 4251 } 4252 return this; 4253 } 4254 4255 /** 4256 * @return {@link #source} (A reference to the original source of the constraint, for traceability purposes.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value 4257 */ 4258 public CanonicalType getSourceElement() { 4259 if (this.source == null) 4260 if (Configuration.errorOnAutoCreate()) 4261 throw new Error("Attempt to auto-create ElementDefinitionConstraintComponent.source"); 4262 else if (Configuration.doAutoCreate()) 4263 this.source = new CanonicalType(); // bb 4264 return this.source; 4265 } 4266 4267 public boolean hasSourceElement() { 4268 return this.source != null && !this.source.isEmpty(); 4269 } 4270 4271 public boolean hasSource() { 4272 return this.source != null && !this.source.isEmpty(); 4273 } 4274 4275 /** 4276 * @param value {@link #source} (A reference to the original source of the constraint, for traceability purposes.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value 4277 */ 4278 public ElementDefinitionConstraintComponent setSourceElement(CanonicalType value) { 4279 this.source = value; 4280 return this; 4281 } 4282 4283 /** 4284 * @return A reference to the original source of the constraint, for traceability purposes. 4285 */ 4286 public String getSource() { 4287 return this.source == null ? null : this.source.getValue(); 4288 } 4289 4290 /** 4291 * @param value A reference to the original source of the constraint, for traceability purposes. 4292 */ 4293 public ElementDefinitionConstraintComponent setSource(String value) { 4294 if (Utilities.noString(value)) 4295 this.source = null; 4296 else { 4297 if (this.source == null) 4298 this.source = new CanonicalType(); 4299 this.source.setValue(value); 4300 } 4301 return this; 4302 } 4303 4304 protected void listChildren(List<Property> children) { 4305 super.listChildren(children); 4306 children.add(new Property("key", "id", "Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality.", 0, 1, key)); 4307 children.add(new Property("requirements", "markdown", "Description of why this constraint is necessary or appropriate.", 0, 1, requirements)); 4308 children.add(new Property("severity", "code", "Identifies the impact constraint violation has on the conformance of the instance.", 0, 1, severity)); 4309 children.add(new Property("suppress", "boolean", "If true, indicates that the warning or best practice guideline should be suppressed.", 0, 1, suppress)); 4310 children.add(new Property("human", "string", "Text that can be used to describe the constraint in messages identifying that the constraint has been violated.", 0, 1, human)); 4311 children.add(new Property("expression", "string", "A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met.", 0, 1, expression)); 4312 children.add(new Property("source", "canonical(StructureDefinition)", "A reference to the original source of the constraint, for traceability purposes.", 0, 1, source)); 4313 } 4314 4315 @Override 4316 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 4317 switch (_hash) { 4318 case 106079: /*key*/ return new Property("key", "id", "Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality.", 0, 1, key); 4319 case -1619874672: /*requirements*/ return new Property("requirements", "markdown", "Description of why this constraint is necessary or appropriate.", 0, 1, requirements); 4320 case 1478300413: /*severity*/ return new Property("severity", "code", "Identifies the impact constraint violation has on the conformance of the instance.", 0, 1, severity); 4321 case -1663129931: /*suppress*/ return new Property("suppress", "boolean", "If true, indicates that the warning or best practice guideline should be suppressed.", 0, 1, suppress); 4322 case 99639597: /*human*/ return new Property("human", "string", "Text that can be used to describe the constraint in messages identifying that the constraint has been violated.", 0, 1, human); 4323 case -1795452264: /*expression*/ return new Property("expression", "string", "A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met.", 0, 1, expression); 4324 case -896505829: /*source*/ return new Property("source", "canonical(StructureDefinition)", "A reference to the original source of the constraint, for traceability purposes.", 0, 1, source); 4325 default: return super.getNamedProperty(_hash, _name, _checkValid); 4326 } 4327 4328 } 4329 4330 @Override 4331 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 4332 switch (hash) { 4333 case 106079: /*key*/ return this.key == null ? new Base[0] : new Base[] {this.key}; // IdType 4334 case -1619874672: /*requirements*/ return this.requirements == null ? new Base[0] : new Base[] {this.requirements}; // MarkdownType 4335 case 1478300413: /*severity*/ return this.severity == null ? new Base[0] : new Base[] {this.severity}; // Enumeration<ConstraintSeverity> 4336 case -1663129931: /*suppress*/ return this.suppress == null ? new Base[0] : new Base[] {this.suppress}; // BooleanType 4337 case 99639597: /*human*/ return this.human == null ? new Base[0] : new Base[] {this.human}; // StringType 4338 case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType 4339 case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // CanonicalType 4340 default: return super.getProperty(hash, name, checkValid); 4341 } 4342 4343 } 4344 4345 @Override 4346 public Base setProperty(int hash, String name, Base value) throws FHIRException { 4347 switch (hash) { 4348 case 106079: // key 4349 this.key = TypeConvertor.castToId(value); // IdType 4350 return value; 4351 case -1619874672: // requirements 4352 this.requirements = TypeConvertor.castToMarkdown(value); // MarkdownType 4353 return value; 4354 case 1478300413: // severity 4355 value = new ConstraintSeverityEnumFactory().fromType(TypeConvertor.castToCode(value)); 4356 this.severity = (Enumeration) value; // Enumeration<ConstraintSeverity> 4357 return value; 4358 case -1663129931: // suppress 4359 this.suppress = TypeConvertor.castToBoolean(value); // BooleanType 4360 return value; 4361 case 99639597: // human 4362 this.human = TypeConvertor.castToString(value); // StringType 4363 return value; 4364 case -1795452264: // expression 4365 this.expression = TypeConvertor.castToString(value); // StringType 4366 return value; 4367 case -896505829: // source 4368 this.source = TypeConvertor.castToCanonical(value); // CanonicalType 4369 return value; 4370 default: return super.setProperty(hash, name, value); 4371 } 4372 4373 } 4374 4375 @Override 4376 public Base setProperty(String name, Base value) throws FHIRException { 4377 if (name.equals("key")) { 4378 this.key = TypeConvertor.castToId(value); // IdType 4379 } else if (name.equals("requirements")) { 4380 this.requirements = TypeConvertor.castToMarkdown(value); // MarkdownType 4381 } else if (name.equals("severity")) { 4382 value = new ConstraintSeverityEnumFactory().fromType(TypeConvertor.castToCode(value)); 4383 this.severity = (Enumeration) value; // Enumeration<ConstraintSeverity> 4384 } else if (name.equals("suppress")) { 4385 this.suppress = TypeConvertor.castToBoolean(value); // BooleanType 4386 } else if (name.equals("human")) { 4387 this.human = TypeConvertor.castToString(value); // StringType 4388 } else if (name.equals("expression")) { 4389 this.expression = TypeConvertor.castToString(value); // StringType 4390 } else if (name.equals("source")) { 4391 this.source = TypeConvertor.castToCanonical(value); // CanonicalType 4392 } else 4393 return super.setProperty(name, value); 4394 return value; 4395 } 4396 4397 @Override 4398 public Base makeProperty(int hash, String name) throws FHIRException { 4399 switch (hash) { 4400 case 106079: return getKeyElement(); 4401 case -1619874672: return getRequirementsElement(); 4402 case 1478300413: return getSeverityElement(); 4403 case -1663129931: return getSuppressElement(); 4404 case 99639597: return getHumanElement(); 4405 case -1795452264: return getExpressionElement(); 4406 case -896505829: return getSourceElement(); 4407 default: return super.makeProperty(hash, name); 4408 } 4409 4410 } 4411 4412 @Override 4413 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 4414 switch (hash) { 4415 case 106079: /*key*/ return new String[] {"id"}; 4416 case -1619874672: /*requirements*/ return new String[] {"markdown"}; 4417 case 1478300413: /*severity*/ return new String[] {"code"}; 4418 case -1663129931: /*suppress*/ return new String[] {"boolean"}; 4419 case 99639597: /*human*/ return new String[] {"string"}; 4420 case -1795452264: /*expression*/ return new String[] {"string"}; 4421 case -896505829: /*source*/ return new String[] {"canonical"}; 4422 default: return super.getTypesForProperty(hash, name); 4423 } 4424 4425 } 4426 4427 @Override 4428 public Base addChild(String name) throws FHIRException { 4429 if (name.equals("key")) { 4430 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.key"); 4431 } 4432 else if (name.equals("requirements")) { 4433 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.requirements"); 4434 } 4435 else if (name.equals("severity")) { 4436 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.severity"); 4437 } 4438 else if (name.equals("suppress")) { 4439 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.suppress"); 4440 } 4441 else if (name.equals("human")) { 4442 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.human"); 4443 } 4444 else if (name.equals("expression")) { 4445 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.expression"); 4446 } 4447 else if (name.equals("source")) { 4448 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.constraint.source"); 4449 } 4450 else 4451 return super.addChild(name); 4452 } 4453 4454 public ElementDefinitionConstraintComponent copy() { 4455 ElementDefinitionConstraintComponent dst = new ElementDefinitionConstraintComponent(); 4456 copyValues(dst); 4457 return dst; 4458 } 4459 4460 public void copyValues(ElementDefinitionConstraintComponent dst) { 4461 super.copyValues(dst); 4462 dst.key = key == null ? null : key.copy(); 4463 dst.requirements = requirements == null ? null : requirements.copy(); 4464 dst.severity = severity == null ? null : severity.copy(); 4465 dst.suppress = suppress == null ? null : suppress.copy(); 4466 dst.human = human == null ? null : human.copy(); 4467 dst.expression = expression == null ? null : expression.copy(); 4468 dst.source = source == null ? null : source.copy(); 4469 } 4470 4471 @Override 4472 public boolean equalsDeep(Base other_) { 4473 if (!super.equalsDeep(other_)) 4474 return false; 4475 if (!(other_ instanceof ElementDefinitionConstraintComponent)) 4476 return false; 4477 ElementDefinitionConstraintComponent o = (ElementDefinitionConstraintComponent) other_; 4478 return compareDeep(key, o.key, true) && compareDeep(requirements, o.requirements, true) && compareDeep(severity, o.severity, true) 4479 && compareDeep(suppress, o.suppress, true) && compareDeep(human, o.human, true) && compareDeep(expression, o.expression, true) 4480 && compareDeep(source, o.source, true); 4481 } 4482 4483 @Override 4484 public boolean equalsShallow(Base other_) { 4485 if (!super.equalsShallow(other_)) 4486 return false; 4487 if (!(other_ instanceof ElementDefinitionConstraintComponent)) 4488 return false; 4489 ElementDefinitionConstraintComponent o = (ElementDefinitionConstraintComponent) other_; 4490 return compareValues(key, o.key, true) && compareValues(requirements, o.requirements, true) && compareValues(severity, o.severity, true) 4491 && compareValues(suppress, o.suppress, true) && compareValues(human, o.human, true) && compareValues(expression, o.expression, true) 4492 && compareValues(source, o.source, true); 4493 } 4494 4495 public boolean isEmpty() { 4496 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(key, requirements, severity 4497 , suppress, human, expression, source); 4498 } 4499 4500 public String fhirType() { 4501 return "ElementDefinition.constraint"; 4502 } 4503 4504 public boolean hasXpathElement() { 4505 return hasExtension(ToolingExtensions.EXT_XPATH_CONSTRAINT); 4506 } 4507 4508 public boolean hasXpath() { 4509 return hasExtension(ToolingExtensions.EXT_XPATH_CONSTRAINT); 4510 } 4511 4512 public StringType getXpathElement() { 4513 return hasXpathElement() ? getExtensionByUrl(ToolingExtensions.EXT_XPATH_CONSTRAINT).getValueStringType() : new StringType(); 4514 } 4515 4516 public void setXpathElement(StringType value) { 4517 if (hasXpath()) { 4518 getExtensionByUrl(ToolingExtensions.EXT_XPATH_CONSTRAINT).setValue(value); 4519 } else { 4520 addExtension(ToolingExtensions.EXT_XPATH_CONSTRAINT, value); 4521 } 4522 } 4523 } 4524 4525 @Block() 4526 public static class ElementDefinitionObligationComponent extends Element implements IBaseDatatypeElement { 4527 /** 4528 * Codes, potentially combination code, that describe the obligations that apply to implementing applications. 4529 */ 4530 @Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true) 4531 @Description(shortDefinition="Combination code describing the nature of the obligation", formalDefinition="Codes, potentially combination code, that describe the obligations that apply to implementing applications." ) 4532 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/obligation") 4533 protected Coding code; 4534 4535 /** 4536 * Actor(s) to which the obligation applies. 4537 */ 4538 @Child(name = "actor", type = {CanonicalType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 4539 @Description(shortDefinition="Actor(s) this obligation applies to (all actors if none)", formalDefinition="Actor(s) to which the obligation applies." ) 4540 protected List<CanonicalType> actor; 4541 4542 /** 4543 * Human readable documentation of the purpose or application of the obligation. 4544 */ 4545 @Child(name = "documentation", type = {MarkdownType.class}, order=3, min=0, max=1, modifier=false, summary=true) 4546 @Description(shortDefinition="Documentation of the purpose or application of the obligation", formalDefinition="Human readable documentation of the purpose or application of the obligation." ) 4547 protected MarkdownType documentation; 4548 4549 /** 4550 * Qualifies the usage of the obligation. Typically obligations are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling. 4551 */ 4552 @Child(name = "usage", type = {UsageContext.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 4553 @Description(shortDefinition="Qualifies the usage - jurisdiction, gender, workflow status etc", formalDefinition="Qualifies the usage of the obligation. Typically obligations are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling." ) 4554 protected List<UsageContext> usage; 4555 4556 /** 4557 * A FHIRPath expression that restricts to the obligation to one of a set of repeats. 4558 */ 4559 @Child(name = "filter", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true) 4560 @Description(shortDefinition="Limits obligation to some repeats by FHIRPath", formalDefinition="A FHIRPath expression that restricts to the obligation to one of a set of repeats." ) 4561 protected StringType filter; 4562 4563 /** 4564 * Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath. 4565 */ 4566 @Child(name = "filterDocumentation", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true) 4567 @Description(shortDefinition="Ddescribes the intent of the filter (short)", formalDefinition="Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath." ) 4568 protected StringType filterDocumentation; 4569 4570 /** 4571 * A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference. 4572 */ 4573 @Child(name = "process", type = {UriType.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 4574 @Description(shortDefinition="The obligation only applies when perfomring the indicated process", formalDefinition="A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference." ) 4575 protected List<UriType> process; 4576 4577 private static final long serialVersionUID = -1311481885L; 4578 4579 /** 4580 * Constructor 4581 */ 4582 public ElementDefinitionObligationComponent() { 4583 super(); 4584 } 4585 4586 /** 4587 * Constructor 4588 */ 4589 public ElementDefinitionObligationComponent(Coding code) { 4590 super(); 4591 this.setCode(code); 4592 } 4593 4594 /** 4595 * @return {@link #code} (Codes, potentially combination code, that describe the obligations that apply to implementing applications.) 4596 */ 4597 public Coding getCode() { 4598 if (this.code == null) 4599 if (Configuration.errorOnAutoCreate()) 4600 throw new Error("Attempt to auto-create ElementDefinitionObligationComponent.code"); 4601 else if (Configuration.doAutoCreate()) 4602 this.code = new Coding(); // cc 4603 return this.code; 4604 } 4605 4606 public boolean hasCode() { 4607 return this.code != null && !this.code.isEmpty(); 4608 } 4609 4610 /** 4611 * @param value {@link #code} (Codes, potentially combination code, that describe the obligations that apply to implementing applications.) 4612 */ 4613 public ElementDefinitionObligationComponent setCode(Coding value) { 4614 this.code = value; 4615 return this; 4616 } 4617 4618 /** 4619 * @return {@link #actor} (Actor(s) to which the obligation applies.) 4620 */ 4621 public List<CanonicalType> getActor() { 4622 if (this.actor == null) 4623 this.actor = new ArrayList<CanonicalType>(); 4624 return this.actor; 4625 } 4626 4627 /** 4628 * @return Returns a reference to <code>this</code> for easy method chaining 4629 */ 4630 public ElementDefinitionObligationComponent setActor(List<CanonicalType> theActor) { 4631 this.actor = theActor; 4632 return this; 4633 } 4634 4635 public boolean hasActor() { 4636 if (this.actor == null) 4637 return false; 4638 for (CanonicalType item : this.actor) 4639 if (!item.isEmpty()) 4640 return true; 4641 return false; 4642 } 4643 4644 /** 4645 * @return {@link #actor} (Actor(s) to which the obligation applies.) 4646 */ 4647 public CanonicalType addActorElement() {//2 4648 CanonicalType t = new CanonicalType(); 4649 if (this.actor == null) 4650 this.actor = new ArrayList<CanonicalType>(); 4651 this.actor.add(t); 4652 return t; 4653 } 4654 4655 /** 4656 * @param value {@link #actor} (Actor(s) to which the obligation applies.) 4657 */ 4658 public ElementDefinitionObligationComponent addActor(String value) { //1 4659 CanonicalType t = new CanonicalType(); 4660 t.setValue(value); 4661 if (this.actor == null) 4662 this.actor = new ArrayList<CanonicalType>(); 4663 this.actor.add(t); 4664 return this; 4665 } 4666 4667 /** 4668 * @param value {@link #actor} (Actor(s) to which the obligation applies.) 4669 */ 4670 public boolean hasActor(String value) { 4671 if (this.actor == null) 4672 return false; 4673 for (CanonicalType v : this.actor) 4674 if (v.getValue().equals(value)) // canonical 4675 return true; 4676 return false; 4677 } 4678 4679 /** 4680 * @return {@link #documentation} (Human readable documentation of the purpose or application of the obligation.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value 4681 */ 4682 public MarkdownType getDocumentationElement() { 4683 if (this.documentation == null) 4684 if (Configuration.errorOnAutoCreate()) 4685 throw new Error("Attempt to auto-create ElementDefinitionObligationComponent.documentation"); 4686 else if (Configuration.doAutoCreate()) 4687 this.documentation = new MarkdownType(); // bb 4688 return this.documentation; 4689 } 4690 4691 public boolean hasDocumentationElement() { 4692 return this.documentation != null && !this.documentation.isEmpty(); 4693 } 4694 4695 public boolean hasDocumentation() { 4696 return this.documentation != null && !this.documentation.isEmpty(); 4697 } 4698 4699 /** 4700 * @param value {@link #documentation} (Human readable documentation of the purpose or application of the obligation.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value 4701 */ 4702 public ElementDefinitionObligationComponent setDocumentationElement(MarkdownType value) { 4703 this.documentation = value; 4704 return this; 4705 } 4706 4707 /** 4708 * @return Human readable documentation of the purpose or application of the obligation. 4709 */ 4710 public String getDocumentation() { 4711 return this.documentation == null ? null : this.documentation.getValue(); 4712 } 4713 4714 /** 4715 * @param value Human readable documentation of the purpose or application of the obligation. 4716 */ 4717 public ElementDefinitionObligationComponent setDocumentation(String value) { 4718 if (value == null) 4719 this.documentation = null; 4720 else { 4721 if (this.documentation == null) 4722 this.documentation = new MarkdownType(); 4723 this.documentation.setValue(value); 4724 } 4725 return this; 4726 } 4727 4728 /** 4729 * @return {@link #usage} (Qualifies the usage of the obligation. Typically obligations are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling.) 4730 */ 4731 public List<UsageContext> getUsage() { 4732 if (this.usage == null) 4733 this.usage = new ArrayList<UsageContext>(); 4734 return this.usage; 4735 } 4736 4737 /** 4738 * @return Returns a reference to <code>this</code> for easy method chaining 4739 */ 4740 public ElementDefinitionObligationComponent setUsage(List<UsageContext> theUsage) { 4741 this.usage = theUsage; 4742 return this; 4743 } 4744 4745 public boolean hasUsage() { 4746 if (this.usage == null) 4747 return false; 4748 for (UsageContext item : this.usage) 4749 if (!item.isEmpty()) 4750 return true; 4751 return false; 4752 } 4753 4754 public UsageContext addUsage() { //3 4755 UsageContext t = new UsageContext(); 4756 if (this.usage == null) 4757 this.usage = new ArrayList<UsageContext>(); 4758 this.usage.add(t); 4759 return t; 4760 } 4761 4762 public ElementDefinitionObligationComponent addUsage(UsageContext t) { //3 4763 if (t == null) 4764 return this; 4765 if (this.usage == null) 4766 this.usage = new ArrayList<UsageContext>(); 4767 this.usage.add(t); 4768 return this; 4769 } 4770 4771 /** 4772 * @return The first repetition of repeating field {@link #usage}, creating it if it does not already exist {3} 4773 */ 4774 public UsageContext getUsageFirstRep() { 4775 if (getUsage().isEmpty()) { 4776 addUsage(); 4777 } 4778 return getUsage().get(0); 4779 } 4780 4781 /** 4782 * @return {@link #filter} (A FHIRPath expression that restricts to the obligation to one of a set of repeats.). This is the underlying object with id, value and extensions. The accessor "getFilter" gives direct access to the value 4783 */ 4784 public StringType getFilterElement() { 4785 if (this.filter == null) 4786 if (Configuration.errorOnAutoCreate()) 4787 throw new Error("Attempt to auto-create ElementDefinitionObligationComponent.filter"); 4788 else if (Configuration.doAutoCreate()) 4789 this.filter = new StringType(); // bb 4790 return this.filter; 4791 } 4792 4793 public boolean hasFilterElement() { 4794 return this.filter != null && !this.filter.isEmpty(); 4795 } 4796 4797 public boolean hasFilter() { 4798 return this.filter != null && !this.filter.isEmpty(); 4799 } 4800 4801 /** 4802 * @param value {@link #filter} (A FHIRPath expression that restricts to the obligation to one of a set of repeats.). This is the underlying object with id, value and extensions. The accessor "getFilter" gives direct access to the value 4803 */ 4804 public ElementDefinitionObligationComponent setFilterElement(StringType value) { 4805 this.filter = value; 4806 return this; 4807 } 4808 4809 /** 4810 * @return A FHIRPath expression that restricts to the obligation to one of a set of repeats. 4811 */ 4812 public String getFilter() { 4813 return this.filter == null ? null : this.filter.getValue(); 4814 } 4815 4816 /** 4817 * @param value A FHIRPath expression that restricts to the obligation to one of a set of repeats. 4818 */ 4819 public ElementDefinitionObligationComponent setFilter(String value) { 4820 if (Utilities.noString(value)) 4821 this.filter = null; 4822 else { 4823 if (this.filter == null) 4824 this.filter = new StringType(); 4825 this.filter.setValue(value); 4826 } 4827 return this; 4828 } 4829 4830 /** 4831 * @return {@link #filterDocumentation} (Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath.). This is the underlying object with id, value and extensions. The accessor "getFilterDocumentation" gives direct access to the value 4832 */ 4833 public StringType getFilterDocumentationElement() { 4834 if (this.filterDocumentation == null) 4835 if (Configuration.errorOnAutoCreate()) 4836 throw new Error("Attempt to auto-create ElementDefinitionObligationComponent.filterDocumentation"); 4837 else if (Configuration.doAutoCreate()) 4838 this.filterDocumentation = new StringType(); // bb 4839 return this.filterDocumentation; 4840 } 4841 4842 public boolean hasFilterDocumentationElement() { 4843 return this.filterDocumentation != null && !this.filterDocumentation.isEmpty(); 4844 } 4845 4846 public boolean hasFilterDocumentation() { 4847 return this.filterDocumentation != null && !this.filterDocumentation.isEmpty(); 4848 } 4849 4850 /** 4851 * @param value {@link #filterDocumentation} (Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath.). This is the underlying object with id, value and extensions. The accessor "getFilterDocumentation" gives direct access to the value 4852 */ 4853 public ElementDefinitionObligationComponent setFilterDocumentationElement(StringType value) { 4854 this.filterDocumentation = value; 4855 return this; 4856 } 4857 4858 /** 4859 * @return Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath. 4860 */ 4861 public String getFilterDocumentation() { 4862 return this.filterDocumentation == null ? null : this.filterDocumentation.getValue(); 4863 } 4864 4865 /** 4866 * @param value Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath. 4867 */ 4868 public ElementDefinitionObligationComponent setFilterDocumentation(String value) { 4869 if (Utilities.noString(value)) 4870 this.filterDocumentation = null; 4871 else { 4872 if (this.filterDocumentation == null) 4873 this.filterDocumentation = new StringType(); 4874 this.filterDocumentation.setValue(value); 4875 } 4876 return this; 4877 } 4878 4879 /** 4880 * @return {@link #process} (A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference.) 4881 */ 4882 public List<UriType> getProcess() { 4883 if (this.process == null) 4884 this.process = new ArrayList<UriType>(); 4885 return this.process; 4886 } 4887 4888 /** 4889 * @return Returns a reference to <code>this</code> for easy method chaining 4890 */ 4891 public ElementDefinitionObligationComponent setProcess(List<UriType> theProcess) { 4892 this.process = theProcess; 4893 return this; 4894 } 4895 4896 public boolean hasProcess() { 4897 if (this.process == null) 4898 return false; 4899 for (UriType item : this.process) 4900 if (!item.isEmpty()) 4901 return true; 4902 return false; 4903 } 4904 4905 /** 4906 * @return {@link #process} (A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference.) 4907 */ 4908 public UriType addProcessElement() {//2 4909 UriType t = new UriType(); 4910 if (this.process == null) 4911 this.process = new ArrayList<UriType>(); 4912 this.process.add(t); 4913 return t; 4914 } 4915 4916 /** 4917 * @param value {@link #process} (A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference.) 4918 */ 4919 public ElementDefinitionObligationComponent addProcess(String value) { //1 4920 UriType t = new UriType(); 4921 t.setValue(value); 4922 if (this.process == null) 4923 this.process = new ArrayList<UriType>(); 4924 this.process.add(t); 4925 return this; 4926 } 4927 4928 /** 4929 * @param value {@link #process} (A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference.) 4930 */ 4931 public boolean hasProcess(String value) { 4932 if (this.process == null) 4933 return false; 4934 for (UriType v : this.process) 4935 if (v.getValue().equals(value)) // uri 4936 return true; 4937 return false; 4938 } 4939 4940 protected void listChildren(List<Property> children) { 4941 super.listChildren(children); 4942 children.add(new Property("code", "Coding", "Codes, potentially combination code, that describe the obligations that apply to implementing applications.", 0, 1, code)); 4943 children.add(new Property("actor", "canonical(ActorDefinition)", "Actor(s) to which the obligation applies.", 0, java.lang.Integer.MAX_VALUE, actor)); 4944 children.add(new Property("documentation", "markdown", "Human readable documentation of the purpose or application of the obligation.", 0, 1, documentation)); 4945 children.add(new Property("usage", "UsageContext", "Qualifies the usage of the obligation. Typically obligations are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling.", 0, java.lang.Integer.MAX_VALUE, usage)); 4946 children.add(new Property("filter", "string", "A FHIRPath expression that restricts to the obligation to one of a set of repeats.", 0, 1, filter)); 4947 children.add(new Property("filterDocumentation", "string", "Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath.", 0, 1, filterDocumentation)); 4948 children.add(new Property("process", "uri", "A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference.", 0, java.lang.Integer.MAX_VALUE, process)); 4949 } 4950 4951 @Override 4952 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 4953 switch (_hash) { 4954 case 3059181: /*code*/ return new Property("code", "Coding", "Codes, potentially combination code, that describe the obligations that apply to implementing applications.", 0, 1, code); 4955 case 92645877: /*actor*/ return new Property("actor", "canonical(ActorDefinition)", "Actor(s) to which the obligation applies.", 0, java.lang.Integer.MAX_VALUE, actor); 4956 case 1587405498: /*documentation*/ return new Property("documentation", "markdown", "Human readable documentation of the purpose or application of the obligation.", 0, 1, documentation); 4957 case 111574433: /*usage*/ return new Property("usage", "UsageContext", "Qualifies the usage of the obligation. Typically obligations are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling.", 0, java.lang.Integer.MAX_VALUE, usage); 4958 case -1274492040: /*filter*/ return new Property("filter", "string", "A FHIRPath expression that restricts to the obligation to one of a set of repeats.", 0, 1, filter); 4959 case 1712106018: /*filterDocumentation*/ return new Property("filterDocumentation", "string", "Documents the FHIRPath expression for the benefit of users who are not familiar with FHIRPath.", 0, 1, filterDocumentation); 4960 case -309518737: /*process*/ return new Property("process", "uri", "A process that the obligation applies to. This might a canonical URL for an OperationDefinition, or some other reference.", 0, java.lang.Integer.MAX_VALUE, process); 4961 default: return super.getNamedProperty(_hash, _name, _checkValid); 4962 } 4963 4964 } 4965 4966 @Override 4967 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 4968 switch (hash) { 4969 case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Coding 4970 case 92645877: /*actor*/ return this.actor == null ? new Base[0] : this.actor.toArray(new Base[this.actor.size()]); // CanonicalType 4971 case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // MarkdownType 4972 case 111574433: /*usage*/ return this.usage == null ? new Base[0] : this.usage.toArray(new Base[this.usage.size()]); // UsageContext 4973 case -1274492040: /*filter*/ return this.filter == null ? new Base[0] : new Base[] {this.filter}; // StringType 4974 case 1712106018: /*filterDocumentation*/ return this.filterDocumentation == null ? new Base[0] : new Base[] {this.filterDocumentation}; // StringType 4975 case -309518737: /*process*/ return this.process == null ? new Base[0] : this.process.toArray(new Base[this.process.size()]); // UriType 4976 default: return super.getProperty(hash, name, checkValid); 4977 } 4978 4979 } 4980 4981 @Override 4982 public Base setProperty(int hash, String name, Base value) throws FHIRException { 4983 switch (hash) { 4984 case 3059181: // code 4985 this.code = TypeConvertor.castToCoding(value); // Coding 4986 return value; 4987 case 92645877: // actor 4988 this.getActor().add(TypeConvertor.castToCanonical(value)); // CanonicalType 4989 return value; 4990 case 1587405498: // documentation 4991 this.documentation = TypeConvertor.castToMarkdown(value); // MarkdownType 4992 return value; 4993 case 111574433: // usage 4994 this.getUsage().add(TypeConvertor.castToUsageContext(value)); // UsageContext 4995 return value; 4996 case -1274492040: // filter 4997 this.filter = TypeConvertor.castToString(value); // StringType 4998 return value; 4999 case 1712106018: // filterDocumentation 5000 this.filterDocumentation = TypeConvertor.castToString(value); // StringType 5001 return value; 5002 case -309518737: // process 5003 this.getProcess().add(TypeConvertor.castToUri(value)); // UriType 5004 return value; 5005 default: return super.setProperty(hash, name, value); 5006 } 5007 5008 } 5009 5010 @Override 5011 public Base setProperty(String name, Base value) throws FHIRException { 5012 if (name.equals("code")) { 5013 this.code = TypeConvertor.castToCoding(value); // Coding 5014 } else if (name.equals("actor")) { 5015 this.getActor().add(TypeConvertor.castToCanonical(value)); 5016 } else if (name.equals("documentation")) { 5017 this.documentation = TypeConvertor.castToMarkdown(value); // MarkdownType 5018 } else if (name.equals("usage")) { 5019 this.getUsage().add(TypeConvertor.castToUsageContext(value)); 5020 } else if (name.equals("filter")) { 5021 this.filter = TypeConvertor.castToString(value); // StringType 5022 } else if (name.equals("filterDocumentation")) { 5023 this.filterDocumentation = TypeConvertor.castToString(value); // StringType 5024 } else if (name.equals("process")) { 5025 this.getProcess().add(TypeConvertor.castToUri(value)); 5026 } else 5027 return super.setProperty(name, value); 5028 return value; 5029 } 5030 5031 @Override 5032 public Base makeProperty(int hash, String name) throws FHIRException { 5033 switch (hash) { 5034 case 3059181: return getCode(); 5035 case 92645877: return addActorElement(); 5036 case 1587405498: return getDocumentationElement(); 5037 case 111574433: return addUsage(); 5038 case -1274492040: return getFilterElement(); 5039 case 1712106018: return getFilterDocumentationElement(); 5040 case -309518737: return addProcessElement(); 5041 default: return super.makeProperty(hash, name); 5042 } 5043 5044 } 5045 5046 @Override 5047 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 5048 switch (hash) { 5049 case 3059181: /*code*/ return new String[] {"Coding"}; 5050 case 92645877: /*actor*/ return new String[] {"canonical"}; 5051 case 1587405498: /*documentation*/ return new String[] {"markdown"}; 5052 case 111574433: /*usage*/ return new String[] {"UsageContext"}; 5053 case -1274492040: /*filter*/ return new String[] {"string"}; 5054 case 1712106018: /*filterDocumentation*/ return new String[] {"string"}; 5055 case -309518737: /*process*/ return new String[] {"uri"}; 5056 default: return super.getTypesForProperty(hash, name); 5057 } 5058 5059 } 5060 5061 @Override 5062 public Base addChild(String name) throws FHIRException { 5063 if (name.equals("code")) { 5064 this.code = new Coding(); 5065 return this.code; 5066 } 5067 else if (name.equals("actor")) { 5068 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.obligation.actor"); 5069 } 5070 else if (name.equals("documentation")) { 5071 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.obligation.documentation"); 5072 } 5073 else if (name.equals("usage")) { 5074 return addUsage(); 5075 } 5076 else if (name.equals("filter")) { 5077 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.obligation.filter"); 5078 } 5079 else if (name.equals("filterDocumentation")) { 5080 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.obligation.filterDocumentation"); 5081 } 5082 else if (name.equals("process")) { 5083 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.obligation.process"); 5084 } 5085 else 5086 return super.addChild(name); 5087 } 5088 5089 public ElementDefinitionObligationComponent copy() { 5090 ElementDefinitionObligationComponent dst = new ElementDefinitionObligationComponent(); 5091 copyValues(dst); 5092 return dst; 5093 } 5094 5095 public void copyValues(ElementDefinitionObligationComponent dst) { 5096 super.copyValues(dst); 5097 dst.code = code == null ? null : code.copy(); 5098 if (actor != null) { 5099 dst.actor = new ArrayList<CanonicalType>(); 5100 for (CanonicalType i : actor) 5101 dst.actor.add(i.copy()); 5102 }; 5103 dst.documentation = documentation == null ? null : documentation.copy(); 5104 if (usage != null) { 5105 dst.usage = new ArrayList<UsageContext>(); 5106 for (UsageContext i : usage) 5107 dst.usage.add(i.copy()); 5108 }; 5109 dst.filter = filter == null ? null : filter.copy(); 5110 dst.filterDocumentation = filterDocumentation == null ? null : filterDocumentation.copy(); 5111 if (process != null) { 5112 dst.process = new ArrayList<UriType>(); 5113 for (UriType i : process) 5114 dst.process.add(i.copy()); 5115 }; 5116 } 5117 5118 @Override 5119 public boolean equalsDeep(Base other_) { 5120 if (!super.equalsDeep(other_)) 5121 return false; 5122 if (!(other_ instanceof ElementDefinitionObligationComponent)) 5123 return false; 5124 ElementDefinitionObligationComponent o = (ElementDefinitionObligationComponent) other_; 5125 return compareDeep(code, o.code, true) && compareDeep(actor, o.actor, true) && compareDeep(documentation, o.documentation, true) 5126 && compareDeep(usage, o.usage, true) && compareDeep(filter, o.filter, true) && compareDeep(filterDocumentation, o.filterDocumentation, true) 5127 && compareDeep(process, o.process, true); 5128 } 5129 5130 @Override 5131 public boolean equalsShallow(Base other_) { 5132 if (!super.equalsShallow(other_)) 5133 return false; 5134 if (!(other_ instanceof ElementDefinitionObligationComponent)) 5135 return false; 5136 ElementDefinitionObligationComponent o = (ElementDefinitionObligationComponent) other_; 5137 return compareValues(actor, o.actor, true) && compareValues(documentation, o.documentation, true) && compareValues(filter, o.filter, true) 5138 && compareValues(filterDocumentation, o.filterDocumentation, true) && compareValues(process, o.process, true) 5139 ; 5140 } 5141 5142 public boolean isEmpty() { 5143 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, actor, documentation 5144 , usage, filter, filterDocumentation, process); 5145 } 5146 5147 public String fhirType() { 5148 return "ElementDefinition.obligation"; 5149 5150 } 5151 5152 } 5153 5154 @Block() 5155 public static class ElementDefinitionBindingComponent extends Element implements IBaseDatatypeElement { 5156 /** 5157 * Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances. 5158 */ 5159 @Child(name = "strength", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true) 5160 @Description(shortDefinition="required | extensible | preferred | example", formalDefinition="Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances." ) 5161 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/binding-strength") 5162 protected Enumeration<BindingStrength> strength; 5163 5164 /** 5165 * Describes the intended use of this particular set of codes. 5166 */ 5167 @Child(name = "description", type = {MarkdownType.class}, order=2, min=0, max=1, modifier=false, summary=true) 5168 @Description(shortDefinition="Intended use of codes in the bound value set", formalDefinition="Describes the intended use of this particular set of codes." ) 5169 protected MarkdownType description; 5170 5171 /** 5172 * Refers to the value set that identifies the set of codes the binding refers to. 5173 */ 5174 @Child(name = "valueSet", type = {CanonicalType.class}, order=3, min=0, max=1, modifier=false, summary=true) 5175 @Description(shortDefinition="Source of value set", formalDefinition="Refers to the value set that identifies the set of codes the binding refers to." ) 5176 protected CanonicalType valueSet; 5177 5178 /** 5179 * Additional bindings that help applications implementing this element. Additional bindings do not replace the main binding but provide more information and/or context. 5180 */ 5181 @Child(name = "additional", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 5182 @Description(shortDefinition="Additional Bindings - more rules about the binding", formalDefinition="Additional bindings that help applications implementing this element. Additional bindings do not replace the main binding but provide more information and/or context." ) 5183 protected List<ElementDefinitionBindingAdditionalComponent> additional; 5184 5185 private static final long serialVersionUID = 16276611L; 5186 5187 /** 5188 * Constructor 5189 */ 5190 public ElementDefinitionBindingComponent() { 5191 super(); 5192 } 5193 5194 /** 5195 * Constructor 5196 */ 5197 public ElementDefinitionBindingComponent(BindingStrength strength) { 5198 super(); 5199 this.setStrength(strength); 5200 } 5201 5202 /** 5203 * @return {@link #strength} (Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.). This is the underlying object with id, value and extensions. The accessor "getStrength" gives direct access to the value 5204 */ 5205 public Enumeration<BindingStrength> getStrengthElement() { 5206 if (this.strength == null) 5207 if (Configuration.errorOnAutoCreate()) 5208 throw new Error("Attempt to auto-create ElementDefinitionBindingComponent.strength"); 5209 else if (Configuration.doAutoCreate()) 5210 this.strength = new Enumeration<BindingStrength>(new BindingStrengthEnumFactory()); // bb 5211 return this.strength; 5212 } 5213 5214 public boolean hasStrengthElement() { 5215 return this.strength != null && !this.strength.isEmpty(); 5216 } 5217 5218 public boolean hasStrength() { 5219 return this.strength != null && !this.strength.isEmpty(); 5220 } 5221 5222 /** 5223 * @param value {@link #strength} (Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.). This is the underlying object with id, value and extensions. The accessor "getStrength" gives direct access to the value 5224 */ 5225 public ElementDefinitionBindingComponent setStrengthElement(Enumeration<BindingStrength> value) { 5226 this.strength = value; 5227 return this; 5228 } 5229 5230 /** 5231 * @return Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances. 5232 */ 5233 public BindingStrength getStrength() { 5234 return this.strength == null ? null : this.strength.getValue(); 5235 } 5236 5237 /** 5238 * @param value Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances. 5239 */ 5240 public ElementDefinitionBindingComponent setStrength(BindingStrength value) { 5241 if (this.strength == null) 5242 this.strength = new Enumeration<BindingStrength>(new BindingStrengthEnumFactory()); 5243 this.strength.setValue(value); 5244 return this; 5245 } 5246 5247 /** 5248 * @return {@link #description} (Describes the intended use of this particular set of codes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value 5249 */ 5250 public MarkdownType getDescriptionElement() { 5251 if (this.description == null) 5252 if (Configuration.errorOnAutoCreate()) 5253 throw new Error("Attempt to auto-create ElementDefinitionBindingComponent.description"); 5254 else if (Configuration.doAutoCreate()) 5255 this.description = new MarkdownType(); // bb 5256 return this.description; 5257 } 5258 5259 public boolean hasDescriptionElement() { 5260 return this.description != null && !this.description.isEmpty(); 5261 } 5262 5263 public boolean hasDescription() { 5264 return this.description != null && !this.description.isEmpty(); 5265 } 5266 5267 /** 5268 * @param value {@link #description} (Describes the intended use of this particular set of codes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value 5269 */ 5270 public ElementDefinitionBindingComponent setDescriptionElement(MarkdownType value) { 5271 this.description = value; 5272 return this; 5273 } 5274 5275 /** 5276 * @return Describes the intended use of this particular set of codes. 5277 */ 5278 public String getDescription() { 5279 return this.description == null ? null : this.description.getValue(); 5280 } 5281 5282 /** 5283 * @param value Describes the intended use of this particular set of codes. 5284 */ 5285 public ElementDefinitionBindingComponent setDescription(String value) { 5286 if (value == null) 5287 this.description = null; 5288 else { 5289 if (this.description == null) 5290 this.description = new MarkdownType(); 5291 this.description.setValue(value); 5292 } 5293 return this; 5294 } 5295 5296 /** 5297 * @return {@link #valueSet} (Refers to the value set that identifies the set of codes the binding refers to.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value 5298 */ 5299 public CanonicalType getValueSetElement() { 5300 if (this.valueSet == null) 5301 if (Configuration.errorOnAutoCreate()) 5302 throw new Error("Attempt to auto-create ElementDefinitionBindingComponent.valueSet"); 5303 else if (Configuration.doAutoCreate()) 5304 this.valueSet = new CanonicalType(); // bb 5305 return this.valueSet; 5306 } 5307 5308 public boolean hasValueSetElement() { 5309 return this.valueSet != null && !this.valueSet.isEmpty(); 5310 } 5311 5312 public boolean hasValueSet() { 5313 return this.valueSet != null && !this.valueSet.isEmpty(); 5314 } 5315 5316 /** 5317 * @param value {@link #valueSet} (Refers to the value set that identifies the set of codes the binding refers to.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value 5318 */ 5319 public ElementDefinitionBindingComponent setValueSetElement(CanonicalType value) { 5320 this.valueSet = value; 5321 return this; 5322 } 5323 5324 /** 5325 * @return Refers to the value set that identifies the set of codes the binding refers to. 5326 */ 5327 public String getValueSet() { 5328 return this.valueSet == null ? null : this.valueSet.getValue(); 5329 } 5330 5331 /** 5332 * @param value Refers to the value set that identifies the set of codes the binding refers to. 5333 */ 5334 public ElementDefinitionBindingComponent setValueSet(String value) { 5335 if (Utilities.noString(value)) 5336 this.valueSet = null; 5337 else { 5338 if (this.valueSet == null) 5339 this.valueSet = new CanonicalType(); 5340 this.valueSet.setValue(value); 5341 } 5342 return this; 5343 } 5344 5345 /** 5346 * @return {@link #additional} (Additional bindings that help applications implementing this element. Additional bindings do not replace the main binding but provide more information and/or context.) 5347 */ 5348 public List<ElementDefinitionBindingAdditionalComponent> getAdditional() { 5349 if (this.additional == null) 5350 this.additional = new ArrayList<ElementDefinitionBindingAdditionalComponent>(); 5351 return this.additional; 5352 } 5353 5354 /** 5355 * @return Returns a reference to <code>this</code> for easy method chaining 5356 */ 5357 public ElementDefinitionBindingComponent setAdditional(List<ElementDefinitionBindingAdditionalComponent> theAdditional) { 5358 this.additional = theAdditional; 5359 return this; 5360 } 5361 5362 public boolean hasAdditional() { 5363 if (this.additional == null) 5364 return false; 5365 for (ElementDefinitionBindingAdditionalComponent item : this.additional) 5366 if (!item.isEmpty()) 5367 return true; 5368 return false; 5369 } 5370 5371 public ElementDefinitionBindingAdditionalComponent addAdditional() { //3 5372 ElementDefinitionBindingAdditionalComponent t = new ElementDefinitionBindingAdditionalComponent(); 5373 if (this.additional == null) 5374 this.additional = new ArrayList<ElementDefinitionBindingAdditionalComponent>(); 5375 this.additional.add(t); 5376 return t; 5377 } 5378 5379 public ElementDefinitionBindingComponent addAdditional(ElementDefinitionBindingAdditionalComponent t) { //3 5380 if (t == null) 5381 return this; 5382 if (this.additional == null) 5383 this.additional = new ArrayList<ElementDefinitionBindingAdditionalComponent>(); 5384 this.additional.add(t); 5385 return this; 5386 } 5387 5388 /** 5389 * @return The first repetition of repeating field {@link #additional}, creating it if it does not already exist {3} 5390 */ 5391 public ElementDefinitionBindingAdditionalComponent getAdditionalFirstRep() { 5392 if (getAdditional().isEmpty()) { 5393 addAdditional(); 5394 } 5395 return getAdditional().get(0); 5396 } 5397 5398 protected void listChildren(List<Property> children) { 5399 super.listChildren(children); 5400 children.add(new Property("strength", "code", "Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.", 0, 1, strength)); 5401 children.add(new Property("description", "markdown", "Describes the intended use of this particular set of codes.", 0, 1, description)); 5402 children.add(new Property("valueSet", "canonical(ValueSet)", "Refers to the value set that identifies the set of codes the binding refers to.", 0, 1, valueSet)); 5403 children.add(new Property("additional", "", "Additional bindings that help applications implementing this element. Additional bindings do not replace the main binding but provide more information and/or context.", 0, java.lang.Integer.MAX_VALUE, additional)); 5404 } 5405 5406 @Override 5407 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 5408 switch (_hash) { 5409 case 1791316033: /*strength*/ return new Property("strength", "code", "Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.", 0, 1, strength); 5410 case -1724546052: /*description*/ return new Property("description", "markdown", "Describes the intended use of this particular set of codes.", 0, 1, description); 5411 case -1410174671: /*valueSet*/ return new Property("valueSet", "canonical(ValueSet)", "Refers to the value set that identifies the set of codes the binding refers to.", 0, 1, valueSet); 5412 case -1931413465: /*additional*/ return new Property("additional", "", "Additional bindings that help applications implementing this element. Additional bindings do not replace the main binding but provide more information and/or context.", 0, java.lang.Integer.MAX_VALUE, additional); 5413 default: return super.getNamedProperty(_hash, _name, _checkValid); 5414 } 5415 5416 } 5417 5418 @Override 5419 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 5420 switch (hash) { 5421 case 1791316033: /*strength*/ return this.strength == null ? new Base[0] : new Base[] {this.strength}; // Enumeration<BindingStrength> 5422 case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType 5423 case -1410174671: /*valueSet*/ return this.valueSet == null ? new Base[0] : new Base[] {this.valueSet}; // CanonicalType 5424 case -1931413465: /*additional*/ return this.additional == null ? new Base[0] : this.additional.toArray(new Base[this.additional.size()]); // ElementDefinitionBindingAdditionalComponent 5425 default: return super.getProperty(hash, name, checkValid); 5426 } 5427 5428 } 5429 5430 @Override 5431 public Base setProperty(int hash, String name, Base value) throws FHIRException { 5432 switch (hash) { 5433 case 1791316033: // strength 5434 value = new BindingStrengthEnumFactory().fromType(TypeConvertor.castToCode(value)); 5435 this.strength = (Enumeration) value; // Enumeration<BindingStrength> 5436 return value; 5437 case -1724546052: // description 5438 this.description = TypeConvertor.castToMarkdown(value); // MarkdownType 5439 return value; 5440 case -1410174671: // valueSet 5441 this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType 5442 return value; 5443 case -1931413465: // additional 5444 this.getAdditional().add((ElementDefinitionBindingAdditionalComponent) value); // ElementDefinitionBindingAdditionalComponent 5445 return value; 5446 default: return super.setProperty(hash, name, value); 5447 } 5448 5449 } 5450 5451 @Override 5452 public Base setProperty(String name, Base value) throws FHIRException { 5453 if (name.equals("strength")) { 5454 value = new BindingStrengthEnumFactory().fromType(TypeConvertor.castToCode(value)); 5455 this.strength = (Enumeration) value; // Enumeration<BindingStrength> 5456 } else if (name.equals("description")) { 5457 this.description = TypeConvertor.castToMarkdown(value); // MarkdownType 5458 } else if (name.equals("valueSet")) { 5459 this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType 5460 } else if (name.equals("additional")) { 5461 this.getAdditional().add((ElementDefinitionBindingAdditionalComponent) value); 5462 } else 5463 return super.setProperty(name, value); 5464 return value; 5465 } 5466 5467 @Override 5468 public Base makeProperty(int hash, String name) throws FHIRException { 5469 switch (hash) { 5470 case 1791316033: return getStrengthElement(); 5471 case -1724546052: return getDescriptionElement(); 5472 case -1410174671: return getValueSetElement(); 5473 case -1931413465: return addAdditional(); 5474 default: return super.makeProperty(hash, name); 5475 } 5476 5477 } 5478 5479 @Override 5480 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 5481 switch (hash) { 5482 case 1791316033: /*strength*/ return new String[] {"code"}; 5483 case -1724546052: /*description*/ return new String[] {"markdown"}; 5484 case -1410174671: /*valueSet*/ return new String[] {"canonical"}; 5485 case -1931413465: /*additional*/ return new String[] {}; 5486 default: return super.getTypesForProperty(hash, name); 5487 } 5488 5489 } 5490 5491 @Override 5492 public Base addChild(String name) throws FHIRException { 5493 if (name.equals("strength")) { 5494 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.strength"); 5495 } 5496 else if (name.equals("description")) { 5497 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.description"); 5498 } 5499 else if (name.equals("valueSet")) { 5500 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.valueSet"); 5501 } 5502 else if (name.equals("additional")) { 5503 return addAdditional(); 5504 } 5505 else 5506 return super.addChild(name); 5507 } 5508 5509 public ElementDefinitionBindingComponent copy() { 5510 ElementDefinitionBindingComponent dst = new ElementDefinitionBindingComponent(); 5511 copyValues(dst); 5512 return dst; 5513 } 5514 5515 public void copyValues(ElementDefinitionBindingComponent dst) { 5516 super.copyValues(dst); 5517 dst.strength = strength == null ? null : strength.copy(); 5518 dst.description = description == null ? null : description.copy(); 5519 dst.valueSet = valueSet == null ? null : valueSet.copy(); 5520 if (additional != null) { 5521 dst.additional = new ArrayList<ElementDefinitionBindingAdditionalComponent>(); 5522 for (ElementDefinitionBindingAdditionalComponent i : additional) 5523 dst.additional.add(i.copy()); 5524 }; 5525 } 5526 5527 @Override 5528 public boolean equalsDeep(Base other_) { 5529 if (!super.equalsDeep(other_)) 5530 return false; 5531 if (!(other_ instanceof ElementDefinitionBindingComponent)) 5532 return false; 5533 ElementDefinitionBindingComponent o = (ElementDefinitionBindingComponent) other_; 5534 return compareDeep(strength, o.strength, true) && compareDeep(description, o.description, true) 5535 && compareDeep(valueSet, o.valueSet, true) && compareDeep(additional, o.additional, true); 5536 } 5537 5538 @Override 5539 public boolean equalsShallow(Base other_) { 5540 if (!super.equalsShallow(other_)) 5541 return false; 5542 if (!(other_ instanceof ElementDefinitionBindingComponent)) 5543 return false; 5544 ElementDefinitionBindingComponent o = (ElementDefinitionBindingComponent) other_; 5545 return compareValues(strength, o.strength, true) && compareValues(description, o.description, true) 5546 && compareValues(valueSet, o.valueSet, true); 5547 } 5548 5549 public boolean isEmpty() { 5550 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(strength, description, valueSet 5551 , additional); 5552 } 5553 5554 public String fhirType() { 5555 return "ElementDefinition.binding"; 5556 5557 } 5558 5559 } 5560 5561 @Block() 5562 public static class ElementDefinitionBindingAdditionalComponent extends Element implements IBaseDatatypeElement { 5563 /** 5564 * The use of this additional binding. 5565 */ 5566 @Child(name = "purpose", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true) 5567 @Description(shortDefinition="maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component", formalDefinition="The use of this additional binding." ) 5568 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/additional-binding-purpose") 5569 protected Enumeration<AdditionalBindingPurposeVS> purpose; 5570 5571 /** 5572 * The valueSet that is being bound for the purpose. 5573 */ 5574 @Child(name = "valueSet", type = {CanonicalType.class}, order=2, min=1, max=1, modifier=false, summary=true) 5575 @Description(shortDefinition="The value set for the additional binding", formalDefinition="The valueSet that is being bound for the purpose." ) 5576 protected CanonicalType valueSet; 5577 5578 /** 5579 * Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used. 5580 */ 5581 @Child(name = "documentation", type = {MarkdownType.class}, order=3, min=0, max=1, modifier=false, summary=true) 5582 @Description(shortDefinition="Documentation of the purpose of use of the binding", formalDefinition="Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used." ) 5583 protected MarkdownType documentation; 5584 5585 /** 5586 * Concise documentation - for summary tables. 5587 */ 5588 @Child(name = "shortDoco", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true) 5589 @Description(shortDefinition="Concise documentation - for summary tables", formalDefinition="Concise documentation - for summary tables." ) 5590 protected StringType shortDoco; 5591 5592 /** 5593 * Qualifies the usage of the binding. Typically bindings are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling. 5594 */ 5595 @Child(name = "usage", type = {UsageContext.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 5596 @Description(shortDefinition="Qualifies the usage - jurisdiction, gender, workflow status etc", formalDefinition="Qualifies the usage of the binding. Typically bindings are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling." ) 5597 protected List<UsageContext> usage; 5598 5599 /** 5600 * Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat. 5601 */ 5602 @Child(name = "any", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true) 5603 @Description(shortDefinition="Whether binding can applies to all repeats, or just one", formalDefinition="Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat." ) 5604 protected BooleanType any; 5605 5606 private static final long serialVersionUID = -1312796441L; 5607 5608 /** 5609 * Constructor 5610 */ 5611 public ElementDefinitionBindingAdditionalComponent() { 5612 super(); 5613 } 5614 5615 /** 5616 * Constructor 5617 */ 5618 public ElementDefinitionBindingAdditionalComponent(AdditionalBindingPurposeVS purpose, String valueSet) { 5619 super(); 5620 this.setPurpose(purpose); 5621 this.setValueSet(valueSet); 5622 } 5623 5624 /** 5625 * @return {@link #purpose} (The use of this additional binding.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value 5626 */ 5627 public Enumeration<AdditionalBindingPurposeVS> getPurposeElement() { 5628 if (this.purpose == null) 5629 if (Configuration.errorOnAutoCreate()) 5630 throw new Error("Attempt to auto-create ElementDefinitionBindingAdditionalComponent.purpose"); 5631 else if (Configuration.doAutoCreate()) 5632 this.purpose = new Enumeration<AdditionalBindingPurposeVS>(new AdditionalBindingPurposeVSEnumFactory()); // bb 5633 return this.purpose; 5634 } 5635 5636 public boolean hasPurposeElement() { 5637 return this.purpose != null && !this.purpose.isEmpty(); 5638 } 5639 5640 public boolean hasPurpose() { 5641 return this.purpose != null && !this.purpose.isEmpty(); 5642 } 5643 5644 /** 5645 * @param value {@link #purpose} (The use of this additional binding.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value 5646 */ 5647 public ElementDefinitionBindingAdditionalComponent setPurposeElement(Enumeration<AdditionalBindingPurposeVS> value) { 5648 this.purpose = value; 5649 return this; 5650 } 5651 5652 /** 5653 * @return The use of this additional binding. 5654 */ 5655 public AdditionalBindingPurposeVS getPurpose() { 5656 return this.purpose == null ? null : this.purpose.getValue(); 5657 } 5658 5659 /** 5660 * @param value The use of this additional binding. 5661 */ 5662 public ElementDefinitionBindingAdditionalComponent setPurpose(AdditionalBindingPurposeVS value) { 5663 if (this.purpose == null) 5664 this.purpose = new Enumeration<AdditionalBindingPurposeVS>(new AdditionalBindingPurposeVSEnumFactory()); 5665 this.purpose.setValue(value); 5666 return this; 5667 } 5668 5669 /** 5670 * @return {@link #valueSet} (The valueSet that is being bound for the purpose.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value 5671 */ 5672 public CanonicalType getValueSetElement() { 5673 if (this.valueSet == null) 5674 if (Configuration.errorOnAutoCreate()) 5675 throw new Error("Attempt to auto-create ElementDefinitionBindingAdditionalComponent.valueSet"); 5676 else if (Configuration.doAutoCreate()) 5677 this.valueSet = new CanonicalType(); // bb 5678 return this.valueSet; 5679 } 5680 5681 public boolean hasValueSetElement() { 5682 return this.valueSet != null && !this.valueSet.isEmpty(); 5683 } 5684 5685 public boolean hasValueSet() { 5686 return this.valueSet != null && !this.valueSet.isEmpty(); 5687 } 5688 5689 /** 5690 * @param value {@link #valueSet} (The valueSet that is being bound for the purpose.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value 5691 */ 5692 public ElementDefinitionBindingAdditionalComponent setValueSetElement(CanonicalType value) { 5693 this.valueSet = value; 5694 return this; 5695 } 5696 5697 /** 5698 * @return The valueSet that is being bound for the purpose. 5699 */ 5700 public String getValueSet() { 5701 return this.valueSet == null ? null : this.valueSet.getValue(); 5702 } 5703 5704 /** 5705 * @param value The valueSet that is being bound for the purpose. 5706 */ 5707 public ElementDefinitionBindingAdditionalComponent setValueSet(String value) { 5708 if (this.valueSet == null) 5709 this.valueSet = new CanonicalType(); 5710 this.valueSet.setValue(value); 5711 return this; 5712 } 5713 5714 /** 5715 * @return {@link #documentation} (Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value 5716 */ 5717 public MarkdownType getDocumentationElement() { 5718 if (this.documentation == null) 5719 if (Configuration.errorOnAutoCreate()) 5720 throw new Error("Attempt to auto-create ElementDefinitionBindingAdditionalComponent.documentation"); 5721 else if (Configuration.doAutoCreate()) 5722 this.documentation = new MarkdownType(); // bb 5723 return this.documentation; 5724 } 5725 5726 public boolean hasDocumentationElement() { 5727 return this.documentation != null && !this.documentation.isEmpty(); 5728 } 5729 5730 public boolean hasDocumentation() { 5731 return this.documentation != null && !this.documentation.isEmpty(); 5732 } 5733 5734 /** 5735 * @param value {@link #documentation} (Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value 5736 */ 5737 public ElementDefinitionBindingAdditionalComponent setDocumentationElement(MarkdownType value) { 5738 this.documentation = value; 5739 return this; 5740 } 5741 5742 /** 5743 * @return Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used. 5744 */ 5745 public String getDocumentation() { 5746 return this.documentation == null ? null : this.documentation.getValue(); 5747 } 5748 5749 /** 5750 * @param value Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used. 5751 */ 5752 public ElementDefinitionBindingAdditionalComponent setDocumentation(String value) { 5753 if (value == null) 5754 this.documentation = null; 5755 else { 5756 if (this.documentation == null) 5757 this.documentation = new MarkdownType(); 5758 this.documentation.setValue(value); 5759 } 5760 return this; 5761 } 5762 5763 /** 5764 * @return {@link #shortDoco} (Concise documentation - for summary tables.). This is the underlying object with id, value and extensions. The accessor "getShortDoco" gives direct access to the value 5765 */ 5766 public StringType getShortDocoElement() { 5767 if (this.shortDoco == null) 5768 if (Configuration.errorOnAutoCreate()) 5769 throw new Error("Attempt to auto-create ElementDefinitionBindingAdditionalComponent.shortDoco"); 5770 else if (Configuration.doAutoCreate()) 5771 this.shortDoco = new StringType(); // bb 5772 return this.shortDoco; 5773 } 5774 5775 public boolean hasShortDocoElement() { 5776 return this.shortDoco != null && !this.shortDoco.isEmpty(); 5777 } 5778 5779 public boolean hasShortDoco() { 5780 return this.shortDoco != null && !this.shortDoco.isEmpty(); 5781 } 5782 5783 /** 5784 * @param value {@link #shortDoco} (Concise documentation - for summary tables.). This is the underlying object with id, value and extensions. The accessor "getShortDoco" gives direct access to the value 5785 */ 5786 public ElementDefinitionBindingAdditionalComponent setShortDocoElement(StringType value) { 5787 this.shortDoco = value; 5788 return this; 5789 } 5790 5791 /** 5792 * @return Concise documentation - for summary tables. 5793 */ 5794 public String getShortDoco() { 5795 return this.shortDoco == null ? null : this.shortDoco.getValue(); 5796 } 5797 5798 /** 5799 * @param value Concise documentation - for summary tables. 5800 */ 5801 public ElementDefinitionBindingAdditionalComponent setShortDoco(String value) { 5802 if (Utilities.noString(value)) 5803 this.shortDoco = null; 5804 else { 5805 if (this.shortDoco == null) 5806 this.shortDoco = new StringType(); 5807 this.shortDoco.setValue(value); 5808 } 5809 return this; 5810 } 5811 5812 /** 5813 * @return {@link #usage} (Qualifies the usage of the binding. Typically bindings are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling.) 5814 */ 5815 public List<UsageContext> getUsage() { 5816 if (this.usage == null) 5817 this.usage = new ArrayList<UsageContext>(); 5818 return this.usage; 5819 } 5820 5821 /** 5822 * @return Returns a reference to <code>this</code> for easy method chaining 5823 */ 5824 public ElementDefinitionBindingAdditionalComponent setUsage(List<UsageContext> theUsage) { 5825 this.usage = theUsage; 5826 return this; 5827 } 5828 5829 public boolean hasUsage() { 5830 if (this.usage == null) 5831 return false; 5832 for (UsageContext item : this.usage) 5833 if (!item.isEmpty()) 5834 return true; 5835 return false; 5836 } 5837 5838 public UsageContext addUsage() { //3 5839 UsageContext t = new UsageContext(); 5840 if (this.usage == null) 5841 this.usage = new ArrayList<UsageContext>(); 5842 this.usage.add(t); 5843 return t; 5844 } 5845 5846 public ElementDefinitionBindingAdditionalComponent addUsage(UsageContext t) { //3 5847 if (t == null) 5848 return this; 5849 if (this.usage == null) 5850 this.usage = new ArrayList<UsageContext>(); 5851 this.usage.add(t); 5852 return this; 5853 } 5854 5855 /** 5856 * @return The first repetition of repeating field {@link #usage}, creating it if it does not already exist {3} 5857 */ 5858 public UsageContext getUsageFirstRep() { 5859 if (getUsage().isEmpty()) { 5860 addUsage(); 5861 } 5862 return getUsage().get(0); 5863 } 5864 5865 /** 5866 * @return {@link #any} (Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat.). This is the underlying object with id, value and extensions. The accessor "getAny" gives direct access to the value 5867 */ 5868 public BooleanType getAnyElement() { 5869 if (this.any == null) 5870 if (Configuration.errorOnAutoCreate()) 5871 throw new Error("Attempt to auto-create ElementDefinitionBindingAdditionalComponent.any"); 5872 else if (Configuration.doAutoCreate()) 5873 this.any = new BooleanType(); // bb 5874 return this.any; 5875 } 5876 5877 public boolean hasAnyElement() { 5878 return this.any != null && !this.any.isEmpty(); 5879 } 5880 5881 public boolean hasAny() { 5882 return this.any != null && !this.any.isEmpty(); 5883 } 5884 5885 /** 5886 * @param value {@link #any} (Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat.). This is the underlying object with id, value and extensions. The accessor "getAny" gives direct access to the value 5887 */ 5888 public ElementDefinitionBindingAdditionalComponent setAnyElement(BooleanType value) { 5889 this.any = value; 5890 return this; 5891 } 5892 5893 /** 5894 * @return Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat. 5895 */ 5896 public boolean getAny() { 5897 return this.any == null || this.any.isEmpty() ? false : this.any.getValue(); 5898 } 5899 5900 /** 5901 * @param value Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat. 5902 */ 5903 public ElementDefinitionBindingAdditionalComponent setAny(boolean value) { 5904 if (this.any == null) 5905 this.any = new BooleanType(); 5906 this.any.setValue(value); 5907 return this; 5908 } 5909 5910 protected void listChildren(List<Property> children) { 5911 super.listChildren(children); 5912 children.add(new Property("purpose", "code", "The use of this additional binding.", 0, 1, purpose)); 5913 children.add(new Property("valueSet", "canonical(ValueSet)", "The valueSet that is being bound for the purpose.", 0, 1, valueSet)); 5914 children.add(new Property("documentation", "markdown", "Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used.", 0, 1, documentation)); 5915 children.add(new Property("shortDoco", "string", "Concise documentation - for summary tables.", 0, 1, shortDoco)); 5916 children.add(new Property("usage", "UsageContext", "Qualifies the usage of the binding. Typically bindings are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling.", 0, java.lang.Integer.MAX_VALUE, usage)); 5917 children.add(new Property("any", "boolean", "Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat.", 0, 1, any)); 5918 } 5919 5920 @Override 5921 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 5922 switch (_hash) { 5923 case -220463842: /*purpose*/ return new Property("purpose", "code", "The use of this additional binding.", 0, 1, purpose); 5924 case -1410174671: /*valueSet*/ return new Property("valueSet", "canonical(ValueSet)", "The valueSet that is being bound for the purpose.", 0, 1, valueSet); 5925 case 1587405498: /*documentation*/ return new Property("documentation", "markdown", "Documentation of the purpose of use of the bindingproviding additional information about how it is intended to be used.", 0, 1, documentation); 5926 case -2028503853: /*shortDoco*/ return new Property("shortDoco", "string", "Concise documentation - for summary tables.", 0, 1, shortDoco); 5927 case 111574433: /*usage*/ return new Property("usage", "UsageContext", "Qualifies the usage of the binding. Typically bindings are qualified by jurisdiction, but they may also be qualified by gender, workflow status, clinical domain etc. The information to decide whether a usege context applies is usually outside the resource, determined by context, and this might present challenges for validation tooling.", 0, java.lang.Integer.MAX_VALUE, usage); 5928 case 96748: /*any*/ return new Property("any", "boolean", "Whether the binding applies to all repeats, or just to any one of them. This is only relevant for elements that can repeat.", 0, 1, any); 5929 default: return super.getNamedProperty(_hash, _name, _checkValid); 5930 } 5931 5932 } 5933 5934 @Override 5935 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 5936 switch (hash) { 5937 case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // Enumeration<AdditionalBindingPurposeVS> 5938 case -1410174671: /*valueSet*/ return this.valueSet == null ? new Base[0] : new Base[] {this.valueSet}; // CanonicalType 5939 case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // MarkdownType 5940 case -2028503853: /*shortDoco*/ return this.shortDoco == null ? new Base[0] : new Base[] {this.shortDoco}; // StringType 5941 case 111574433: /*usage*/ return this.usage == null ? new Base[0] : this.usage.toArray(new Base[this.usage.size()]); // UsageContext 5942 case 96748: /*any*/ return this.any == null ? new Base[0] : new Base[] {this.any}; // BooleanType 5943 default: return super.getProperty(hash, name, checkValid); 5944 } 5945 5946 } 5947 5948 @Override 5949 public Base setProperty(int hash, String name, Base value) throws FHIRException { 5950 switch (hash) { 5951 case -220463842: // purpose 5952 value = new AdditionalBindingPurposeVSEnumFactory().fromType(TypeConvertor.castToCode(value)); 5953 this.purpose = (Enumeration) value; // Enumeration<AdditionalBindingPurposeVS> 5954 return value; 5955 case -1410174671: // valueSet 5956 this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType 5957 return value; 5958 case 1587405498: // documentation 5959 this.documentation = TypeConvertor.castToMarkdown(value); // MarkdownType 5960 return value; 5961 case -2028503853: // shortDoco 5962 this.shortDoco = TypeConvertor.castToString(value); // StringType 5963 return value; 5964 case 111574433: // usage 5965 this.getUsage().add(TypeConvertor.castToUsageContext(value)); // UsageContext 5966 return value; 5967 case 96748: // any 5968 this.any = TypeConvertor.castToBoolean(value); // BooleanType 5969 return value; 5970 default: return super.setProperty(hash, name, value); 5971 } 5972 5973 } 5974 5975 @Override 5976 public Base setProperty(String name, Base value) throws FHIRException { 5977 if (name.equals("purpose")) { 5978 value = new AdditionalBindingPurposeVSEnumFactory().fromType(TypeConvertor.castToCode(value)); 5979 this.purpose = (Enumeration) value; // Enumeration<AdditionalBindingPurposeVS> 5980 } else if (name.equals("valueSet")) { 5981 this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType 5982 } else if (name.equals("documentation")) { 5983 this.documentation = TypeConvertor.castToMarkdown(value); // MarkdownType 5984 } else if (name.equals("shortDoco")) { 5985 this.shortDoco = TypeConvertor.castToString(value); // StringType 5986 } else if (name.equals("usage")) { 5987 this.getUsage().add(TypeConvertor.castToUsageContext(value)); 5988 } else if (name.equals("any")) { 5989 this.any = TypeConvertor.castToBoolean(value); // BooleanType 5990 } else 5991 return super.setProperty(name, value); 5992 return value; 5993 } 5994 5995 @Override 5996 public Base makeProperty(int hash, String name) throws FHIRException { 5997 switch (hash) { 5998 case -220463842: return getPurposeElement(); 5999 case -1410174671: return getValueSetElement(); 6000 case 1587405498: return getDocumentationElement(); 6001 case -2028503853: return getShortDocoElement(); 6002 case 111574433: return addUsage(); 6003 case 96748: return getAnyElement(); 6004 default: return super.makeProperty(hash, name); 6005 } 6006 6007 } 6008 6009 @Override 6010 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 6011 switch (hash) { 6012 case -220463842: /*purpose*/ return new String[] {"code"}; 6013 case -1410174671: /*valueSet*/ return new String[] {"canonical"}; 6014 case 1587405498: /*documentation*/ return new String[] {"markdown"}; 6015 case -2028503853: /*shortDoco*/ return new String[] {"string"}; 6016 case 111574433: /*usage*/ return new String[] {"UsageContext"}; 6017 case 96748: /*any*/ return new String[] {"boolean"}; 6018 default: return super.getTypesForProperty(hash, name); 6019 } 6020 6021 } 6022 6023 @Override 6024 public Base addChild(String name) throws FHIRException { 6025 if (name.equals("purpose")) { 6026 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.additional.purpose"); 6027 } 6028 else if (name.equals("valueSet")) { 6029 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.additional.valueSet"); 6030 } 6031 else if (name.equals("documentation")) { 6032 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.additional.documentation"); 6033 } 6034 else if (name.equals("shortDoco")) { 6035 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.additional.shortDoco"); 6036 } 6037 else if (name.equals("usage")) { 6038 return addUsage(); 6039 } 6040 else if (name.equals("any")) { 6041 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.binding.additional.any"); 6042 } 6043 else 6044 return super.addChild(name); 6045 } 6046 6047 public ElementDefinitionBindingAdditionalComponent copy() { 6048 ElementDefinitionBindingAdditionalComponent dst = new ElementDefinitionBindingAdditionalComponent(); 6049 copyValues(dst); 6050 return dst; 6051 } 6052 6053 public void copyValues(ElementDefinitionBindingAdditionalComponent dst) { 6054 super.copyValues(dst); 6055 dst.purpose = purpose == null ? null : purpose.copy(); 6056 dst.valueSet = valueSet == null ? null : valueSet.copy(); 6057 dst.documentation = documentation == null ? null : documentation.copy(); 6058 dst.shortDoco = shortDoco == null ? null : shortDoco.copy(); 6059 if (usage != null) { 6060 dst.usage = new ArrayList<UsageContext>(); 6061 for (UsageContext i : usage) 6062 dst.usage.add(i.copy()); 6063 }; 6064 dst.any = any == null ? null : any.copy(); 6065 } 6066 6067 @Override 6068 public boolean equalsDeep(Base other_) { 6069 if (!super.equalsDeep(other_)) 6070 return false; 6071 if (!(other_ instanceof ElementDefinitionBindingAdditionalComponent)) 6072 return false; 6073 ElementDefinitionBindingAdditionalComponent o = (ElementDefinitionBindingAdditionalComponent) other_; 6074 return compareDeep(purpose, o.purpose, true) && compareDeep(valueSet, o.valueSet, true) && compareDeep(documentation, o.documentation, true) 6075 && compareDeep(shortDoco, o.shortDoco, true) && compareDeep(usage, o.usage, true) && compareDeep(any, o.any, true) 6076 ; 6077 } 6078 6079 @Override 6080 public boolean equalsShallow(Base other_) { 6081 if (!super.equalsShallow(other_)) 6082 return false; 6083 if (!(other_ instanceof ElementDefinitionBindingAdditionalComponent)) 6084 return false; 6085 ElementDefinitionBindingAdditionalComponent o = (ElementDefinitionBindingAdditionalComponent) other_; 6086 return compareValues(purpose, o.purpose, true) && compareValues(valueSet, o.valueSet, true) && compareValues(documentation, o.documentation, true) 6087 && compareValues(shortDoco, o.shortDoco, true) && compareValues(any, o.any, true); 6088 } 6089 6090 public boolean isEmpty() { 6091 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(purpose, valueSet, documentation 6092 , shortDoco, usage, any); 6093 } 6094 6095 public String fhirType() { 6096 return "ElementDefinition.binding.additional"; 6097 6098 } 6099 6100 } 6101 6102 @Block() 6103 public static class ElementDefinitionMappingComponent extends Element implements IBaseDatatypeElement { 6104 /** 6105 * An internal reference to the definition of a mapping. 6106 */ 6107 @Child(name = "identity", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true) 6108 @Description(shortDefinition="Reference to mapping declaration", formalDefinition="An internal reference to the definition of a mapping." ) 6109 protected IdType identity; 6110 6111 /** 6112 * Identifies the computable language in which mapping.map is expressed. 6113 */ 6114 @Child(name = "language", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true) 6115 @Description(shortDefinition="Computable language of mapping", formalDefinition="Identifies the computable language in which mapping.map is expressed." ) 6116 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes") 6117 protected CodeType language; 6118 6119 /** 6120 * Expresses what part of the target specification corresponds to this element. 6121 */ 6122 @Child(name = "map", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true) 6123 @Description(shortDefinition="Details of the mapping", formalDefinition="Expresses what part of the target specification corresponds to this element." ) 6124 protected StringType map; 6125 6126 /** 6127 * Comments that provide information about the mapping or its use. 6128 */ 6129 @Child(name = "comment", type = {MarkdownType.class}, order=4, min=0, max=1, modifier=false, summary=true) 6130 @Description(shortDefinition="Comments about the mapping or its use", formalDefinition="Comments that provide information about the mapping or its use." ) 6131 protected MarkdownType comment; 6132 6133 private static final long serialVersionUID = -582458727L; 6134 6135 /** 6136 * Constructor 6137 */ 6138 public ElementDefinitionMappingComponent() { 6139 super(); 6140 } 6141 6142 /** 6143 * Constructor 6144 */ 6145 public ElementDefinitionMappingComponent(String identity, String map) { 6146 super(); 6147 this.setIdentity(identity); 6148 this.setMap(map); 6149 } 6150 6151 /** 6152 * @return {@link #identity} (An internal reference to the definition of a mapping.). This is the underlying object with id, value and extensions. The accessor "getIdentity" gives direct access to the value 6153 */ 6154 public IdType getIdentityElement() { 6155 if (this.identity == null) 6156 if (Configuration.errorOnAutoCreate()) 6157 throw new Error("Attempt to auto-create ElementDefinitionMappingComponent.identity"); 6158 else if (Configuration.doAutoCreate()) 6159 this.identity = new IdType(); // bb 6160 return this.identity; 6161 } 6162 6163 public boolean hasIdentityElement() { 6164 return this.identity != null && !this.identity.isEmpty(); 6165 } 6166 6167 public boolean hasIdentity() { 6168 return this.identity != null && !this.identity.isEmpty(); 6169 } 6170 6171 /** 6172 * @param value {@link #identity} (An internal reference to the definition of a mapping.). This is the underlying object with id, value and extensions. The accessor "getIdentity" gives direct access to the value 6173 */ 6174 public ElementDefinitionMappingComponent setIdentityElement(IdType value) { 6175 this.identity = value; 6176 return this; 6177 } 6178 6179 /** 6180 * @return An internal reference to the definition of a mapping. 6181 */ 6182 public String getIdentity() { 6183 return this.identity == null ? null : this.identity.getValue(); 6184 } 6185 6186 /** 6187 * @param value An internal reference to the definition of a mapping. 6188 */ 6189 public ElementDefinitionMappingComponent setIdentity(String value) { 6190 if (this.identity == null) 6191 this.identity = new IdType(); 6192 this.identity.setValue(value); 6193 return this; 6194 } 6195 6196 /** 6197 * @return {@link #language} (Identifies the computable language in which mapping.map is expressed.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value 6198 */ 6199 public CodeType getLanguageElement() { 6200 if (this.language == null) 6201 if (Configuration.errorOnAutoCreate()) 6202 throw new Error("Attempt to auto-create ElementDefinitionMappingComponent.language"); 6203 else if (Configuration.doAutoCreate()) 6204 this.language = new CodeType(); // bb 6205 return this.language; 6206 } 6207 6208 public boolean hasLanguageElement() { 6209 return this.language != null && !this.language.isEmpty(); 6210 } 6211 6212 public boolean hasLanguage() { 6213 return this.language != null && !this.language.isEmpty(); 6214 } 6215 6216 /** 6217 * @param value {@link #language} (Identifies the computable language in which mapping.map is expressed.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value 6218 */ 6219 public ElementDefinitionMappingComponent setLanguageElement(CodeType value) { 6220 this.language = value; 6221 return this; 6222 } 6223 6224 /** 6225 * @return Identifies the computable language in which mapping.map is expressed. 6226 */ 6227 public String getLanguage() { 6228 return this.language == null ? null : this.language.getValue(); 6229 } 6230 6231 /** 6232 * @param value Identifies the computable language in which mapping.map is expressed. 6233 */ 6234 public ElementDefinitionMappingComponent setLanguage(String value) { 6235 if (Utilities.noString(value)) 6236 this.language = null; 6237 else { 6238 if (this.language == null) 6239 this.language = new CodeType(); 6240 this.language.setValue(value); 6241 } 6242 return this; 6243 } 6244 6245 /** 6246 * @return {@link #map} (Expresses what part of the target specification corresponds to this element.). This is the underlying object with id, value and extensions. The accessor "getMap" gives direct access to the value 6247 */ 6248 public StringType getMapElement() { 6249 if (this.map == null) 6250 if (Configuration.errorOnAutoCreate()) 6251 throw new Error("Attempt to auto-create ElementDefinitionMappingComponent.map"); 6252 else if (Configuration.doAutoCreate()) 6253 this.map = new StringType(); // bb 6254 return this.map; 6255 } 6256 6257 public boolean hasMapElement() { 6258 return this.map != null && !this.map.isEmpty(); 6259 } 6260 6261 public boolean hasMap() { 6262 return this.map != null && !this.map.isEmpty(); 6263 } 6264 6265 /** 6266 * @param value {@link #map} (Expresses what part of the target specification corresponds to this element.). This is the underlying object with id, value and extensions. The accessor "getMap" gives direct access to the value 6267 */ 6268 public ElementDefinitionMappingComponent setMapElement(StringType value) { 6269 this.map = value; 6270 return this; 6271 } 6272 6273 /** 6274 * @return Expresses what part of the target specification corresponds to this element. 6275 */ 6276 public String getMap() { 6277 return this.map == null ? null : this.map.getValue(); 6278 } 6279 6280 /** 6281 * @param value Expresses what part of the target specification corresponds to this element. 6282 */ 6283 public ElementDefinitionMappingComponent setMap(String value) { 6284 if (this.map == null) 6285 this.map = new StringType(); 6286 this.map.setValue(value); 6287 return this; 6288 } 6289 6290 /** 6291 * @return {@link #comment} (Comments that provide information about the mapping or its use.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value 6292 */ 6293 public MarkdownType getCommentElement() { 6294 if (this.comment == null) 6295 if (Configuration.errorOnAutoCreate()) 6296 throw new Error("Attempt to auto-create ElementDefinitionMappingComponent.comment"); 6297 else if (Configuration.doAutoCreate()) 6298 this.comment = new MarkdownType(); // bb 6299 return this.comment; 6300 } 6301 6302 public boolean hasCommentElement() { 6303 return this.comment != null && !this.comment.isEmpty(); 6304 } 6305 6306 public boolean hasComment() { 6307 return this.comment != null && !this.comment.isEmpty(); 6308 } 6309 6310 /** 6311 * @param value {@link #comment} (Comments that provide information about the mapping or its use.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value 6312 */ 6313 public ElementDefinitionMappingComponent setCommentElement(MarkdownType value) { 6314 this.comment = value; 6315 return this; 6316 } 6317 6318 /** 6319 * @return Comments that provide information about the mapping or its use. 6320 */ 6321 public String getComment() { 6322 return this.comment == null ? null : this.comment.getValue(); 6323 } 6324 6325 /** 6326 * @param value Comments that provide information about the mapping or its use. 6327 */ 6328 public ElementDefinitionMappingComponent setComment(String value) { 6329 if (value == null) 6330 this.comment = null; 6331 else { 6332 if (this.comment == null) 6333 this.comment = new MarkdownType(); 6334 this.comment.setValue(value); 6335 } 6336 return this; 6337 } 6338 6339 protected void listChildren(List<Property> children) { 6340 super.listChildren(children); 6341 children.add(new Property("identity", "id", "An internal reference to the definition of a mapping.", 0, 1, identity)); 6342 children.add(new Property("language", "code", "Identifies the computable language in which mapping.map is expressed.", 0, 1, language)); 6343 children.add(new Property("map", "string", "Expresses what part of the target specification corresponds to this element.", 0, 1, map)); 6344 children.add(new Property("comment", "markdown", "Comments that provide information about the mapping or its use.", 0, 1, comment)); 6345 } 6346 6347 @Override 6348 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 6349 switch (_hash) { 6350 case -135761730: /*identity*/ return new Property("identity", "id", "An internal reference to the definition of a mapping.", 0, 1, identity); 6351 case -1613589672: /*language*/ return new Property("language", "code", "Identifies the computable language in which mapping.map is expressed.", 0, 1, language); 6352 case 107868: /*map*/ return new Property("map", "string", "Expresses what part of the target specification corresponds to this element.", 0, 1, map); 6353 case 950398559: /*comment*/ return new Property("comment", "markdown", "Comments that provide information about the mapping or its use.", 0, 1, comment); 6354 default: return super.getNamedProperty(_hash, _name, _checkValid); 6355 } 6356 6357 } 6358 6359 @Override 6360 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 6361 switch (hash) { 6362 case -135761730: /*identity*/ return this.identity == null ? new Base[0] : new Base[] {this.identity}; // IdType 6363 case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeType 6364 case 107868: /*map*/ return this.map == null ? new Base[0] : new Base[] {this.map}; // StringType 6365 case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // MarkdownType 6366 default: return super.getProperty(hash, name, checkValid); 6367 } 6368 6369 } 6370 6371 @Override 6372 public Base setProperty(int hash, String name, Base value) throws FHIRException { 6373 switch (hash) { 6374 case -135761730: // identity 6375 this.identity = TypeConvertor.castToId(value); // IdType 6376 return value; 6377 case -1613589672: // language 6378 this.language = TypeConvertor.castToCode(value); // CodeType 6379 return value; 6380 case 107868: // map 6381 this.map = TypeConvertor.castToString(value); // StringType 6382 return value; 6383 case 950398559: // comment 6384 this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType 6385 return value; 6386 default: return super.setProperty(hash, name, value); 6387 } 6388 6389 } 6390 6391 @Override 6392 public Base setProperty(String name, Base value) throws FHIRException { 6393 if (name.equals("identity")) { 6394 this.identity = TypeConvertor.castToId(value); // IdType 6395 } else if (name.equals("language")) { 6396 this.language = TypeConvertor.castToCode(value); // CodeType 6397 } else if (name.equals("map")) { 6398 this.map = TypeConvertor.castToString(value); // StringType 6399 } else if (name.equals("comment")) { 6400 this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType 6401 } else 6402 return super.setProperty(name, value); 6403 return value; 6404 } 6405 6406 @Override 6407 public Base makeProperty(int hash, String name) throws FHIRException { 6408 switch (hash) { 6409 case -135761730: return getIdentityElement(); 6410 case -1613589672: return getLanguageElement(); 6411 case 107868: return getMapElement(); 6412 case 950398559: return getCommentElement(); 6413 default: return super.makeProperty(hash, name); 6414 } 6415 6416 } 6417 6418 @Override 6419 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 6420 switch (hash) { 6421 case -135761730: /*identity*/ return new String[] {"id"}; 6422 case -1613589672: /*language*/ return new String[] {"code"}; 6423 case 107868: /*map*/ return new String[] {"string"}; 6424 case 950398559: /*comment*/ return new String[] {"markdown"}; 6425 default: return super.getTypesForProperty(hash, name); 6426 } 6427 6428 } 6429 6430 @Override 6431 public Base addChild(String name) throws FHIRException { 6432 if (name.equals("identity")) { 6433 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.mapping.identity"); 6434 } 6435 else if (name.equals("language")) { 6436 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.mapping.language"); 6437 } 6438 else if (name.equals("map")) { 6439 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.mapping.map"); 6440 } 6441 else if (name.equals("comment")) { 6442 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.mapping.comment"); 6443 } 6444 else 6445 return super.addChild(name); 6446 } 6447 6448 public ElementDefinitionMappingComponent copy() { 6449 ElementDefinitionMappingComponent dst = new ElementDefinitionMappingComponent(); 6450 copyValues(dst); 6451 return dst; 6452 } 6453 6454 public void copyValues(ElementDefinitionMappingComponent dst) { 6455 super.copyValues(dst); 6456 dst.identity = identity == null ? null : identity.copy(); 6457 dst.language = language == null ? null : language.copy(); 6458 dst.map = map == null ? null : map.copy(); 6459 dst.comment = comment == null ? null : comment.copy(); 6460 } 6461 6462 @Override 6463 public boolean equalsDeep(Base other_) { 6464 if (!super.equalsDeep(other_)) 6465 return false; 6466 if (!(other_ instanceof ElementDefinitionMappingComponent)) 6467 return false; 6468 ElementDefinitionMappingComponent o = (ElementDefinitionMappingComponent) other_; 6469 return compareDeep(identity, o.identity, true) && compareDeep(language, o.language, true) && compareDeep(map, o.map, true) 6470 && compareDeep(comment, o.comment, true); 6471 } 6472 6473 @Override 6474 public boolean equalsShallow(Base other_) { 6475 if (!super.equalsShallow(other_)) 6476 return false; 6477 if (!(other_ instanceof ElementDefinitionMappingComponent)) 6478 return false; 6479 ElementDefinitionMappingComponent o = (ElementDefinitionMappingComponent) other_; 6480 return compareValues(identity, o.identity, true) && compareValues(language, o.language, true) && compareValues(map, o.map, true) 6481 && compareValues(comment, o.comment, true); 6482 } 6483 6484 public boolean isEmpty() { 6485 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identity, language, map 6486 , comment); 6487 } 6488 6489 public String fhirType() { 6490 return "ElementDefinition.mapping"; 6491 6492 } 6493 6494 } 6495 6496 /** 6497 * The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension. 6498 */ 6499 @Child(name = "path", type = {StringType.class}, order=0, min=1, max=1, modifier=false, summary=true) 6500 @Description(shortDefinition="Path of the element in the hierarchy of elements", formalDefinition="The path identifies the element and is expressed as a \".\"-separated list of ancestor elements, beginning with the name of the resource or extension." ) 6501 protected StringType path; 6502 6503 /** 6504 * Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used. 6505 */ 6506 @Child(name = "representation", type = {CodeType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6507 @Description(shortDefinition="xmlAttr | xmlText | typeAttr | cdaText | xhtml", formalDefinition="Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used." ) 6508 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/property-representation") 6509 protected List<Enumeration<PropertyRepresentation>> representation; 6510 6511 /** 6512 * The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element. 6513 */ 6514 @Child(name = "sliceName", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true) 6515 @Description(shortDefinition="Name for this particular element (in a set of slices)", formalDefinition="The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element." ) 6516 protected StringType sliceName; 6517 6518 /** 6519 * If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName. 6520 */ 6521 @Child(name = "sliceIsConstraining", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=true) 6522 @Description(shortDefinition="If this slice definition constrains an inherited slice definition (or not)", formalDefinition="If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName." ) 6523 protected BooleanType sliceIsConstraining; 6524 6525 /** 6526 * A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form. 6527 */ 6528 @Child(name = "label", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true) 6529 @Description(shortDefinition="Name for element to display with or prompt for element", formalDefinition="A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form." ) 6530 protected StringType label; 6531 6532 /** 6533 * A code that has the same meaning as the element in a particular terminology. 6534 */ 6535 @Child(name = "code", type = {Coding.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6536 @Description(shortDefinition="Corresponding codes in terminologies", formalDefinition="A code that has the same meaning as the element in a particular terminology." ) 6537 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://loinc.org/vs") 6538 protected List<Coding> code; 6539 6540 /** 6541 * Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set). 6542 */ 6543 @Child(name = "slicing", type = {}, order=6, min=0, max=1, modifier=false, summary=true) 6544 @Description(shortDefinition="This element is sliced - slices follow", formalDefinition="Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set)." ) 6545 protected ElementDefinitionSlicingComponent slicing; 6546 6547 /** 6548 * A concise description of what this element means (e.g. for use in autogenerated summaries). 6549 */ 6550 @Child(name = "short", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=true) 6551 @Description(shortDefinition="Concise definition for space-constrained presentation", formalDefinition="A concise description of what this element means (e.g. for use in autogenerated summaries)." ) 6552 protected StringType short_; 6553 6554 /** 6555 * Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition). 6556 */ 6557 @Child(name = "definition", type = {MarkdownType.class}, order=8, min=0, max=1, modifier=false, summary=true) 6558 @Description(shortDefinition="Full formal definition as narrative text", formalDefinition="Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition)." ) 6559 protected MarkdownType definition; 6560 6561 /** 6562 * Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment). 6563 */ 6564 @Child(name = "comment", type = {MarkdownType.class}, order=9, min=0, max=1, modifier=false, summary=true) 6565 @Description(shortDefinition="Comments about the use of this element", formalDefinition="Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment)." ) 6566 protected MarkdownType comment; 6567 6568 /** 6569 * This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element. 6570 */ 6571 @Child(name = "requirements", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=true) 6572 @Description(shortDefinition="Why this resource has been created", formalDefinition="This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element." ) 6573 protected MarkdownType requirements; 6574 6575 /** 6576 * Identifies additional names by which this element might also be known. 6577 */ 6578 @Child(name = "alias", type = {StringType.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6579 @Description(shortDefinition="Other names", formalDefinition="Identifies additional names by which this element might also be known." ) 6580 protected List<StringType> alias; 6581 6582 /** 6583 * The minimum number of times this element SHALL appear in the instance. 6584 */ 6585 @Child(name = "min", type = {UnsignedIntType.class}, order=12, min=0, max=1, modifier=false, summary=true) 6586 @Description(shortDefinition="Minimum Cardinality", formalDefinition="The minimum number of times this element SHALL appear in the instance." ) 6587 protected UnsignedIntType min; 6588 6589 /** 6590 * The maximum number of times this element is permitted to appear in the instance. 6591 */ 6592 @Child(name = "max", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=true) 6593 @Description(shortDefinition="Maximum Cardinality (a number or *)", formalDefinition="The maximum number of times this element is permitted to appear in the instance." ) 6594 protected StringType max; 6595 6596 /** 6597 * Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same. 6598 */ 6599 @Child(name = "base", type = {}, order=14, min=0, max=1, modifier=false, summary=true) 6600 @Description(shortDefinition="Base definition information for tools", formalDefinition="Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same." ) 6601 protected ElementDefinitionBaseComponent base; 6602 6603 /** 6604 * Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc. 6605 */ 6606 @Child(name = "contentReference", type = {UriType.class}, order=15, min=0, max=1, modifier=false, summary=true) 6607 @Description(shortDefinition="Reference to definition of content for the element", formalDefinition="Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc." ) 6608 protected UriType contentReference; 6609 6610 /** 6611 * The data type or resource that the value of this element is permitted to be. 6612 */ 6613 @Child(name = "type", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6614 @Description(shortDefinition="Data type and Profile for this element", formalDefinition="The data type or resource that the value of this element is permitted to be." ) 6615 protected List<TypeRefComponent> type; 6616 6617 /** 6618 * The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false'). 6619 */ 6620 @Child(name = "defaultValue", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, Integer64Type.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, CodeableReference.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, RatioRange.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Availability.class, ExtendedContactDetail.class, Dosage.class, Meta.class}, order=17, min=0, max=1, modifier=false, summary=true) 6621 @Description(shortDefinition="Specified value if missing from instance", formalDefinition="The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false')." ) 6622 protected DataType defaultValue; 6623 6624 /** 6625 * The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'). 6626 */ 6627 @Child(name = "meaningWhenMissing", type = {MarkdownType.class}, order=18, min=0, max=1, modifier=false, summary=true) 6628 @Description(shortDefinition="Implicit meaning when this element is missing", formalDefinition="The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing')." ) 6629 protected MarkdownType meaningWhenMissing; 6630 6631 /** 6632 * If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning. 6633 */ 6634 @Child(name = "orderMeaning", type = {StringType.class}, order=19, min=0, max=1, modifier=false, summary=true) 6635 @Description(shortDefinition="What the order of the elements means", formalDefinition="If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning." ) 6636 protected StringType orderMeaning; 6637 6638 /** 6639 * Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing. 6640 */ 6641 @Child(name = "fixed", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, Integer64Type.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, CodeableReference.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, RatioRange.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Availability.class, ExtendedContactDetail.class, Dosage.class, Meta.class}, order=20, min=0, max=1, modifier=false, summary=true) 6642 @Description(shortDefinition="Value must be exactly this", formalDefinition="Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing." ) 6643 protected DataType fixed; 6644 6645 /** 6646 * Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 6647 6648When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 6649 6650When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 6651 6652When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 6653 66541. If primitive: it must match exactly the pattern value 66552. If a complex object: it must match (recursively) the pattern value 66563. If an array: it must match (recursively) the pattern value 6657 6658If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have. 6659 */ 6660 @Child(name = "pattern", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, Integer64Type.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, CodeableReference.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, RatioRange.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Availability.class, ExtendedContactDetail.class, Dosage.class, Meta.class}, order=21, min=0, max=1, modifier=false, summary=true) 6661 @Description(shortDefinition="Value must have at least these property values", formalDefinition="Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have." ) 6662 protected DataType pattern; 6663 6664 /** 6665 * A sample value for this element demonstrating the type of information that would typically be found in the element. 6666 */ 6667 @Child(name = "example", type = {}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6668 @Description(shortDefinition="Example value (as defined for type)", formalDefinition="A sample value for this element demonstrating the type of information that would typically be found in the element." ) 6669 protected List<ElementDefinitionExampleComponent> example; 6670 6671 /** 6672 * The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity. 6673 */ 6674 @Child(name = "minValue", type = {DateType.class, DateTimeType.class, InstantType.class, TimeType.class, DecimalType.class, IntegerType.class, Integer64Type.class, PositiveIntType.class, UnsignedIntType.class, Quantity.class}, order=23, min=0, max=1, modifier=false, summary=true) 6675 @Description(shortDefinition="Minimum Allowed Value (for some types)", formalDefinition="The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity." ) 6676 protected DataType minValue; 6677 6678 /** 6679 * The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity. 6680 */ 6681 @Child(name = "maxValue", type = {DateType.class, DateTimeType.class, InstantType.class, TimeType.class, DecimalType.class, IntegerType.class, Integer64Type.class, PositiveIntType.class, UnsignedIntType.class, Quantity.class}, order=24, min=0, max=1, modifier=false, summary=true) 6682 @Description(shortDefinition="Maximum Allowed Value (for some types)", formalDefinition="The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity." ) 6683 protected DataType maxValue; 6684 6685 /** 6686 * Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)). 6687 */ 6688 @Child(name = "maxLength", type = {IntegerType.class}, order=25, min=0, max=1, modifier=false, summary=true) 6689 @Description(shortDefinition="Max length for string type data", formalDefinition="Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html))." ) 6690 protected IntegerType maxLength; 6691 6692 /** 6693 * A reference to an invariant that may make additional statements about the cardinality or value in the instance. 6694 */ 6695 @Child(name = "condition", type = {IdType.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6696 @Description(shortDefinition="Reference to invariant about presence", formalDefinition="A reference to an invariant that may make additional statements about the cardinality or value in the instance." ) 6697 protected List<IdType> condition; 6698 6699 /** 6700 * Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance. 6701 */ 6702 @Child(name = "constraint", type = {}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6703 @Description(shortDefinition="Condition that must evaluate to true", formalDefinition="Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance." ) 6704 protected List<ElementDefinitionConstraintComponent> constraint; 6705 6706 /** 6707 * Specifies for a primitive data type that the value of the data type cannot be replaced by an extension. 6708 */ 6709 @Child(name = "mustHaveValue", type = {BooleanType.class}, order=28, min=0, max=1, modifier=false, summary=true) 6710 @Description(shortDefinition="For primitives, that a value must be present - not replaced by an extension", formalDefinition="Specifies for a primitive data type that the value of the data type cannot be replaced by an extension." ) 6711 protected BooleanType mustHaveValue; 6712 6713 /** 6714 * Specifies a list of extensions that can appear in place of a primitive value. 6715 */ 6716 @Child(name = "valueAlternatives", type = {CanonicalType.class}, order=29, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6717 @Description(shortDefinition="Extensions that are allowed to replace a primitive value", formalDefinition="Specifies a list of extensions that can appear in place of a primitive value." ) 6718 protected List<CanonicalType> valueAlternatives; 6719 6720 /** 6721 * If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation. 6722 */ 6723 @Child(name = "mustSupport", type = {BooleanType.class}, order=30, min=0, max=1, modifier=false, summary=true) 6724 @Description(shortDefinition="If the element must be supported (discouraged - see obligations)", formalDefinition="If true, implementations that produce or consume resources SHALL provide \"support\" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation." ) 6725 protected BooleanType mustSupport; 6726 6727 /** 6728 * Documents obligations that apply to applications implementing this element. The obligations relate to application behaviour, not the content of the element itself in the resource instances that contain this element. 6729 */ 6730 @Child(name = "obligation", type = {}, order=31, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6731 @Description(shortDefinition="Documents obligations for applications making use of this element", formalDefinition="Documents obligations that apply to applications implementing this element. The obligations relate to application behaviour, not the content of the element itself in the resource instances that contain this element." ) 6732 protected List<ElementDefinitionObligationComponent> obligation; 6733 6734 /** 6735 * If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system. 6736 */ 6737 @Child(name = "isModifier", type = {BooleanType.class}, order=32, min=0, max=1, modifier=false, summary=true) 6738 @Description(shortDefinition="If this modifies the meaning of other elements", formalDefinition="If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system." ) 6739 protected BooleanType isModifier; 6740 6741 /** 6742 * Explains how that element affects the interpretation of the resource or element that contains it. 6743 */ 6744 @Child(name = "isModifierReason", type = {StringType.class}, order=33, min=0, max=1, modifier=false, summary=true) 6745 @Description(shortDefinition="Reason that this element is marked as a modifier", formalDefinition="Explains how that element affects the interpretation of the resource or element that contains it." ) 6746 protected StringType isModifierReason; 6747 6748 /** 6749 * Whether the element should be included if a client requests a search with the parameter _summary=true. 6750 */ 6751 @Child(name = "isSummary", type = {BooleanType.class}, order=34, min=0, max=1, modifier=false, summary=true) 6752 @Description(shortDefinition="Include when _summary = true?", formalDefinition="Whether the element should be included if a client requests a search with the parameter _summary=true." ) 6753 protected BooleanType isSummary; 6754 6755 /** 6756 * Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri). 6757 */ 6758 @Child(name = "binding", type = {}, order=35, min=0, max=1, modifier=false, summary=true) 6759 @Description(shortDefinition="ValueSet details if this is coded", formalDefinition="Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri)." ) 6760 protected ElementDefinitionBindingComponent binding; 6761 6762 /** 6763 * Identifies a concept from an external specification that roughly corresponds to this element. 6764 */ 6765 @Child(name = "mapping", type = {}, order=36, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 6766 @Description(shortDefinition="Map element to another set of definitions", formalDefinition="Identifies a concept from an external specification that roughly corresponds to this element." ) 6767 protected List<ElementDefinitionMappingComponent> mapping; 6768 6769 private static final long serialVersionUID = -732756088L; 6770 6771 /** 6772 * Constructor 6773 */ 6774 public ElementDefinition() { 6775 super(); 6776 } 6777 6778 /** 6779 * Constructor 6780 */ 6781 public ElementDefinition(String path) { 6782 super(); 6783 this.setPath(path); 6784 } 6785 6786 /** 6787 * @return {@link #path} (The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value 6788 */ 6789 public StringType getPathElement() { 6790 if (this.path == null) 6791 if (Configuration.errorOnAutoCreate()) 6792 throw new Error("Attempt to auto-create ElementDefinition.path"); 6793 else if (Configuration.doAutoCreate()) 6794 this.path = new StringType(); // bb 6795 return this.path; 6796 } 6797 6798 public boolean hasPathElement() { 6799 return this.path != null && !this.path.isEmpty(); 6800 } 6801 6802 public boolean hasPath() { 6803 return this.path != null && !this.path.isEmpty(); 6804 } 6805 6806 /** 6807 * @param value {@link #path} (The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value 6808 */ 6809 public ElementDefinition setPathElement(StringType value) { 6810 this.path = value; 6811 return this; 6812 } 6813 6814 /** 6815 * @return The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension. 6816 */ 6817 public String getPath() { 6818 return this.path == null ? null : this.path.getValue(); 6819 } 6820 6821 /** 6822 * @param value The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension. 6823 */ 6824 public ElementDefinition setPath(String value) { 6825 if (this.path == null) 6826 this.path = new StringType(); 6827 this.path.setValue(value); 6828 return this; 6829 } 6830 6831 /** 6832 * @return {@link #representation} (Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used.) 6833 */ 6834 public List<Enumeration<PropertyRepresentation>> getRepresentation() { 6835 if (this.representation == null) 6836 this.representation = new ArrayList<Enumeration<PropertyRepresentation>>(); 6837 return this.representation; 6838 } 6839 6840 /** 6841 * @return Returns a reference to <code>this</code> for easy method chaining 6842 */ 6843 public ElementDefinition setRepresentation(List<Enumeration<PropertyRepresentation>> theRepresentation) { 6844 this.representation = theRepresentation; 6845 return this; 6846 } 6847 6848 public boolean hasRepresentation() { 6849 if (this.representation == null) 6850 return false; 6851 for (Enumeration<PropertyRepresentation> item : this.representation) 6852 if (!item.isEmpty()) 6853 return true; 6854 return false; 6855 } 6856 6857 /** 6858 * @return {@link #representation} (Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used.) 6859 */ 6860 public Enumeration<PropertyRepresentation> addRepresentationElement() {//2 6861 Enumeration<PropertyRepresentation> t = new Enumeration<PropertyRepresentation>(new PropertyRepresentationEnumFactory()); 6862 if (this.representation == null) 6863 this.representation = new ArrayList<Enumeration<PropertyRepresentation>>(); 6864 this.representation.add(t); 6865 return t; 6866 } 6867 6868 /** 6869 * @param value {@link #representation} (Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used.) 6870 */ 6871 public ElementDefinition addRepresentation(PropertyRepresentation value) { //1 6872 Enumeration<PropertyRepresentation> t = new Enumeration<PropertyRepresentation>(new PropertyRepresentationEnumFactory()); 6873 t.setValue(value); 6874 if (this.representation == null) 6875 this.representation = new ArrayList<Enumeration<PropertyRepresentation>>(); 6876 this.representation.add(t); 6877 return this; 6878 } 6879 6880 /** 6881 * @param value {@link #representation} (Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used.) 6882 */ 6883 public boolean hasRepresentation(PropertyRepresentation value) { 6884 if (this.representation == null) 6885 return false; 6886 for (Enumeration<PropertyRepresentation> v : this.representation) 6887 if (v.getValue().equals(value)) // code 6888 return true; 6889 return false; 6890 } 6891 6892 /** 6893 * @return {@link #sliceName} (The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element.). This is the underlying object with id, value and extensions. The accessor "getSliceName" gives direct access to the value 6894 */ 6895 public StringType getSliceNameElement() { 6896 if (this.sliceName == null) 6897 if (Configuration.errorOnAutoCreate()) 6898 throw new Error("Attempt to auto-create ElementDefinition.sliceName"); 6899 else if (Configuration.doAutoCreate()) 6900 this.sliceName = new StringType(); // bb 6901 return this.sliceName; 6902 } 6903 6904 public boolean hasSliceNameElement() { 6905 return this.sliceName != null && !this.sliceName.isEmpty(); 6906 } 6907 6908 public boolean hasSliceName() { 6909 return this.sliceName != null && !this.sliceName.isEmpty(); 6910 } 6911 6912 /** 6913 * @param value {@link #sliceName} (The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element.). This is the underlying object with id, value and extensions. The accessor "getSliceName" gives direct access to the value 6914 */ 6915 public ElementDefinition setSliceNameElement(StringType value) { 6916 this.sliceName = value; 6917 return this; 6918 } 6919 6920 /** 6921 * @return The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element. 6922 */ 6923 public String getSliceName() { 6924 return this.sliceName == null ? null : this.sliceName.getValue(); 6925 } 6926 6927 /** 6928 * @param value The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element. 6929 */ 6930 public ElementDefinition setSliceName(String value) { 6931 if (Utilities.noString(value)) 6932 this.sliceName = null; 6933 else { 6934 if (this.sliceName == null) 6935 this.sliceName = new StringType(); 6936 this.sliceName.setValue(value); 6937 } 6938 return this; 6939 } 6940 6941 /** 6942 * @return {@link #sliceIsConstraining} (If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName.). This is the underlying object with id, value and extensions. The accessor "getSliceIsConstraining" gives direct access to the value 6943 */ 6944 public BooleanType getSliceIsConstrainingElement() { 6945 if (this.sliceIsConstraining == null) 6946 if (Configuration.errorOnAutoCreate()) 6947 throw new Error("Attempt to auto-create ElementDefinition.sliceIsConstraining"); 6948 else if (Configuration.doAutoCreate()) 6949 this.sliceIsConstraining = new BooleanType(); // bb 6950 return this.sliceIsConstraining; 6951 } 6952 6953 public boolean hasSliceIsConstrainingElement() { 6954 return this.sliceIsConstraining != null && !this.sliceIsConstraining.isEmpty(); 6955 } 6956 6957 public boolean hasSliceIsConstraining() { 6958 return this.sliceIsConstraining != null && !this.sliceIsConstraining.isEmpty(); 6959 } 6960 6961 /** 6962 * @param value {@link #sliceIsConstraining} (If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName.). This is the underlying object with id, value and extensions. The accessor "getSliceIsConstraining" gives direct access to the value 6963 */ 6964 public ElementDefinition setSliceIsConstrainingElement(BooleanType value) { 6965 this.sliceIsConstraining = value; 6966 return this; 6967 } 6968 6969 /** 6970 * @return If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName. 6971 */ 6972 public boolean getSliceIsConstraining() { 6973 return this.sliceIsConstraining == null || this.sliceIsConstraining.isEmpty() ? false : this.sliceIsConstraining.getValue(); 6974 } 6975 6976 /** 6977 * @param value If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName. 6978 */ 6979 public ElementDefinition setSliceIsConstraining(boolean value) { 6980 if (this.sliceIsConstraining == null) 6981 this.sliceIsConstraining = new BooleanType(); 6982 this.sliceIsConstraining.setValue(value); 6983 return this; 6984 } 6985 6986 /** 6987 * @return {@link #label} (A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value 6988 */ 6989 public StringType getLabelElement() { 6990 if (this.label == null) 6991 if (Configuration.errorOnAutoCreate()) 6992 throw new Error("Attempt to auto-create ElementDefinition.label"); 6993 else if (Configuration.doAutoCreate()) 6994 this.label = new StringType(); // bb 6995 return this.label; 6996 } 6997 6998 public boolean hasLabelElement() { 6999 return this.label != null && !this.label.isEmpty(); 7000 } 7001 7002 public boolean hasLabel() { 7003 return this.label != null && !this.label.isEmpty(); 7004 } 7005 7006 /** 7007 * @param value {@link #label} (A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value 7008 */ 7009 public ElementDefinition setLabelElement(StringType value) { 7010 this.label = value; 7011 return this; 7012 } 7013 7014 /** 7015 * @return A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form. 7016 */ 7017 public String getLabel() { 7018 return this.label == null ? null : this.label.getValue(); 7019 } 7020 7021 /** 7022 * @param value A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form. 7023 */ 7024 public ElementDefinition setLabel(String value) { 7025 if (Utilities.noString(value)) 7026 this.label = null; 7027 else { 7028 if (this.label == null) 7029 this.label = new StringType(); 7030 this.label.setValue(value); 7031 } 7032 return this; 7033 } 7034 7035 /** 7036 * @return {@link #code} (A code that has the same meaning as the element in a particular terminology.) 7037 */ 7038 public List<Coding> getCode() { 7039 if (this.code == null) 7040 this.code = new ArrayList<Coding>(); 7041 return this.code; 7042 } 7043 7044 /** 7045 * @return Returns a reference to <code>this</code> for easy method chaining 7046 */ 7047 public ElementDefinition setCode(List<Coding> theCode) { 7048 this.code = theCode; 7049 return this; 7050 } 7051 7052 public boolean hasCode() { 7053 if (this.code == null) 7054 return false; 7055 for (Coding item : this.code) 7056 if (!item.isEmpty()) 7057 return true; 7058 return false; 7059 } 7060 7061 public Coding addCode() { //3 7062 Coding t = new Coding(); 7063 if (this.code == null) 7064 this.code = new ArrayList<Coding>(); 7065 this.code.add(t); 7066 return t; 7067 } 7068 7069 public ElementDefinition addCode(Coding t) { //3 7070 if (t == null) 7071 return this; 7072 if (this.code == null) 7073 this.code = new ArrayList<Coding>(); 7074 this.code.add(t); 7075 return this; 7076 } 7077 7078 /** 7079 * @return The first repetition of repeating field {@link #code}, creating it if it does not already exist {3} 7080 */ 7081 public Coding getCodeFirstRep() { 7082 if (getCode().isEmpty()) { 7083 addCode(); 7084 } 7085 return getCode().get(0); 7086 } 7087 7088 /** 7089 * @return {@link #slicing} (Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set).) 7090 */ 7091 public ElementDefinitionSlicingComponent getSlicing() { 7092 if (this.slicing == null) 7093 if (Configuration.errorOnAutoCreate()) 7094 throw new Error("Attempt to auto-create ElementDefinition.slicing"); 7095 else if (Configuration.doAutoCreate()) 7096 this.slicing = new ElementDefinitionSlicingComponent(); // cc 7097 return this.slicing; 7098 } 7099 7100 public boolean hasSlicing() { 7101 return this.slicing != null && !this.slicing.isEmpty(); 7102 } 7103 7104 /** 7105 * @param value {@link #slicing} (Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set).) 7106 */ 7107 public ElementDefinition setSlicing(ElementDefinitionSlicingComponent value) { 7108 this.slicing = value; 7109 return this; 7110 } 7111 7112 /** 7113 * @return {@link #short_} (A concise description of what this element means (e.g. for use in autogenerated summaries).). This is the underlying object with id, value and extensions. The accessor "getShort" gives direct access to the value 7114 */ 7115 public StringType getShortElement() { 7116 if (this.short_ == null) 7117 if (Configuration.errorOnAutoCreate()) 7118 throw new Error("Attempt to auto-create ElementDefinition.short_"); 7119 else if (Configuration.doAutoCreate()) 7120 this.short_ = new StringType(); // bb 7121 return this.short_; 7122 } 7123 7124 public boolean hasShortElement() { 7125 return this.short_ != null && !this.short_.isEmpty(); 7126 } 7127 7128 public boolean hasShort() { 7129 return this.short_ != null && !this.short_.isEmpty(); 7130 } 7131 7132 /** 7133 * @param value {@link #short_} (A concise description of what this element means (e.g. for use in autogenerated summaries).). This is the underlying object with id, value and extensions. The accessor "getShort" gives direct access to the value 7134 */ 7135 public ElementDefinition setShortElement(StringType value) { 7136 this.short_ = value; 7137 return this; 7138 } 7139 7140 /** 7141 * @return A concise description of what this element means (e.g. for use in autogenerated summaries). 7142 */ 7143 public String getShort() { 7144 return this.short_ == null ? null : this.short_.getValue(); 7145 } 7146 7147 /** 7148 * @param value A concise description of what this element means (e.g. for use in autogenerated summaries). 7149 */ 7150 public ElementDefinition setShort(String value) { 7151 if (Utilities.noString(value)) 7152 this.short_ = null; 7153 else { 7154 if (this.short_ == null) 7155 this.short_ = new StringType(); 7156 this.short_.setValue(value); 7157 } 7158 return this; 7159 } 7160 7161 /** 7162 * @return {@link #definition} (Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition).). This is the underlying object with id, value and extensions. The accessor "getDefinition" gives direct access to the value 7163 */ 7164 public MarkdownType getDefinitionElement() { 7165 if (this.definition == null) 7166 if (Configuration.errorOnAutoCreate()) 7167 throw new Error("Attempt to auto-create ElementDefinition.definition"); 7168 else if (Configuration.doAutoCreate()) 7169 this.definition = new MarkdownType(); // bb 7170 return this.definition; 7171 } 7172 7173 public boolean hasDefinitionElement() { 7174 return this.definition != null && !this.definition.isEmpty(); 7175 } 7176 7177 public boolean hasDefinition() { 7178 return this.definition != null && !this.definition.isEmpty(); 7179 } 7180 7181 /** 7182 * @param value {@link #definition} (Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition).). This is the underlying object with id, value and extensions. The accessor "getDefinition" gives direct access to the value 7183 */ 7184 public ElementDefinition setDefinitionElement(MarkdownType value) { 7185 this.definition = value; 7186 return this; 7187 } 7188 7189 /** 7190 * @return Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition). 7191 */ 7192 public String getDefinition() { 7193 return this.definition == null ? null : this.definition.getValue(); 7194 } 7195 7196 /** 7197 * @param value Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition). 7198 */ 7199 public ElementDefinition setDefinition(String value) { 7200 if (value == null) 7201 this.definition = null; 7202 else { 7203 if (this.definition == null) 7204 this.definition = new MarkdownType(); 7205 this.definition.setValue(value); 7206 } 7207 return this; 7208 } 7209 7210 /** 7211 * @return {@link #comment} (Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment).). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value 7212 */ 7213 public MarkdownType getCommentElement() { 7214 if (this.comment == null) 7215 if (Configuration.errorOnAutoCreate()) 7216 throw new Error("Attempt to auto-create ElementDefinition.comment"); 7217 else if (Configuration.doAutoCreate()) 7218 this.comment = new MarkdownType(); // bb 7219 return this.comment; 7220 } 7221 7222 public boolean hasCommentElement() { 7223 return this.comment != null && !this.comment.isEmpty(); 7224 } 7225 7226 public boolean hasComment() { 7227 return this.comment != null && !this.comment.isEmpty(); 7228 } 7229 7230 /** 7231 * @param value {@link #comment} (Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment).). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value 7232 */ 7233 public ElementDefinition setCommentElement(MarkdownType value) { 7234 this.comment = value; 7235 return this; 7236 } 7237 7238 /** 7239 * @return Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment). 7240 */ 7241 public String getComment() { 7242 return this.comment == null ? null : this.comment.getValue(); 7243 } 7244 7245 /** 7246 * @param value Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment). 7247 */ 7248 public ElementDefinition setComment(String value) { 7249 if (value == null) 7250 this.comment = null; 7251 else { 7252 if (this.comment == null) 7253 this.comment = new MarkdownType(); 7254 this.comment.setValue(value); 7255 } 7256 return this; 7257 } 7258 7259 /** 7260 * @return {@link #requirements} (This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element.). This is the underlying object with id, value and extensions. The accessor "getRequirements" gives direct access to the value 7261 */ 7262 public MarkdownType getRequirementsElement() { 7263 if (this.requirements == null) 7264 if (Configuration.errorOnAutoCreate()) 7265 throw new Error("Attempt to auto-create ElementDefinition.requirements"); 7266 else if (Configuration.doAutoCreate()) 7267 this.requirements = new MarkdownType(); // bb 7268 return this.requirements; 7269 } 7270 7271 public boolean hasRequirementsElement() { 7272 return this.requirements != null && !this.requirements.isEmpty(); 7273 } 7274 7275 public boolean hasRequirements() { 7276 return this.requirements != null && !this.requirements.isEmpty(); 7277 } 7278 7279 /** 7280 * @param value {@link #requirements} (This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element.). This is the underlying object with id, value and extensions. The accessor "getRequirements" gives direct access to the value 7281 */ 7282 public ElementDefinition setRequirementsElement(MarkdownType value) { 7283 this.requirements = value; 7284 return this; 7285 } 7286 7287 /** 7288 * @return This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element. 7289 */ 7290 public String getRequirements() { 7291 return this.requirements == null ? null : this.requirements.getValue(); 7292 } 7293 7294 /** 7295 * @param value This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element. 7296 */ 7297 public ElementDefinition setRequirements(String value) { 7298 if (value == null) 7299 this.requirements = null; 7300 else { 7301 if (this.requirements == null) 7302 this.requirements = new MarkdownType(); 7303 this.requirements.setValue(value); 7304 } 7305 return this; 7306 } 7307 7308 /** 7309 * @return {@link #alias} (Identifies additional names by which this element might also be known.) 7310 */ 7311 public List<StringType> getAlias() { 7312 if (this.alias == null) 7313 this.alias = new ArrayList<StringType>(); 7314 return this.alias; 7315 } 7316 7317 /** 7318 * @return Returns a reference to <code>this</code> for easy method chaining 7319 */ 7320 public ElementDefinition setAlias(List<StringType> theAlias) { 7321 this.alias = theAlias; 7322 return this; 7323 } 7324 7325 public boolean hasAlias() { 7326 if (this.alias == null) 7327 return false; 7328 for (StringType item : this.alias) 7329 if (!item.isEmpty()) 7330 return true; 7331 return false; 7332 } 7333 7334 /** 7335 * @return {@link #alias} (Identifies additional names by which this element might also be known.) 7336 */ 7337 public StringType addAliasElement() {//2 7338 StringType t = new StringType(); 7339 if (this.alias == null) 7340 this.alias = new ArrayList<StringType>(); 7341 this.alias.add(t); 7342 return t; 7343 } 7344 7345 /** 7346 * @param value {@link #alias} (Identifies additional names by which this element might also be known.) 7347 */ 7348 public ElementDefinition addAlias(String value) { //1 7349 StringType t = new StringType(); 7350 t.setValue(value); 7351 if (this.alias == null) 7352 this.alias = new ArrayList<StringType>(); 7353 this.alias.add(t); 7354 return this; 7355 } 7356 7357 /** 7358 * @param value {@link #alias} (Identifies additional names by which this element might also be known.) 7359 */ 7360 public boolean hasAlias(String value) { 7361 if (this.alias == null) 7362 return false; 7363 for (StringType v : this.alias) 7364 if (v.getValue().equals(value)) // string 7365 return true; 7366 return false; 7367 } 7368 7369 /** 7370 * @return {@link #min} (The minimum number of times this element SHALL appear in the instance.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value 7371 */ 7372 public UnsignedIntType getMinElement() { 7373 if (this.min == null) 7374 if (Configuration.errorOnAutoCreate()) 7375 throw new Error("Attempt to auto-create ElementDefinition.min"); 7376 else if (Configuration.doAutoCreate()) 7377 this.min = new UnsignedIntType(); // bb 7378 return this.min; 7379 } 7380 7381 public boolean hasMinElement() { 7382 return this.min != null && !this.min.isEmpty(); 7383 } 7384 7385 public boolean hasMin() { 7386 return this.min != null && !this.min.isEmpty(); 7387 } 7388 7389 /** 7390 * @param value {@link #min} (The minimum number of times this element SHALL appear in the instance.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value 7391 */ 7392 public ElementDefinition setMinElement(UnsignedIntType value) { 7393 this.min = value; 7394 return this; 7395 } 7396 7397 /** 7398 * @return The minimum number of times this element SHALL appear in the instance. 7399 */ 7400 public int getMin() { 7401 return this.min == null || this.min.isEmpty() ? 0 : this.min.getValue(); 7402 } 7403 7404 /** 7405 * @param value The minimum number of times this element SHALL appear in the instance. 7406 */ 7407 public ElementDefinition setMin(int value) { 7408 if (this.min == null) 7409 this.min = new UnsignedIntType(); 7410 this.min.setValue(value); 7411 return this; 7412 } 7413 7414 /** 7415 * @return {@link #max} (The maximum number of times this element is permitted to appear in the instance.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value 7416 */ 7417 public StringType getMaxElement() { 7418 if (this.max == null) 7419 if (Configuration.errorOnAutoCreate()) 7420 throw new Error("Attempt to auto-create ElementDefinition.max"); 7421 else if (Configuration.doAutoCreate()) 7422 this.max = new StringType(); // bb 7423 return this.max; 7424 } 7425 7426 public boolean hasMaxElement() { 7427 return this.max != null && !this.max.isEmpty(); 7428 } 7429 7430 public boolean hasMax() { 7431 return this.max != null && !this.max.isEmpty(); 7432 } 7433 7434 /** 7435 * @param value {@link #max} (The maximum number of times this element is permitted to appear in the instance.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value 7436 */ 7437 public ElementDefinition setMaxElement(StringType value) { 7438 this.max = value; 7439 return this; 7440 } 7441 7442 /** 7443 * @return The maximum number of times this element is permitted to appear in the instance. 7444 */ 7445 public String getMax() { 7446 return this.max == null ? null : this.max.getValue(); 7447 } 7448 7449 /** 7450 * @param value The maximum number of times this element is permitted to appear in the instance. 7451 */ 7452 public ElementDefinition setMax(String value) { 7453 if (Utilities.noString(value)) 7454 this.max = null; 7455 else { 7456 if (this.max == null) 7457 this.max = new StringType(); 7458 this.max.setValue(value); 7459 } 7460 return this; 7461 } 7462 7463 /** 7464 * @return {@link #base} (Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same.) 7465 */ 7466 public ElementDefinitionBaseComponent getBase() { 7467 if (this.base == null) 7468 if (Configuration.errorOnAutoCreate()) 7469 throw new Error("Attempt to auto-create ElementDefinition.base"); 7470 else if (Configuration.doAutoCreate()) 7471 this.base = new ElementDefinitionBaseComponent(); // cc 7472 return this.base; 7473 } 7474 7475 public boolean hasBase() { 7476 return this.base != null && !this.base.isEmpty(); 7477 } 7478 7479 /** 7480 * @param value {@link #base} (Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same.) 7481 */ 7482 public ElementDefinition setBase(ElementDefinitionBaseComponent value) { 7483 this.base = value; 7484 return this; 7485 } 7486 7487 /** 7488 * @return {@link #contentReference} (Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc.). This is the underlying object with id, value and extensions. The accessor "getContentReference" gives direct access to the value 7489 */ 7490 public UriType getContentReferenceElement() { 7491 if (this.contentReference == null) 7492 if (Configuration.errorOnAutoCreate()) 7493 throw new Error("Attempt to auto-create ElementDefinition.contentReference"); 7494 else if (Configuration.doAutoCreate()) 7495 this.contentReference = new UriType(); // bb 7496 return this.contentReference; 7497 } 7498 7499 public boolean hasContentReferenceElement() { 7500 return this.contentReference != null && !this.contentReference.isEmpty(); 7501 } 7502 7503 public boolean hasContentReference() { 7504 return this.contentReference != null && !this.contentReference.isEmpty(); 7505 } 7506 7507 /** 7508 * @param value {@link #contentReference} (Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc.). This is the underlying object with id, value and extensions. The accessor "getContentReference" gives direct access to the value 7509 */ 7510 public ElementDefinition setContentReferenceElement(UriType value) { 7511 this.contentReference = value; 7512 return this; 7513 } 7514 7515 /** 7516 * @return Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc. 7517 */ 7518 public String getContentReference() { 7519 return this.contentReference == null ? null : this.contentReference.getValue(); 7520 } 7521 7522 /** 7523 * @param value Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc. 7524 */ 7525 public ElementDefinition setContentReference(String value) { 7526 if (Utilities.noString(value)) 7527 this.contentReference = null; 7528 else { 7529 if (this.contentReference == null) 7530 this.contentReference = new UriType(); 7531 this.contentReference.setValue(value); 7532 } 7533 return this; 7534 } 7535 7536 /** 7537 * @return {@link #type} (The data type or resource that the value of this element is permitted to be.) 7538 */ 7539 public List<TypeRefComponent> getType() { 7540 if (this.type == null) 7541 this.type = new ArrayList<TypeRefComponent>(); 7542 return this.type; 7543 } 7544 7545 /** 7546 * @return Returns a reference to <code>this</code> for easy method chaining 7547 */ 7548 public ElementDefinition setType(List<TypeRefComponent> theType) { 7549 this.type = theType; 7550 return this; 7551 } 7552 7553 public boolean hasType() { 7554 if (this.type == null) 7555 return false; 7556 for (TypeRefComponent item : this.type) 7557 if (!item.isEmpty()) 7558 return true; 7559 return false; 7560 } 7561 7562 public TypeRefComponent addType() { //3 7563 TypeRefComponent t = new TypeRefComponent(); 7564 if (this.type == null) 7565 this.type = new ArrayList<TypeRefComponent>(); 7566 this.type.add(t); 7567 return t; 7568 } 7569 7570 public ElementDefinition addType(TypeRefComponent t) { //3 7571 if (t == null) 7572 return this; 7573 if (this.type == null) 7574 this.type = new ArrayList<TypeRefComponent>(); 7575 this.type.add(t); 7576 return this; 7577 } 7578 7579 /** 7580 * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3} 7581 */ 7582 public TypeRefComponent getTypeFirstRep() { 7583 if (getType().isEmpty()) { 7584 addType(); 7585 } 7586 return getType().get(0); 7587 } 7588 7589 /** 7590 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7591 */ 7592 public DataType getDefaultValue() { 7593 return this.defaultValue; 7594 } 7595 7596 /** 7597 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7598 */ 7599 public Base64BinaryType getDefaultValueBase64BinaryType() throws FHIRException { 7600 if (this.defaultValue == null) 7601 this.defaultValue = new Base64BinaryType(); 7602 if (!(this.defaultValue instanceof Base64BinaryType)) 7603 throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7604 return (Base64BinaryType) this.defaultValue; 7605 } 7606 7607 public boolean hasDefaultValueBase64BinaryType() { 7608 return this != null && this.defaultValue instanceof Base64BinaryType; 7609 } 7610 7611 /** 7612 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7613 */ 7614 public BooleanType getDefaultValueBooleanType() throws FHIRException { 7615 if (this.defaultValue == null) 7616 this.defaultValue = new BooleanType(); 7617 if (!(this.defaultValue instanceof BooleanType)) 7618 throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7619 return (BooleanType) this.defaultValue; 7620 } 7621 7622 public boolean hasDefaultValueBooleanType() { 7623 return this != null && this.defaultValue instanceof BooleanType; 7624 } 7625 7626 /** 7627 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7628 */ 7629 public CanonicalType getDefaultValueCanonicalType() throws FHIRException { 7630 if (this.defaultValue == null) 7631 this.defaultValue = new CanonicalType(); 7632 if (!(this.defaultValue instanceof CanonicalType)) 7633 throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7634 return (CanonicalType) this.defaultValue; 7635 } 7636 7637 public boolean hasDefaultValueCanonicalType() { 7638 return this != null && this.defaultValue instanceof CanonicalType; 7639 } 7640 7641 /** 7642 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7643 */ 7644 public CodeType getDefaultValueCodeType() throws FHIRException { 7645 if (this.defaultValue == null) 7646 this.defaultValue = new CodeType(); 7647 if (!(this.defaultValue instanceof CodeType)) 7648 throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7649 return (CodeType) this.defaultValue; 7650 } 7651 7652 public boolean hasDefaultValueCodeType() { 7653 return this != null && this.defaultValue instanceof CodeType; 7654 } 7655 7656 /** 7657 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7658 */ 7659 public DateType getDefaultValueDateType() throws FHIRException { 7660 if (this.defaultValue == null) 7661 this.defaultValue = new DateType(); 7662 if (!(this.defaultValue instanceof DateType)) 7663 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7664 return (DateType) this.defaultValue; 7665 } 7666 7667 public boolean hasDefaultValueDateType() { 7668 return this != null && this.defaultValue instanceof DateType; 7669 } 7670 7671 /** 7672 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7673 */ 7674 public DateTimeType getDefaultValueDateTimeType() throws FHIRException { 7675 if (this.defaultValue == null) 7676 this.defaultValue = new DateTimeType(); 7677 if (!(this.defaultValue instanceof DateTimeType)) 7678 throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7679 return (DateTimeType) this.defaultValue; 7680 } 7681 7682 public boolean hasDefaultValueDateTimeType() { 7683 return this != null && this.defaultValue instanceof DateTimeType; 7684 } 7685 7686 /** 7687 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7688 */ 7689 public DecimalType getDefaultValueDecimalType() throws FHIRException { 7690 if (this.defaultValue == null) 7691 this.defaultValue = new DecimalType(); 7692 if (!(this.defaultValue instanceof DecimalType)) 7693 throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7694 return (DecimalType) this.defaultValue; 7695 } 7696 7697 public boolean hasDefaultValueDecimalType() { 7698 return this != null && this.defaultValue instanceof DecimalType; 7699 } 7700 7701 /** 7702 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7703 */ 7704 public IdType getDefaultValueIdType() throws FHIRException { 7705 if (this.defaultValue == null) 7706 this.defaultValue = new IdType(); 7707 if (!(this.defaultValue instanceof IdType)) 7708 throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7709 return (IdType) this.defaultValue; 7710 } 7711 7712 public boolean hasDefaultValueIdType() { 7713 return this != null && this.defaultValue instanceof IdType; 7714 } 7715 7716 /** 7717 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7718 */ 7719 public InstantType getDefaultValueInstantType() throws FHIRException { 7720 if (this.defaultValue == null) 7721 this.defaultValue = new InstantType(); 7722 if (!(this.defaultValue instanceof InstantType)) 7723 throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7724 return (InstantType) this.defaultValue; 7725 } 7726 7727 public boolean hasDefaultValueInstantType() { 7728 return this != null && this.defaultValue instanceof InstantType; 7729 } 7730 7731 /** 7732 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7733 */ 7734 public IntegerType getDefaultValueIntegerType() throws FHIRException { 7735 if (this.defaultValue == null) 7736 this.defaultValue = new IntegerType(); 7737 if (!(this.defaultValue instanceof IntegerType)) 7738 throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7739 return (IntegerType) this.defaultValue; 7740 } 7741 7742 public boolean hasDefaultValueIntegerType() { 7743 return this != null && this.defaultValue instanceof IntegerType; 7744 } 7745 7746 /** 7747 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7748 */ 7749 public Integer64Type getDefaultValueInteger64Type() throws FHIRException { 7750 if (this.defaultValue == null) 7751 this.defaultValue = new Integer64Type(); 7752 if (!(this.defaultValue instanceof Integer64Type)) 7753 throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7754 return (Integer64Type) this.defaultValue; 7755 } 7756 7757 public boolean hasDefaultValueInteger64Type() { 7758 return this != null && this.defaultValue instanceof Integer64Type; 7759 } 7760 7761 /** 7762 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7763 */ 7764 public MarkdownType getDefaultValueMarkdownType() throws FHIRException { 7765 if (this.defaultValue == null) 7766 this.defaultValue = new MarkdownType(); 7767 if (!(this.defaultValue instanceof MarkdownType)) 7768 throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7769 return (MarkdownType) this.defaultValue; 7770 } 7771 7772 public boolean hasDefaultValueMarkdownType() { 7773 return this != null && this.defaultValue instanceof MarkdownType; 7774 } 7775 7776 /** 7777 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7778 */ 7779 public OidType getDefaultValueOidType() throws FHIRException { 7780 if (this.defaultValue == null) 7781 this.defaultValue = new OidType(); 7782 if (!(this.defaultValue instanceof OidType)) 7783 throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7784 return (OidType) this.defaultValue; 7785 } 7786 7787 public boolean hasDefaultValueOidType() { 7788 return this != null && this.defaultValue instanceof OidType; 7789 } 7790 7791 /** 7792 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7793 */ 7794 public PositiveIntType getDefaultValuePositiveIntType() throws FHIRException { 7795 if (this.defaultValue == null) 7796 this.defaultValue = new PositiveIntType(); 7797 if (!(this.defaultValue instanceof PositiveIntType)) 7798 throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7799 return (PositiveIntType) this.defaultValue; 7800 } 7801 7802 public boolean hasDefaultValuePositiveIntType() { 7803 return this != null && this.defaultValue instanceof PositiveIntType; 7804 } 7805 7806 /** 7807 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7808 */ 7809 public StringType getDefaultValueStringType() throws FHIRException { 7810 if (this.defaultValue == null) 7811 this.defaultValue = new StringType(); 7812 if (!(this.defaultValue instanceof StringType)) 7813 throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7814 return (StringType) this.defaultValue; 7815 } 7816 7817 public boolean hasDefaultValueStringType() { 7818 return this != null && this.defaultValue instanceof StringType; 7819 } 7820 7821 /** 7822 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7823 */ 7824 public TimeType getDefaultValueTimeType() throws FHIRException { 7825 if (this.defaultValue == null) 7826 this.defaultValue = new TimeType(); 7827 if (!(this.defaultValue instanceof TimeType)) 7828 throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7829 return (TimeType) this.defaultValue; 7830 } 7831 7832 public boolean hasDefaultValueTimeType() { 7833 return this != null && this.defaultValue instanceof TimeType; 7834 } 7835 7836 /** 7837 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7838 */ 7839 public UnsignedIntType getDefaultValueUnsignedIntType() throws FHIRException { 7840 if (this.defaultValue == null) 7841 this.defaultValue = new UnsignedIntType(); 7842 if (!(this.defaultValue instanceof UnsignedIntType)) 7843 throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7844 return (UnsignedIntType) this.defaultValue; 7845 } 7846 7847 public boolean hasDefaultValueUnsignedIntType() { 7848 return this != null && this.defaultValue instanceof UnsignedIntType; 7849 } 7850 7851 /** 7852 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7853 */ 7854 public UriType getDefaultValueUriType() throws FHIRException { 7855 if (this.defaultValue == null) 7856 this.defaultValue = new UriType(); 7857 if (!(this.defaultValue instanceof UriType)) 7858 throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7859 return (UriType) this.defaultValue; 7860 } 7861 7862 public boolean hasDefaultValueUriType() { 7863 return this != null && this.defaultValue instanceof UriType; 7864 } 7865 7866 /** 7867 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7868 */ 7869 public UrlType getDefaultValueUrlType() throws FHIRException { 7870 if (this.defaultValue == null) 7871 this.defaultValue = new UrlType(); 7872 if (!(this.defaultValue instanceof UrlType)) 7873 throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7874 return (UrlType) this.defaultValue; 7875 } 7876 7877 public boolean hasDefaultValueUrlType() { 7878 return this != null && this.defaultValue instanceof UrlType; 7879 } 7880 7881 /** 7882 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7883 */ 7884 public UuidType getDefaultValueUuidType() throws FHIRException { 7885 if (this.defaultValue == null) 7886 this.defaultValue = new UuidType(); 7887 if (!(this.defaultValue instanceof UuidType)) 7888 throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7889 return (UuidType) this.defaultValue; 7890 } 7891 7892 public boolean hasDefaultValueUuidType() { 7893 return this != null && this.defaultValue instanceof UuidType; 7894 } 7895 7896 /** 7897 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7898 */ 7899 public Address getDefaultValueAddress() throws FHIRException { 7900 if (this.defaultValue == null) 7901 this.defaultValue = new Address(); 7902 if (!(this.defaultValue instanceof Address)) 7903 throw new FHIRException("Type mismatch: the type Address was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7904 return (Address) this.defaultValue; 7905 } 7906 7907 public boolean hasDefaultValueAddress() { 7908 return this != null && this.defaultValue instanceof Address; 7909 } 7910 7911 /** 7912 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7913 */ 7914 public Age getDefaultValueAge() throws FHIRException { 7915 if (this.defaultValue == null) 7916 this.defaultValue = new Age(); 7917 if (!(this.defaultValue instanceof Age)) 7918 throw new FHIRException("Type mismatch: the type Age was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7919 return (Age) this.defaultValue; 7920 } 7921 7922 public boolean hasDefaultValueAge() { 7923 return this != null && this.defaultValue instanceof Age; 7924 } 7925 7926 /** 7927 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7928 */ 7929 public Annotation getDefaultValueAnnotation() throws FHIRException { 7930 if (this.defaultValue == null) 7931 this.defaultValue = new Annotation(); 7932 if (!(this.defaultValue instanceof Annotation)) 7933 throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7934 return (Annotation) this.defaultValue; 7935 } 7936 7937 public boolean hasDefaultValueAnnotation() { 7938 return this != null && this.defaultValue instanceof Annotation; 7939 } 7940 7941 /** 7942 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7943 */ 7944 public Attachment getDefaultValueAttachment() throws FHIRException { 7945 if (this.defaultValue == null) 7946 this.defaultValue = new Attachment(); 7947 if (!(this.defaultValue instanceof Attachment)) 7948 throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7949 return (Attachment) this.defaultValue; 7950 } 7951 7952 public boolean hasDefaultValueAttachment() { 7953 return this != null && this.defaultValue instanceof Attachment; 7954 } 7955 7956 /** 7957 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7958 */ 7959 public CodeableConcept getDefaultValueCodeableConcept() throws FHIRException { 7960 if (this.defaultValue == null) 7961 this.defaultValue = new CodeableConcept(); 7962 if (!(this.defaultValue instanceof CodeableConcept)) 7963 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7964 return (CodeableConcept) this.defaultValue; 7965 } 7966 7967 public boolean hasDefaultValueCodeableConcept() { 7968 return this != null && this.defaultValue instanceof CodeableConcept; 7969 } 7970 7971 /** 7972 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7973 */ 7974 public CodeableReference getDefaultValueCodeableReference() throws FHIRException { 7975 if (this.defaultValue == null) 7976 this.defaultValue = new CodeableReference(); 7977 if (!(this.defaultValue instanceof CodeableReference)) 7978 throw new FHIRException("Type mismatch: the type CodeableReference was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7979 return (CodeableReference) this.defaultValue; 7980 } 7981 7982 public boolean hasDefaultValueCodeableReference() { 7983 return this != null && this.defaultValue instanceof CodeableReference; 7984 } 7985 7986 /** 7987 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 7988 */ 7989 public Coding getDefaultValueCoding() throws FHIRException { 7990 if (this.defaultValue == null) 7991 this.defaultValue = new Coding(); 7992 if (!(this.defaultValue instanceof Coding)) 7993 throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 7994 return (Coding) this.defaultValue; 7995 } 7996 7997 public boolean hasDefaultValueCoding() { 7998 return this != null && this.defaultValue instanceof Coding; 7999 } 8000 8001 /** 8002 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8003 */ 8004 public ContactPoint getDefaultValueContactPoint() throws FHIRException { 8005 if (this.defaultValue == null) 8006 this.defaultValue = new ContactPoint(); 8007 if (!(this.defaultValue instanceof ContactPoint)) 8008 throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8009 return (ContactPoint) this.defaultValue; 8010 } 8011 8012 public boolean hasDefaultValueContactPoint() { 8013 return this != null && this.defaultValue instanceof ContactPoint; 8014 } 8015 8016 /** 8017 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8018 */ 8019 public Count getDefaultValueCount() throws FHIRException { 8020 if (this.defaultValue == null) 8021 this.defaultValue = new Count(); 8022 if (!(this.defaultValue instanceof Count)) 8023 throw new FHIRException("Type mismatch: the type Count was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8024 return (Count) this.defaultValue; 8025 } 8026 8027 public boolean hasDefaultValueCount() { 8028 return this != null && this.defaultValue instanceof Count; 8029 } 8030 8031 /** 8032 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8033 */ 8034 public Distance getDefaultValueDistance() throws FHIRException { 8035 if (this.defaultValue == null) 8036 this.defaultValue = new Distance(); 8037 if (!(this.defaultValue instanceof Distance)) 8038 throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8039 return (Distance) this.defaultValue; 8040 } 8041 8042 public boolean hasDefaultValueDistance() { 8043 return this != null && this.defaultValue instanceof Distance; 8044 } 8045 8046 /** 8047 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8048 */ 8049 public Duration getDefaultValueDuration() throws FHIRException { 8050 if (this.defaultValue == null) 8051 this.defaultValue = new Duration(); 8052 if (!(this.defaultValue instanceof Duration)) 8053 throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8054 return (Duration) this.defaultValue; 8055 } 8056 8057 public boolean hasDefaultValueDuration() { 8058 return this != null && this.defaultValue instanceof Duration; 8059 } 8060 8061 /** 8062 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8063 */ 8064 public HumanName getDefaultValueHumanName() throws FHIRException { 8065 if (this.defaultValue == null) 8066 this.defaultValue = new HumanName(); 8067 if (!(this.defaultValue instanceof HumanName)) 8068 throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8069 return (HumanName) this.defaultValue; 8070 } 8071 8072 public boolean hasDefaultValueHumanName() { 8073 return this != null && this.defaultValue instanceof HumanName; 8074 } 8075 8076 /** 8077 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8078 */ 8079 public Identifier getDefaultValueIdentifier() throws FHIRException { 8080 if (this.defaultValue == null) 8081 this.defaultValue = new Identifier(); 8082 if (!(this.defaultValue instanceof Identifier)) 8083 throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8084 return (Identifier) this.defaultValue; 8085 } 8086 8087 public boolean hasDefaultValueIdentifier() { 8088 return this != null && this.defaultValue instanceof Identifier; 8089 } 8090 8091 /** 8092 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8093 */ 8094 public Money getDefaultValueMoney() throws FHIRException { 8095 if (this.defaultValue == null) 8096 this.defaultValue = new Money(); 8097 if (!(this.defaultValue instanceof Money)) 8098 throw new FHIRException("Type mismatch: the type Money was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8099 return (Money) this.defaultValue; 8100 } 8101 8102 public boolean hasDefaultValueMoney() { 8103 return this != null && this.defaultValue instanceof Money; 8104 } 8105 8106 /** 8107 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8108 */ 8109 public Period getDefaultValuePeriod() throws FHIRException { 8110 if (this.defaultValue == null) 8111 this.defaultValue = new Period(); 8112 if (!(this.defaultValue instanceof Period)) 8113 throw new FHIRException("Type mismatch: the type Period was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8114 return (Period) this.defaultValue; 8115 } 8116 8117 public boolean hasDefaultValuePeriod() { 8118 return this != null && this.defaultValue instanceof Period; 8119 } 8120 8121 /** 8122 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8123 */ 8124 public Quantity getDefaultValueQuantity() throws FHIRException { 8125 if (this.defaultValue == null) 8126 this.defaultValue = new Quantity(); 8127 if (!(this.defaultValue instanceof Quantity)) 8128 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8129 return (Quantity) this.defaultValue; 8130 } 8131 8132 public boolean hasDefaultValueQuantity() { 8133 return this != null && this.defaultValue instanceof Quantity; 8134 } 8135 8136 /** 8137 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8138 */ 8139 public Range getDefaultValueRange() throws FHIRException { 8140 if (this.defaultValue == null) 8141 this.defaultValue = new Range(); 8142 if (!(this.defaultValue instanceof Range)) 8143 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8144 return (Range) this.defaultValue; 8145 } 8146 8147 public boolean hasDefaultValueRange() { 8148 return this != null && this.defaultValue instanceof Range; 8149 } 8150 8151 /** 8152 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8153 */ 8154 public Ratio getDefaultValueRatio() throws FHIRException { 8155 if (this.defaultValue == null) 8156 this.defaultValue = new Ratio(); 8157 if (!(this.defaultValue instanceof Ratio)) 8158 throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8159 return (Ratio) this.defaultValue; 8160 } 8161 8162 public boolean hasDefaultValueRatio() { 8163 return this != null && this.defaultValue instanceof Ratio; 8164 } 8165 8166 /** 8167 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8168 */ 8169 public RatioRange getDefaultValueRatioRange() throws FHIRException { 8170 if (this.defaultValue == null) 8171 this.defaultValue = new RatioRange(); 8172 if (!(this.defaultValue instanceof RatioRange)) 8173 throw new FHIRException("Type mismatch: the type RatioRange was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8174 return (RatioRange) this.defaultValue; 8175 } 8176 8177 public boolean hasDefaultValueRatioRange() { 8178 return this != null && this.defaultValue instanceof RatioRange; 8179 } 8180 8181 /** 8182 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8183 */ 8184 public Reference getDefaultValueReference() throws FHIRException { 8185 if (this.defaultValue == null) 8186 this.defaultValue = new Reference(); 8187 if (!(this.defaultValue instanceof Reference)) 8188 throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8189 return (Reference) this.defaultValue; 8190 } 8191 8192 public boolean hasDefaultValueReference() { 8193 return this != null && this.defaultValue instanceof Reference; 8194 } 8195 8196 /** 8197 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8198 */ 8199 public SampledData getDefaultValueSampledData() throws FHIRException { 8200 if (this.defaultValue == null) 8201 this.defaultValue = new SampledData(); 8202 if (!(this.defaultValue instanceof SampledData)) 8203 throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8204 return (SampledData) this.defaultValue; 8205 } 8206 8207 public boolean hasDefaultValueSampledData() { 8208 return this != null && this.defaultValue instanceof SampledData; 8209 } 8210 8211 /** 8212 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8213 */ 8214 public Signature getDefaultValueSignature() throws FHIRException { 8215 if (this.defaultValue == null) 8216 this.defaultValue = new Signature(); 8217 if (!(this.defaultValue instanceof Signature)) 8218 throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8219 return (Signature) this.defaultValue; 8220 } 8221 8222 public boolean hasDefaultValueSignature() { 8223 return this != null && this.defaultValue instanceof Signature; 8224 } 8225 8226 /** 8227 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8228 */ 8229 public Timing getDefaultValueTiming() throws FHIRException { 8230 if (this.defaultValue == null) 8231 this.defaultValue = new Timing(); 8232 if (!(this.defaultValue instanceof Timing)) 8233 throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8234 return (Timing) this.defaultValue; 8235 } 8236 8237 public boolean hasDefaultValueTiming() { 8238 return this != null && this.defaultValue instanceof Timing; 8239 } 8240 8241 /** 8242 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8243 */ 8244 public ContactDetail getDefaultValueContactDetail() throws FHIRException { 8245 if (this.defaultValue == null) 8246 this.defaultValue = new ContactDetail(); 8247 if (!(this.defaultValue instanceof ContactDetail)) 8248 throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8249 return (ContactDetail) this.defaultValue; 8250 } 8251 8252 public boolean hasDefaultValueContactDetail() { 8253 return this != null && this.defaultValue instanceof ContactDetail; 8254 } 8255 8256 /** 8257 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8258 */ 8259 public DataRequirement getDefaultValueDataRequirement() throws FHIRException { 8260 if (this.defaultValue == null) 8261 this.defaultValue = new DataRequirement(); 8262 if (!(this.defaultValue instanceof DataRequirement)) 8263 throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8264 return (DataRequirement) this.defaultValue; 8265 } 8266 8267 public boolean hasDefaultValueDataRequirement() { 8268 return this != null && this.defaultValue instanceof DataRequirement; 8269 } 8270 8271 /** 8272 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8273 */ 8274 public Expression getDefaultValueExpression() throws FHIRException { 8275 if (this.defaultValue == null) 8276 this.defaultValue = new Expression(); 8277 if (!(this.defaultValue instanceof Expression)) 8278 throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8279 return (Expression) this.defaultValue; 8280 } 8281 8282 public boolean hasDefaultValueExpression() { 8283 return this != null && this.defaultValue instanceof Expression; 8284 } 8285 8286 /** 8287 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8288 */ 8289 public ParameterDefinition getDefaultValueParameterDefinition() throws FHIRException { 8290 if (this.defaultValue == null) 8291 this.defaultValue = new ParameterDefinition(); 8292 if (!(this.defaultValue instanceof ParameterDefinition)) 8293 throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8294 return (ParameterDefinition) this.defaultValue; 8295 } 8296 8297 public boolean hasDefaultValueParameterDefinition() { 8298 return this != null && this.defaultValue instanceof ParameterDefinition; 8299 } 8300 8301 /** 8302 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8303 */ 8304 public RelatedArtifact getDefaultValueRelatedArtifact() throws FHIRException { 8305 if (this.defaultValue == null) 8306 this.defaultValue = new RelatedArtifact(); 8307 if (!(this.defaultValue instanceof RelatedArtifact)) 8308 throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8309 return (RelatedArtifact) this.defaultValue; 8310 } 8311 8312 public boolean hasDefaultValueRelatedArtifact() { 8313 return this != null && this.defaultValue instanceof RelatedArtifact; 8314 } 8315 8316 /** 8317 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8318 */ 8319 public TriggerDefinition getDefaultValueTriggerDefinition() throws FHIRException { 8320 if (this.defaultValue == null) 8321 this.defaultValue = new TriggerDefinition(); 8322 if (!(this.defaultValue instanceof TriggerDefinition)) 8323 throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8324 return (TriggerDefinition) this.defaultValue; 8325 } 8326 8327 public boolean hasDefaultValueTriggerDefinition() { 8328 return this != null && this.defaultValue instanceof TriggerDefinition; 8329 } 8330 8331 /** 8332 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8333 */ 8334 public UsageContext getDefaultValueUsageContext() throws FHIRException { 8335 if (this.defaultValue == null) 8336 this.defaultValue = new UsageContext(); 8337 if (!(this.defaultValue instanceof UsageContext)) 8338 throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8339 return (UsageContext) this.defaultValue; 8340 } 8341 8342 public boolean hasDefaultValueUsageContext() { 8343 return this != null && this.defaultValue instanceof UsageContext; 8344 } 8345 8346 /** 8347 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8348 */ 8349 public Availability getDefaultValueAvailability() throws FHIRException { 8350 if (this.defaultValue == null) 8351 this.defaultValue = new Availability(); 8352 if (!(this.defaultValue instanceof Availability)) 8353 throw new FHIRException("Type mismatch: the type Availability was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8354 return (Availability) this.defaultValue; 8355 } 8356 8357 public boolean hasDefaultValueAvailability() { 8358 return this != null && this.defaultValue instanceof Availability; 8359 } 8360 8361 /** 8362 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8363 */ 8364 public ExtendedContactDetail getDefaultValueExtendedContactDetail() throws FHIRException { 8365 if (this.defaultValue == null) 8366 this.defaultValue = new ExtendedContactDetail(); 8367 if (!(this.defaultValue instanceof ExtendedContactDetail)) 8368 throw new FHIRException("Type mismatch: the type ExtendedContactDetail was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8369 return (ExtendedContactDetail) this.defaultValue; 8370 } 8371 8372 public boolean hasDefaultValueExtendedContactDetail() { 8373 return this != null && this.defaultValue instanceof ExtendedContactDetail; 8374 } 8375 8376 /** 8377 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8378 */ 8379 public Dosage getDefaultValueDosage() throws FHIRException { 8380 if (this.defaultValue == null) 8381 this.defaultValue = new Dosage(); 8382 if (!(this.defaultValue instanceof Dosage)) 8383 throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8384 return (Dosage) this.defaultValue; 8385 } 8386 8387 public boolean hasDefaultValueDosage() { 8388 return this != null && this.defaultValue instanceof Dosage; 8389 } 8390 8391 /** 8392 * @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8393 */ 8394 public Meta getDefaultValueMeta() throws FHIRException { 8395 if (this.defaultValue == null) 8396 this.defaultValue = new Meta(); 8397 if (!(this.defaultValue instanceof Meta)) 8398 throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.defaultValue.getClass().getName()+" was encountered"); 8399 return (Meta) this.defaultValue; 8400 } 8401 8402 public boolean hasDefaultValueMeta() { 8403 return this != null && this.defaultValue instanceof Meta; 8404 } 8405 8406 public boolean hasDefaultValue() { 8407 return this.defaultValue != null && !this.defaultValue.isEmpty(); 8408 } 8409 8410 /** 8411 * @param value {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').) 8412 */ 8413 public ElementDefinition setDefaultValue(DataType value) { 8414 if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof CodeableReference || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof RatioRange || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Availability || value instanceof ExtendedContactDetail || value instanceof Dosage || value instanceof Meta)) 8415 throw new Error("Not the right type for ElementDefinition.defaultValue[x]: "+value.fhirType()); 8416 this.defaultValue = value; 8417 return this; 8418 } 8419 8420 /** 8421 * @return {@link #meaningWhenMissing} (The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing').). This is the underlying object with id, value and extensions. The accessor "getMeaningWhenMissing" gives direct access to the value 8422 */ 8423 public MarkdownType getMeaningWhenMissingElement() { 8424 if (this.meaningWhenMissing == null) 8425 if (Configuration.errorOnAutoCreate()) 8426 throw new Error("Attempt to auto-create ElementDefinition.meaningWhenMissing"); 8427 else if (Configuration.doAutoCreate()) 8428 this.meaningWhenMissing = new MarkdownType(); // bb 8429 return this.meaningWhenMissing; 8430 } 8431 8432 public boolean hasMeaningWhenMissingElement() { 8433 return this.meaningWhenMissing != null && !this.meaningWhenMissing.isEmpty(); 8434 } 8435 8436 public boolean hasMeaningWhenMissing() { 8437 return this.meaningWhenMissing != null && !this.meaningWhenMissing.isEmpty(); 8438 } 8439 8440 /** 8441 * @param value {@link #meaningWhenMissing} (The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing').). This is the underlying object with id, value and extensions. The accessor "getMeaningWhenMissing" gives direct access to the value 8442 */ 8443 public ElementDefinition setMeaningWhenMissingElement(MarkdownType value) { 8444 this.meaningWhenMissing = value; 8445 return this; 8446 } 8447 8448 /** 8449 * @return The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'). 8450 */ 8451 public String getMeaningWhenMissing() { 8452 return this.meaningWhenMissing == null ? null : this.meaningWhenMissing.getValue(); 8453 } 8454 8455 /** 8456 * @param value The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'). 8457 */ 8458 public ElementDefinition setMeaningWhenMissing(String value) { 8459 if (value == null) 8460 this.meaningWhenMissing = null; 8461 else { 8462 if (this.meaningWhenMissing == null) 8463 this.meaningWhenMissing = new MarkdownType(); 8464 this.meaningWhenMissing.setValue(value); 8465 } 8466 return this; 8467 } 8468 8469 /** 8470 * @return {@link #orderMeaning} (If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning.). This is the underlying object with id, value and extensions. The accessor "getOrderMeaning" gives direct access to the value 8471 */ 8472 public StringType getOrderMeaningElement() { 8473 if (this.orderMeaning == null) 8474 if (Configuration.errorOnAutoCreate()) 8475 throw new Error("Attempt to auto-create ElementDefinition.orderMeaning"); 8476 else if (Configuration.doAutoCreate()) 8477 this.orderMeaning = new StringType(); // bb 8478 return this.orderMeaning; 8479 } 8480 8481 public boolean hasOrderMeaningElement() { 8482 return this.orderMeaning != null && !this.orderMeaning.isEmpty(); 8483 } 8484 8485 public boolean hasOrderMeaning() { 8486 return this.orderMeaning != null && !this.orderMeaning.isEmpty(); 8487 } 8488 8489 /** 8490 * @param value {@link #orderMeaning} (If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning.). This is the underlying object with id, value and extensions. The accessor "getOrderMeaning" gives direct access to the value 8491 */ 8492 public ElementDefinition setOrderMeaningElement(StringType value) { 8493 this.orderMeaning = value; 8494 return this; 8495 } 8496 8497 /** 8498 * @return If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning. 8499 */ 8500 public String getOrderMeaning() { 8501 return this.orderMeaning == null ? null : this.orderMeaning.getValue(); 8502 } 8503 8504 /** 8505 * @param value If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning. 8506 */ 8507 public ElementDefinition setOrderMeaning(String value) { 8508 if (Utilities.noString(value)) 8509 this.orderMeaning = null; 8510 else { 8511 if (this.orderMeaning == null) 8512 this.orderMeaning = new StringType(); 8513 this.orderMeaning.setValue(value); 8514 } 8515 return this; 8516 } 8517 8518 /** 8519 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8520 */ 8521 public DataType getFixed() { 8522 return this.fixed; 8523 } 8524 8525 /** 8526 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8527 */ 8528 public Base64BinaryType getFixedBase64BinaryType() throws FHIRException { 8529 if (this.fixed == null) 8530 this.fixed = new Base64BinaryType(); 8531 if (!(this.fixed instanceof Base64BinaryType)) 8532 throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8533 return (Base64BinaryType) this.fixed; 8534 } 8535 8536 public boolean hasFixedBase64BinaryType() { 8537 return this != null && this.fixed instanceof Base64BinaryType; 8538 } 8539 8540 /** 8541 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8542 */ 8543 public BooleanType getFixedBooleanType() throws FHIRException { 8544 if (this.fixed == null) 8545 this.fixed = new BooleanType(); 8546 if (!(this.fixed instanceof BooleanType)) 8547 throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8548 return (BooleanType) this.fixed; 8549 } 8550 8551 public boolean hasFixedBooleanType() { 8552 return this != null && this.fixed instanceof BooleanType; 8553 } 8554 8555 /** 8556 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8557 */ 8558 public CanonicalType getFixedCanonicalType() throws FHIRException { 8559 if (this.fixed == null) 8560 this.fixed = new CanonicalType(); 8561 if (!(this.fixed instanceof CanonicalType)) 8562 throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8563 return (CanonicalType) this.fixed; 8564 } 8565 8566 public boolean hasFixedCanonicalType() { 8567 return this != null && this.fixed instanceof CanonicalType; 8568 } 8569 8570 /** 8571 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8572 */ 8573 public CodeType getFixedCodeType() throws FHIRException { 8574 if (this.fixed == null) 8575 this.fixed = new CodeType(); 8576 if (!(this.fixed instanceof CodeType)) 8577 throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8578 return (CodeType) this.fixed; 8579 } 8580 8581 public boolean hasFixedCodeType() { 8582 return this != null && this.fixed instanceof CodeType; 8583 } 8584 8585 /** 8586 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8587 */ 8588 public DateType getFixedDateType() throws FHIRException { 8589 if (this.fixed == null) 8590 this.fixed = new DateType(); 8591 if (!(this.fixed instanceof DateType)) 8592 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8593 return (DateType) this.fixed; 8594 } 8595 8596 public boolean hasFixedDateType() { 8597 return this != null && this.fixed instanceof DateType; 8598 } 8599 8600 /** 8601 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8602 */ 8603 public DateTimeType getFixedDateTimeType() throws FHIRException { 8604 if (this.fixed == null) 8605 this.fixed = new DateTimeType(); 8606 if (!(this.fixed instanceof DateTimeType)) 8607 throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8608 return (DateTimeType) this.fixed; 8609 } 8610 8611 public boolean hasFixedDateTimeType() { 8612 return this != null && this.fixed instanceof DateTimeType; 8613 } 8614 8615 /** 8616 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8617 */ 8618 public DecimalType getFixedDecimalType() throws FHIRException { 8619 if (this.fixed == null) 8620 this.fixed = new DecimalType(); 8621 if (!(this.fixed instanceof DecimalType)) 8622 throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8623 return (DecimalType) this.fixed; 8624 } 8625 8626 public boolean hasFixedDecimalType() { 8627 return this != null && this.fixed instanceof DecimalType; 8628 } 8629 8630 /** 8631 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8632 */ 8633 public IdType getFixedIdType() throws FHIRException { 8634 if (this.fixed == null) 8635 this.fixed = new IdType(); 8636 if (!(this.fixed instanceof IdType)) 8637 throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8638 return (IdType) this.fixed; 8639 } 8640 8641 public boolean hasFixedIdType() { 8642 return this != null && this.fixed instanceof IdType; 8643 } 8644 8645 /** 8646 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8647 */ 8648 public InstantType getFixedInstantType() throws FHIRException { 8649 if (this.fixed == null) 8650 this.fixed = new InstantType(); 8651 if (!(this.fixed instanceof InstantType)) 8652 throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8653 return (InstantType) this.fixed; 8654 } 8655 8656 public boolean hasFixedInstantType() { 8657 return this != null && this.fixed instanceof InstantType; 8658 } 8659 8660 /** 8661 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8662 */ 8663 public IntegerType getFixedIntegerType() throws FHIRException { 8664 if (this.fixed == null) 8665 this.fixed = new IntegerType(); 8666 if (!(this.fixed instanceof IntegerType)) 8667 throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8668 return (IntegerType) this.fixed; 8669 } 8670 8671 public boolean hasFixedIntegerType() { 8672 return this != null && this.fixed instanceof IntegerType; 8673 } 8674 8675 /** 8676 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8677 */ 8678 public Integer64Type getFixedInteger64Type() throws FHIRException { 8679 if (this.fixed == null) 8680 this.fixed = new Integer64Type(); 8681 if (!(this.fixed instanceof Integer64Type)) 8682 throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8683 return (Integer64Type) this.fixed; 8684 } 8685 8686 public boolean hasFixedInteger64Type() { 8687 return this != null && this.fixed instanceof Integer64Type; 8688 } 8689 8690 /** 8691 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8692 */ 8693 public MarkdownType getFixedMarkdownType() throws FHIRException { 8694 if (this.fixed == null) 8695 this.fixed = new MarkdownType(); 8696 if (!(this.fixed instanceof MarkdownType)) 8697 throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8698 return (MarkdownType) this.fixed; 8699 } 8700 8701 public boolean hasFixedMarkdownType() { 8702 return this != null && this.fixed instanceof MarkdownType; 8703 } 8704 8705 /** 8706 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8707 */ 8708 public OidType getFixedOidType() throws FHIRException { 8709 if (this.fixed == null) 8710 this.fixed = new OidType(); 8711 if (!(this.fixed instanceof OidType)) 8712 throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8713 return (OidType) this.fixed; 8714 } 8715 8716 public boolean hasFixedOidType() { 8717 return this != null && this.fixed instanceof OidType; 8718 } 8719 8720 /** 8721 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8722 */ 8723 public PositiveIntType getFixedPositiveIntType() throws FHIRException { 8724 if (this.fixed == null) 8725 this.fixed = new PositiveIntType(); 8726 if (!(this.fixed instanceof PositiveIntType)) 8727 throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8728 return (PositiveIntType) this.fixed; 8729 } 8730 8731 public boolean hasFixedPositiveIntType() { 8732 return this != null && this.fixed instanceof PositiveIntType; 8733 } 8734 8735 /** 8736 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8737 */ 8738 public StringType getFixedStringType() throws FHIRException { 8739 if (this.fixed == null) 8740 this.fixed = new StringType(); 8741 if (!(this.fixed instanceof StringType)) 8742 throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8743 return (StringType) this.fixed; 8744 } 8745 8746 public boolean hasFixedStringType() { 8747 return this != null && this.fixed instanceof StringType; 8748 } 8749 8750 /** 8751 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8752 */ 8753 public TimeType getFixedTimeType() throws FHIRException { 8754 if (this.fixed == null) 8755 this.fixed = new TimeType(); 8756 if (!(this.fixed instanceof TimeType)) 8757 throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8758 return (TimeType) this.fixed; 8759 } 8760 8761 public boolean hasFixedTimeType() { 8762 return this != null && this.fixed instanceof TimeType; 8763 } 8764 8765 /** 8766 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8767 */ 8768 public UnsignedIntType getFixedUnsignedIntType() throws FHIRException { 8769 if (this.fixed == null) 8770 this.fixed = new UnsignedIntType(); 8771 if (!(this.fixed instanceof UnsignedIntType)) 8772 throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8773 return (UnsignedIntType) this.fixed; 8774 } 8775 8776 public boolean hasFixedUnsignedIntType() { 8777 return this != null && this.fixed instanceof UnsignedIntType; 8778 } 8779 8780 /** 8781 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8782 */ 8783 public UriType getFixedUriType() throws FHIRException { 8784 if (this.fixed == null) 8785 this.fixed = new UriType(); 8786 if (!(this.fixed instanceof UriType)) 8787 throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8788 return (UriType) this.fixed; 8789 } 8790 8791 public boolean hasFixedUriType() { 8792 return this != null && this.fixed instanceof UriType; 8793 } 8794 8795 /** 8796 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8797 */ 8798 public UrlType getFixedUrlType() throws FHIRException { 8799 if (this.fixed == null) 8800 this.fixed = new UrlType(); 8801 if (!(this.fixed instanceof UrlType)) 8802 throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8803 return (UrlType) this.fixed; 8804 } 8805 8806 public boolean hasFixedUrlType() { 8807 return this != null && this.fixed instanceof UrlType; 8808 } 8809 8810 /** 8811 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8812 */ 8813 public UuidType getFixedUuidType() throws FHIRException { 8814 if (this.fixed == null) 8815 this.fixed = new UuidType(); 8816 if (!(this.fixed instanceof UuidType)) 8817 throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8818 return (UuidType) this.fixed; 8819 } 8820 8821 public boolean hasFixedUuidType() { 8822 return this != null && this.fixed instanceof UuidType; 8823 } 8824 8825 /** 8826 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8827 */ 8828 public Address getFixedAddress() throws FHIRException { 8829 if (this.fixed == null) 8830 this.fixed = new Address(); 8831 if (!(this.fixed instanceof Address)) 8832 throw new FHIRException("Type mismatch: the type Address was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8833 return (Address) this.fixed; 8834 } 8835 8836 public boolean hasFixedAddress() { 8837 return this != null && this.fixed instanceof Address; 8838 } 8839 8840 /** 8841 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8842 */ 8843 public Age getFixedAge() throws FHIRException { 8844 if (this.fixed == null) 8845 this.fixed = new Age(); 8846 if (!(this.fixed instanceof Age)) 8847 throw new FHIRException("Type mismatch: the type Age was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8848 return (Age) this.fixed; 8849 } 8850 8851 public boolean hasFixedAge() { 8852 return this != null && this.fixed instanceof Age; 8853 } 8854 8855 /** 8856 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8857 */ 8858 public Annotation getFixedAnnotation() throws FHIRException { 8859 if (this.fixed == null) 8860 this.fixed = new Annotation(); 8861 if (!(this.fixed instanceof Annotation)) 8862 throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8863 return (Annotation) this.fixed; 8864 } 8865 8866 public boolean hasFixedAnnotation() { 8867 return this != null && this.fixed instanceof Annotation; 8868 } 8869 8870 /** 8871 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8872 */ 8873 public Attachment getFixedAttachment() throws FHIRException { 8874 if (this.fixed == null) 8875 this.fixed = new Attachment(); 8876 if (!(this.fixed instanceof Attachment)) 8877 throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8878 return (Attachment) this.fixed; 8879 } 8880 8881 public boolean hasFixedAttachment() { 8882 return this != null && this.fixed instanceof Attachment; 8883 } 8884 8885 /** 8886 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8887 */ 8888 public CodeableConcept getFixedCodeableConcept() throws FHIRException { 8889 if (this.fixed == null) 8890 this.fixed = new CodeableConcept(); 8891 if (!(this.fixed instanceof CodeableConcept)) 8892 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8893 return (CodeableConcept) this.fixed; 8894 } 8895 8896 public boolean hasFixedCodeableConcept() { 8897 return this != null && this.fixed instanceof CodeableConcept; 8898 } 8899 8900 /** 8901 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8902 */ 8903 public CodeableReference getFixedCodeableReference() throws FHIRException { 8904 if (this.fixed == null) 8905 this.fixed = new CodeableReference(); 8906 if (!(this.fixed instanceof CodeableReference)) 8907 throw new FHIRException("Type mismatch: the type CodeableReference was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8908 return (CodeableReference) this.fixed; 8909 } 8910 8911 public boolean hasFixedCodeableReference() { 8912 return this != null && this.fixed instanceof CodeableReference; 8913 } 8914 8915 /** 8916 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8917 */ 8918 public Coding getFixedCoding() throws FHIRException { 8919 if (this.fixed == null) 8920 this.fixed = new Coding(); 8921 if (!(this.fixed instanceof Coding)) 8922 throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8923 return (Coding) this.fixed; 8924 } 8925 8926 public boolean hasFixedCoding() { 8927 return this != null && this.fixed instanceof Coding; 8928 } 8929 8930 /** 8931 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8932 */ 8933 public ContactPoint getFixedContactPoint() throws FHIRException { 8934 if (this.fixed == null) 8935 this.fixed = new ContactPoint(); 8936 if (!(this.fixed instanceof ContactPoint)) 8937 throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8938 return (ContactPoint) this.fixed; 8939 } 8940 8941 public boolean hasFixedContactPoint() { 8942 return this != null && this.fixed instanceof ContactPoint; 8943 } 8944 8945 /** 8946 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8947 */ 8948 public Count getFixedCount() throws FHIRException { 8949 if (this.fixed == null) 8950 this.fixed = new Count(); 8951 if (!(this.fixed instanceof Count)) 8952 throw new FHIRException("Type mismatch: the type Count was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8953 return (Count) this.fixed; 8954 } 8955 8956 public boolean hasFixedCount() { 8957 return this != null && this.fixed instanceof Count; 8958 } 8959 8960 /** 8961 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8962 */ 8963 public Distance getFixedDistance() throws FHIRException { 8964 if (this.fixed == null) 8965 this.fixed = new Distance(); 8966 if (!(this.fixed instanceof Distance)) 8967 throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8968 return (Distance) this.fixed; 8969 } 8970 8971 public boolean hasFixedDistance() { 8972 return this != null && this.fixed instanceof Distance; 8973 } 8974 8975 /** 8976 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8977 */ 8978 public Duration getFixedDuration() throws FHIRException { 8979 if (this.fixed == null) 8980 this.fixed = new Duration(); 8981 if (!(this.fixed instanceof Duration)) 8982 throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8983 return (Duration) this.fixed; 8984 } 8985 8986 public boolean hasFixedDuration() { 8987 return this != null && this.fixed instanceof Duration; 8988 } 8989 8990 /** 8991 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 8992 */ 8993 public HumanName getFixedHumanName() throws FHIRException { 8994 if (this.fixed == null) 8995 this.fixed = new HumanName(); 8996 if (!(this.fixed instanceof HumanName)) 8997 throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.fixed.getClass().getName()+" was encountered"); 8998 return (HumanName) this.fixed; 8999 } 9000 9001 public boolean hasFixedHumanName() { 9002 return this != null && this.fixed instanceof HumanName; 9003 } 9004 9005 /** 9006 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9007 */ 9008 public Identifier getFixedIdentifier() throws FHIRException { 9009 if (this.fixed == null) 9010 this.fixed = new Identifier(); 9011 if (!(this.fixed instanceof Identifier)) 9012 throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9013 return (Identifier) this.fixed; 9014 } 9015 9016 public boolean hasFixedIdentifier() { 9017 return this != null && this.fixed instanceof Identifier; 9018 } 9019 9020 /** 9021 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9022 */ 9023 public Money getFixedMoney() throws FHIRException { 9024 if (this.fixed == null) 9025 this.fixed = new Money(); 9026 if (!(this.fixed instanceof Money)) 9027 throw new FHIRException("Type mismatch: the type Money was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9028 return (Money) this.fixed; 9029 } 9030 9031 public boolean hasFixedMoney() { 9032 return this != null && this.fixed instanceof Money; 9033 } 9034 9035 /** 9036 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9037 */ 9038 public Period getFixedPeriod() throws FHIRException { 9039 if (this.fixed == null) 9040 this.fixed = new Period(); 9041 if (!(this.fixed instanceof Period)) 9042 throw new FHIRException("Type mismatch: the type Period was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9043 return (Period) this.fixed; 9044 } 9045 9046 public boolean hasFixedPeriod() { 9047 return this != null && this.fixed instanceof Period; 9048 } 9049 9050 /** 9051 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9052 */ 9053 public Quantity getFixedQuantity() throws FHIRException { 9054 if (this.fixed == null) 9055 this.fixed = new Quantity(); 9056 if (!(this.fixed instanceof Quantity)) 9057 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9058 return (Quantity) this.fixed; 9059 } 9060 9061 public boolean hasFixedQuantity() { 9062 return this != null && this.fixed instanceof Quantity; 9063 } 9064 9065 /** 9066 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9067 */ 9068 public Range getFixedRange() throws FHIRException { 9069 if (this.fixed == null) 9070 this.fixed = new Range(); 9071 if (!(this.fixed instanceof Range)) 9072 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9073 return (Range) this.fixed; 9074 } 9075 9076 public boolean hasFixedRange() { 9077 return this != null && this.fixed instanceof Range; 9078 } 9079 9080 /** 9081 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9082 */ 9083 public Ratio getFixedRatio() throws FHIRException { 9084 if (this.fixed == null) 9085 this.fixed = new Ratio(); 9086 if (!(this.fixed instanceof Ratio)) 9087 throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9088 return (Ratio) this.fixed; 9089 } 9090 9091 public boolean hasFixedRatio() { 9092 return this != null && this.fixed instanceof Ratio; 9093 } 9094 9095 /** 9096 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9097 */ 9098 public RatioRange getFixedRatioRange() throws FHIRException { 9099 if (this.fixed == null) 9100 this.fixed = new RatioRange(); 9101 if (!(this.fixed instanceof RatioRange)) 9102 throw new FHIRException("Type mismatch: the type RatioRange was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9103 return (RatioRange) this.fixed; 9104 } 9105 9106 public boolean hasFixedRatioRange() { 9107 return this != null && this.fixed instanceof RatioRange; 9108 } 9109 9110 /** 9111 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9112 */ 9113 public Reference getFixedReference() throws FHIRException { 9114 if (this.fixed == null) 9115 this.fixed = new Reference(); 9116 if (!(this.fixed instanceof Reference)) 9117 throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9118 return (Reference) this.fixed; 9119 } 9120 9121 public boolean hasFixedReference() { 9122 return this != null && this.fixed instanceof Reference; 9123 } 9124 9125 /** 9126 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9127 */ 9128 public SampledData getFixedSampledData() throws FHIRException { 9129 if (this.fixed == null) 9130 this.fixed = new SampledData(); 9131 if (!(this.fixed instanceof SampledData)) 9132 throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9133 return (SampledData) this.fixed; 9134 } 9135 9136 public boolean hasFixedSampledData() { 9137 return this != null && this.fixed instanceof SampledData; 9138 } 9139 9140 /** 9141 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9142 */ 9143 public Signature getFixedSignature() throws FHIRException { 9144 if (this.fixed == null) 9145 this.fixed = new Signature(); 9146 if (!(this.fixed instanceof Signature)) 9147 throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9148 return (Signature) this.fixed; 9149 } 9150 9151 public boolean hasFixedSignature() { 9152 return this != null && this.fixed instanceof Signature; 9153 } 9154 9155 /** 9156 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9157 */ 9158 public Timing getFixedTiming() throws FHIRException { 9159 if (this.fixed == null) 9160 this.fixed = new Timing(); 9161 if (!(this.fixed instanceof Timing)) 9162 throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9163 return (Timing) this.fixed; 9164 } 9165 9166 public boolean hasFixedTiming() { 9167 return this != null && this.fixed instanceof Timing; 9168 } 9169 9170 /** 9171 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9172 */ 9173 public ContactDetail getFixedContactDetail() throws FHIRException { 9174 if (this.fixed == null) 9175 this.fixed = new ContactDetail(); 9176 if (!(this.fixed instanceof ContactDetail)) 9177 throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9178 return (ContactDetail) this.fixed; 9179 } 9180 9181 public boolean hasFixedContactDetail() { 9182 return this != null && this.fixed instanceof ContactDetail; 9183 } 9184 9185 /** 9186 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9187 */ 9188 public DataRequirement getFixedDataRequirement() throws FHIRException { 9189 if (this.fixed == null) 9190 this.fixed = new DataRequirement(); 9191 if (!(this.fixed instanceof DataRequirement)) 9192 throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9193 return (DataRequirement) this.fixed; 9194 } 9195 9196 public boolean hasFixedDataRequirement() { 9197 return this != null && this.fixed instanceof DataRequirement; 9198 } 9199 9200 /** 9201 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9202 */ 9203 public Expression getFixedExpression() throws FHIRException { 9204 if (this.fixed == null) 9205 this.fixed = new Expression(); 9206 if (!(this.fixed instanceof Expression)) 9207 throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9208 return (Expression) this.fixed; 9209 } 9210 9211 public boolean hasFixedExpression() { 9212 return this != null && this.fixed instanceof Expression; 9213 } 9214 9215 /** 9216 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9217 */ 9218 public ParameterDefinition getFixedParameterDefinition() throws FHIRException { 9219 if (this.fixed == null) 9220 this.fixed = new ParameterDefinition(); 9221 if (!(this.fixed instanceof ParameterDefinition)) 9222 throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9223 return (ParameterDefinition) this.fixed; 9224 } 9225 9226 public boolean hasFixedParameterDefinition() { 9227 return this != null && this.fixed instanceof ParameterDefinition; 9228 } 9229 9230 /** 9231 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9232 */ 9233 public RelatedArtifact getFixedRelatedArtifact() throws FHIRException { 9234 if (this.fixed == null) 9235 this.fixed = new RelatedArtifact(); 9236 if (!(this.fixed instanceof RelatedArtifact)) 9237 throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9238 return (RelatedArtifact) this.fixed; 9239 } 9240 9241 public boolean hasFixedRelatedArtifact() { 9242 return this != null && this.fixed instanceof RelatedArtifact; 9243 } 9244 9245 /** 9246 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9247 */ 9248 public TriggerDefinition getFixedTriggerDefinition() throws FHIRException { 9249 if (this.fixed == null) 9250 this.fixed = new TriggerDefinition(); 9251 if (!(this.fixed instanceof TriggerDefinition)) 9252 throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9253 return (TriggerDefinition) this.fixed; 9254 } 9255 9256 public boolean hasFixedTriggerDefinition() { 9257 return this != null && this.fixed instanceof TriggerDefinition; 9258 } 9259 9260 /** 9261 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9262 */ 9263 public UsageContext getFixedUsageContext() throws FHIRException { 9264 if (this.fixed == null) 9265 this.fixed = new UsageContext(); 9266 if (!(this.fixed instanceof UsageContext)) 9267 throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9268 return (UsageContext) this.fixed; 9269 } 9270 9271 public boolean hasFixedUsageContext() { 9272 return this != null && this.fixed instanceof UsageContext; 9273 } 9274 9275 /** 9276 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9277 */ 9278 public Availability getFixedAvailability() throws FHIRException { 9279 if (this.fixed == null) 9280 this.fixed = new Availability(); 9281 if (!(this.fixed instanceof Availability)) 9282 throw new FHIRException("Type mismatch: the type Availability was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9283 return (Availability) this.fixed; 9284 } 9285 9286 public boolean hasFixedAvailability() { 9287 return this != null && this.fixed instanceof Availability; 9288 } 9289 9290 /** 9291 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9292 */ 9293 public ExtendedContactDetail getFixedExtendedContactDetail() throws FHIRException { 9294 if (this.fixed == null) 9295 this.fixed = new ExtendedContactDetail(); 9296 if (!(this.fixed instanceof ExtendedContactDetail)) 9297 throw new FHIRException("Type mismatch: the type ExtendedContactDetail was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9298 return (ExtendedContactDetail) this.fixed; 9299 } 9300 9301 public boolean hasFixedExtendedContactDetail() { 9302 return this != null && this.fixed instanceof ExtendedContactDetail; 9303 } 9304 9305 /** 9306 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9307 */ 9308 public Dosage getFixedDosage() throws FHIRException { 9309 if (this.fixed == null) 9310 this.fixed = new Dosage(); 9311 if (!(this.fixed instanceof Dosage)) 9312 throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9313 return (Dosage) this.fixed; 9314 } 9315 9316 public boolean hasFixedDosage() { 9317 return this != null && this.fixed instanceof Dosage; 9318 } 9319 9320 /** 9321 * @return {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9322 */ 9323 public Meta getFixedMeta() throws FHIRException { 9324 if (this.fixed == null) 9325 this.fixed = new Meta(); 9326 if (!(this.fixed instanceof Meta)) 9327 throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.fixed.getClass().getName()+" was encountered"); 9328 return (Meta) this.fixed; 9329 } 9330 9331 public boolean hasFixedMeta() { 9332 return this != null && this.fixed instanceof Meta; 9333 } 9334 9335 public boolean hasFixed() { 9336 return this.fixed != null && !this.fixed.isEmpty(); 9337 } 9338 9339 /** 9340 * @param value {@link #fixed} (Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.) 9341 */ 9342 public ElementDefinition setFixed(DataType value) { 9343 if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof CodeableReference || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof RatioRange || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Availability || value instanceof ExtendedContactDetail || value instanceof Dosage || value instanceof Meta)) 9344 throw new Error("Not the right type for ElementDefinition.fixed[x]: "+value.fhirType()); 9345 this.fixed = value; 9346 return this; 9347 } 9348 9349 /** 9350 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9351 9352When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9353 9354When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9355 9356When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9357 93581. If primitive: it must match exactly the pattern value 93592. If a complex object: it must match (recursively) the pattern value 93603. If an array: it must match (recursively) the pattern value 9361 9362If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9363 */ 9364 public DataType getPattern() { 9365 return this.pattern; 9366 } 9367 9368 /** 9369 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9370 9371When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9372 9373When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9374 9375When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9376 93771. If primitive: it must match exactly the pattern value 93782. If a complex object: it must match (recursively) the pattern value 93793. If an array: it must match (recursively) the pattern value 9380 9381If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9382 */ 9383 public Base64BinaryType getPatternBase64BinaryType() throws FHIRException { 9384 if (this.pattern == null) 9385 this.pattern = new Base64BinaryType(); 9386 if (!(this.pattern instanceof Base64BinaryType)) 9387 throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9388 return (Base64BinaryType) this.pattern; 9389 } 9390 9391 public boolean hasPatternBase64BinaryType() { 9392 return this != null && this.pattern instanceof Base64BinaryType; 9393 } 9394 9395 /** 9396 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9397 9398When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9399 9400When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9401 9402When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9403 94041. If primitive: it must match exactly the pattern value 94052. If a complex object: it must match (recursively) the pattern value 94063. If an array: it must match (recursively) the pattern value 9407 9408If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9409 */ 9410 public BooleanType getPatternBooleanType() throws FHIRException { 9411 if (this.pattern == null) 9412 this.pattern = new BooleanType(); 9413 if (!(this.pattern instanceof BooleanType)) 9414 throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9415 return (BooleanType) this.pattern; 9416 } 9417 9418 public boolean hasPatternBooleanType() { 9419 return this != null && this.pattern instanceof BooleanType; 9420 } 9421 9422 /** 9423 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9424 9425When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9426 9427When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9428 9429When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9430 94311. If primitive: it must match exactly the pattern value 94322. If a complex object: it must match (recursively) the pattern value 94333. If an array: it must match (recursively) the pattern value 9434 9435If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9436 */ 9437 public CanonicalType getPatternCanonicalType() throws FHIRException { 9438 if (this.pattern == null) 9439 this.pattern = new CanonicalType(); 9440 if (!(this.pattern instanceof CanonicalType)) 9441 throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9442 return (CanonicalType) this.pattern; 9443 } 9444 9445 public boolean hasPatternCanonicalType() { 9446 return this != null && this.pattern instanceof CanonicalType; 9447 } 9448 9449 /** 9450 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9451 9452When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9453 9454When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9455 9456When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9457 94581. If primitive: it must match exactly the pattern value 94592. If a complex object: it must match (recursively) the pattern value 94603. If an array: it must match (recursively) the pattern value 9461 9462If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9463 */ 9464 public CodeType getPatternCodeType() throws FHIRException { 9465 if (this.pattern == null) 9466 this.pattern = new CodeType(); 9467 if (!(this.pattern instanceof CodeType)) 9468 throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9469 return (CodeType) this.pattern; 9470 } 9471 9472 public boolean hasPatternCodeType() { 9473 return this != null && this.pattern instanceof CodeType; 9474 } 9475 9476 /** 9477 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9478 9479When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9480 9481When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9482 9483When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9484 94851. If primitive: it must match exactly the pattern value 94862. If a complex object: it must match (recursively) the pattern value 94873. If an array: it must match (recursively) the pattern value 9488 9489If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9490 */ 9491 public DateType getPatternDateType() throws FHIRException { 9492 if (this.pattern == null) 9493 this.pattern = new DateType(); 9494 if (!(this.pattern instanceof DateType)) 9495 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9496 return (DateType) this.pattern; 9497 } 9498 9499 public boolean hasPatternDateType() { 9500 return this != null && this.pattern instanceof DateType; 9501 } 9502 9503 /** 9504 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9505 9506When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9507 9508When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9509 9510When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9511 95121. If primitive: it must match exactly the pattern value 95132. If a complex object: it must match (recursively) the pattern value 95143. If an array: it must match (recursively) the pattern value 9515 9516If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9517 */ 9518 public DateTimeType getPatternDateTimeType() throws FHIRException { 9519 if (this.pattern == null) 9520 this.pattern = new DateTimeType(); 9521 if (!(this.pattern instanceof DateTimeType)) 9522 throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9523 return (DateTimeType) this.pattern; 9524 } 9525 9526 public boolean hasPatternDateTimeType() { 9527 return this != null && this.pattern instanceof DateTimeType; 9528 } 9529 9530 /** 9531 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9532 9533When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9534 9535When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9536 9537When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9538 95391. If primitive: it must match exactly the pattern value 95402. If a complex object: it must match (recursively) the pattern value 95413. If an array: it must match (recursively) the pattern value 9542 9543If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9544 */ 9545 public DecimalType getPatternDecimalType() throws FHIRException { 9546 if (this.pattern == null) 9547 this.pattern = new DecimalType(); 9548 if (!(this.pattern instanceof DecimalType)) 9549 throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9550 return (DecimalType) this.pattern; 9551 } 9552 9553 public boolean hasPatternDecimalType() { 9554 return this != null && this.pattern instanceof DecimalType; 9555 } 9556 9557 /** 9558 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9559 9560When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9561 9562When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9563 9564When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9565 95661. If primitive: it must match exactly the pattern value 95672. If a complex object: it must match (recursively) the pattern value 95683. If an array: it must match (recursively) the pattern value 9569 9570If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9571 */ 9572 public IdType getPatternIdType() throws FHIRException { 9573 if (this.pattern == null) 9574 this.pattern = new IdType(); 9575 if (!(this.pattern instanceof IdType)) 9576 throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9577 return (IdType) this.pattern; 9578 } 9579 9580 public boolean hasPatternIdType() { 9581 return this != null && this.pattern instanceof IdType; 9582 } 9583 9584 /** 9585 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9586 9587When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9588 9589When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9590 9591When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9592 95931. If primitive: it must match exactly the pattern value 95942. If a complex object: it must match (recursively) the pattern value 95953. If an array: it must match (recursively) the pattern value 9596 9597If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9598 */ 9599 public InstantType getPatternInstantType() throws FHIRException { 9600 if (this.pattern == null) 9601 this.pattern = new InstantType(); 9602 if (!(this.pattern instanceof InstantType)) 9603 throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9604 return (InstantType) this.pattern; 9605 } 9606 9607 public boolean hasPatternInstantType() { 9608 return this != null && this.pattern instanceof InstantType; 9609 } 9610 9611 /** 9612 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9613 9614When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9615 9616When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9617 9618When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9619 96201. If primitive: it must match exactly the pattern value 96212. If a complex object: it must match (recursively) the pattern value 96223. If an array: it must match (recursively) the pattern value 9623 9624If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9625 */ 9626 public IntegerType getPatternIntegerType() throws FHIRException { 9627 if (this.pattern == null) 9628 this.pattern = new IntegerType(); 9629 if (!(this.pattern instanceof IntegerType)) 9630 throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9631 return (IntegerType) this.pattern; 9632 } 9633 9634 public boolean hasPatternIntegerType() { 9635 return this != null && this.pattern instanceof IntegerType; 9636 } 9637 9638 /** 9639 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9640 9641When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9642 9643When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9644 9645When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9646 96471. If primitive: it must match exactly the pattern value 96482. If a complex object: it must match (recursively) the pattern value 96493. If an array: it must match (recursively) the pattern value 9650 9651If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9652 */ 9653 public Integer64Type getPatternInteger64Type() throws FHIRException { 9654 if (this.pattern == null) 9655 this.pattern = new Integer64Type(); 9656 if (!(this.pattern instanceof Integer64Type)) 9657 throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9658 return (Integer64Type) this.pattern; 9659 } 9660 9661 public boolean hasPatternInteger64Type() { 9662 return this != null && this.pattern instanceof Integer64Type; 9663 } 9664 9665 /** 9666 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9667 9668When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9669 9670When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9671 9672When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9673 96741. If primitive: it must match exactly the pattern value 96752. If a complex object: it must match (recursively) the pattern value 96763. If an array: it must match (recursively) the pattern value 9677 9678If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9679 */ 9680 public MarkdownType getPatternMarkdownType() throws FHIRException { 9681 if (this.pattern == null) 9682 this.pattern = new MarkdownType(); 9683 if (!(this.pattern instanceof MarkdownType)) 9684 throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9685 return (MarkdownType) this.pattern; 9686 } 9687 9688 public boolean hasPatternMarkdownType() { 9689 return this != null && this.pattern instanceof MarkdownType; 9690 } 9691 9692 /** 9693 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9694 9695When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9696 9697When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9698 9699When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9700 97011. If primitive: it must match exactly the pattern value 97022. If a complex object: it must match (recursively) the pattern value 97033. If an array: it must match (recursively) the pattern value 9704 9705If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9706 */ 9707 public OidType getPatternOidType() throws FHIRException { 9708 if (this.pattern == null) 9709 this.pattern = new OidType(); 9710 if (!(this.pattern instanceof OidType)) 9711 throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9712 return (OidType) this.pattern; 9713 } 9714 9715 public boolean hasPatternOidType() { 9716 return this != null && this.pattern instanceof OidType; 9717 } 9718 9719 /** 9720 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9721 9722When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9723 9724When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9725 9726When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9727 97281. If primitive: it must match exactly the pattern value 97292. If a complex object: it must match (recursively) the pattern value 97303. If an array: it must match (recursively) the pattern value 9731 9732If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9733 */ 9734 public PositiveIntType getPatternPositiveIntType() throws FHIRException { 9735 if (this.pattern == null) 9736 this.pattern = new PositiveIntType(); 9737 if (!(this.pattern instanceof PositiveIntType)) 9738 throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9739 return (PositiveIntType) this.pattern; 9740 } 9741 9742 public boolean hasPatternPositiveIntType() { 9743 return this != null && this.pattern instanceof PositiveIntType; 9744 } 9745 9746 /** 9747 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9748 9749When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9750 9751When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9752 9753When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9754 97551. If primitive: it must match exactly the pattern value 97562. If a complex object: it must match (recursively) the pattern value 97573. If an array: it must match (recursively) the pattern value 9758 9759If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9760 */ 9761 public StringType getPatternStringType() throws FHIRException { 9762 if (this.pattern == null) 9763 this.pattern = new StringType(); 9764 if (!(this.pattern instanceof StringType)) 9765 throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9766 return (StringType) this.pattern; 9767 } 9768 9769 public boolean hasPatternStringType() { 9770 return this != null && this.pattern instanceof StringType; 9771 } 9772 9773 /** 9774 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9775 9776When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9777 9778When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9779 9780When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9781 97821. If primitive: it must match exactly the pattern value 97832. If a complex object: it must match (recursively) the pattern value 97843. If an array: it must match (recursively) the pattern value 9785 9786If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9787 */ 9788 public TimeType getPatternTimeType() throws FHIRException { 9789 if (this.pattern == null) 9790 this.pattern = new TimeType(); 9791 if (!(this.pattern instanceof TimeType)) 9792 throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9793 return (TimeType) this.pattern; 9794 } 9795 9796 public boolean hasPatternTimeType() { 9797 return this != null && this.pattern instanceof TimeType; 9798 } 9799 9800 /** 9801 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9802 9803When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9804 9805When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9806 9807When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9808 98091. If primitive: it must match exactly the pattern value 98102. If a complex object: it must match (recursively) the pattern value 98113. If an array: it must match (recursively) the pattern value 9812 9813If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9814 */ 9815 public UnsignedIntType getPatternUnsignedIntType() throws FHIRException { 9816 if (this.pattern == null) 9817 this.pattern = new UnsignedIntType(); 9818 if (!(this.pattern instanceof UnsignedIntType)) 9819 throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9820 return (UnsignedIntType) this.pattern; 9821 } 9822 9823 public boolean hasPatternUnsignedIntType() { 9824 return this != null && this.pattern instanceof UnsignedIntType; 9825 } 9826 9827 /** 9828 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9829 9830When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9831 9832When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9833 9834When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9835 98361. If primitive: it must match exactly the pattern value 98372. If a complex object: it must match (recursively) the pattern value 98383. If an array: it must match (recursively) the pattern value 9839 9840If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9841 */ 9842 public UriType getPatternUriType() throws FHIRException { 9843 if (this.pattern == null) 9844 this.pattern = new UriType(); 9845 if (!(this.pattern instanceof UriType)) 9846 throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9847 return (UriType) this.pattern; 9848 } 9849 9850 public boolean hasPatternUriType() { 9851 return this != null && this.pattern instanceof UriType; 9852 } 9853 9854 /** 9855 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9856 9857When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9858 9859When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9860 9861When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9862 98631. If primitive: it must match exactly the pattern value 98642. If a complex object: it must match (recursively) the pattern value 98653. If an array: it must match (recursively) the pattern value 9866 9867If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9868 */ 9869 public UrlType getPatternUrlType() throws FHIRException { 9870 if (this.pattern == null) 9871 this.pattern = new UrlType(); 9872 if (!(this.pattern instanceof UrlType)) 9873 throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9874 return (UrlType) this.pattern; 9875 } 9876 9877 public boolean hasPatternUrlType() { 9878 return this != null && this.pattern instanceof UrlType; 9879 } 9880 9881 /** 9882 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9883 9884When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9885 9886When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9887 9888When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9889 98901. If primitive: it must match exactly the pattern value 98912. If a complex object: it must match (recursively) the pattern value 98923. If an array: it must match (recursively) the pattern value 9893 9894If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9895 */ 9896 public UuidType getPatternUuidType() throws FHIRException { 9897 if (this.pattern == null) 9898 this.pattern = new UuidType(); 9899 if (!(this.pattern instanceof UuidType)) 9900 throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9901 return (UuidType) this.pattern; 9902 } 9903 9904 public boolean hasPatternUuidType() { 9905 return this != null && this.pattern instanceof UuidType; 9906 } 9907 9908 /** 9909 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9910 9911When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9912 9913When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9914 9915When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9916 99171. If primitive: it must match exactly the pattern value 99182. If a complex object: it must match (recursively) the pattern value 99193. If an array: it must match (recursively) the pattern value 9920 9921If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9922 */ 9923 public Address getPatternAddress() throws FHIRException { 9924 if (this.pattern == null) 9925 this.pattern = new Address(); 9926 if (!(this.pattern instanceof Address)) 9927 throw new FHIRException("Type mismatch: the type Address was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9928 return (Address) this.pattern; 9929 } 9930 9931 public boolean hasPatternAddress() { 9932 return this != null && this.pattern instanceof Address; 9933 } 9934 9935 /** 9936 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9937 9938When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9939 9940When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9941 9942When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9943 99441. If primitive: it must match exactly the pattern value 99452. If a complex object: it must match (recursively) the pattern value 99463. If an array: it must match (recursively) the pattern value 9947 9948If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9949 */ 9950 public Age getPatternAge() throws FHIRException { 9951 if (this.pattern == null) 9952 this.pattern = new Age(); 9953 if (!(this.pattern instanceof Age)) 9954 throw new FHIRException("Type mismatch: the type Age was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9955 return (Age) this.pattern; 9956 } 9957 9958 public boolean hasPatternAge() { 9959 return this != null && this.pattern instanceof Age; 9960 } 9961 9962 /** 9963 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9964 9965When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9966 9967When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9968 9969When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9970 99711. If primitive: it must match exactly the pattern value 99722. If a complex object: it must match (recursively) the pattern value 99733. If an array: it must match (recursively) the pattern value 9974 9975If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 9976 */ 9977 public Annotation getPatternAnnotation() throws FHIRException { 9978 if (this.pattern == null) 9979 this.pattern = new Annotation(); 9980 if (!(this.pattern instanceof Annotation)) 9981 throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.pattern.getClass().getName()+" was encountered"); 9982 return (Annotation) this.pattern; 9983 } 9984 9985 public boolean hasPatternAnnotation() { 9986 return this != null && this.pattern instanceof Annotation; 9987 } 9988 9989 /** 9990 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 9991 9992When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 9993 9994When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 9995 9996When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 9997 99981. If primitive: it must match exactly the pattern value 99992. If a complex object: it must match (recursively) the pattern value 100003. If an array: it must match (recursively) the pattern value 10001 10002If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10003 */ 10004 public Attachment getPatternAttachment() throws FHIRException { 10005 if (this.pattern == null) 10006 this.pattern = new Attachment(); 10007 if (!(this.pattern instanceof Attachment)) 10008 throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10009 return (Attachment) this.pattern; 10010 } 10011 10012 public boolean hasPatternAttachment() { 10013 return this != null && this.pattern instanceof Attachment; 10014 } 10015 10016 /** 10017 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10018 10019When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10020 10021When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10022 10023When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10024 100251. If primitive: it must match exactly the pattern value 100262. If a complex object: it must match (recursively) the pattern value 100273. If an array: it must match (recursively) the pattern value 10028 10029If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10030 */ 10031 public CodeableConcept getPatternCodeableConcept() throws FHIRException { 10032 if (this.pattern == null) 10033 this.pattern = new CodeableConcept(); 10034 if (!(this.pattern instanceof CodeableConcept)) 10035 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10036 return (CodeableConcept) this.pattern; 10037 } 10038 10039 public boolean hasPatternCodeableConcept() { 10040 return this != null && this.pattern instanceof CodeableConcept; 10041 } 10042 10043 /** 10044 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10045 10046When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10047 10048When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10049 10050When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10051 100521. If primitive: it must match exactly the pattern value 100532. If a complex object: it must match (recursively) the pattern value 100543. If an array: it must match (recursively) the pattern value 10055 10056If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10057 */ 10058 public CodeableReference getPatternCodeableReference() throws FHIRException { 10059 if (this.pattern == null) 10060 this.pattern = new CodeableReference(); 10061 if (!(this.pattern instanceof CodeableReference)) 10062 throw new FHIRException("Type mismatch: the type CodeableReference was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10063 return (CodeableReference) this.pattern; 10064 } 10065 10066 public boolean hasPatternCodeableReference() { 10067 return this != null && this.pattern instanceof CodeableReference; 10068 } 10069 10070 /** 10071 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10072 10073When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10074 10075When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10076 10077When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10078 100791. If primitive: it must match exactly the pattern value 100802. If a complex object: it must match (recursively) the pattern value 100813. If an array: it must match (recursively) the pattern value 10082 10083If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10084 */ 10085 public Coding getPatternCoding() throws FHIRException { 10086 if (this.pattern == null) 10087 this.pattern = new Coding(); 10088 if (!(this.pattern instanceof Coding)) 10089 throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10090 return (Coding) this.pattern; 10091 } 10092 10093 public boolean hasPatternCoding() { 10094 return this != null && this.pattern instanceof Coding; 10095 } 10096 10097 /** 10098 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10099 10100When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10101 10102When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10103 10104When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10105 101061. If primitive: it must match exactly the pattern value 101072. If a complex object: it must match (recursively) the pattern value 101083. If an array: it must match (recursively) the pattern value 10109 10110If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10111 */ 10112 public ContactPoint getPatternContactPoint() throws FHIRException { 10113 if (this.pattern == null) 10114 this.pattern = new ContactPoint(); 10115 if (!(this.pattern instanceof ContactPoint)) 10116 throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10117 return (ContactPoint) this.pattern; 10118 } 10119 10120 public boolean hasPatternContactPoint() { 10121 return this != null && this.pattern instanceof ContactPoint; 10122 } 10123 10124 /** 10125 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10126 10127When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10128 10129When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10130 10131When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10132 101331. If primitive: it must match exactly the pattern value 101342. If a complex object: it must match (recursively) the pattern value 101353. If an array: it must match (recursively) the pattern value 10136 10137If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10138 */ 10139 public Count getPatternCount() throws FHIRException { 10140 if (this.pattern == null) 10141 this.pattern = new Count(); 10142 if (!(this.pattern instanceof Count)) 10143 throw new FHIRException("Type mismatch: the type Count was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10144 return (Count) this.pattern; 10145 } 10146 10147 public boolean hasPatternCount() { 10148 return this != null && this.pattern instanceof Count; 10149 } 10150 10151 /** 10152 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10153 10154When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10155 10156When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10157 10158When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10159 101601. If primitive: it must match exactly the pattern value 101612. If a complex object: it must match (recursively) the pattern value 101623. If an array: it must match (recursively) the pattern value 10163 10164If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10165 */ 10166 public Distance getPatternDistance() throws FHIRException { 10167 if (this.pattern == null) 10168 this.pattern = new Distance(); 10169 if (!(this.pattern instanceof Distance)) 10170 throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10171 return (Distance) this.pattern; 10172 } 10173 10174 public boolean hasPatternDistance() { 10175 return this != null && this.pattern instanceof Distance; 10176 } 10177 10178 /** 10179 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10180 10181When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10182 10183When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10184 10185When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10186 101871. If primitive: it must match exactly the pattern value 101882. If a complex object: it must match (recursively) the pattern value 101893. If an array: it must match (recursively) the pattern value 10190 10191If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10192 */ 10193 public Duration getPatternDuration() throws FHIRException { 10194 if (this.pattern == null) 10195 this.pattern = new Duration(); 10196 if (!(this.pattern instanceof Duration)) 10197 throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10198 return (Duration) this.pattern; 10199 } 10200 10201 public boolean hasPatternDuration() { 10202 return this != null && this.pattern instanceof Duration; 10203 } 10204 10205 /** 10206 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10207 10208When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10209 10210When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10211 10212When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10213 102141. If primitive: it must match exactly the pattern value 102152. If a complex object: it must match (recursively) the pattern value 102163. If an array: it must match (recursively) the pattern value 10217 10218If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10219 */ 10220 public HumanName getPatternHumanName() throws FHIRException { 10221 if (this.pattern == null) 10222 this.pattern = new HumanName(); 10223 if (!(this.pattern instanceof HumanName)) 10224 throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10225 return (HumanName) this.pattern; 10226 } 10227 10228 public boolean hasPatternHumanName() { 10229 return this != null && this.pattern instanceof HumanName; 10230 } 10231 10232 /** 10233 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10234 10235When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10236 10237When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10238 10239When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10240 102411. If primitive: it must match exactly the pattern value 102422. If a complex object: it must match (recursively) the pattern value 102433. If an array: it must match (recursively) the pattern value 10244 10245If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10246 */ 10247 public Identifier getPatternIdentifier() throws FHIRException { 10248 if (this.pattern == null) 10249 this.pattern = new Identifier(); 10250 if (!(this.pattern instanceof Identifier)) 10251 throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10252 return (Identifier) this.pattern; 10253 } 10254 10255 public boolean hasPatternIdentifier() { 10256 return this != null && this.pattern instanceof Identifier; 10257 } 10258 10259 /** 10260 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10261 10262When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10263 10264When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10265 10266When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10267 102681. If primitive: it must match exactly the pattern value 102692. If a complex object: it must match (recursively) the pattern value 102703. If an array: it must match (recursively) the pattern value 10271 10272If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10273 */ 10274 public Money getPatternMoney() throws FHIRException { 10275 if (this.pattern == null) 10276 this.pattern = new Money(); 10277 if (!(this.pattern instanceof Money)) 10278 throw new FHIRException("Type mismatch: the type Money was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10279 return (Money) this.pattern; 10280 } 10281 10282 public boolean hasPatternMoney() { 10283 return this != null && this.pattern instanceof Money; 10284 } 10285 10286 /** 10287 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10288 10289When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10290 10291When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10292 10293When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10294 102951. If primitive: it must match exactly the pattern value 102962. If a complex object: it must match (recursively) the pattern value 102973. If an array: it must match (recursively) the pattern value 10298 10299If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10300 */ 10301 public Period getPatternPeriod() throws FHIRException { 10302 if (this.pattern == null) 10303 this.pattern = new Period(); 10304 if (!(this.pattern instanceof Period)) 10305 throw new FHIRException("Type mismatch: the type Period was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10306 return (Period) this.pattern; 10307 } 10308 10309 public boolean hasPatternPeriod() { 10310 return this != null && this.pattern instanceof Period; 10311 } 10312 10313 /** 10314 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10315 10316When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10317 10318When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10319 10320When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10321 103221. If primitive: it must match exactly the pattern value 103232. If a complex object: it must match (recursively) the pattern value 103243. If an array: it must match (recursively) the pattern value 10325 10326If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10327 */ 10328 public Quantity getPatternQuantity() throws FHIRException { 10329 if (this.pattern == null) 10330 this.pattern = new Quantity(); 10331 if (!(this.pattern instanceof Quantity)) 10332 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10333 return (Quantity) this.pattern; 10334 } 10335 10336 public boolean hasPatternQuantity() { 10337 return this != null && this.pattern instanceof Quantity; 10338 } 10339 10340 /** 10341 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10342 10343When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10344 10345When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10346 10347When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10348 103491. If primitive: it must match exactly the pattern value 103502. If a complex object: it must match (recursively) the pattern value 103513. If an array: it must match (recursively) the pattern value 10352 10353If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10354 */ 10355 public Range getPatternRange() throws FHIRException { 10356 if (this.pattern == null) 10357 this.pattern = new Range(); 10358 if (!(this.pattern instanceof Range)) 10359 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10360 return (Range) this.pattern; 10361 } 10362 10363 public boolean hasPatternRange() { 10364 return this != null && this.pattern instanceof Range; 10365 } 10366 10367 /** 10368 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10369 10370When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10371 10372When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10373 10374When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10375 103761. If primitive: it must match exactly the pattern value 103772. If a complex object: it must match (recursively) the pattern value 103783. If an array: it must match (recursively) the pattern value 10379 10380If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10381 */ 10382 public Ratio getPatternRatio() throws FHIRException { 10383 if (this.pattern == null) 10384 this.pattern = new Ratio(); 10385 if (!(this.pattern instanceof Ratio)) 10386 throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10387 return (Ratio) this.pattern; 10388 } 10389 10390 public boolean hasPatternRatio() { 10391 return this != null && this.pattern instanceof Ratio; 10392 } 10393 10394 /** 10395 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10396 10397When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10398 10399When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10400 10401When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10402 104031. If primitive: it must match exactly the pattern value 104042. If a complex object: it must match (recursively) the pattern value 104053. If an array: it must match (recursively) the pattern value 10406 10407If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10408 */ 10409 public RatioRange getPatternRatioRange() throws FHIRException { 10410 if (this.pattern == null) 10411 this.pattern = new RatioRange(); 10412 if (!(this.pattern instanceof RatioRange)) 10413 throw new FHIRException("Type mismatch: the type RatioRange was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10414 return (RatioRange) this.pattern; 10415 } 10416 10417 public boolean hasPatternRatioRange() { 10418 return this != null && this.pattern instanceof RatioRange; 10419 } 10420 10421 /** 10422 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10423 10424When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10425 10426When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10427 10428When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10429 104301. If primitive: it must match exactly the pattern value 104312. If a complex object: it must match (recursively) the pattern value 104323. If an array: it must match (recursively) the pattern value 10433 10434If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10435 */ 10436 public Reference getPatternReference() throws FHIRException { 10437 if (this.pattern == null) 10438 this.pattern = new Reference(); 10439 if (!(this.pattern instanceof Reference)) 10440 throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10441 return (Reference) this.pattern; 10442 } 10443 10444 public boolean hasPatternReference() { 10445 return this != null && this.pattern instanceof Reference; 10446 } 10447 10448 /** 10449 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10450 10451When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10452 10453When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10454 10455When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10456 104571. If primitive: it must match exactly the pattern value 104582. If a complex object: it must match (recursively) the pattern value 104593. If an array: it must match (recursively) the pattern value 10460 10461If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10462 */ 10463 public SampledData getPatternSampledData() throws FHIRException { 10464 if (this.pattern == null) 10465 this.pattern = new SampledData(); 10466 if (!(this.pattern instanceof SampledData)) 10467 throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10468 return (SampledData) this.pattern; 10469 } 10470 10471 public boolean hasPatternSampledData() { 10472 return this != null && this.pattern instanceof SampledData; 10473 } 10474 10475 /** 10476 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10477 10478When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10479 10480When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10481 10482When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10483 104841. If primitive: it must match exactly the pattern value 104852. If a complex object: it must match (recursively) the pattern value 104863. If an array: it must match (recursively) the pattern value 10487 10488If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10489 */ 10490 public Signature getPatternSignature() throws FHIRException { 10491 if (this.pattern == null) 10492 this.pattern = new Signature(); 10493 if (!(this.pattern instanceof Signature)) 10494 throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10495 return (Signature) this.pattern; 10496 } 10497 10498 public boolean hasPatternSignature() { 10499 return this != null && this.pattern instanceof Signature; 10500 } 10501 10502 /** 10503 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10504 10505When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10506 10507When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10508 10509When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10510 105111. If primitive: it must match exactly the pattern value 105122. If a complex object: it must match (recursively) the pattern value 105133. If an array: it must match (recursively) the pattern value 10514 10515If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10516 */ 10517 public Timing getPatternTiming() throws FHIRException { 10518 if (this.pattern == null) 10519 this.pattern = new Timing(); 10520 if (!(this.pattern instanceof Timing)) 10521 throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10522 return (Timing) this.pattern; 10523 } 10524 10525 public boolean hasPatternTiming() { 10526 return this != null && this.pattern instanceof Timing; 10527 } 10528 10529 /** 10530 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10531 10532When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10533 10534When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10535 10536When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10537 105381. If primitive: it must match exactly the pattern value 105392. If a complex object: it must match (recursively) the pattern value 105403. If an array: it must match (recursively) the pattern value 10541 10542If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10543 */ 10544 public ContactDetail getPatternContactDetail() throws FHIRException { 10545 if (this.pattern == null) 10546 this.pattern = new ContactDetail(); 10547 if (!(this.pattern instanceof ContactDetail)) 10548 throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10549 return (ContactDetail) this.pattern; 10550 } 10551 10552 public boolean hasPatternContactDetail() { 10553 return this != null && this.pattern instanceof ContactDetail; 10554 } 10555 10556 /** 10557 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10558 10559When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10560 10561When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10562 10563When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10564 105651. If primitive: it must match exactly the pattern value 105662. If a complex object: it must match (recursively) the pattern value 105673. If an array: it must match (recursively) the pattern value 10568 10569If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10570 */ 10571 public DataRequirement getPatternDataRequirement() throws FHIRException { 10572 if (this.pattern == null) 10573 this.pattern = new DataRequirement(); 10574 if (!(this.pattern instanceof DataRequirement)) 10575 throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10576 return (DataRequirement) this.pattern; 10577 } 10578 10579 public boolean hasPatternDataRequirement() { 10580 return this != null && this.pattern instanceof DataRequirement; 10581 } 10582 10583 /** 10584 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10585 10586When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10587 10588When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10589 10590When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10591 105921. If primitive: it must match exactly the pattern value 105932. If a complex object: it must match (recursively) the pattern value 105943. If an array: it must match (recursively) the pattern value 10595 10596If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10597 */ 10598 public Expression getPatternExpression() throws FHIRException { 10599 if (this.pattern == null) 10600 this.pattern = new Expression(); 10601 if (!(this.pattern instanceof Expression)) 10602 throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10603 return (Expression) this.pattern; 10604 } 10605 10606 public boolean hasPatternExpression() { 10607 return this != null && this.pattern instanceof Expression; 10608 } 10609 10610 /** 10611 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10612 10613When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10614 10615When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10616 10617When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10618 106191. If primitive: it must match exactly the pattern value 106202. If a complex object: it must match (recursively) the pattern value 106213. If an array: it must match (recursively) the pattern value 10622 10623If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10624 */ 10625 public ParameterDefinition getPatternParameterDefinition() throws FHIRException { 10626 if (this.pattern == null) 10627 this.pattern = new ParameterDefinition(); 10628 if (!(this.pattern instanceof ParameterDefinition)) 10629 throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10630 return (ParameterDefinition) this.pattern; 10631 } 10632 10633 public boolean hasPatternParameterDefinition() { 10634 return this != null && this.pattern instanceof ParameterDefinition; 10635 } 10636 10637 /** 10638 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10639 10640When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10641 10642When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10643 10644When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10645 106461. If primitive: it must match exactly the pattern value 106472. If a complex object: it must match (recursively) the pattern value 106483. If an array: it must match (recursively) the pattern value 10649 10650If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10651 */ 10652 public RelatedArtifact getPatternRelatedArtifact() throws FHIRException { 10653 if (this.pattern == null) 10654 this.pattern = new RelatedArtifact(); 10655 if (!(this.pattern instanceof RelatedArtifact)) 10656 throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10657 return (RelatedArtifact) this.pattern; 10658 } 10659 10660 public boolean hasPatternRelatedArtifact() { 10661 return this != null && this.pattern instanceof RelatedArtifact; 10662 } 10663 10664 /** 10665 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10666 10667When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10668 10669When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10670 10671When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10672 106731. If primitive: it must match exactly the pattern value 106742. If a complex object: it must match (recursively) the pattern value 106753. If an array: it must match (recursively) the pattern value 10676 10677If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10678 */ 10679 public TriggerDefinition getPatternTriggerDefinition() throws FHIRException { 10680 if (this.pattern == null) 10681 this.pattern = new TriggerDefinition(); 10682 if (!(this.pattern instanceof TriggerDefinition)) 10683 throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10684 return (TriggerDefinition) this.pattern; 10685 } 10686 10687 public boolean hasPatternTriggerDefinition() { 10688 return this != null && this.pattern instanceof TriggerDefinition; 10689 } 10690 10691 /** 10692 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10693 10694When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10695 10696When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10697 10698When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10699 107001. If primitive: it must match exactly the pattern value 107012. If a complex object: it must match (recursively) the pattern value 107023. If an array: it must match (recursively) the pattern value 10703 10704If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10705 */ 10706 public UsageContext getPatternUsageContext() throws FHIRException { 10707 if (this.pattern == null) 10708 this.pattern = new UsageContext(); 10709 if (!(this.pattern instanceof UsageContext)) 10710 throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10711 return (UsageContext) this.pattern; 10712 } 10713 10714 public boolean hasPatternUsageContext() { 10715 return this != null && this.pattern instanceof UsageContext; 10716 } 10717 10718 /** 10719 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10720 10721When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10722 10723When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10724 10725When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10726 107271. If primitive: it must match exactly the pattern value 107282. If a complex object: it must match (recursively) the pattern value 107293. If an array: it must match (recursively) the pattern value 10730 10731If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10732 */ 10733 public Availability getPatternAvailability() throws FHIRException { 10734 if (this.pattern == null) 10735 this.pattern = new Availability(); 10736 if (!(this.pattern instanceof Availability)) 10737 throw new FHIRException("Type mismatch: the type Availability was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10738 return (Availability) this.pattern; 10739 } 10740 10741 public boolean hasPatternAvailability() { 10742 return this != null && this.pattern instanceof Availability; 10743 } 10744 10745 /** 10746 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10747 10748When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10749 10750When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10751 10752When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10753 107541. If primitive: it must match exactly the pattern value 107552. If a complex object: it must match (recursively) the pattern value 107563. If an array: it must match (recursively) the pattern value 10757 10758If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10759 */ 10760 public ExtendedContactDetail getPatternExtendedContactDetail() throws FHIRException { 10761 if (this.pattern == null) 10762 this.pattern = new ExtendedContactDetail(); 10763 if (!(this.pattern instanceof ExtendedContactDetail)) 10764 throw new FHIRException("Type mismatch: the type ExtendedContactDetail was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10765 return (ExtendedContactDetail) this.pattern; 10766 } 10767 10768 public boolean hasPatternExtendedContactDetail() { 10769 return this != null && this.pattern instanceof ExtendedContactDetail; 10770 } 10771 10772 /** 10773 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10774 10775When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10776 10777When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10778 10779When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10780 107811. If primitive: it must match exactly the pattern value 107822. If a complex object: it must match (recursively) the pattern value 107833. If an array: it must match (recursively) the pattern value 10784 10785If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10786 */ 10787 public Dosage getPatternDosage() throws FHIRException { 10788 if (this.pattern == null) 10789 this.pattern = new Dosage(); 10790 if (!(this.pattern instanceof Dosage)) 10791 throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10792 return (Dosage) this.pattern; 10793 } 10794 10795 public boolean hasPatternDosage() { 10796 return this != null && this.pattern instanceof Dosage; 10797 } 10798 10799 /** 10800 * @return {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10801 10802When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10803 10804When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10805 10806When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10807 108081. If primitive: it must match exactly the pattern value 108092. If a complex object: it must match (recursively) the pattern value 108103. If an array: it must match (recursively) the pattern value 10811 10812If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10813 */ 10814 public Meta getPatternMeta() throws FHIRException { 10815 if (this.pattern == null) 10816 this.pattern = new Meta(); 10817 if (!(this.pattern instanceof Meta)) 10818 throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.pattern.getClass().getName()+" was encountered"); 10819 return (Meta) this.pattern; 10820 } 10821 10822 public boolean hasPatternMeta() { 10823 return this != null && this.pattern instanceof Meta; 10824 } 10825 10826 public boolean hasPattern() { 10827 return this.pattern != null && !this.pattern.isEmpty(); 10828 } 10829 10830 /** 10831 * @param value {@link #pattern} (Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. 10832 10833When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. 10834 10835When an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array. 10836 10837When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 10838 108391. If primitive: it must match exactly the pattern value 108402. If a complex object: it must match (recursively) the pattern value 108413. If an array: it must match (recursively) the pattern value 10842 10843If a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.) 10844 */ 10845 public ElementDefinition setPattern(DataType value) { 10846 if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof CodeableReference || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof RatioRange || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Availability || value instanceof ExtendedContactDetail || value instanceof Dosage || value instanceof Meta)) 10847 throw new Error("Not the right type for ElementDefinition.pattern[x]: "+value.fhirType()); 10848 this.pattern = value; 10849 return this; 10850 } 10851 10852 /** 10853 * @return {@link #example} (A sample value for this element demonstrating the type of information that would typically be found in the element.) 10854 */ 10855 public List<ElementDefinitionExampleComponent> getExample() { 10856 if (this.example == null) 10857 this.example = new ArrayList<ElementDefinitionExampleComponent>(); 10858 return this.example; 10859 } 10860 10861 /** 10862 * @return Returns a reference to <code>this</code> for easy method chaining 10863 */ 10864 public ElementDefinition setExample(List<ElementDefinitionExampleComponent> theExample) { 10865 this.example = theExample; 10866 return this; 10867 } 10868 10869 public boolean hasExample() { 10870 if (this.example == null) 10871 return false; 10872 for (ElementDefinitionExampleComponent item : this.example) 10873 if (!item.isEmpty()) 10874 return true; 10875 return false; 10876 } 10877 10878 public ElementDefinitionExampleComponent addExample() { //3 10879 ElementDefinitionExampleComponent t = new ElementDefinitionExampleComponent(); 10880 if (this.example == null) 10881 this.example = new ArrayList<ElementDefinitionExampleComponent>(); 10882 this.example.add(t); 10883 return t; 10884 } 10885 10886 public ElementDefinition addExample(ElementDefinitionExampleComponent t) { //3 10887 if (t == null) 10888 return this; 10889 if (this.example == null) 10890 this.example = new ArrayList<ElementDefinitionExampleComponent>(); 10891 this.example.add(t); 10892 return this; 10893 } 10894 10895 /** 10896 * @return The first repetition of repeating field {@link #example}, creating it if it does not already exist {3} 10897 */ 10898 public ElementDefinitionExampleComponent getExampleFirstRep() { 10899 if (getExample().isEmpty()) { 10900 addExample(); 10901 } 10902 return getExample().get(0); 10903 } 10904 10905 /** 10906 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10907 */ 10908 public DataType getMinValue() { 10909 return this.minValue; 10910 } 10911 10912 /** 10913 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10914 */ 10915 public DateType getMinValueDateType() throws FHIRException { 10916 if (this.minValue == null) 10917 this.minValue = new DateType(); 10918 if (!(this.minValue instanceof DateType)) 10919 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 10920 return (DateType) this.minValue; 10921 } 10922 10923 public boolean hasMinValueDateType() { 10924 return this != null && this.minValue instanceof DateType; 10925 } 10926 10927 /** 10928 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10929 */ 10930 public DateTimeType getMinValueDateTimeType() throws FHIRException { 10931 if (this.minValue == null) 10932 this.minValue = new DateTimeType(); 10933 if (!(this.minValue instanceof DateTimeType)) 10934 throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 10935 return (DateTimeType) this.minValue; 10936 } 10937 10938 public boolean hasMinValueDateTimeType() { 10939 return this != null && this.minValue instanceof DateTimeType; 10940 } 10941 10942 /** 10943 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10944 */ 10945 public InstantType getMinValueInstantType() throws FHIRException { 10946 if (this.minValue == null) 10947 this.minValue = new InstantType(); 10948 if (!(this.minValue instanceof InstantType)) 10949 throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 10950 return (InstantType) this.minValue; 10951 } 10952 10953 public boolean hasMinValueInstantType() { 10954 return this != null && this.minValue instanceof InstantType; 10955 } 10956 10957 /** 10958 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10959 */ 10960 public TimeType getMinValueTimeType() throws FHIRException { 10961 if (this.minValue == null) 10962 this.minValue = new TimeType(); 10963 if (!(this.minValue instanceof TimeType)) 10964 throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 10965 return (TimeType) this.minValue; 10966 } 10967 10968 public boolean hasMinValueTimeType() { 10969 return this != null && this.minValue instanceof TimeType; 10970 } 10971 10972 /** 10973 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10974 */ 10975 public DecimalType getMinValueDecimalType() throws FHIRException { 10976 if (this.minValue == null) 10977 this.minValue = new DecimalType(); 10978 if (!(this.minValue instanceof DecimalType)) 10979 throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 10980 return (DecimalType) this.minValue; 10981 } 10982 10983 public boolean hasMinValueDecimalType() { 10984 return this != null && this.minValue instanceof DecimalType; 10985 } 10986 10987 /** 10988 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 10989 */ 10990 public IntegerType getMinValueIntegerType() throws FHIRException { 10991 if (this.minValue == null) 10992 this.minValue = new IntegerType(); 10993 if (!(this.minValue instanceof IntegerType)) 10994 throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 10995 return (IntegerType) this.minValue; 10996 } 10997 10998 public boolean hasMinValueIntegerType() { 10999 return this != null && this.minValue instanceof IntegerType; 11000 } 11001 11002 /** 11003 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11004 */ 11005 public Integer64Type getMinValueInteger64Type() throws FHIRException { 11006 if (this.minValue == null) 11007 this.minValue = new Integer64Type(); 11008 if (!(this.minValue instanceof Integer64Type)) 11009 throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.minValue.getClass().getName()+" was encountered"); 11010 return (Integer64Type) this.minValue; 11011 } 11012 11013 public boolean hasMinValueInteger64Type() { 11014 return this != null && this.minValue instanceof Integer64Type; 11015 } 11016 11017 /** 11018 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11019 */ 11020 public PositiveIntType getMinValuePositiveIntType() throws FHIRException { 11021 if (this.minValue == null) 11022 this.minValue = new PositiveIntType(); 11023 if (!(this.minValue instanceof PositiveIntType)) 11024 throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 11025 return (PositiveIntType) this.minValue; 11026 } 11027 11028 public boolean hasMinValuePositiveIntType() { 11029 return this != null && this.minValue instanceof PositiveIntType; 11030 } 11031 11032 /** 11033 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11034 */ 11035 public UnsignedIntType getMinValueUnsignedIntType() throws FHIRException { 11036 if (this.minValue == null) 11037 this.minValue = new UnsignedIntType(); 11038 if (!(this.minValue instanceof UnsignedIntType)) 11039 throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.minValue.getClass().getName()+" was encountered"); 11040 return (UnsignedIntType) this.minValue; 11041 } 11042 11043 public boolean hasMinValueUnsignedIntType() { 11044 return this != null && this.minValue instanceof UnsignedIntType; 11045 } 11046 11047 /** 11048 * @return {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11049 */ 11050 public Quantity getMinValueQuantity() throws FHIRException { 11051 if (this.minValue == null) 11052 this.minValue = new Quantity(); 11053 if (!(this.minValue instanceof Quantity)) 11054 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.minValue.getClass().getName()+" was encountered"); 11055 return (Quantity) this.minValue; 11056 } 11057 11058 public boolean hasMinValueQuantity() { 11059 return this != null && this.minValue instanceof Quantity; 11060 } 11061 11062 public boolean hasMinValue() { 11063 return this.minValue != null && !this.minValue.isEmpty(); 11064 } 11065 11066 /** 11067 * @param value {@link #minValue} (The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11068 */ 11069 public ElementDefinition setMinValue(DataType value) { 11070 if (value != null && !(value instanceof DateType || value instanceof DateTimeType || value instanceof InstantType || value instanceof TimeType || value instanceof DecimalType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof PositiveIntType || value instanceof UnsignedIntType || value instanceof Quantity)) 11071 throw new Error("Not the right type for ElementDefinition.minValue[x]: "+value.fhirType()); 11072 this.minValue = value; 11073 return this; 11074 } 11075 11076 /** 11077 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11078 */ 11079 public DataType getMaxValue() { 11080 return this.maxValue; 11081 } 11082 11083 /** 11084 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11085 */ 11086 public DateType getMaxValueDateType() throws FHIRException { 11087 if (this.maxValue == null) 11088 this.maxValue = new DateType(); 11089 if (!(this.maxValue instanceof DateType)) 11090 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11091 return (DateType) this.maxValue; 11092 } 11093 11094 public boolean hasMaxValueDateType() { 11095 return this != null && this.maxValue instanceof DateType; 11096 } 11097 11098 /** 11099 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11100 */ 11101 public DateTimeType getMaxValueDateTimeType() throws FHIRException { 11102 if (this.maxValue == null) 11103 this.maxValue = new DateTimeType(); 11104 if (!(this.maxValue instanceof DateTimeType)) 11105 throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11106 return (DateTimeType) this.maxValue; 11107 } 11108 11109 public boolean hasMaxValueDateTimeType() { 11110 return this != null && this.maxValue instanceof DateTimeType; 11111 } 11112 11113 /** 11114 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11115 */ 11116 public InstantType getMaxValueInstantType() throws FHIRException { 11117 if (this.maxValue == null) 11118 this.maxValue = new InstantType(); 11119 if (!(this.maxValue instanceof InstantType)) 11120 throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11121 return (InstantType) this.maxValue; 11122 } 11123 11124 public boolean hasMaxValueInstantType() { 11125 return this != null && this.maxValue instanceof InstantType; 11126 } 11127 11128 /** 11129 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11130 */ 11131 public TimeType getMaxValueTimeType() throws FHIRException { 11132 if (this.maxValue == null) 11133 this.maxValue = new TimeType(); 11134 if (!(this.maxValue instanceof TimeType)) 11135 throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11136 return (TimeType) this.maxValue; 11137 } 11138 11139 public boolean hasMaxValueTimeType() { 11140 return this != null && this.maxValue instanceof TimeType; 11141 } 11142 11143 /** 11144 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11145 */ 11146 public DecimalType getMaxValueDecimalType() throws FHIRException { 11147 if (this.maxValue == null) 11148 this.maxValue = new DecimalType(); 11149 if (!(this.maxValue instanceof DecimalType)) 11150 throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11151 return (DecimalType) this.maxValue; 11152 } 11153 11154 public boolean hasMaxValueDecimalType() { 11155 return this != null && this.maxValue instanceof DecimalType; 11156 } 11157 11158 /** 11159 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11160 */ 11161 public IntegerType getMaxValueIntegerType() throws FHIRException { 11162 if (this.maxValue == null) 11163 this.maxValue = new IntegerType(); 11164 if (!(this.maxValue instanceof IntegerType)) 11165 throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11166 return (IntegerType) this.maxValue; 11167 } 11168 11169 public boolean hasMaxValueIntegerType() { 11170 return this != null && this.maxValue instanceof IntegerType; 11171 } 11172 11173 /** 11174 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11175 */ 11176 public Integer64Type getMaxValueInteger64Type() throws FHIRException { 11177 if (this.maxValue == null) 11178 this.maxValue = new Integer64Type(); 11179 if (!(this.maxValue instanceof Integer64Type)) 11180 throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11181 return (Integer64Type) this.maxValue; 11182 } 11183 11184 public boolean hasMaxValueInteger64Type() { 11185 return this != null && this.maxValue instanceof Integer64Type; 11186 } 11187 11188 /** 11189 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11190 */ 11191 public PositiveIntType getMaxValuePositiveIntType() throws FHIRException { 11192 if (this.maxValue == null) 11193 this.maxValue = new PositiveIntType(); 11194 if (!(this.maxValue instanceof PositiveIntType)) 11195 throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11196 return (PositiveIntType) this.maxValue; 11197 } 11198 11199 public boolean hasMaxValuePositiveIntType() { 11200 return this != null && this.maxValue instanceof PositiveIntType; 11201 } 11202 11203 /** 11204 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11205 */ 11206 public UnsignedIntType getMaxValueUnsignedIntType() throws FHIRException { 11207 if (this.maxValue == null) 11208 this.maxValue = new UnsignedIntType(); 11209 if (!(this.maxValue instanceof UnsignedIntType)) 11210 throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11211 return (UnsignedIntType) this.maxValue; 11212 } 11213 11214 public boolean hasMaxValueUnsignedIntType() { 11215 return this != null && this.maxValue instanceof UnsignedIntType; 11216 } 11217 11218 /** 11219 * @return {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11220 */ 11221 public Quantity getMaxValueQuantity() throws FHIRException { 11222 if (this.maxValue == null) 11223 this.maxValue = new Quantity(); 11224 if (!(this.maxValue instanceof Quantity)) 11225 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.maxValue.getClass().getName()+" was encountered"); 11226 return (Quantity) this.maxValue; 11227 } 11228 11229 public boolean hasMaxValueQuantity() { 11230 return this != null && this.maxValue instanceof Quantity; 11231 } 11232 11233 public boolean hasMaxValue() { 11234 return this.maxValue != null && !this.maxValue.isEmpty(); 11235 } 11236 11237 /** 11238 * @param value {@link #maxValue} (The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.) 11239 */ 11240 public ElementDefinition setMaxValue(DataType value) { 11241 if (value != null && !(value instanceof DateType || value instanceof DateTimeType || value instanceof InstantType || value instanceof TimeType || value instanceof DecimalType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof PositiveIntType || value instanceof UnsignedIntType || value instanceof Quantity)) 11242 throw new Error("Not the right type for ElementDefinition.maxValue[x]: "+value.fhirType()); 11243 this.maxValue = value; 11244 return this; 11245 } 11246 11247 /** 11248 * @return {@link #maxLength} (Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)).). This is the underlying object with id, value and extensions. The accessor "getMaxLength" gives direct access to the value 11249 */ 11250 public IntegerType getMaxLengthElement() { 11251 if (this.maxLength == null) 11252 if (Configuration.errorOnAutoCreate()) 11253 throw new Error("Attempt to auto-create ElementDefinition.maxLength"); 11254 else if (Configuration.doAutoCreate()) 11255 this.maxLength = new IntegerType(); // bb 11256 return this.maxLength; 11257 } 11258 11259 public boolean hasMaxLengthElement() { 11260 return this.maxLength != null && !this.maxLength.isEmpty(); 11261 } 11262 11263 public boolean hasMaxLength() { 11264 return this.maxLength != null && !this.maxLength.isEmpty(); 11265 } 11266 11267 /** 11268 * @param value {@link #maxLength} (Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)).). This is the underlying object with id, value and extensions. The accessor "getMaxLength" gives direct access to the value 11269 */ 11270 public ElementDefinition setMaxLengthElement(IntegerType value) { 11271 this.maxLength = value; 11272 return this; 11273 } 11274 11275 /** 11276 * @return Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)). 11277 */ 11278 public int getMaxLength() { 11279 return this.maxLength == null || this.maxLength.isEmpty() ? 0 : this.maxLength.getValue(); 11280 } 11281 11282 /** 11283 * @param value Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)). 11284 */ 11285 public ElementDefinition setMaxLength(int value) { 11286 if (this.maxLength == null) 11287 this.maxLength = new IntegerType(); 11288 this.maxLength.setValue(value); 11289 return this; 11290 } 11291 11292 /** 11293 * @return {@link #condition} (A reference to an invariant that may make additional statements about the cardinality or value in the instance.) 11294 */ 11295 public List<IdType> getCondition() { 11296 if (this.condition == null) 11297 this.condition = new ArrayList<IdType>(); 11298 return this.condition; 11299 } 11300 11301 /** 11302 * @return Returns a reference to <code>this</code> for easy method chaining 11303 */ 11304 public ElementDefinition setCondition(List<IdType> theCondition) { 11305 this.condition = theCondition; 11306 return this; 11307 } 11308 11309 public boolean hasCondition() { 11310 if (this.condition == null) 11311 return false; 11312 for (IdType item : this.condition) 11313 if (!item.isEmpty()) 11314 return true; 11315 return false; 11316 } 11317 11318 /** 11319 * @return {@link #condition} (A reference to an invariant that may make additional statements about the cardinality or value in the instance.) 11320 */ 11321 public IdType addConditionElement() {//2 11322 IdType t = new IdType(); 11323 if (this.condition == null) 11324 this.condition = new ArrayList<IdType>(); 11325 this.condition.add(t); 11326 return t; 11327 } 11328 11329 /** 11330 * @param value {@link #condition} (A reference to an invariant that may make additional statements about the cardinality or value in the instance.) 11331 */ 11332 public ElementDefinition addCondition(String value) { //1 11333 IdType t = new IdType(); 11334 t.setValue(value); 11335 if (this.condition == null) 11336 this.condition = new ArrayList<IdType>(); 11337 this.condition.add(t); 11338 return this; 11339 } 11340 11341 /** 11342 * @param value {@link #condition} (A reference to an invariant that may make additional statements about the cardinality or value in the instance.) 11343 */ 11344 public boolean hasCondition(String value) { 11345 if (this.condition == null) 11346 return false; 11347 for (IdType v : this.condition) 11348 if (v.getValue().equals(value)) // id 11349 return true; 11350 return false; 11351 } 11352 11353 /** 11354 * @return {@link #constraint} (Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance.) 11355 */ 11356 public List<ElementDefinitionConstraintComponent> getConstraint() { 11357 if (this.constraint == null) 11358 this.constraint = new ArrayList<ElementDefinitionConstraintComponent>(); 11359 return this.constraint; 11360 } 11361 11362 /** 11363 * @return Returns a reference to <code>this</code> for easy method chaining 11364 */ 11365 public ElementDefinition setConstraint(List<ElementDefinitionConstraintComponent> theConstraint) { 11366 this.constraint = theConstraint; 11367 return this; 11368 } 11369 11370 public boolean hasConstraint() { 11371 if (this.constraint == null) 11372 return false; 11373 for (ElementDefinitionConstraintComponent item : this.constraint) 11374 if (!item.isEmpty()) 11375 return true; 11376 return false; 11377 } 11378 11379 public ElementDefinitionConstraintComponent addConstraint() { //3 11380 ElementDefinitionConstraintComponent t = new ElementDefinitionConstraintComponent(); 11381 if (this.constraint == null) 11382 this.constraint = new ArrayList<ElementDefinitionConstraintComponent>(); 11383 this.constraint.add(t); 11384 return t; 11385 } 11386 11387 public ElementDefinition addConstraint(ElementDefinitionConstraintComponent t) { //3 11388 if (t == null) 11389 return this; 11390 if (this.constraint == null) 11391 this.constraint = new ArrayList<ElementDefinitionConstraintComponent>(); 11392 this.constraint.add(t); 11393 return this; 11394 } 11395 11396 /** 11397 * @return The first repetition of repeating field {@link #constraint}, creating it if it does not already exist {3} 11398 */ 11399 public ElementDefinitionConstraintComponent getConstraintFirstRep() { 11400 if (getConstraint().isEmpty()) { 11401 addConstraint(); 11402 } 11403 return getConstraint().get(0); 11404 } 11405 11406 /** 11407 * @return {@link #mustHaveValue} (Specifies for a primitive data type that the value of the data type cannot be replaced by an extension.). This is the underlying object with id, value and extensions. The accessor "getMustHaveValue" gives direct access to the value 11408 */ 11409 public BooleanType getMustHaveValueElement() { 11410 if (this.mustHaveValue == null) 11411 if (Configuration.errorOnAutoCreate()) 11412 throw new Error("Attempt to auto-create ElementDefinition.mustHaveValue"); 11413 else if (Configuration.doAutoCreate()) 11414 this.mustHaveValue = new BooleanType(); // bb 11415 return this.mustHaveValue; 11416 } 11417 11418 public boolean hasMustHaveValueElement() { 11419 return this.mustHaveValue != null && !this.mustHaveValue.isEmpty(); 11420 } 11421 11422 public boolean hasMustHaveValue() { 11423 return this.mustHaveValue != null && !this.mustHaveValue.isEmpty(); 11424 } 11425 11426 /** 11427 * @param value {@link #mustHaveValue} (Specifies for a primitive data type that the value of the data type cannot be replaced by an extension.). This is the underlying object with id, value and extensions. The accessor "getMustHaveValue" gives direct access to the value 11428 */ 11429 public ElementDefinition setMustHaveValueElement(BooleanType value) { 11430 this.mustHaveValue = value; 11431 return this; 11432 } 11433 11434 /** 11435 * @return Specifies for a primitive data type that the value of the data type cannot be replaced by an extension. 11436 */ 11437 public boolean getMustHaveValue() { 11438 return this.mustHaveValue == null || this.mustHaveValue.isEmpty() ? false : this.mustHaveValue.getValue(); 11439 } 11440 11441 /** 11442 * @param value Specifies for a primitive data type that the value of the data type cannot be replaced by an extension. 11443 */ 11444 public ElementDefinition setMustHaveValue(boolean value) { 11445 if (this.mustHaveValue == null) 11446 this.mustHaveValue = new BooleanType(); 11447 this.mustHaveValue.setValue(value); 11448 return this; 11449 } 11450 11451 /** 11452 * @return {@link #valueAlternatives} (Specifies a list of extensions that can appear in place of a primitive value.) 11453 */ 11454 public List<CanonicalType> getValueAlternatives() { 11455 if (this.valueAlternatives == null) 11456 this.valueAlternatives = new ArrayList<CanonicalType>(); 11457 return this.valueAlternatives; 11458 } 11459 11460 /** 11461 * @return Returns a reference to <code>this</code> for easy method chaining 11462 */ 11463 public ElementDefinition setValueAlternatives(List<CanonicalType> theValueAlternatives) { 11464 this.valueAlternatives = theValueAlternatives; 11465 return this; 11466 } 11467 11468 public boolean hasValueAlternatives() { 11469 if (this.valueAlternatives == null) 11470 return false; 11471 for (CanonicalType item : this.valueAlternatives) 11472 if (!item.isEmpty()) 11473 return true; 11474 return false; 11475 } 11476 11477 /** 11478 * @return {@link #valueAlternatives} (Specifies a list of extensions that can appear in place of a primitive value.) 11479 */ 11480 public CanonicalType addValueAlternativesElement() {//2 11481 CanonicalType t = new CanonicalType(); 11482 if (this.valueAlternatives == null) 11483 this.valueAlternatives = new ArrayList<CanonicalType>(); 11484 this.valueAlternatives.add(t); 11485 return t; 11486 } 11487 11488 /** 11489 * @param value {@link #valueAlternatives} (Specifies a list of extensions that can appear in place of a primitive value.) 11490 */ 11491 public ElementDefinition addValueAlternatives(String value) { //1 11492 CanonicalType t = new CanonicalType(); 11493 t.setValue(value); 11494 if (this.valueAlternatives == null) 11495 this.valueAlternatives = new ArrayList<CanonicalType>(); 11496 this.valueAlternatives.add(t); 11497 return this; 11498 } 11499 11500 /** 11501 * @param value {@link #valueAlternatives} (Specifies a list of extensions that can appear in place of a primitive value.) 11502 */ 11503 public boolean hasValueAlternatives(String value) { 11504 if (this.valueAlternatives == null) 11505 return false; 11506 for (CanonicalType v : this.valueAlternatives) 11507 if (v.getValue().equals(value)) // canonical 11508 return true; 11509 return false; 11510 } 11511 11512 /** 11513 * @return {@link #mustSupport} (If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation.). This is the underlying object with id, value and extensions. The accessor "getMustSupport" gives direct access to the value 11514 */ 11515 public BooleanType getMustSupportElement() { 11516 if (this.mustSupport == null) 11517 if (Configuration.errorOnAutoCreate()) 11518 throw new Error("Attempt to auto-create ElementDefinition.mustSupport"); 11519 else if (Configuration.doAutoCreate()) 11520 this.mustSupport = new BooleanType(); // bb 11521 return this.mustSupport; 11522 } 11523 11524 public boolean hasMustSupportElement() { 11525 return this.mustSupport != null && !this.mustSupport.isEmpty(); 11526 } 11527 11528 public boolean hasMustSupport() { 11529 return this.mustSupport != null && !this.mustSupport.isEmpty(); 11530 } 11531 11532 /** 11533 * @param value {@link #mustSupport} (If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation.). This is the underlying object with id, value and extensions. The accessor "getMustSupport" gives direct access to the value 11534 */ 11535 public ElementDefinition setMustSupportElement(BooleanType value) { 11536 this.mustSupport = value; 11537 return this; 11538 } 11539 11540 /** 11541 * @return If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation. 11542 */ 11543 public boolean getMustSupport() { 11544 return this.mustSupport == null || this.mustSupport.isEmpty() ? false : this.mustSupport.getValue(); 11545 } 11546 11547 /** 11548 * @param value If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation. 11549 */ 11550 public ElementDefinition setMustSupport(boolean value) { 11551 if (this.mustSupport == null) 11552 this.mustSupport = new BooleanType(); 11553 this.mustSupport.setValue(value); 11554 return this; 11555 } 11556 11557 /** 11558 * @return {@link #obligation} (Documents obligations that apply to applications implementing this element. The obligations relate to application behaviour, not the content of the element itself in the resource instances that contain this element.) 11559 */ 11560 public List<ElementDefinitionObligationComponent> getObligation() { 11561 if (this.obligation == null) 11562 this.obligation = new ArrayList<ElementDefinitionObligationComponent>(); 11563 return this.obligation; 11564 } 11565 11566 /** 11567 * @return Returns a reference to <code>this</code> for easy method chaining 11568 */ 11569 public ElementDefinition setObligation(List<ElementDefinitionObligationComponent> theObligation) { 11570 this.obligation = theObligation; 11571 return this; 11572 } 11573 11574 public boolean hasObligation() { 11575 if (this.obligation == null) 11576 return false; 11577 for (ElementDefinitionObligationComponent item : this.obligation) 11578 if (!item.isEmpty()) 11579 return true; 11580 return false; 11581 } 11582 11583 public ElementDefinitionObligationComponent addObligation() { //3 11584 ElementDefinitionObligationComponent t = new ElementDefinitionObligationComponent(); 11585 if (this.obligation == null) 11586 this.obligation = new ArrayList<ElementDefinitionObligationComponent>(); 11587 this.obligation.add(t); 11588 return t; 11589 } 11590 11591 public ElementDefinition addObligation(ElementDefinitionObligationComponent t) { //3 11592 if (t == null) 11593 return this; 11594 if (this.obligation == null) 11595 this.obligation = new ArrayList<ElementDefinitionObligationComponent>(); 11596 this.obligation.add(t); 11597 return this; 11598 } 11599 11600 /** 11601 * @return The first repetition of repeating field {@link #obligation}, creating it if it does not already exist {3} 11602 */ 11603 public ElementDefinitionObligationComponent getObligationFirstRep() { 11604 if (getObligation().isEmpty()) { 11605 addObligation(); 11606 } 11607 return getObligation().get(0); 11608 } 11609 11610 /** 11611 * @return {@link #isModifier} (If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system.). This is the underlying object with id, value and extensions. The accessor "getIsModifier" gives direct access to the value 11612 */ 11613 public BooleanType getIsModifierElement() { 11614 if (this.isModifier == null) 11615 if (Configuration.errorOnAutoCreate()) 11616 throw new Error("Attempt to auto-create ElementDefinition.isModifier"); 11617 else if (Configuration.doAutoCreate()) 11618 this.isModifier = new BooleanType(); // bb 11619 return this.isModifier; 11620 } 11621 11622 public boolean hasIsModifierElement() { 11623 return this.isModifier != null && !this.isModifier.isEmpty(); 11624 } 11625 11626 public boolean hasIsModifier() { 11627 return this.isModifier != null && !this.isModifier.isEmpty(); 11628 } 11629 11630 /** 11631 * @param value {@link #isModifier} (If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system.). This is the underlying object with id, value and extensions. The accessor "getIsModifier" gives direct access to the value 11632 */ 11633 public ElementDefinition setIsModifierElement(BooleanType value) { 11634 this.isModifier = value; 11635 return this; 11636 } 11637 11638 /** 11639 * @return If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system. 11640 */ 11641 public boolean getIsModifier() { 11642 return this.isModifier == null || this.isModifier.isEmpty() ? false : this.isModifier.getValue(); 11643 } 11644 11645 /** 11646 * @param value If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system. 11647 */ 11648 public ElementDefinition setIsModifier(boolean value) { 11649 if (this.isModifier == null) 11650 this.isModifier = new BooleanType(); 11651 this.isModifier.setValue(value); 11652 return this; 11653 } 11654 11655 /** 11656 * @return {@link #isModifierReason} (Explains how that element affects the interpretation of the resource or element that contains it.). This is the underlying object with id, value and extensions. The accessor "getIsModifierReason" gives direct access to the value 11657 */ 11658 public StringType getIsModifierReasonElement() { 11659 if (this.isModifierReason == null) 11660 if (Configuration.errorOnAutoCreate()) 11661 throw new Error("Attempt to auto-create ElementDefinition.isModifierReason"); 11662 else if (Configuration.doAutoCreate()) 11663 this.isModifierReason = new StringType(); // bb 11664 return this.isModifierReason; 11665 } 11666 11667 public boolean hasIsModifierReasonElement() { 11668 return this.isModifierReason != null && !this.isModifierReason.isEmpty(); 11669 } 11670 11671 public boolean hasIsModifierReason() { 11672 return this.isModifierReason != null && !this.isModifierReason.isEmpty(); 11673 } 11674 11675 /** 11676 * @param value {@link #isModifierReason} (Explains how that element affects the interpretation of the resource or element that contains it.). This is the underlying object with id, value and extensions. The accessor "getIsModifierReason" gives direct access to the value 11677 */ 11678 public ElementDefinition setIsModifierReasonElement(StringType value) { 11679 this.isModifierReason = value; 11680 return this; 11681 } 11682 11683 /** 11684 * @return Explains how that element affects the interpretation of the resource or element that contains it. 11685 */ 11686 public String getIsModifierReason() { 11687 return this.isModifierReason == null ? null : this.isModifierReason.getValue(); 11688 } 11689 11690 /** 11691 * @param value Explains how that element affects the interpretation of the resource or element that contains it. 11692 */ 11693 public ElementDefinition setIsModifierReason(String value) { 11694 if (Utilities.noString(value)) 11695 this.isModifierReason = null; 11696 else { 11697 if (this.isModifierReason == null) 11698 this.isModifierReason = new StringType(); 11699 this.isModifierReason.setValue(value); 11700 } 11701 return this; 11702 } 11703 11704 /** 11705 * @return {@link #isSummary} (Whether the element should be included if a client requests a search with the parameter _summary=true.). This is the underlying object with id, value and extensions. The accessor "getIsSummary" gives direct access to the value 11706 */ 11707 public BooleanType getIsSummaryElement() { 11708 if (this.isSummary == null) 11709 if (Configuration.errorOnAutoCreate()) 11710 throw new Error("Attempt to auto-create ElementDefinition.isSummary"); 11711 else if (Configuration.doAutoCreate()) 11712 this.isSummary = new BooleanType(); // bb 11713 return this.isSummary; 11714 } 11715 11716 public boolean hasIsSummaryElement() { 11717 return this.isSummary != null && !this.isSummary.isEmpty(); 11718 } 11719 11720 public boolean hasIsSummary() { 11721 return this.isSummary != null && !this.isSummary.isEmpty(); 11722 } 11723 11724 /** 11725 * @param value {@link #isSummary} (Whether the element should be included if a client requests a search with the parameter _summary=true.). This is the underlying object with id, value and extensions. The accessor "getIsSummary" gives direct access to the value 11726 */ 11727 public ElementDefinition setIsSummaryElement(BooleanType value) { 11728 this.isSummary = value; 11729 return this; 11730 } 11731 11732 /** 11733 * @return Whether the element should be included if a client requests a search with the parameter _summary=true. 11734 */ 11735 public boolean getIsSummary() { 11736 return this.isSummary == null || this.isSummary.isEmpty() ? false : this.isSummary.getValue(); 11737 } 11738 11739 /** 11740 * @param value Whether the element should be included if a client requests a search with the parameter _summary=true. 11741 */ 11742 public ElementDefinition setIsSummary(boolean value) { 11743 if (this.isSummary == null) 11744 this.isSummary = new BooleanType(); 11745 this.isSummary.setValue(value); 11746 return this; 11747 } 11748 11749 /** 11750 * @return {@link #binding} (Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri).) 11751 */ 11752 public ElementDefinitionBindingComponent getBinding() { 11753 if (this.binding == null) 11754 if (Configuration.errorOnAutoCreate()) 11755 throw new Error("Attempt to auto-create ElementDefinition.binding"); 11756 else if (Configuration.doAutoCreate()) 11757 this.binding = new ElementDefinitionBindingComponent(); // cc 11758 return this.binding; 11759 } 11760 11761 public boolean hasBinding() { 11762 return this.binding != null && !this.binding.isEmpty(); 11763 } 11764 11765 /** 11766 * @param value {@link #binding} (Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri).) 11767 */ 11768 public ElementDefinition setBinding(ElementDefinitionBindingComponent value) { 11769 this.binding = value; 11770 return this; 11771 } 11772 11773 /** 11774 * @return {@link #mapping} (Identifies a concept from an external specification that roughly corresponds to this element.) 11775 */ 11776 public List<ElementDefinitionMappingComponent> getMapping() { 11777 if (this.mapping == null) 11778 this.mapping = new ArrayList<ElementDefinitionMappingComponent>(); 11779 return this.mapping; 11780 } 11781 11782 /** 11783 * @return Returns a reference to <code>this</code> for easy method chaining 11784 */ 11785 public ElementDefinition setMapping(List<ElementDefinitionMappingComponent> theMapping) { 11786 this.mapping = theMapping; 11787 return this; 11788 } 11789 11790 public boolean hasMapping() { 11791 if (this.mapping == null) 11792 return false; 11793 for (ElementDefinitionMappingComponent item : this.mapping) 11794 if (!item.isEmpty()) 11795 return true; 11796 return false; 11797 } 11798 11799 public ElementDefinitionMappingComponent addMapping() { //3 11800 ElementDefinitionMappingComponent t = new ElementDefinitionMappingComponent(); 11801 if (this.mapping == null) 11802 this.mapping = new ArrayList<ElementDefinitionMappingComponent>(); 11803 this.mapping.add(t); 11804 return t; 11805 } 11806 11807 public ElementDefinition addMapping(ElementDefinitionMappingComponent t) { //3 11808 if (t == null) 11809 return this; 11810 if (this.mapping == null) 11811 this.mapping = new ArrayList<ElementDefinitionMappingComponent>(); 11812 this.mapping.add(t); 11813 return this; 11814 } 11815 11816 /** 11817 * @return The first repetition of repeating field {@link #mapping}, creating it if it does not already exist {3} 11818 */ 11819 public ElementDefinitionMappingComponent getMappingFirstRep() { 11820 if (getMapping().isEmpty()) { 11821 addMapping(); 11822 } 11823 return getMapping().get(0); 11824 } 11825 11826 protected void listChildren(List<Property> children) { 11827 super.listChildren(children); 11828 children.add(new Property("path", "string", "The path identifies the element and is expressed as a \".\"-separated list of ancestor elements, beginning with the name of the resource or extension.", 0, 1, path)); 11829 children.add(new Property("representation", "code", "Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used.", 0, java.lang.Integer.MAX_VALUE, representation)); 11830 children.add(new Property("sliceName", "string", "The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element.", 0, 1, sliceName)); 11831 children.add(new Property("sliceIsConstraining", "boolean", "If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName.", 0, 1, sliceIsConstraining)); 11832 children.add(new Property("label", "string", "A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form.", 0, 1, label)); 11833 children.add(new Property("code", "Coding", "A code that has the same meaning as the element in a particular terminology.", 0, java.lang.Integer.MAX_VALUE, code)); 11834 children.add(new Property("slicing", "", "Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set).", 0, 1, slicing)); 11835 children.add(new Property("short", "string", "A concise description of what this element means (e.g. for use in autogenerated summaries).", 0, 1, short_)); 11836 children.add(new Property("definition", "markdown", "Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition).", 0, 1, definition)); 11837 children.add(new Property("comment", "markdown", "Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment).", 0, 1, comment)); 11838 children.add(new Property("requirements", "markdown", "This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element.", 0, 1, requirements)); 11839 children.add(new Property("alias", "string", "Identifies additional names by which this element might also be known.", 0, java.lang.Integer.MAX_VALUE, alias)); 11840 children.add(new Property("min", "unsignedInt", "The minimum number of times this element SHALL appear in the instance.", 0, 1, min)); 11841 children.add(new Property("max", "string", "The maximum number of times this element is permitted to appear in the instance.", 0, 1, max)); 11842 children.add(new Property("base", "", "Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same.", 0, 1, base)); 11843 children.add(new Property("contentReference", "uri", "Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc.", 0, 1, contentReference)); 11844 children.add(new Property("type", "", "The data type or resource that the value of this element is permitted to be.", 0, java.lang.Integer.MAX_VALUE, type)); 11845 children.add(new Property("defaultValue[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue)); 11846 children.add(new Property("meaningWhenMissing", "markdown", "The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing').", 0, 1, meaningWhenMissing)); 11847 children.add(new Property("orderMeaning", "string", "If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning.", 0, 1, orderMeaning)); 11848 children.add(new Property("fixed[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed)); 11849 children.add(new Property("pattern[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern)); 11850 children.add(new Property("example", "", "A sample value for this element demonstrating the type of information that would typically be found in the element.", 0, java.lang.Integer.MAX_VALUE, example)); 11851 children.add(new Property("minValue[x]", "date|dateTime|instant|time|decimal|integer|integer64|positiveInt|unsignedInt|Quantity", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue)); 11852 children.add(new Property("maxValue[x]", "date|dateTime|instant|time|decimal|integer|integer64|positiveInt|unsignedInt|Quantity", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue)); 11853 children.add(new Property("maxLength", "integer", "Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)).", 0, 1, maxLength)); 11854 children.add(new Property("condition", "id", "A reference to an invariant that may make additional statements about the cardinality or value in the instance.", 0, java.lang.Integer.MAX_VALUE, condition)); 11855 children.add(new Property("constraint", "", "Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance.", 0, java.lang.Integer.MAX_VALUE, constraint)); 11856 children.add(new Property("mustHaveValue", "boolean", "Specifies for a primitive data type that the value of the data type cannot be replaced by an extension.", 0, 1, mustHaveValue)); 11857 children.add(new Property("valueAlternatives", "canonical(StructureDefinition)", "Specifies a list of extensions that can appear in place of a primitive value.", 0, java.lang.Integer.MAX_VALUE, valueAlternatives)); 11858 children.add(new Property("mustSupport", "boolean", "If true, implementations that produce or consume resources SHALL provide \"support\" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation.", 0, 1, mustSupport)); 11859 children.add(new Property("obligation", "", "Documents obligations that apply to applications implementing this element. The obligations relate to application behaviour, not the content of the element itself in the resource instances that contain this element.", 0, java.lang.Integer.MAX_VALUE, obligation)); 11860 children.add(new Property("isModifier", "boolean", "If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system.", 0, 1, isModifier)); 11861 children.add(new Property("isModifierReason", "string", "Explains how that element affects the interpretation of the resource or element that contains it.", 0, 1, isModifierReason)); 11862 children.add(new Property("isSummary", "boolean", "Whether the element should be included if a client requests a search with the parameter _summary=true.", 0, 1, isSummary)); 11863 children.add(new Property("binding", "", "Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri).", 0, 1, binding)); 11864 children.add(new Property("mapping", "", "Identifies a concept from an external specification that roughly corresponds to this element.", 0, java.lang.Integer.MAX_VALUE, mapping)); 11865 } 11866 11867 @Override 11868 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 11869 switch (_hash) { 11870 case 3433509: /*path*/ return new Property("path", "string", "The path identifies the element and is expressed as a \".\"-separated list of ancestor elements, beginning with the name of the resource or extension.", 0, 1, path); 11871 case -671065907: /*representation*/ return new Property("representation", "code", "Codes that define how this element is represented in instances, when the deviation varies from the normal case. No extensions are allowed on elements with a representation of 'xmlAttr', no matter what FHIR serialization format is used.", 0, java.lang.Integer.MAX_VALUE, representation); 11872 case -825289923: /*sliceName*/ return new Property("sliceName", "string", "The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element.", 0, 1, sliceName); 11873 case 333040519: /*sliceIsConstraining*/ return new Property("sliceIsConstraining", "boolean", "If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName.", 0, 1, sliceIsConstraining); 11874 case 102727412: /*label*/ return new Property("label", "string", "A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form.", 0, 1, label); 11875 case 3059181: /*code*/ return new Property("code", "Coding", "A code that has the same meaning as the element in a particular terminology.", 0, java.lang.Integer.MAX_VALUE, code); 11876 case -2119287345: /*slicing*/ return new Property("slicing", "", "Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set).", 0, 1, slicing); 11877 case 109413500: /*short*/ return new Property("short", "string", "A concise description of what this element means (e.g. for use in autogenerated summaries).", 0, 1, short_); 11878 case -1014418093: /*definition*/ return new Property("definition", "markdown", "Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition).", 0, 1, definition); 11879 case 950398559: /*comment*/ return new Property("comment", "markdown", "Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment).", 0, 1, comment); 11880 case -1619874672: /*requirements*/ return new Property("requirements", "markdown", "This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element.", 0, 1, requirements); 11881 case 92902992: /*alias*/ return new Property("alias", "string", "Identifies additional names by which this element might also be known.", 0, java.lang.Integer.MAX_VALUE, alias); 11882 case 108114: /*min*/ return new Property("min", "unsignedInt", "The minimum number of times this element SHALL appear in the instance.", 0, 1, min); 11883 case 107876: /*max*/ return new Property("max", "string", "The maximum number of times this element is permitted to appear in the instance.", 0, 1, max); 11884 case 3016401: /*base*/ return new Property("base", "", "Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same.", 0, 1, base); 11885 case 1193747154: /*contentReference*/ return new Property("contentReference", "uri", "Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc.", 0, 1, contentReference); 11886 case 3575610: /*type*/ return new Property("type", "", "The data type or resource that the value of this element is permitted to be.", 0, java.lang.Integer.MAX_VALUE, type); 11887 case 587922128: /*defaultValue[x]*/ return new Property("defaultValue[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11888 case -659125328: /*defaultValue*/ return new Property("defaultValue[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11889 case 1470297600: /*defaultValueBase64Binary*/ return new Property("defaultValue[x]", "base64Binary", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11890 case 600437336: /*defaultValueBoolean*/ return new Property("defaultValue[x]", "boolean", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11891 case 264593188: /*defaultValueCanonical*/ return new Property("defaultValue[x]", "canonical", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11892 case 1044993469: /*defaultValueCode*/ return new Property("defaultValue[x]", "code", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11893 case 1045010302: /*defaultValueDate*/ return new Property("defaultValue[x]", "date", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11894 case 1220374379: /*defaultValueDateTime*/ return new Property("defaultValue[x]", "dateTime", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11895 case 2077989249: /*defaultValueDecimal*/ return new Property("defaultValue[x]", "decimal", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11896 case -2059245333: /*defaultValueId*/ return new Property("defaultValue[x]", "id", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11897 case -1801671663: /*defaultValueInstant*/ return new Property("defaultValue[x]", "instant", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11898 case -1801189522: /*defaultValueInteger*/ return new Property("defaultValue[x]", "integer", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11899 case -71308628: /*defaultValueInteger64*/ return new Property("defaultValue[x]", "integer64", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11900 case -325436225: /*defaultValueMarkdown*/ return new Property("defaultValue[x]", "markdown", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11901 case 587910138: /*defaultValueOid*/ return new Property("defaultValue[x]", "oid", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11902 case -737344154: /*defaultValuePositiveInt*/ return new Property("defaultValue[x]", "positiveInt", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11903 case -320515103: /*defaultValueString*/ return new Property("defaultValue[x]", "string", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11904 case 1045494429: /*defaultValueTime*/ return new Property("defaultValue[x]", "time", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11905 case 539117290: /*defaultValueUnsignedInt*/ return new Property("defaultValue[x]", "unsignedInt", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11906 case 587916188: /*defaultValueUri*/ return new Property("defaultValue[x]", "uri", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11907 case 587916191: /*defaultValueUrl*/ return new Property("defaultValue[x]", "url", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11908 case 1045535627: /*defaultValueUuid*/ return new Property("defaultValue[x]", "uuid", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11909 case -611966428: /*defaultValueAddress*/ return new Property("defaultValue[x]", "Address", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11910 case 587896623: /*defaultValueAge*/ return new Property("defaultValue[x]", "Age", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11911 case -1851689217: /*defaultValueAnnotation*/ return new Property("defaultValue[x]", "Annotation", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11912 case 2034820339: /*defaultValueAttachment*/ return new Property("defaultValue[x]", "Attachment", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11913 case -410434095: /*defaultValueCodeableConcept*/ return new Property("defaultValue[x]", "CodeableConcept", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11914 case 678417524: /*defaultValueCodeableReference*/ return new Property("defaultValue[x]", "CodeableReference", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11915 case -783616198: /*defaultValueCoding*/ return new Property("defaultValue[x]", "Coding", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11916 case -344740576: /*defaultValueContactPoint*/ return new Property("defaultValue[x]", "ContactPoint", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11917 case -1964924097: /*defaultValueCount*/ return new Property("defaultValue[x]", "Count", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11918 case -283915323: /*defaultValueDistance*/ return new Property("defaultValue[x]", "Distance", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11919 case 1730579812: /*defaultValueDuration*/ return new Property("defaultValue[x]", "Duration", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11920 case -975393912: /*defaultValueHumanName*/ return new Property("defaultValue[x]", "HumanName", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11921 case -1915078535: /*defaultValueIdentifier*/ return new Property("defaultValue[x]", "Identifier", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11922 case -1955695888: /*defaultValueMoney*/ return new Property("defaultValue[x]", "Money", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11923 case -420255343: /*defaultValuePeriod*/ return new Property("defaultValue[x]", "Period", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11924 case -1857379237: /*defaultValueQuantity*/ return new Property("defaultValue[x]", "Quantity", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11925 case -1951495315: /*defaultValueRange*/ return new Property("defaultValue[x]", "Range", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11926 case -1951489477: /*defaultValueRatio*/ return new Property("defaultValue[x]", "Ratio", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11927 case 1803932610: /*defaultValueRatioRange*/ return new Property("defaultValue[x]", "RatioRange", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11928 case -1488914053: /*defaultValueReference*/ return new Property("defaultValue[x]", "Reference", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11929 case -449641228: /*defaultValueSampledData*/ return new Property("defaultValue[x]", "SampledData", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11930 case 509825768: /*defaultValueSignature*/ return new Property("defaultValue[x]", "Signature", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11931 case -302193638: /*defaultValueTiming*/ return new Property("defaultValue[x]", "Timing", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11932 case 1845473985: /*defaultValueContactDetail*/ return new Property("defaultValue[x]", "ContactDetail", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11933 case 375217257: /*defaultValueDataRequirement*/ return new Property("defaultValue[x]", "DataRequirement", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11934 case -2092097944: /*defaultValueExpression*/ return new Property("defaultValue[x]", "Expression", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11935 case -701053940: /*defaultValueParameterDefinition*/ return new Property("defaultValue[x]", "ParameterDefinition", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11936 case 412877133: /*defaultValueRelatedArtifact*/ return new Property("defaultValue[x]", "RelatedArtifact", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11937 case 1913203547: /*defaultValueTriggerDefinition*/ return new Property("defaultValue[x]", "TriggerDefinition", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11938 case -701644642: /*defaultValueUsageContext*/ return new Property("defaultValue[x]", "UsageContext", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11939 case 388885803: /*defaultValueAvailability*/ return new Property("defaultValue[x]", "Availability", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11940 case 1398098440: /*defaultValueExtendedContactDetail*/ return new Property("defaultValue[x]", "ExtendedContactDetail", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11941 case -754548089: /*defaultValueDosage*/ return new Property("defaultValue[x]", "Dosage", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11942 case 1045282261: /*defaultValueMeta*/ return new Property("defaultValue[x]", "Meta", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, 1, defaultValue); 11943 case 1857257103: /*meaningWhenMissing*/ return new Property("meaningWhenMissing", "markdown", "The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing').", 0, 1, meaningWhenMissing); 11944 case 1828196047: /*orderMeaning*/ return new Property("orderMeaning", "string", "If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning.", 0, 1, orderMeaning); 11945 case -391522164: /*fixed[x]*/ return new Property("fixed[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11946 case 97445748: /*fixed*/ return new Property("fixed[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11947 case -799290428: /*fixedBase64Binary*/ return new Property("fixed[x]", "base64Binary", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11948 case 520851988: /*fixedBoolean*/ return new Property("fixed[x]", "boolean", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11949 case 1092485088: /*fixedCanonical*/ return new Property("fixed[x]", "canonical", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11950 case 746991489: /*fixedCode*/ return new Property("fixed[x]", "code", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11951 case 747008322: /*fixedDate*/ return new Property("fixed[x]", "date", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11952 case -1246771409: /*fixedDateTime*/ return new Property("fixed[x]", "dateTime", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11953 case 1998403901: /*fixedDecimal*/ return new Property("fixed[x]", "decimal", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11954 case -843914321: /*fixedId*/ return new Property("fixed[x]", "id", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11955 case -1881257011: /*fixedInstant*/ return new Property("fixed[x]", "instant", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11956 case -1880774870: /*fixedInteger*/ return new Property("fixed[x]", "integer", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11957 case 756583272: /*fixedInteger64*/ return new Property("fixed[x]", "integer64", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11958 case 1502385283: /*fixedMarkdown*/ return new Property("fixed[x]", "markdown", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11959 case -391534154: /*fixedOid*/ return new Property("fixed[x]", "oid", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11960 case 297821986: /*fixedPositiveInt*/ return new Property("fixed[x]", "positiveInt", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11961 case 1062390949: /*fixedString*/ return new Property("fixed[x]", "string", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11962 case 747492449: /*fixedTime*/ return new Property("fixed[x]", "time", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11963 case 1574283430: /*fixedUnsignedInt*/ return new Property("fixed[x]", "unsignedInt", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11964 case -391528104: /*fixedUri*/ return new Property("fixed[x]", "uri", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11965 case -391528101: /*fixedUrl*/ return new Property("fixed[x]", "url", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11966 case 747533647: /*fixedUuid*/ return new Property("fixed[x]", "uuid", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11967 case -691551776: /*fixedAddress*/ return new Property("fixed[x]", "Address", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11968 case -391547669: /*fixedAge*/ return new Property("fixed[x]", "Age", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11969 case -1956844093: /*fixedAnnotation*/ return new Property("fixed[x]", "Annotation", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11970 case 1929665463: /*fixedAttachment*/ return new Property("fixed[x]", "Attachment", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11971 case 1962764685: /*fixedCodeableConcept*/ return new Property("fixed[x]", "CodeableConcept", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11972 case 694810928: /*fixedCodeableReference*/ return new Property("fixed[x]", "CodeableReference", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11973 case 599289854: /*fixedCoding*/ return new Property("fixed[x]", "Coding", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11974 case 1680638692: /*fixedContactPoint*/ return new Property("fixed[x]", "ContactPoint", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11975 case 1681916411: /*fixedCount*/ return new Property("fixed[x]", "Count", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11976 case 1543906185: /*fixedDistance*/ return new Property("fixed[x]", "Distance", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11977 case -736565976: /*fixedDuration*/ return new Property("fixed[x]", "Duration", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11978 case -147502012: /*fixedHumanName*/ return new Property("fixed[x]", "HumanName", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11979 case -2020233411: /*fixedIdentifier*/ return new Property("fixed[x]", "Identifier", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11980 case 1691144620: /*fixedMoney*/ return new Property("fixed[x]", "Money", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11981 case 962650709: /*fixedPeriod*/ return new Property("fixed[x]", "Period", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11982 case -29557729: /*fixedQuantity*/ return new Property("fixed[x]", "Quantity", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11983 case 1695345193: /*fixedRange*/ return new Property("fixed[x]", "Range", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11984 case 1695351031: /*fixedRatio*/ return new Property("fixed[x]", "Ratio", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11985 case 1698777734: /*fixedRatioRange*/ return new Property("fixed[x]", "RatioRange", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11986 case -661022153: /*fixedReference*/ return new Property("fixed[x]", "Reference", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11987 case 585524912: /*fixedSampledData*/ return new Property("fixed[x]", "SampledData", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11988 case 1337717668: /*fixedSignature*/ return new Property("fixed[x]", "Signature", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11989 case 1080712414: /*fixedTiming*/ return new Property("fixed[x]", "Timing", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11990 case 207721853: /*fixedContactDetail*/ return new Property("fixed[x]", "ContactDetail", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11991 case -1546551259: /*fixedDataRequirement*/ return new Property("fixed[x]", "DataRequirement", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11992 case 2097714476: /*fixedExpression*/ return new Property("fixed[x]", "Expression", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11993 case -2126861880: /*fixedParameterDefinition*/ return new Property("fixed[x]", "ParameterDefinition", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11994 case -1508891383: /*fixedRelatedArtifact*/ return new Property("fixed[x]", "RelatedArtifact", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11995 case 1929596951: /*fixedTriggerDefinition*/ return new Property("fixed[x]", "TriggerDefinition", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11996 case 1323734626: /*fixedUsageContext*/ return new Property("fixed[x]", "UsageContext", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11997 case -1880702225: /*fixedAvailability*/ return new Property("fixed[x]", "Availability", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11998 case 1291235524: /*fixedExtendedContactDetail*/ return new Property("fixed[x]", "ExtendedContactDetail", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 11999 case 628357963: /*fixedDosage*/ return new Property("fixed[x]", "Dosage", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 12000 case 747280281: /*fixedMeta*/ return new Property("fixed[x]", "Meta", "Specifies a value that SHALL be exactly the value for this element in the instance, if present. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, 1, fixed); 12001 case -885125392: /*pattern[x]*/ return new Property("pattern[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12002 case -791090288: /*pattern*/ return new Property("pattern[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12003 case 2127857120: /*patternBase64Binary*/ return new Property("pattern[x]", "base64Binary", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12004 case -1776945544: /*patternBoolean*/ return new Property("pattern[x]", "boolean", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12005 case 522246980: /*patternCanonical*/ return new Property("pattern[x]", "canonical", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12006 case -1669806691: /*patternCode*/ return new Property("pattern[x]", "code", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12007 case -1669789858: /*patternDate*/ return new Property("pattern[x]", "date", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12008 case 535949131: /*patternDateTime*/ return new Property("pattern[x]", "dateTime", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12009 case -299393631: /*patternDecimal*/ return new Property("pattern[x]", "decimal", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12010 case -28553013: /*patternId*/ return new Property("pattern[x]", "id", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12011 case 115912753: /*patternInstant*/ return new Property("pattern[x]", "instant", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12012 case 116394894: /*patternInteger*/ return new Property("pattern[x]", "integer", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12013 case 186345164: /*patternInteger64*/ return new Property("pattern[x]", "integer64", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12014 case -1009861473: /*patternMarkdown*/ return new Property("pattern[x]", "markdown", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12015 case -885137382: /*patternOid*/ return new Property("pattern[x]", "oid", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12016 case 2054814086: /*patternPositiveInt*/ return new Property("pattern[x]", "positiveInt", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12017 case 2096647105: /*patternString*/ return new Property("pattern[x]", "string", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12018 case -1669305731: /*patternTime*/ return new Property("pattern[x]", "time", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12019 case -963691766: /*patternUnsignedInt*/ return new Property("pattern[x]", "unsignedInt", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12020 case -885131332: /*patternUri*/ return new Property("pattern[x]", "uri", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12021 case -885131329: /*patternUrl*/ return new Property("pattern[x]", "url", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12022 case -1669264533: /*patternUuid*/ return new Property("pattern[x]", "uuid", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12023 case 1305617988: /*patternAddress*/ return new Property("pattern[x]", "Address", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12024 case -885150897: /*patternAge*/ return new Property("pattern[x]", "Age", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12025 case 1840611039: /*patternAnnotation*/ return new Property("pattern[x]", "Annotation", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12026 case 1432153299: /*patternAttachment*/ return new Property("pattern[x]", "Attachment", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12027 case -400610831: /*patternCodeableConcept*/ return new Property("pattern[x]", "CodeableConcept", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12028 case 1528639636: /*patternCodeableReference*/ return new Property("pattern[x]", "CodeableReference", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12029 case 1633546010: /*patternCoding*/ return new Property("pattern[x]", "Coding", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12030 case 312818944: /*patternContactPoint*/ return new Property("pattern[x]", "ContactPoint", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12031 case -224383137: /*patternCount*/ return new Property("pattern[x]", "Count", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12032 case -968340571: /*patternDistance*/ return new Property("pattern[x]", "Distance", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12033 case 1046154564: /*patternDuration*/ return new Property("pattern[x]", "Duration", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12034 case -717740120: /*patternHumanName*/ return new Property("pattern[x]", "HumanName", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12035 case 1777221721: /*patternIdentifier*/ return new Property("pattern[x]", "Identifier", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12036 case -215154928: /*patternMoney*/ return new Property("pattern[x]", "Money", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12037 case 1996906865: /*patternPeriod*/ return new Property("pattern[x]", "Period", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12038 case 1753162811: /*patternQuantity*/ return new Property("pattern[x]", "Quantity", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12039 case -210954355: /*patternRange*/ return new Property("pattern[x]", "Range", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12040 case -210948517: /*patternRatio*/ return new Property("pattern[x]", "Ratio", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12041 case 1201265570: /*patternRatioRange*/ return new Property("pattern[x]", "RatioRange", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12042 case -1231260261: /*patternReference*/ return new Property("pattern[x]", "Reference", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12043 case -1952450284: /*patternSampledData*/ return new Property("pattern[x]", "SampledData", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12044 case 767479560: /*patternSignature*/ return new Property("pattern[x]", "Signature", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12045 case 2114968570: /*patternTiming*/ return new Property("pattern[x]", "Timing", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12046 case 754982625: /*patternContactDetail*/ return new Property("pattern[x]", "ContactDetail", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12047 case 385040521: /*patternDataRequirement*/ return new Property("pattern[x]", "DataRequirement", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12048 case 1600202312: /*patternExpression*/ return new Property("pattern[x]", "Expression", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12049 case 318609452: /*patternParameterDefinition*/ return new Property("pattern[x]", "ParameterDefinition", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12050 case 422700397: /*patternRelatedArtifact*/ return new Property("pattern[x]", "RelatedArtifact", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12051 case -1531541637: /*patternTriggerDefinition*/ return new Property("pattern[x]", "TriggerDefinition", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12052 case -44085122: /*patternUsageContext*/ return new Property("pattern[x]", "UsageContext", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12053 case 1046445323: /*patternAvailability*/ return new Property("pattern[x]", "Availability", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12054 case 2042074664: /*patternExtendedContactDetail*/ return new Property("pattern[x]", "ExtendedContactDetail", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12055 case 1662614119: /*patternDosage*/ return new Property("pattern[x]", "Dosage", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12056 case -1669517899: /*patternMeta*/ return new Property("pattern[x]", "Meta", "Specifies a value that each occurrence of the element in the instance SHALL follow - that is, any value in the pattern must be found in the instance, if the element has a value. Other additional values may be found too. This is effectively constraint by example. \n\nWhen pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly.\n\nWhen an element within a pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] must (recursively) match at least one element from the instance array.\n\nWhen pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e.,\n\n1. If primitive: it must match exactly the pattern value\n2. If a complex object: it must match (recursively) the pattern value\n3. If an array: it must match (recursively) the pattern value\n\nIf a pattern[x] is declared on a repeating element, the pattern applies to all repetitions. If the desire is for a pattern to apply to only one element or a subset of elements, slicing must be used. See [Examples of Patterns](elementdefinition-examples.html#pattern-examples) for examples of pattern usage and the effect it will have.", 0, 1, pattern); 12057 case -1322970774: /*example*/ return new Property("example", "", "A sample value for this element demonstrating the type of information that would typically be found in the element.", 0, java.lang.Integer.MAX_VALUE, example); 12058 case -55301663: /*minValue[x]*/ return new Property("minValue[x]", "date|dateTime|instant|time|decimal|integer|integer64|positiveInt|unsignedInt|Quantity", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12059 case -1376969153: /*minValue*/ return new Property("minValue[x]", "date|dateTime|instant|time|decimal|integer|integer64|positiveInt|unsignedInt|Quantity", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12060 case -1715058035: /*minValueDate*/ return new Property("minValue[x]", "date", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12061 case 1635517178: /*minValueDateTime*/ return new Property("minValue[x]", "dateTime", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12062 case 151382690: /*minValueInstant*/ return new Property("minValue[x]", "instant", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12063 case -1714573908: /*minValueTime*/ return new Property("minValue[x]", "time", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12064 case -263923694: /*minValueDecimal*/ return new Property("minValue[x]", "decimal", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12065 case 151864831: /*minValueInteger*/ return new Property("minValue[x]", "integer", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12066 case -86783747: /*minValueInteger64*/ return new Property("minValue[x]", "integer64", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12067 case 1570935671: /*minValuePositiveInt*/ return new Property("minValue[x]", "positiveInt", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12068 case -1447570181: /*minValueUnsignedInt*/ return new Property("minValue[x]", "unsignedInt", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12069 case -1442236438: /*minValueQuantity*/ return new Property("minValue[x]", "Quantity", "The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, minValue); 12070 case 622130931: /*maxValue[x]*/ return new Property("maxValue[x]", "date|dateTime|instant|time|decimal|integer|integer64|positiveInt|unsignedInt|Quantity", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12071 case 399227501: /*maxValue*/ return new Property("maxValue[x]", "date|dateTime|instant|time|decimal|integer|integer64|positiveInt|unsignedInt|Quantity", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12072 case 2105483195: /*maxValueDate*/ return new Property("maxValue[x]", "date", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12073 case 1699385640: /*maxValueDateTime*/ return new Property("maxValue[x]", "dateTime", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12074 case 1261821620: /*maxValueInstant*/ return new Property("maxValue[x]", "instant", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12075 case 2105967322: /*maxValueTime*/ return new Property("maxValue[x]", "time", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12076 case 846515236: /*maxValueDecimal*/ return new Property("maxValue[x]", "decimal", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12077 case 1262303761: /*maxValueInteger*/ return new Property("maxValue[x]", "integer", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12078 case 1893138575: /*maxValueInteger64*/ return new Property("maxValue[x]", "integer64", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12079 case 1605774985: /*maxValuePositiveInt*/ return new Property("maxValue[x]", "positiveInt", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12080 case -1412730867: /*maxValueUnsignedInt*/ return new Property("maxValue[x]", "unsignedInt", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12081 case -1378367976: /*maxValueQuantity*/ return new Property("maxValue[x]", "Quantity", "The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.", 0, 1, maxValue); 12082 case -791400086: /*maxLength*/ return new Property("maxLength", "integer", "Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element. ```maxLength``` SHOULD only be used on primitive data types that have a string representation (see [Datatype characteristics](extension-structuredefinition-type-characteristics.html)).", 0, 1, maxLength); 12083 case -861311717: /*condition*/ return new Property("condition", "id", "A reference to an invariant that may make additional statements about the cardinality or value in the instance.", 0, java.lang.Integer.MAX_VALUE, condition); 12084 case -190376483: /*constraint*/ return new Property("constraint", "", "Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance.", 0, java.lang.Integer.MAX_VALUE, constraint); 12085 case -923694880: /*mustHaveValue*/ return new Property("mustHaveValue", "boolean", "Specifies for a primitive data type that the value of the data type cannot be replaced by an extension.", 0, 1, mustHaveValue); 12086 case -2124672393: /*valueAlternatives*/ return new Property("valueAlternatives", "canonical(StructureDefinition)", "Specifies a list of extensions that can appear in place of a primitive value.", 0, java.lang.Integer.MAX_VALUE, valueAlternatives); 12087 case -1402857082: /*mustSupport*/ return new Property("mustSupport", "boolean", "If true, implementations that produce or consume resources SHALL provide \"support\" for the element in some meaningful way. Note that this is being phased out and replaced by obligations (see below). If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation.", 0, 1, mustSupport); 12088 case -389535362: /*obligation*/ return new Property("obligation", "", "Documents obligations that apply to applications implementing this element. The obligations relate to application behaviour, not the content of the element itself in the resource instances that contain this element.", 0, java.lang.Integer.MAX_VALUE, obligation); 12089 case -1408783839: /*isModifier*/ return new Property("isModifier", "boolean", "If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system.", 0, 1, isModifier); 12090 case -1854387259: /*isModifierReason*/ return new Property("isModifierReason", "string", "Explains how that element affects the interpretation of the resource or element that contains it.", 0, 1, isModifierReason); 12091 case 1857548060: /*isSummary*/ return new Property("isSummary", "boolean", "Whether the element should be included if a client requests a search with the parameter _summary=true.", 0, 1, isSummary); 12092 case -108220795: /*binding*/ return new Property("binding", "", "Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri).", 0, 1, binding); 12093 case 837556430: /*mapping*/ return new Property("mapping", "", "Identifies a concept from an external specification that roughly corresponds to this element.", 0, java.lang.Integer.MAX_VALUE, mapping); 12094 default: return super.getNamedProperty(_hash, _name, _checkValid); 12095 } 12096 12097 } 12098 12099 @Override 12100 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 12101 switch (hash) { 12102 case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType 12103 case -671065907: /*representation*/ return this.representation == null ? new Base[0] : this.representation.toArray(new Base[this.representation.size()]); // Enumeration<PropertyRepresentation> 12104 case -825289923: /*sliceName*/ return this.sliceName == null ? new Base[0] : new Base[] {this.sliceName}; // StringType 12105 case 333040519: /*sliceIsConstraining*/ return this.sliceIsConstraining == null ? new Base[0] : new Base[] {this.sliceIsConstraining}; // BooleanType 12106 case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType 12107 case 3059181: /*code*/ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // Coding 12108 case -2119287345: /*slicing*/ return this.slicing == null ? new Base[0] : new Base[] {this.slicing}; // ElementDefinitionSlicingComponent 12109 case 109413500: /*short*/ return this.short_ == null ? new Base[0] : new Base[] {this.short_}; // StringType 12110 case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // MarkdownType 12111 case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // MarkdownType 12112 case -1619874672: /*requirements*/ return this.requirements == null ? new Base[0] : new Base[] {this.requirements}; // MarkdownType 12113 case 92902992: /*alias*/ return this.alias == null ? new Base[0] : this.alias.toArray(new Base[this.alias.size()]); // StringType 12114 case 108114: /*min*/ return this.min == null ? new Base[0] : new Base[] {this.min}; // UnsignedIntType 12115 case 107876: /*max*/ return this.max == null ? new Base[0] : new Base[] {this.max}; // StringType 12116 case 3016401: /*base*/ return this.base == null ? new Base[0] : new Base[] {this.base}; // ElementDefinitionBaseComponent 12117 case 1193747154: /*contentReference*/ return this.contentReference == null ? new Base[0] : new Base[] {this.contentReference}; // UriType 12118 case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // TypeRefComponent 12119 case -659125328: /*defaultValue*/ return this.defaultValue == null ? new Base[0] : new Base[] {this.defaultValue}; // DataType 12120 case 1857257103: /*meaningWhenMissing*/ return this.meaningWhenMissing == null ? new Base[0] : new Base[] {this.meaningWhenMissing}; // MarkdownType 12121 case 1828196047: /*orderMeaning*/ return this.orderMeaning == null ? new Base[0] : new Base[] {this.orderMeaning}; // StringType 12122 case 97445748: /*fixed*/ return this.fixed == null ? new Base[0] : new Base[] {this.fixed}; // DataType 12123 case -791090288: /*pattern*/ return this.pattern == null ? new Base[0] : new Base[] {this.pattern}; // DataType 12124 case -1322970774: /*example*/ return this.example == null ? new Base[0] : this.example.toArray(new Base[this.example.size()]); // ElementDefinitionExampleComponent 12125 case -1376969153: /*minValue*/ return this.minValue == null ? new Base[0] : new Base[] {this.minValue}; // DataType 12126 case 399227501: /*maxValue*/ return this.maxValue == null ? new Base[0] : new Base[] {this.maxValue}; // DataType 12127 case -791400086: /*maxLength*/ return this.maxLength == null ? new Base[0] : new Base[] {this.maxLength}; // IntegerType 12128 case -861311717: /*condition*/ return this.condition == null ? new Base[0] : this.condition.toArray(new Base[this.condition.size()]); // IdType 12129 case -190376483: /*constraint*/ return this.constraint == null ? new Base[0] : this.constraint.toArray(new Base[this.constraint.size()]); // ElementDefinitionConstraintComponent 12130 case -923694880: /*mustHaveValue*/ return this.mustHaveValue == null ? new Base[0] : new Base[] {this.mustHaveValue}; // BooleanType 12131 case -2124672393: /*valueAlternatives*/ return this.valueAlternatives == null ? new Base[0] : this.valueAlternatives.toArray(new Base[this.valueAlternatives.size()]); // CanonicalType 12132 case -1402857082: /*mustSupport*/ return this.mustSupport == null ? new Base[0] : new Base[] {this.mustSupport}; // BooleanType 12133 case -389535362: /*obligation*/ return this.obligation == null ? new Base[0] : this.obligation.toArray(new Base[this.obligation.size()]); // ElementDefinitionObligationComponent 12134 case -1408783839: /*isModifier*/ return this.isModifier == null ? new Base[0] : new Base[] {this.isModifier}; // BooleanType 12135 case -1854387259: /*isModifierReason*/ return this.isModifierReason == null ? new Base[0] : new Base[] {this.isModifierReason}; // StringType 12136 case 1857548060: /*isSummary*/ return this.isSummary == null ? new Base[0] : new Base[] {this.isSummary}; // BooleanType 12137 case -108220795: /*binding*/ return this.binding == null ? new Base[0] : new Base[] {this.binding}; // ElementDefinitionBindingComponent 12138 case 837556430: /*mapping*/ return this.mapping == null ? new Base[0] : this.mapping.toArray(new Base[this.mapping.size()]); // ElementDefinitionMappingComponent 12139 default: return super.getProperty(hash, name, checkValid); 12140 } 12141 12142 } 12143 12144 @Override 12145 public Base setProperty(int hash, String name, Base value) throws FHIRException { 12146 switch (hash) { 12147 case 3433509: // path 12148 this.path = TypeConvertor.castToString(value); // StringType 12149 return value; 12150 case -671065907: // representation 12151 value = new PropertyRepresentationEnumFactory().fromType(TypeConvertor.castToCode(value)); 12152 this.getRepresentation().add((Enumeration) value); // Enumeration<PropertyRepresentation> 12153 return value; 12154 case -825289923: // sliceName 12155 this.sliceName = TypeConvertor.castToString(value); // StringType 12156 return value; 12157 case 333040519: // sliceIsConstraining 12158 this.sliceIsConstraining = TypeConvertor.castToBoolean(value); // BooleanType 12159 return value; 12160 case 102727412: // label 12161 this.label = TypeConvertor.castToString(value); // StringType 12162 return value; 12163 case 3059181: // code 12164 this.getCode().add(TypeConvertor.castToCoding(value)); // Coding 12165 return value; 12166 case -2119287345: // slicing 12167 this.slicing = (ElementDefinitionSlicingComponent) value; // ElementDefinitionSlicingComponent 12168 return value; 12169 case 109413500: // short 12170 this.short_ = TypeConvertor.castToString(value); // StringType 12171 return value; 12172 case -1014418093: // definition 12173 this.definition = TypeConvertor.castToMarkdown(value); // MarkdownType 12174 return value; 12175 case 950398559: // comment 12176 this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType 12177 return value; 12178 case -1619874672: // requirements 12179 this.requirements = TypeConvertor.castToMarkdown(value); // MarkdownType 12180 return value; 12181 case 92902992: // alias 12182 this.getAlias().add(TypeConvertor.castToString(value)); // StringType 12183 return value; 12184 case 108114: // min 12185 this.min = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType 12186 return value; 12187 case 107876: // max 12188 this.max = TypeConvertor.castToString(value); // StringType 12189 return value; 12190 case 3016401: // base 12191 this.base = (ElementDefinitionBaseComponent) value; // ElementDefinitionBaseComponent 12192 return value; 12193 case 1193747154: // contentReference 12194 this.contentReference = TypeConvertor.castToUri(value); // UriType 12195 return value; 12196 case 3575610: // type 12197 this.getType().add((TypeRefComponent) value); // TypeRefComponent 12198 return value; 12199 case -659125328: // defaultValue 12200 this.defaultValue = TypeConvertor.castToType(value); // DataType 12201 return value; 12202 case 1857257103: // meaningWhenMissing 12203 this.meaningWhenMissing = TypeConvertor.castToMarkdown(value); // MarkdownType 12204 return value; 12205 case 1828196047: // orderMeaning 12206 this.orderMeaning = TypeConvertor.castToString(value); // StringType 12207 return value; 12208 case 97445748: // fixed 12209 this.fixed = TypeConvertor.castToType(value); // DataType 12210 return value; 12211 case -791090288: // pattern 12212 this.pattern = TypeConvertor.castToType(value); // DataType 12213 return value; 12214 case -1322970774: // example 12215 this.getExample().add((ElementDefinitionExampleComponent) value); // ElementDefinitionExampleComponent 12216 return value; 12217 case -1376969153: // minValue 12218 this.minValue = TypeConvertor.castToType(value); // DataType 12219 return value; 12220 case 399227501: // maxValue 12221 this.maxValue = TypeConvertor.castToType(value); // DataType 12222 return value; 12223 case -791400086: // maxLength 12224 this.maxLength = TypeConvertor.castToInteger(value); // IntegerType 12225 return value; 12226 case -861311717: // condition 12227 this.getCondition().add(TypeConvertor.castToId(value)); // IdType 12228 return value; 12229 case -190376483: // constraint 12230 this.getConstraint().add((ElementDefinitionConstraintComponent) value); // ElementDefinitionConstraintComponent 12231 return value; 12232 case -923694880: // mustHaveValue 12233 this.mustHaveValue = TypeConvertor.castToBoolean(value); // BooleanType 12234 return value; 12235 case -2124672393: // valueAlternatives 12236 this.getValueAlternatives().add(TypeConvertor.castToCanonical(value)); // CanonicalType 12237 return value; 12238 case -1402857082: // mustSupport 12239 this.mustSupport = TypeConvertor.castToBoolean(value); // BooleanType 12240 return value; 12241 case -389535362: // obligation 12242 this.getObligation().add((ElementDefinitionObligationComponent) value); // ElementDefinitionObligationComponent 12243 return value; 12244 case -1408783839: // isModifier 12245 this.isModifier = TypeConvertor.castToBoolean(value); // BooleanType 12246 return value; 12247 case -1854387259: // isModifierReason 12248 this.isModifierReason = TypeConvertor.castToString(value); // StringType 12249 return value; 12250 case 1857548060: // isSummary 12251 this.isSummary = TypeConvertor.castToBoolean(value); // BooleanType 12252 return value; 12253 case -108220795: // binding 12254 this.binding = (ElementDefinitionBindingComponent) value; // ElementDefinitionBindingComponent 12255 return value; 12256 case 837556430: // mapping 12257 this.getMapping().add((ElementDefinitionMappingComponent) value); // ElementDefinitionMappingComponent 12258 return value; 12259 default: return super.setProperty(hash, name, value); 12260 } 12261 12262 } 12263 12264 @Override 12265 public Base setProperty(String name, Base value) throws FHIRException { 12266 if (name.equals("path")) { 12267 this.path = TypeConvertor.castToString(value); // StringType 12268 } else if (name.equals("representation")) { 12269 value = new PropertyRepresentationEnumFactory().fromType(TypeConvertor.castToCode(value)); 12270 this.getRepresentation().add((Enumeration) value); 12271 } else if (name.equals("sliceName")) { 12272 this.sliceName = TypeConvertor.castToString(value); // StringType 12273 } else if (name.equals("sliceIsConstraining")) { 12274 this.sliceIsConstraining = TypeConvertor.castToBoolean(value); // BooleanType 12275 } else if (name.equals("label")) { 12276 this.label = TypeConvertor.castToString(value); // StringType 12277 } else if (name.equals("code")) { 12278 this.getCode().add(TypeConvertor.castToCoding(value)); 12279 } else if (name.equals("slicing")) { 12280 this.slicing = (ElementDefinitionSlicingComponent) value; // ElementDefinitionSlicingComponent 12281 } else if (name.equals("short")) { 12282 this.short_ = TypeConvertor.castToString(value); // StringType 12283 } else if (name.equals("definition")) { 12284 this.definition = TypeConvertor.castToMarkdown(value); // MarkdownType 12285 } else if (name.equals("comment")) { 12286 this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType 12287 } else if (name.equals("requirements")) { 12288 this.requirements = TypeConvertor.castToMarkdown(value); // MarkdownType 12289 } else if (name.equals("alias")) { 12290 this.getAlias().add(TypeConvertor.castToString(value)); 12291 } else if (name.equals("min")) { 12292 this.min = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType 12293 } else if (name.equals("max")) { 12294 this.max = TypeConvertor.castToString(value); // StringType 12295 } else if (name.equals("base")) { 12296 this.base = (ElementDefinitionBaseComponent) value; // ElementDefinitionBaseComponent 12297 } else if (name.equals("contentReference")) { 12298 this.contentReference = TypeConvertor.castToUri(value); // UriType 12299 } else if (name.equals("type")) { 12300 this.getType().add((TypeRefComponent) value); 12301 } else if (name.equals("defaultValue[x]")) { 12302 this.defaultValue = TypeConvertor.castToType(value); // DataType 12303 } else if (name.equals("meaningWhenMissing")) { 12304 this.meaningWhenMissing = TypeConvertor.castToMarkdown(value); // MarkdownType 12305 } else if (name.equals("orderMeaning")) { 12306 this.orderMeaning = TypeConvertor.castToString(value); // StringType 12307 } else if (name.equals("fixed[x]")) { 12308 this.fixed = TypeConvertor.castToType(value); // DataType 12309 } else if (name.equals("pattern[x]")) { 12310 this.pattern = TypeConvertor.castToType(value); // DataType 12311 } else if (name.equals("example")) { 12312 this.getExample().add((ElementDefinitionExampleComponent) value); 12313 } else if (name.equals("minValue[x]")) { 12314 this.minValue = TypeConvertor.castToType(value); // DataType 12315 } else if (name.equals("maxValue[x]")) { 12316 this.maxValue = TypeConvertor.castToType(value); // DataType 12317 } else if (name.equals("maxLength")) { 12318 this.maxLength = TypeConvertor.castToInteger(value); // IntegerType 12319 } else if (name.equals("condition")) { 12320 this.getCondition().add(TypeConvertor.castToId(value)); 12321 } else if (name.equals("constraint")) { 12322 this.getConstraint().add((ElementDefinitionConstraintComponent) value); 12323 } else if (name.equals("mustHaveValue")) { 12324 this.mustHaveValue = TypeConvertor.castToBoolean(value); // BooleanType 12325 } else if (name.equals("valueAlternatives")) { 12326 this.getValueAlternatives().add(TypeConvertor.castToCanonical(value)); 12327 } else if (name.equals("mustSupport")) { 12328 this.mustSupport = TypeConvertor.castToBoolean(value); // BooleanType 12329 } else if (name.equals("obligation")) { 12330 this.getObligation().add((ElementDefinitionObligationComponent) value); 12331 } else if (name.equals("isModifier")) { 12332 this.isModifier = TypeConvertor.castToBoolean(value); // BooleanType 12333 } else if (name.equals("isModifierReason")) { 12334 this.isModifierReason = TypeConvertor.castToString(value); // StringType 12335 } else if (name.equals("isSummary")) { 12336 this.isSummary = TypeConvertor.castToBoolean(value); // BooleanType 12337 } else if (name.equals("binding")) { 12338 this.binding = (ElementDefinitionBindingComponent) value; // ElementDefinitionBindingComponent 12339 } else if (name.equals("mapping")) { 12340 this.getMapping().add((ElementDefinitionMappingComponent) value); 12341 } else 12342 return super.setProperty(name, value); 12343 return value; 12344 } 12345 12346 @Override 12347 public Base makeProperty(int hash, String name) throws FHIRException { 12348 switch (hash) { 12349 case 3433509: return getPathElement(); 12350 case -671065907: return addRepresentationElement(); 12351 case -825289923: return getSliceNameElement(); 12352 case 333040519: return getSliceIsConstrainingElement(); 12353 case 102727412: return getLabelElement(); 12354 case 3059181: return addCode(); 12355 case -2119287345: return getSlicing(); 12356 case 109413500: return getShortElement(); 12357 case -1014418093: return getDefinitionElement(); 12358 case 950398559: return getCommentElement(); 12359 case -1619874672: return getRequirementsElement(); 12360 case 92902992: return addAliasElement(); 12361 case 108114: return getMinElement(); 12362 case 107876: return getMaxElement(); 12363 case 3016401: return getBase(); 12364 case 1193747154: return getContentReferenceElement(); 12365 case 3575610: return addType(); 12366 case 587922128: return getDefaultValue(); 12367 case -659125328: return getDefaultValue(); 12368 case 1857257103: return getMeaningWhenMissingElement(); 12369 case 1828196047: return getOrderMeaningElement(); 12370 case -391522164: return getFixed(); 12371 case 97445748: return getFixed(); 12372 case -885125392: return getPattern(); 12373 case -791090288: return getPattern(); 12374 case -1322970774: return addExample(); 12375 case -55301663: return getMinValue(); 12376 case -1376969153: return getMinValue(); 12377 case 622130931: return getMaxValue(); 12378 case 399227501: return getMaxValue(); 12379 case -791400086: return getMaxLengthElement(); 12380 case -861311717: return addConditionElement(); 12381 case -190376483: return addConstraint(); 12382 case -923694880: return getMustHaveValueElement(); 12383 case -2124672393: return addValueAlternativesElement(); 12384 case -1402857082: return getMustSupportElement(); 12385 case -389535362: return addObligation(); 12386 case -1408783839: return getIsModifierElement(); 12387 case -1854387259: return getIsModifierReasonElement(); 12388 case 1857548060: return getIsSummaryElement(); 12389 case -108220795: return getBinding(); 12390 case 837556430: return addMapping(); 12391 default: return super.makeProperty(hash, name); 12392 } 12393 12394 } 12395 12396 @Override 12397 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 12398 switch (hash) { 12399 case 3433509: /*path*/ return new String[] {"string"}; 12400 case -671065907: /*representation*/ return new String[] {"code"}; 12401 case -825289923: /*sliceName*/ return new String[] {"string"}; 12402 case 333040519: /*sliceIsConstraining*/ return new String[] {"boolean"}; 12403 case 102727412: /*label*/ return new String[] {"string"}; 12404 case 3059181: /*code*/ return new String[] {"Coding"}; 12405 case -2119287345: /*slicing*/ return new String[] {}; 12406 case 109413500: /*short*/ return new String[] {"string"}; 12407 case -1014418093: /*definition*/ return new String[] {"markdown"}; 12408 case 950398559: /*comment*/ return new String[] {"markdown"}; 12409 case -1619874672: /*requirements*/ return new String[] {"markdown"}; 12410 case 92902992: /*alias*/ return new String[] {"string"}; 12411 case 108114: /*min*/ return new String[] {"unsignedInt"}; 12412 case 107876: /*max*/ return new String[] {"string"}; 12413 case 3016401: /*base*/ return new String[] {}; 12414 case 1193747154: /*contentReference*/ return new String[] {"uri"}; 12415 case 3575610: /*type*/ return new String[] {}; 12416 case -659125328: /*defaultValue*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "integer64", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "CodeableReference", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "RatioRange", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Availability", "ExtendedContactDetail", "Dosage", "Meta"}; 12417 case 1857257103: /*meaningWhenMissing*/ return new String[] {"markdown"}; 12418 case 1828196047: /*orderMeaning*/ return new String[] {"string"}; 12419 case 97445748: /*fixed*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "integer64", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "CodeableReference", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "RatioRange", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Availability", "ExtendedContactDetail", "Dosage", "Meta"}; 12420 case -791090288: /*pattern*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "integer64", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "CodeableReference", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "RatioRange", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Availability", "ExtendedContactDetail", "Dosage", "Meta"}; 12421 case -1322970774: /*example*/ return new String[] {}; 12422 case -1376969153: /*minValue*/ return new String[] {"date", "dateTime", "instant", "time", "decimal", "integer", "integer64", "positiveInt", "unsignedInt", "Quantity"}; 12423 case 399227501: /*maxValue*/ return new String[] {"date", "dateTime", "instant", "time", "decimal", "integer", "integer64", "positiveInt", "unsignedInt", "Quantity"}; 12424 case -791400086: /*maxLength*/ return new String[] {"integer"}; 12425 case -861311717: /*condition*/ return new String[] {"id"}; 12426 case -190376483: /*constraint*/ return new String[] {}; 12427 case -923694880: /*mustHaveValue*/ return new String[] {"boolean"}; 12428 case -2124672393: /*valueAlternatives*/ return new String[] {"canonical"}; 12429 case -1402857082: /*mustSupport*/ return new String[] {"boolean"}; 12430 case -389535362: /*obligation*/ return new String[] {}; 12431 case -1408783839: /*isModifier*/ return new String[] {"boolean"}; 12432 case -1854387259: /*isModifierReason*/ return new String[] {"string"}; 12433 case 1857548060: /*isSummary*/ return new String[] {"boolean"}; 12434 case -108220795: /*binding*/ return new String[] {}; 12435 case 837556430: /*mapping*/ return new String[] {}; 12436 default: return super.getTypesForProperty(hash, name); 12437 } 12438 12439 } 12440 12441 @Override 12442 public Base addChild(String name) throws FHIRException { 12443 if (name.equals("path")) { 12444 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.path"); 12445 } 12446 else if (name.equals("representation")) { 12447 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.representation"); 12448 } 12449 else if (name.equals("sliceName")) { 12450 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.sliceName"); 12451 } 12452 else if (name.equals("sliceIsConstraining")) { 12453 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.sliceIsConstraining"); 12454 } 12455 else if (name.equals("label")) { 12456 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.label"); 12457 } 12458 else if (name.equals("code")) { 12459 return addCode(); 12460 } 12461 else if (name.equals("slicing")) { 12462 this.slicing = new ElementDefinitionSlicingComponent(); 12463 return this.slicing; 12464 } 12465 else if (name.equals("short")) { 12466 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.short"); 12467 } 12468 else if (name.equals("definition")) { 12469 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.definition"); 12470 } 12471 else if (name.equals("comment")) { 12472 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.comment"); 12473 } 12474 else if (name.equals("requirements")) { 12475 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.requirements"); 12476 } 12477 else if (name.equals("alias")) { 12478 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.alias"); 12479 } 12480 else if (name.equals("min")) { 12481 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.min"); 12482 } 12483 else if (name.equals("max")) { 12484 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.max"); 12485 } 12486 else if (name.equals("base")) { 12487 this.base = new ElementDefinitionBaseComponent(); 12488 return this.base; 12489 } 12490 else if (name.equals("contentReference")) { 12491 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.contentReference"); 12492 } 12493 else if (name.equals("type")) { 12494 return addType(); 12495 } 12496 else if (name.equals("defaultValueBase64Binary")) { 12497 this.defaultValue = new Base64BinaryType(); 12498 return this.defaultValue; 12499 } 12500 else if (name.equals("defaultValueBoolean")) { 12501 this.defaultValue = new BooleanType(); 12502 return this.defaultValue; 12503 } 12504 else if (name.equals("defaultValueCanonical")) { 12505 this.defaultValue = new CanonicalType(); 12506 return this.defaultValue; 12507 } 12508 else if (name.equals("defaultValueCode")) { 12509 this.defaultValue = new CodeType(); 12510 return this.defaultValue; 12511 } 12512 else if (name.equals("defaultValueDate")) { 12513 this.defaultValue = new DateType(); 12514 return this.defaultValue; 12515 } 12516 else if (name.equals("defaultValueDateTime")) { 12517 this.defaultValue = new DateTimeType(); 12518 return this.defaultValue; 12519 } 12520 else if (name.equals("defaultValueDecimal")) { 12521 this.defaultValue = new DecimalType(); 12522 return this.defaultValue; 12523 } 12524 else if (name.equals("defaultValueId")) { 12525 this.defaultValue = new IdType(); 12526 return this.defaultValue; 12527 } 12528 else if (name.equals("defaultValueInstant")) { 12529 this.defaultValue = new InstantType(); 12530 return this.defaultValue; 12531 } 12532 else if (name.equals("defaultValueInteger")) { 12533 this.defaultValue = new IntegerType(); 12534 return this.defaultValue; 12535 } 12536 else if (name.equals("defaultValueInteger64")) { 12537 this.defaultValue = new Integer64Type(); 12538 return this.defaultValue; 12539 } 12540 else if (name.equals("defaultValueMarkdown")) { 12541 this.defaultValue = new MarkdownType(); 12542 return this.defaultValue; 12543 } 12544 else if (name.equals("defaultValueOid")) { 12545 this.defaultValue = new OidType(); 12546 return this.defaultValue; 12547 } 12548 else if (name.equals("defaultValuePositiveInt")) { 12549 this.defaultValue = new PositiveIntType(); 12550 return this.defaultValue; 12551 } 12552 else if (name.equals("defaultValueString")) { 12553 this.defaultValue = new StringType(); 12554 return this.defaultValue; 12555 } 12556 else if (name.equals("defaultValueTime")) { 12557 this.defaultValue = new TimeType(); 12558 return this.defaultValue; 12559 } 12560 else if (name.equals("defaultValueUnsignedInt")) { 12561 this.defaultValue = new UnsignedIntType(); 12562 return this.defaultValue; 12563 } 12564 else if (name.equals("defaultValueUri")) { 12565 this.defaultValue = new UriType(); 12566 return this.defaultValue; 12567 } 12568 else if (name.equals("defaultValueUrl")) { 12569 this.defaultValue = new UrlType(); 12570 return this.defaultValue; 12571 } 12572 else if (name.equals("defaultValueUuid")) { 12573 this.defaultValue = new UuidType(); 12574 return this.defaultValue; 12575 } 12576 else if (name.equals("defaultValueAddress")) { 12577 this.defaultValue = new Address(); 12578 return this.defaultValue; 12579 } 12580 else if (name.equals("defaultValueAge")) { 12581 this.defaultValue = new Age(); 12582 return this.defaultValue; 12583 } 12584 else if (name.equals("defaultValueAnnotation")) { 12585 this.defaultValue = new Annotation(); 12586 return this.defaultValue; 12587 } 12588 else if (name.equals("defaultValueAttachment")) { 12589 this.defaultValue = new Attachment(); 12590 return this.defaultValue; 12591 } 12592 else if (name.equals("defaultValueCodeableConcept")) { 12593 this.defaultValue = new CodeableConcept(); 12594 return this.defaultValue; 12595 } 12596 else if (name.equals("defaultValueCodeableReference")) { 12597 this.defaultValue = new CodeableReference(); 12598 return this.defaultValue; 12599 } 12600 else if (name.equals("defaultValueCoding")) { 12601 this.defaultValue = new Coding(); 12602 return this.defaultValue; 12603 } 12604 else if (name.equals("defaultValueContactPoint")) { 12605 this.defaultValue = new ContactPoint(); 12606 return this.defaultValue; 12607 } 12608 else if (name.equals("defaultValueCount")) { 12609 this.defaultValue = new Count(); 12610 return this.defaultValue; 12611 } 12612 else if (name.equals("defaultValueDistance")) { 12613 this.defaultValue = new Distance(); 12614 return this.defaultValue; 12615 } 12616 else if (name.equals("defaultValueDuration")) { 12617 this.defaultValue = new Duration(); 12618 return this.defaultValue; 12619 } 12620 else if (name.equals("defaultValueHumanName")) { 12621 this.defaultValue = new HumanName(); 12622 return this.defaultValue; 12623 } 12624 else if (name.equals("defaultValueIdentifier")) { 12625 this.defaultValue = new Identifier(); 12626 return this.defaultValue; 12627 } 12628 else if (name.equals("defaultValueMoney")) { 12629 this.defaultValue = new Money(); 12630 return this.defaultValue; 12631 } 12632 else if (name.equals("defaultValuePeriod")) { 12633 this.defaultValue = new Period(); 12634 return this.defaultValue; 12635 } 12636 else if (name.equals("defaultValueQuantity")) { 12637 this.defaultValue = new Quantity(); 12638 return this.defaultValue; 12639 } 12640 else if (name.equals("defaultValueRange")) { 12641 this.defaultValue = new Range(); 12642 return this.defaultValue; 12643 } 12644 else if (name.equals("defaultValueRatio")) { 12645 this.defaultValue = new Ratio(); 12646 return this.defaultValue; 12647 } 12648 else if (name.equals("defaultValueRatioRange")) { 12649 this.defaultValue = new RatioRange(); 12650 return this.defaultValue; 12651 } 12652 else if (name.equals("defaultValueReference")) { 12653 this.defaultValue = new Reference(); 12654 return this.defaultValue; 12655 } 12656 else if (name.equals("defaultValueSampledData")) { 12657 this.defaultValue = new SampledData(); 12658 return this.defaultValue; 12659 } 12660 else if (name.equals("defaultValueSignature")) { 12661 this.defaultValue = new Signature(); 12662 return this.defaultValue; 12663 } 12664 else if (name.equals("defaultValueTiming")) { 12665 this.defaultValue = new Timing(); 12666 return this.defaultValue; 12667 } 12668 else if (name.equals("defaultValueContactDetail")) { 12669 this.defaultValue = new ContactDetail(); 12670 return this.defaultValue; 12671 } 12672 else if (name.equals("defaultValueDataRequirement")) { 12673 this.defaultValue = new DataRequirement(); 12674 return this.defaultValue; 12675 } 12676 else if (name.equals("defaultValueExpression")) { 12677 this.defaultValue = new Expression(); 12678 return this.defaultValue; 12679 } 12680 else if (name.equals("defaultValueParameterDefinition")) { 12681 this.defaultValue = new ParameterDefinition(); 12682 return this.defaultValue; 12683 } 12684 else if (name.equals("defaultValueRelatedArtifact")) { 12685 this.defaultValue = new RelatedArtifact(); 12686 return this.defaultValue; 12687 } 12688 else if (name.equals("defaultValueTriggerDefinition")) { 12689 this.defaultValue = new TriggerDefinition(); 12690 return this.defaultValue; 12691 } 12692 else if (name.equals("defaultValueUsageContext")) { 12693 this.defaultValue = new UsageContext(); 12694 return this.defaultValue; 12695 } 12696 else if (name.equals("defaultValueAvailability")) { 12697 this.defaultValue = new Availability(); 12698 return this.defaultValue; 12699 } 12700 else if (name.equals("defaultValueExtendedContactDetail")) { 12701 this.defaultValue = new ExtendedContactDetail(); 12702 return this.defaultValue; 12703 } 12704 else if (name.equals("defaultValueDosage")) { 12705 this.defaultValue = new Dosage(); 12706 return this.defaultValue; 12707 } 12708 else if (name.equals("defaultValueMeta")) { 12709 this.defaultValue = new Meta(); 12710 return this.defaultValue; 12711 } 12712 else if (name.equals("meaningWhenMissing")) { 12713 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.meaningWhenMissing"); 12714 } 12715 else if (name.equals("orderMeaning")) { 12716 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.orderMeaning"); 12717 } 12718 else if (name.equals("fixedBase64Binary")) { 12719 this.fixed = new Base64BinaryType(); 12720 return this.fixed; 12721 } 12722 else if (name.equals("fixedBoolean")) { 12723 this.fixed = new BooleanType(); 12724 return this.fixed; 12725 } 12726 else if (name.equals("fixedCanonical")) { 12727 this.fixed = new CanonicalType(); 12728 return this.fixed; 12729 } 12730 else if (name.equals("fixedCode")) { 12731 this.fixed = new CodeType(); 12732 return this.fixed; 12733 } 12734 else if (name.equals("fixedDate")) { 12735 this.fixed = new DateType(); 12736 return this.fixed; 12737 } 12738 else if (name.equals("fixedDateTime")) { 12739 this.fixed = new DateTimeType(); 12740 return this.fixed; 12741 } 12742 else if (name.equals("fixedDecimal")) { 12743 this.fixed = new DecimalType(); 12744 return this.fixed; 12745 } 12746 else if (name.equals("fixedId")) { 12747 this.fixed = new IdType(); 12748 return this.fixed; 12749 } 12750 else if (name.equals("fixedInstant")) { 12751 this.fixed = new InstantType(); 12752 return this.fixed; 12753 } 12754 else if (name.equals("fixedInteger")) { 12755 this.fixed = new IntegerType(); 12756 return this.fixed; 12757 } 12758 else if (name.equals("fixedInteger64")) { 12759 this.fixed = new Integer64Type(); 12760 return this.fixed; 12761 } 12762 else if (name.equals("fixedMarkdown")) { 12763 this.fixed = new MarkdownType(); 12764 return this.fixed; 12765 } 12766 else if (name.equals("fixedOid")) { 12767 this.fixed = new OidType(); 12768 return this.fixed; 12769 } 12770 else if (name.equals("fixedPositiveInt")) { 12771 this.fixed = new PositiveIntType(); 12772 return this.fixed; 12773 } 12774 else if (name.equals("fixedString")) { 12775 this.fixed = new StringType(); 12776 return this.fixed; 12777 } 12778 else if (name.equals("fixedTime")) { 12779 this.fixed = new TimeType(); 12780 return this.fixed; 12781 } 12782 else if (name.equals("fixedUnsignedInt")) { 12783 this.fixed = new UnsignedIntType(); 12784 return this.fixed; 12785 } 12786 else if (name.equals("fixedUri")) { 12787 this.fixed = new UriType(); 12788 return this.fixed; 12789 } 12790 else if (name.equals("fixedUrl")) { 12791 this.fixed = new UrlType(); 12792 return this.fixed; 12793 } 12794 else if (name.equals("fixedUuid")) { 12795 this.fixed = new UuidType(); 12796 return this.fixed; 12797 } 12798 else if (name.equals("fixedAddress")) { 12799 this.fixed = new Address(); 12800 return this.fixed; 12801 } 12802 else if (name.equals("fixedAge")) { 12803 this.fixed = new Age(); 12804 return this.fixed; 12805 } 12806 else if (name.equals("fixedAnnotation")) { 12807 this.fixed = new Annotation(); 12808 return this.fixed; 12809 } 12810 else if (name.equals("fixedAttachment")) { 12811 this.fixed = new Attachment(); 12812 return this.fixed; 12813 } 12814 else if (name.equals("fixedCodeableConcept")) { 12815 this.fixed = new CodeableConcept(); 12816 return this.fixed; 12817 } 12818 else if (name.equals("fixedCodeableReference")) { 12819 this.fixed = new CodeableReference(); 12820 return this.fixed; 12821 } 12822 else if (name.equals("fixedCoding")) { 12823 this.fixed = new Coding(); 12824 return this.fixed; 12825 } 12826 else if (name.equals("fixedContactPoint")) { 12827 this.fixed = new ContactPoint(); 12828 return this.fixed; 12829 } 12830 else if (name.equals("fixedCount")) { 12831 this.fixed = new Count(); 12832 return this.fixed; 12833 } 12834 else if (name.equals("fixedDistance")) { 12835 this.fixed = new Distance(); 12836 return this.fixed; 12837 } 12838 else if (name.equals("fixedDuration")) { 12839 this.fixed = new Duration(); 12840 return this.fixed; 12841 } 12842 else if (name.equals("fixedHumanName")) { 12843 this.fixed = new HumanName(); 12844 return this.fixed; 12845 } 12846 else if (name.equals("fixedIdentifier")) { 12847 this.fixed = new Identifier(); 12848 return this.fixed; 12849 } 12850 else if (name.equals("fixedMoney")) { 12851 this.fixed = new Money(); 12852 return this.fixed; 12853 } 12854 else if (name.equals("fixedPeriod")) { 12855 this.fixed = new Period(); 12856 return this.fixed; 12857 } 12858 else if (name.equals("fixedQuantity")) { 12859 this.fixed = new Quantity(); 12860 return this.fixed; 12861 } 12862 else if (name.equals("fixedRange")) { 12863 this.fixed = new Range(); 12864 return this.fixed; 12865 } 12866 else if (name.equals("fixedRatio")) { 12867 this.fixed = new Ratio(); 12868 return this.fixed; 12869 } 12870 else if (name.equals("fixedRatioRange")) { 12871 this.fixed = new RatioRange(); 12872 return this.fixed; 12873 } 12874 else if (name.equals("fixedReference")) { 12875 this.fixed = new Reference(); 12876 return this.fixed; 12877 } 12878 else if (name.equals("fixedSampledData")) { 12879 this.fixed = new SampledData(); 12880 return this.fixed; 12881 } 12882 else if (name.equals("fixedSignature")) { 12883 this.fixed = new Signature(); 12884 return this.fixed; 12885 } 12886 else if (name.equals("fixedTiming")) { 12887 this.fixed = new Timing(); 12888 return this.fixed; 12889 } 12890 else if (name.equals("fixedContactDetail")) { 12891 this.fixed = new ContactDetail(); 12892 return this.fixed; 12893 } 12894 else if (name.equals("fixedDataRequirement")) { 12895 this.fixed = new DataRequirement(); 12896 return this.fixed; 12897 } 12898 else if (name.equals("fixedExpression")) { 12899 this.fixed = new Expression(); 12900 return this.fixed; 12901 } 12902 else if (name.equals("fixedParameterDefinition")) { 12903 this.fixed = new ParameterDefinition(); 12904 return this.fixed; 12905 } 12906 else if (name.equals("fixedRelatedArtifact")) { 12907 this.fixed = new RelatedArtifact(); 12908 return this.fixed; 12909 } 12910 else if (name.equals("fixedTriggerDefinition")) { 12911 this.fixed = new TriggerDefinition(); 12912 return this.fixed; 12913 } 12914 else if (name.equals("fixedUsageContext")) { 12915 this.fixed = new UsageContext(); 12916 return this.fixed; 12917 } 12918 else if (name.equals("fixedAvailability")) { 12919 this.fixed = new Availability(); 12920 return this.fixed; 12921 } 12922 else if (name.equals("fixedExtendedContactDetail")) { 12923 this.fixed = new ExtendedContactDetail(); 12924 return this.fixed; 12925 } 12926 else if (name.equals("fixedDosage")) { 12927 this.fixed = new Dosage(); 12928 return this.fixed; 12929 } 12930 else if (name.equals("fixedMeta")) { 12931 this.fixed = new Meta(); 12932 return this.fixed; 12933 } 12934 else if (name.equals("patternBase64Binary")) { 12935 this.pattern = new Base64BinaryType(); 12936 return this.pattern; 12937 } 12938 else if (name.equals("patternBoolean")) { 12939 this.pattern = new BooleanType(); 12940 return this.pattern; 12941 } 12942 else if (name.equals("patternCanonical")) { 12943 this.pattern = new CanonicalType(); 12944 return this.pattern; 12945 } 12946 else if (name.equals("patternCode")) { 12947 this.pattern = new CodeType(); 12948 return this.pattern; 12949 } 12950 else if (name.equals("patternDate")) { 12951 this.pattern = new DateType(); 12952 return this.pattern; 12953 } 12954 else if (name.equals("patternDateTime")) { 12955 this.pattern = new DateTimeType(); 12956 return this.pattern; 12957 } 12958 else if (name.equals("patternDecimal")) { 12959 this.pattern = new DecimalType(); 12960 return this.pattern; 12961 } 12962 else if (name.equals("patternId")) { 12963 this.pattern = new IdType(); 12964 return this.pattern; 12965 } 12966 else if (name.equals("patternInstant")) { 12967 this.pattern = new InstantType(); 12968 return this.pattern; 12969 } 12970 else if (name.equals("patternInteger")) { 12971 this.pattern = new IntegerType(); 12972 return this.pattern; 12973 } 12974 else if (name.equals("patternInteger64")) { 12975 this.pattern = new Integer64Type(); 12976 return this.pattern; 12977 } 12978 else if (name.equals("patternMarkdown")) { 12979 this.pattern = new MarkdownType(); 12980 return this.pattern; 12981 } 12982 else if (name.equals("patternOid")) { 12983 this.pattern = new OidType(); 12984 return this.pattern; 12985 } 12986 else if (name.equals("patternPositiveInt")) { 12987 this.pattern = new PositiveIntType(); 12988 return this.pattern; 12989 } 12990 else if (name.equals("patternString")) { 12991 this.pattern = new StringType(); 12992 return this.pattern; 12993 } 12994 else if (name.equals("patternTime")) { 12995 this.pattern = new TimeType(); 12996 return this.pattern; 12997 } 12998 else if (name.equals("patternUnsignedInt")) { 12999 this.pattern = new UnsignedIntType(); 13000 return this.pattern; 13001 } 13002 else if (name.equals("patternUri")) { 13003 this.pattern = new UriType(); 13004 return this.pattern; 13005 } 13006 else if (name.equals("patternUrl")) { 13007 this.pattern = new UrlType(); 13008 return this.pattern; 13009 } 13010 else if (name.equals("patternUuid")) { 13011 this.pattern = new UuidType(); 13012 return this.pattern; 13013 } 13014 else if (name.equals("patternAddress")) { 13015 this.pattern = new Address(); 13016 return this.pattern; 13017 } 13018 else if (name.equals("patternAge")) { 13019 this.pattern = new Age(); 13020 return this.pattern; 13021 } 13022 else if (name.equals("patternAnnotation")) { 13023 this.pattern = new Annotation(); 13024 return this.pattern; 13025 } 13026 else if (name.equals("patternAttachment")) { 13027 this.pattern = new Attachment(); 13028 return this.pattern; 13029 } 13030 else if (name.equals("patternCodeableConcept")) { 13031 this.pattern = new CodeableConcept(); 13032 return this.pattern; 13033 } 13034 else if (name.equals("patternCodeableReference")) { 13035 this.pattern = new CodeableReference(); 13036 return this.pattern; 13037 } 13038 else if (name.equals("patternCoding")) { 13039 this.pattern = new Coding(); 13040 return this.pattern; 13041 } 13042 else if (name.equals("patternContactPoint")) { 13043 this.pattern = new ContactPoint(); 13044 return this.pattern; 13045 } 13046 else if (name.equals("patternCount")) { 13047 this.pattern = new Count(); 13048 return this.pattern; 13049 } 13050 else if (name.equals("patternDistance")) { 13051 this.pattern = new Distance(); 13052 return this.pattern; 13053 } 13054 else if (name.equals("patternDuration")) { 13055 this.pattern = new Duration(); 13056 return this.pattern; 13057 } 13058 else if (name.equals("patternHumanName")) { 13059 this.pattern = new HumanName(); 13060 return this.pattern; 13061 } 13062 else if (name.equals("patternIdentifier")) { 13063 this.pattern = new Identifier(); 13064 return this.pattern; 13065 } 13066 else if (name.equals("patternMoney")) { 13067 this.pattern = new Money(); 13068 return this.pattern; 13069 } 13070 else if (name.equals("patternPeriod")) { 13071 this.pattern = new Period(); 13072 return this.pattern; 13073 } 13074 else if (name.equals("patternQuantity")) { 13075 this.pattern = new Quantity(); 13076 return this.pattern; 13077 } 13078 else if (name.equals("patternRange")) { 13079 this.pattern = new Range(); 13080 return this.pattern; 13081 } 13082 else if (name.equals("patternRatio")) { 13083 this.pattern = new Ratio(); 13084 return this.pattern; 13085 } 13086 else if (name.equals("patternRatioRange")) { 13087 this.pattern = new RatioRange(); 13088 return this.pattern; 13089 } 13090 else if (name.equals("patternReference")) { 13091 this.pattern = new Reference(); 13092 return this.pattern; 13093 } 13094 else if (name.equals("patternSampledData")) { 13095 this.pattern = new SampledData(); 13096 return this.pattern; 13097 } 13098 else if (name.equals("patternSignature")) { 13099 this.pattern = new Signature(); 13100 return this.pattern; 13101 } 13102 else if (name.equals("patternTiming")) { 13103 this.pattern = new Timing(); 13104 return this.pattern; 13105 } 13106 else if (name.equals("patternContactDetail")) { 13107 this.pattern = new ContactDetail(); 13108 return this.pattern; 13109 } 13110 else if (name.equals("patternDataRequirement")) { 13111 this.pattern = new DataRequirement(); 13112 return this.pattern; 13113 } 13114 else if (name.equals("patternExpression")) { 13115 this.pattern = new Expression(); 13116 return this.pattern; 13117 } 13118 else if (name.equals("patternParameterDefinition")) { 13119 this.pattern = new ParameterDefinition(); 13120 return this.pattern; 13121 } 13122 else if (name.equals("patternRelatedArtifact")) { 13123 this.pattern = new RelatedArtifact(); 13124 return this.pattern; 13125 } 13126 else if (name.equals("patternTriggerDefinition")) { 13127 this.pattern = new TriggerDefinition(); 13128 return this.pattern; 13129 } 13130 else if (name.equals("patternUsageContext")) { 13131 this.pattern = new UsageContext(); 13132 return this.pattern; 13133 } 13134 else if (name.equals("patternAvailability")) { 13135 this.pattern = new Availability(); 13136 return this.pattern; 13137 } 13138 else if (name.equals("patternExtendedContactDetail")) { 13139 this.pattern = new ExtendedContactDetail(); 13140 return this.pattern; 13141 } 13142 else if (name.equals("patternDosage")) { 13143 this.pattern = new Dosage(); 13144 return this.pattern; 13145 } 13146 else if (name.equals("patternMeta")) { 13147 this.pattern = new Meta(); 13148 return this.pattern; 13149 } 13150 else if (name.equals("example")) { 13151 return addExample(); 13152 } 13153 else if (name.equals("minValueDate")) { 13154 this.minValue = new DateType(); 13155 return this.minValue; 13156 } 13157 else if (name.equals("minValueDateTime")) { 13158 this.minValue = new DateTimeType(); 13159 return this.minValue; 13160 } 13161 else if (name.equals("minValueInstant")) { 13162 this.minValue = new InstantType(); 13163 return this.minValue; 13164 } 13165 else if (name.equals("minValueTime")) { 13166 this.minValue = new TimeType(); 13167 return this.minValue; 13168 } 13169 else if (name.equals("minValueDecimal")) { 13170 this.minValue = new DecimalType(); 13171 return this.minValue; 13172 } 13173 else if (name.equals("minValueInteger")) { 13174 this.minValue = new IntegerType(); 13175 return this.minValue; 13176 } 13177 else if (name.equals("minValueInteger64")) { 13178 this.minValue = new Integer64Type(); 13179 return this.minValue; 13180 } 13181 else if (name.equals("minValuePositiveInt")) { 13182 this.minValue = new PositiveIntType(); 13183 return this.minValue; 13184 } 13185 else if (name.equals("minValueUnsignedInt")) { 13186 this.minValue = new UnsignedIntType(); 13187 return this.minValue; 13188 } 13189 else if (name.equals("minValueQuantity")) { 13190 this.minValue = new Quantity(); 13191 return this.minValue; 13192 } 13193 else if (name.equals("maxValueDate")) { 13194 this.maxValue = new DateType(); 13195 return this.maxValue; 13196 } 13197 else if (name.equals("maxValueDateTime")) { 13198 this.maxValue = new DateTimeType(); 13199 return this.maxValue; 13200 } 13201 else if (name.equals("maxValueInstant")) { 13202 this.maxValue = new InstantType(); 13203 return this.maxValue; 13204 } 13205 else if (name.equals("maxValueTime")) { 13206 this.maxValue = new TimeType(); 13207 return this.maxValue; 13208 } 13209 else if (name.equals("maxValueDecimal")) { 13210 this.maxValue = new DecimalType(); 13211 return this.maxValue; 13212 } 13213 else if (name.equals("maxValueInteger")) { 13214 this.maxValue = new IntegerType(); 13215 return this.maxValue; 13216 } 13217 else if (name.equals("maxValueInteger64")) { 13218 this.maxValue = new Integer64Type(); 13219 return this.maxValue; 13220 } 13221 else if (name.equals("maxValuePositiveInt")) { 13222 this.maxValue = new PositiveIntType(); 13223 return this.maxValue; 13224 } 13225 else if (name.equals("maxValueUnsignedInt")) { 13226 this.maxValue = new UnsignedIntType(); 13227 return this.maxValue; 13228 } 13229 else if (name.equals("maxValueQuantity")) { 13230 this.maxValue = new Quantity(); 13231 return this.maxValue; 13232 } 13233 else if (name.equals("maxLength")) { 13234 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.maxLength"); 13235 } 13236 else if (name.equals("condition")) { 13237 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.condition"); 13238 } 13239 else if (name.equals("constraint")) { 13240 return addConstraint(); 13241 } 13242 else if (name.equals("mustHaveValue")) { 13243 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.mustHaveValue"); 13244 } 13245 else if (name.equals("valueAlternatives")) { 13246 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.valueAlternatives"); 13247 } 13248 else if (name.equals("mustSupport")) { 13249 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.mustSupport"); 13250 } 13251 else if (name.equals("obligation")) { 13252 return addObligation(); 13253 } 13254 else if (name.equals("isModifier")) { 13255 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.isModifier"); 13256 } 13257 else if (name.equals("isModifierReason")) { 13258 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.isModifierReason"); 13259 } 13260 else if (name.equals("isSummary")) { 13261 throw new FHIRException("Cannot call addChild on a primitive type ElementDefinition.isSummary"); 13262 } 13263 else if (name.equals("binding")) { 13264 this.binding = new ElementDefinitionBindingComponent(); 13265 return this.binding; 13266 } 13267 else if (name.equals("mapping")) { 13268 return addMapping(); 13269 } 13270 else 13271 return super.addChild(name); 13272 } 13273 13274 public String fhirType() { 13275 return "ElementDefinition"; 13276 13277 } 13278 13279 public ElementDefinition copy() { 13280 ElementDefinition dst = new ElementDefinition(); 13281 copyValues(dst); 13282 return dst; 13283 } 13284 13285 public void copyValues(ElementDefinition dst) { 13286 super.copyValues(dst); 13287 dst.path = path == null ? null : path.copy(); 13288 if (representation != null) { 13289 dst.representation = new ArrayList<Enumeration<PropertyRepresentation>>(); 13290 for (Enumeration<PropertyRepresentation> i : representation) 13291 dst.representation.add(i.copy()); 13292 }; 13293 dst.sliceName = sliceName == null ? null : sliceName.copy(); 13294 dst.sliceIsConstraining = sliceIsConstraining == null ? null : sliceIsConstraining.copy(); 13295 dst.label = label == null ? null : label.copy(); 13296 if (code != null) { 13297 dst.code = new ArrayList<Coding>(); 13298 for (Coding i : code) 13299 dst.code.add(i.copy()); 13300 }; 13301 dst.slicing = slicing == null ? null : slicing.copy(); 13302 dst.short_ = short_ == null ? null : short_.copy(); 13303 dst.definition = definition == null ? null : definition.copy(); 13304 dst.comment = comment == null ? null : comment.copy(); 13305 dst.requirements = requirements == null ? null : requirements.copy(); 13306 if (alias != null) { 13307 dst.alias = new ArrayList<StringType>(); 13308 for (StringType i : alias) 13309 dst.alias.add(i.copy()); 13310 }; 13311 dst.min = min == null ? null : min.copy(); 13312 dst.max = max == null ? null : max.copy(); 13313 dst.base = base == null ? null : base.copy(); 13314 dst.contentReference = contentReference == null ? null : contentReference.copy(); 13315 if (type != null) { 13316 dst.type = new ArrayList<TypeRefComponent>(); 13317 for (TypeRefComponent i : type) 13318 dst.type.add(i.copy()); 13319 }; 13320 dst.defaultValue = defaultValue == null ? null : defaultValue.copy(); 13321 dst.meaningWhenMissing = meaningWhenMissing == null ? null : meaningWhenMissing.copy(); 13322 dst.orderMeaning = orderMeaning == null ? null : orderMeaning.copy(); 13323 dst.fixed = fixed == null ? null : fixed.copy(); 13324 dst.pattern = pattern == null ? null : pattern.copy(); 13325 if (example != null) { 13326 dst.example = new ArrayList<ElementDefinitionExampleComponent>(); 13327 for (ElementDefinitionExampleComponent i : example) 13328 dst.example.add(i.copy()); 13329 }; 13330 dst.minValue = minValue == null ? null : minValue.copy(); 13331 dst.maxValue = maxValue == null ? null : maxValue.copy(); 13332 dst.maxLength = maxLength == null ? null : maxLength.copy(); 13333 if (condition != null) { 13334 dst.condition = new ArrayList<IdType>(); 13335 for (IdType i : condition) 13336 dst.condition.add(i.copy()); 13337 }; 13338 if (constraint != null) { 13339 dst.constraint = new ArrayList<ElementDefinitionConstraintComponent>(); 13340 for (ElementDefinitionConstraintComponent i : constraint) 13341 dst.constraint.add(i.copy()); 13342 }; 13343 dst.mustHaveValue = mustHaveValue == null ? null : mustHaveValue.copy(); 13344 if (valueAlternatives != null) { 13345 dst.valueAlternatives = new ArrayList<CanonicalType>(); 13346 for (CanonicalType i : valueAlternatives) 13347 dst.valueAlternatives.add(i.copy()); 13348 }; 13349 dst.mustSupport = mustSupport == null ? null : mustSupport.copy(); 13350 if (obligation != null) { 13351 dst.obligation = new ArrayList<ElementDefinitionObligationComponent>(); 13352 for (ElementDefinitionObligationComponent i : obligation) 13353 dst.obligation.add(i.copy()); 13354 }; 13355 dst.isModifier = isModifier == null ? null : isModifier.copy(); 13356 dst.isModifierReason = isModifierReason == null ? null : isModifierReason.copy(); 13357 dst.isSummary = isSummary == null ? null : isSummary.copy(); 13358 dst.binding = binding == null ? null : binding.copy(); 13359 if (mapping != null) { 13360 dst.mapping = new ArrayList<ElementDefinitionMappingComponent>(); 13361 for (ElementDefinitionMappingComponent i : mapping) 13362 dst.mapping.add(i.copy()); 13363 }; 13364 } 13365 13366 protected ElementDefinition typedCopy() { 13367 return copy(); 13368 } 13369 13370 @Override 13371 public boolean equalsDeep(Base other_) { 13372 if (!super.equalsDeep(other_)) 13373 return false; 13374 if (!(other_ instanceof ElementDefinition)) 13375 return false; 13376 ElementDefinition o = (ElementDefinition) other_; 13377 return compareDeep(path, o.path, true) && compareDeep(representation, o.representation, true) && compareDeep(sliceName, o.sliceName, true) 13378 && compareDeep(sliceIsConstraining, o.sliceIsConstraining, true) && compareDeep(label, o.label, true) 13379 && compareDeep(code, o.code, true) && compareDeep(slicing, o.slicing, true) && compareDeep(short_, o.short_, true) 13380 && compareDeep(definition, o.definition, true) && compareDeep(comment, o.comment, true) && compareDeep(requirements, o.requirements, true) 13381 && compareDeep(alias, o.alias, true) && compareDeep(min, o.min, true) && compareDeep(max, o.max, true) 13382 && compareDeep(base, o.base, true) && compareDeep(contentReference, o.contentReference, true) && compareDeep(type, o.type, true) 13383 && compareDeep(defaultValue, o.defaultValue, true) && compareDeep(meaningWhenMissing, o.meaningWhenMissing, true) 13384 && compareDeep(orderMeaning, o.orderMeaning, true) && compareDeep(fixed, o.fixed, true) && compareDeep(pattern, o.pattern, true) 13385 && compareDeep(example, o.example, true) && compareDeep(minValue, o.minValue, true) && compareDeep(maxValue, o.maxValue, true) 13386 && compareDeep(maxLength, o.maxLength, true) && compareDeep(condition, o.condition, true) && compareDeep(constraint, o.constraint, true) 13387 && compareDeep(mustHaveValue, o.mustHaveValue, true) && compareDeep(valueAlternatives, o.valueAlternatives, true) 13388 && compareDeep(mustSupport, o.mustSupport, true) && compareDeep(obligation, o.obligation, true) 13389 && compareDeep(isModifier, o.isModifier, true) && compareDeep(isModifierReason, o.isModifierReason, true) 13390 && compareDeep(isSummary, o.isSummary, true) && compareDeep(binding, o.binding, true) && compareDeep(mapping, o.mapping, true) 13391 ; 13392 } 13393 13394 @Override 13395 public boolean equalsShallow(Base other_) { 13396 if (!super.equalsShallow(other_)) 13397 return false; 13398 if (!(other_ instanceof ElementDefinition)) 13399 return false; 13400 ElementDefinition o = (ElementDefinition) other_; 13401 return compareValues(path, o.path, true) && compareValues(representation, o.representation, true) && compareValues(sliceName, o.sliceName, true) 13402 && compareValues(sliceIsConstraining, o.sliceIsConstraining, true) && compareValues(label, o.label, true) 13403 && compareValues(short_, o.short_, true) && compareValues(definition, o.definition, true) && compareValues(comment, o.comment, true) 13404 && compareValues(requirements, o.requirements, true) && compareValues(alias, o.alias, true) && compareValues(min, o.min, true) 13405 && compareValues(max, o.max, true) && compareValues(contentReference, o.contentReference, true) && compareValues(meaningWhenMissing, o.meaningWhenMissing, true) 13406 && compareValues(orderMeaning, o.orderMeaning, true) && compareValues(maxLength, o.maxLength, true) 13407 && compareValues(condition, o.condition, true) && compareValues(mustHaveValue, o.mustHaveValue, true) 13408 && compareValues(valueAlternatives, o.valueAlternatives, true) && compareValues(mustSupport, o.mustSupport, true) 13409 && compareValues(isModifier, o.isModifier, true) && compareValues(isModifierReason, o.isModifierReason, true) 13410 && compareValues(isSummary, o.isSummary, true); 13411 } 13412 13413 public boolean isEmpty() { 13414 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(path, representation, sliceName 13415 , sliceIsConstraining, label, code, slicing, short_, definition, comment, requirements 13416 , alias, min, max, base, contentReference, type, defaultValue, meaningWhenMissing 13417 , orderMeaning, fixed, pattern, example, minValue, maxValue, maxLength, condition 13418 , constraint, mustHaveValue, valueAlternatives, mustSupport, obligation, isModifier 13419 , isModifierReason, isSummary, binding, mapping); 13420 } 13421 13422// Manual code (from Configuration.txt): 13423 13424 public String toString() { 13425 if (hasId()) 13426 return getId(); 13427 if (hasSliceName()) 13428 return getPath()+":"+getSliceName(); 13429 else 13430 return getPath(); 13431 } 13432 13433 public void makeBase(String path, int min, String max) { 13434 ElementDefinitionBaseComponent self = getBase(); 13435 self.setPath(path); 13436 self.setMin(min); 13437 self.setMax(max); 13438 } 13439 13440 public void makeBase() { 13441 ElementDefinitionBaseComponent self = getBase(); 13442 self.setPath(getPath()); 13443 self.setMin(getMin()); 13444 self.setMax(getMax()); 13445 } 13446 13447 13448 public String typeSummary() { 13449 CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder(); 13450 for (TypeRefComponent tr : getType()) { 13451 if (tr.hasCode()) 13452 b.append(tr.getWorkingCode()); 13453 } 13454 return b.toString(); 13455 } 13456 13457 public String typeSummaryVB() { 13458 CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder("|"); 13459 for (TypeRefComponent tr : getType()) { 13460 if (tr.hasCode()) 13461 b.append(tr.getWorkingCode()); 13462 } 13463 return b.toString().replace(" ", ""); 13464 } 13465 13466 public TypeRefComponent getType(String code) { 13467 for (TypeRefComponent tr : getType()) 13468 if (tr.getCode().equals(code)) 13469 return tr; 13470 TypeRefComponent tr = new TypeRefComponent(); 13471 tr.setCode(code); 13472 type.add(tr); 13473 return tr; 13474 } 13475 13476 public static final boolean NOT_MODIFIER = false; 13477 public static final boolean NOT_IN_SUMMARY = false; 13478 public static final boolean IS_MODIFIER = true; 13479 public static final boolean IS_IN_SUMMARY = true; 13480 public ElementDefinition(boolean defaults, boolean modifier, boolean inSummary) { 13481 super(); 13482 if (defaults) { 13483 setIsModifier(modifier); 13484 setIsSummary(inSummary); 13485 } 13486 } 13487 13488 public String present() { 13489 return hasId() ? getId() : getPath(); 13490 } 13491 13492 public boolean hasCondition(IdType id) { 13493 for (IdType c : getCondition()) { 13494 if (c.primitiveValue().equals(id.primitiveValue())) 13495 return true; 13496 } 13497 return false; 13498 } 13499 13500 public boolean hasConstraint(String key) { 13501 for (ElementDefinitionConstraintComponent c : getConstraint()) { 13502 if (c.getKey().equals(key)) 13503 return true; 13504 } 13505 return false; 13506 } 13507 13508 public boolean hasCode(Coding c) { 13509 for (Coding t : getCode()) { 13510 if (t.getSystem().equals(c.getSystem()) && t.getCode().equals(c.getCode())) 13511 return true; 13512 } 13513 return false; 13514 } 13515 13516 public boolean isChoice() { 13517 return getPath().endsWith("[x]"); 13518 } 13519 13520 public String getName() { 13521 return hasPath() ? getPath().contains(".") ? getPath().substring(getPath().lastIndexOf(".")+1) : getPath() : null; 13522 } 13523 13524 public boolean unbounded() { 13525 return getMax().equals("*") || Integer.parseInt(getMax()) > 1; 13526 } 13527 13528 public boolean isMandatory() { 13529 return getMin() > 0; 13530 } 13531 13532 public boolean isInlineType() { 13533 return getType().size() == 1 && Utilities.existsInList(getType().get(0).getCode(), "Element", "BackboneElement"); 13534 } 13535 13536 13537 public boolean prohibited() { 13538 return "0".equals(getMax()); 13539 } 13540 13541 public boolean hasFixedOrPattern() { 13542 return hasFixed() || hasPattern(); 13543 } 13544 13545 public DataType getFixedOrPattern() { 13546 return hasFixed() ? getFixed() : getPattern(); 13547 } 13548 13549 public boolean isProhibited() { 13550 return "0".equals(getMax()); 13551 } 13552 13553 public boolean isRequired() { 13554 return getMin() == 1; 13555 } 13556 13557// end addition 13558 13559}