
001package org.hl7.fhir.r4.model; 002 003/* 004 Copyright (c) 2011+, HL7, Inc. 005 All rights reserved. 006 007 Redistribution and use in source and binary forms, with or without modification, 008 are permitted provided that the following conditions are met: 009 010 * Redistributions of source code must retain the above copyright notice, this 011 list of conditions and the following disclaimer. 012 * Redistributions in binary form must reproduce the above copyright notice, 013 this list of conditions and the following disclaimer in the documentation 014 and/or other materials provided with the distribution. 015 * Neither the name of HL7 nor the names of its contributors may be used to 016 endorse or promote products derived from this software without specific 017 prior written permission. 018 019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 022 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 023 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 024 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 025 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 027 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 028 POSSIBILITY OF SUCH DAMAGE. 029 030*/ 031 032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1 033import java.util.ArrayList; 034import java.util.Date; 035import java.util.List; 036 037import org.hl7.fhir.exceptions.FHIRException; 038import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 039import org.hl7.fhir.utilities.Utilities; 040 041import ca.uhn.fhir.model.api.annotation.Block; 042import ca.uhn.fhir.model.api.annotation.Child; 043import ca.uhn.fhir.model.api.annotation.Description; 044import ca.uhn.fhir.model.api.annotation.ResourceDef; 045import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; 046 047/** 048 * A record of a healthcare consumer?s choices, which permits or denies 049 * identified recipient(s) or recipient role(s) to perform one or more actions 050 * within a given policy context, for specific purposes and periods of time. 051 */ 052@ResourceDef(name = "Consent", profile = "http://hl7.org/fhir/StructureDefinition/Consent") 053public class Consent extends DomainResource { 054 055 public enum ConsentState { 056 /** 057 * The consent is in development or awaiting use but is not yet intended to be 058 * acted upon. 059 */ 060 DRAFT, 061 /** 062 * The consent has been proposed but not yet agreed to by all parties. The 063 * negotiation stage. 064 */ 065 PROPOSED, 066 /** 067 * The consent is to be followed and enforced. 068 */ 069 ACTIVE, 070 /** 071 * The consent has been rejected by one or more of the parties. 072 */ 073 REJECTED, 074 /** 075 * The consent is terminated or replaced. 076 */ 077 INACTIVE, 078 /** 079 * The consent was created wrongly (e.g. wrong patient) and should be ignored. 080 */ 081 ENTEREDINERROR, 082 /** 083 * added to help the parsers with the generic types 084 */ 085 NULL; 086 087 public static ConsentState fromCode(String codeString) throws FHIRException { 088 if (codeString == null || "".equals(codeString)) 089 return null; 090 if ("draft".equals(codeString)) 091 return DRAFT; 092 if ("proposed".equals(codeString)) 093 return PROPOSED; 094 if ("active".equals(codeString)) 095 return ACTIVE; 096 if ("rejected".equals(codeString)) 097 return REJECTED; 098 if ("inactive".equals(codeString)) 099 return INACTIVE; 100 if ("entered-in-error".equals(codeString)) 101 return ENTEREDINERROR; 102 if (Configuration.isAcceptInvalidEnums()) 103 return null; 104 else 105 throw new FHIRException("Unknown ConsentState code '" + codeString + "'"); 106 } 107 108 public String toCode() { 109 switch (this) { 110 case DRAFT: 111 return "draft"; 112 case PROPOSED: 113 return "proposed"; 114 case ACTIVE: 115 return "active"; 116 case REJECTED: 117 return "rejected"; 118 case INACTIVE: 119 return "inactive"; 120 case ENTEREDINERROR: 121 return "entered-in-error"; 122 case NULL: 123 return null; 124 default: 125 return "?"; 126 } 127 } 128 129 public String getSystem() { 130 switch (this) { 131 case DRAFT: 132 return "http://hl7.org/fhir/consent-state-codes"; 133 case PROPOSED: 134 return "http://hl7.org/fhir/consent-state-codes"; 135 case ACTIVE: 136 return "http://hl7.org/fhir/consent-state-codes"; 137 case REJECTED: 138 return "http://hl7.org/fhir/consent-state-codes"; 139 case INACTIVE: 140 return "http://hl7.org/fhir/consent-state-codes"; 141 case ENTEREDINERROR: 142 return "http://hl7.org/fhir/consent-state-codes"; 143 case NULL: 144 return null; 145 default: 146 return "?"; 147 } 148 } 149 150 public String getDefinition() { 151 switch (this) { 152 case DRAFT: 153 return "The consent is in development or awaiting use but is not yet intended to be acted upon."; 154 case PROPOSED: 155 return "The consent has been proposed but not yet agreed to by all parties. The negotiation stage."; 156 case ACTIVE: 157 return "The consent is to be followed and enforced."; 158 case REJECTED: 159 return "The consent has been rejected by one or more of the parties."; 160 case INACTIVE: 161 return "The consent is terminated or replaced."; 162 case ENTEREDINERROR: 163 return "The consent was created wrongly (e.g. wrong patient) and should be ignored."; 164 case NULL: 165 return null; 166 default: 167 return "?"; 168 } 169 } 170 171 public String getDisplay() { 172 switch (this) { 173 case DRAFT: 174 return "Pending"; 175 case PROPOSED: 176 return "Proposed"; 177 case ACTIVE: 178 return "Active"; 179 case REJECTED: 180 return "Rejected"; 181 case INACTIVE: 182 return "Inactive"; 183 case ENTEREDINERROR: 184 return "Entered in Error"; 185 case NULL: 186 return null; 187 default: 188 return "?"; 189 } 190 } 191 } 192 193 public static class ConsentStateEnumFactory implements EnumFactory<ConsentState> { 194 public ConsentState fromCode(String codeString) throws IllegalArgumentException { 195 if (codeString == null || "".equals(codeString)) 196 if (codeString == null || "".equals(codeString)) 197 return null; 198 if ("draft".equals(codeString)) 199 return ConsentState.DRAFT; 200 if ("proposed".equals(codeString)) 201 return ConsentState.PROPOSED; 202 if ("active".equals(codeString)) 203 return ConsentState.ACTIVE; 204 if ("rejected".equals(codeString)) 205 return ConsentState.REJECTED; 206 if ("inactive".equals(codeString)) 207 return ConsentState.INACTIVE; 208 if ("entered-in-error".equals(codeString)) 209 return ConsentState.ENTEREDINERROR; 210 throw new IllegalArgumentException("Unknown ConsentState code '" + codeString + "'"); 211 } 212 213 public Enumeration<ConsentState> fromType(PrimitiveType<?> code) throws FHIRException { 214 if (code == null) 215 return null; 216 if (code.isEmpty()) 217 return new Enumeration<ConsentState>(this, ConsentState.NULL, code); 218 String codeString = code.asStringValue(); 219 if (codeString == null || "".equals(codeString)) 220 return new Enumeration<ConsentState>(this, ConsentState.NULL, code); 221 if ("draft".equals(codeString)) 222 return new Enumeration<ConsentState>(this, ConsentState.DRAFT, code); 223 if ("proposed".equals(codeString)) 224 return new Enumeration<ConsentState>(this, ConsentState.PROPOSED, code); 225 if ("active".equals(codeString)) 226 return new Enumeration<ConsentState>(this, ConsentState.ACTIVE, code); 227 if ("rejected".equals(codeString)) 228 return new Enumeration<ConsentState>(this, ConsentState.REJECTED, code); 229 if ("inactive".equals(codeString)) 230 return new Enumeration<ConsentState>(this, ConsentState.INACTIVE, code); 231 if ("entered-in-error".equals(codeString)) 232 return new Enumeration<ConsentState>(this, ConsentState.ENTEREDINERROR, code); 233 throw new FHIRException("Unknown ConsentState code '" + codeString + "'"); 234 } 235 236 public String toCode(ConsentState code) { 237 if (code == ConsentState.NULL) 238 return null; 239 if (code == ConsentState.DRAFT) 240 return "draft"; 241 if (code == ConsentState.PROPOSED) 242 return "proposed"; 243 if (code == ConsentState.ACTIVE) 244 return "active"; 245 if (code == ConsentState.REJECTED) 246 return "rejected"; 247 if (code == ConsentState.INACTIVE) 248 return "inactive"; 249 if (code == ConsentState.ENTEREDINERROR) 250 return "entered-in-error"; 251 return "?"; 252 } 253 254 public String toSystem(ConsentState code) { 255 return code.getSystem(); 256 } 257 } 258 259 public enum ConsentProvisionType { 260 /** 261 * Consent is denied for actions meeting these rules. 262 */ 263 DENY, 264 /** 265 * Consent is provided for actions meeting these rules. 266 */ 267 PERMIT, 268 /** 269 * added to help the parsers with the generic types 270 */ 271 NULL; 272 273 public static ConsentProvisionType fromCode(String codeString) throws FHIRException { 274 if (codeString == null || "".equals(codeString)) 275 return null; 276 if ("deny".equals(codeString)) 277 return DENY; 278 if ("permit".equals(codeString)) 279 return PERMIT; 280 if (Configuration.isAcceptInvalidEnums()) 281 return null; 282 else 283 throw new FHIRException("Unknown ConsentProvisionType code '" + codeString + "'"); 284 } 285 286 public String toCode() { 287 switch (this) { 288 case DENY: 289 return "deny"; 290 case PERMIT: 291 return "permit"; 292 case NULL: 293 return null; 294 default: 295 return "?"; 296 } 297 } 298 299 public String getSystem() { 300 switch (this) { 301 case DENY: 302 return "http://hl7.org/fhir/consent-provision-type"; 303 case PERMIT: 304 return "http://hl7.org/fhir/consent-provision-type"; 305 case NULL: 306 return null; 307 default: 308 return "?"; 309 } 310 } 311 312 public String getDefinition() { 313 switch (this) { 314 case DENY: 315 return "Consent is denied for actions meeting these rules."; 316 case PERMIT: 317 return "Consent is provided for actions meeting these rules."; 318 case NULL: 319 return null; 320 default: 321 return "?"; 322 } 323 } 324 325 public String getDisplay() { 326 switch (this) { 327 case DENY: 328 return "Opt Out"; 329 case PERMIT: 330 return "Opt In"; 331 case NULL: 332 return null; 333 default: 334 return "?"; 335 } 336 } 337 } 338 339 public static class ConsentProvisionTypeEnumFactory implements EnumFactory<ConsentProvisionType> { 340 public ConsentProvisionType fromCode(String codeString) throws IllegalArgumentException { 341 if (codeString == null || "".equals(codeString)) 342 if (codeString == null || "".equals(codeString)) 343 return null; 344 if ("deny".equals(codeString)) 345 return ConsentProvisionType.DENY; 346 if ("permit".equals(codeString)) 347 return ConsentProvisionType.PERMIT; 348 throw new IllegalArgumentException("Unknown ConsentProvisionType code '" + codeString + "'"); 349 } 350 351 public Enumeration<ConsentProvisionType> fromType(PrimitiveType<?> code) throws FHIRException { 352 if (code == null) 353 return null; 354 if (code.isEmpty()) 355 return new Enumeration<ConsentProvisionType>(this, ConsentProvisionType.NULL, code); 356 String codeString = code.asStringValue(); 357 if (codeString == null || "".equals(codeString)) 358 return new Enumeration<ConsentProvisionType>(this, ConsentProvisionType.NULL, code); 359 if ("deny".equals(codeString)) 360 return new Enumeration<ConsentProvisionType>(this, ConsentProvisionType.DENY, code); 361 if ("permit".equals(codeString)) 362 return new Enumeration<ConsentProvisionType>(this, ConsentProvisionType.PERMIT, code); 363 throw new FHIRException("Unknown ConsentProvisionType code '" + codeString + "'"); 364 } 365 366 public String toCode(ConsentProvisionType code) { 367 if (code == ConsentProvisionType.NULL) 368 return null; 369 if (code == ConsentProvisionType.DENY) 370 return "deny"; 371 if (code == ConsentProvisionType.PERMIT) 372 return "permit"; 373 return "?"; 374 } 375 376 public String toSystem(ConsentProvisionType code) { 377 return code.getSystem(); 378 } 379 } 380 381 public enum ConsentDataMeaning { 382 /** 383 * The consent applies directly to the instance of the resource. 384 */ 385 INSTANCE, 386 /** 387 * The consent applies directly to the instance of the resource and instances it 388 * refers to. 389 */ 390 RELATED, 391 /** 392 * The consent applies directly to the instance of the resource and instances 393 * that refer to it. 394 */ 395 DEPENDENTS, 396 /** 397 * The consent applies to instances of resources that are authored by. 398 */ 399 AUTHOREDBY, 400 /** 401 * added to help the parsers with the generic types 402 */ 403 NULL; 404 405 public static ConsentDataMeaning fromCode(String codeString) throws FHIRException { 406 if (codeString == null || "".equals(codeString)) 407 return null; 408 if ("instance".equals(codeString)) 409 return INSTANCE; 410 if ("related".equals(codeString)) 411 return RELATED; 412 if ("dependents".equals(codeString)) 413 return DEPENDENTS; 414 if ("authoredby".equals(codeString)) 415 return AUTHOREDBY; 416 if (Configuration.isAcceptInvalidEnums()) 417 return null; 418 else 419 throw new FHIRException("Unknown ConsentDataMeaning code '" + codeString + "'"); 420 } 421 422 public String toCode() { 423 switch (this) { 424 case INSTANCE: 425 return "instance"; 426 case RELATED: 427 return "related"; 428 case DEPENDENTS: 429 return "dependents"; 430 case AUTHOREDBY: 431 return "authoredby"; 432 case NULL: 433 return null; 434 default: 435 return "?"; 436 } 437 } 438 439 public String getSystem() { 440 switch (this) { 441 case INSTANCE: 442 return "http://hl7.org/fhir/consent-data-meaning"; 443 case RELATED: 444 return "http://hl7.org/fhir/consent-data-meaning"; 445 case DEPENDENTS: 446 return "http://hl7.org/fhir/consent-data-meaning"; 447 case AUTHOREDBY: 448 return "http://hl7.org/fhir/consent-data-meaning"; 449 case NULL: 450 return null; 451 default: 452 return "?"; 453 } 454 } 455 456 public String getDefinition() { 457 switch (this) { 458 case INSTANCE: 459 return "The consent applies directly to the instance of the resource."; 460 case RELATED: 461 return "The consent applies directly to the instance of the resource and instances it refers to."; 462 case DEPENDENTS: 463 return "The consent applies directly to the instance of the resource and instances that refer to it."; 464 case AUTHOREDBY: 465 return "The consent applies to instances of resources that are authored by."; 466 case NULL: 467 return null; 468 default: 469 return "?"; 470 } 471 } 472 473 public String getDisplay() { 474 switch (this) { 475 case INSTANCE: 476 return "Instance"; 477 case RELATED: 478 return "Related"; 479 case DEPENDENTS: 480 return "Dependents"; 481 case AUTHOREDBY: 482 return "AuthoredBy"; 483 case NULL: 484 return null; 485 default: 486 return "?"; 487 } 488 } 489 } 490 491 public static class ConsentDataMeaningEnumFactory implements EnumFactory<ConsentDataMeaning> { 492 public ConsentDataMeaning fromCode(String codeString) throws IllegalArgumentException { 493 if (codeString == null || "".equals(codeString)) 494 if (codeString == null || "".equals(codeString)) 495 return null; 496 if ("instance".equals(codeString)) 497 return ConsentDataMeaning.INSTANCE; 498 if ("related".equals(codeString)) 499 return ConsentDataMeaning.RELATED; 500 if ("dependents".equals(codeString)) 501 return ConsentDataMeaning.DEPENDENTS; 502 if ("authoredby".equals(codeString)) 503 return ConsentDataMeaning.AUTHOREDBY; 504 throw new IllegalArgumentException("Unknown ConsentDataMeaning code '" + codeString + "'"); 505 } 506 507 public Enumeration<ConsentDataMeaning> fromType(PrimitiveType<?> code) throws FHIRException { 508 if (code == null) 509 return null; 510 if (code.isEmpty()) 511 return new Enumeration<ConsentDataMeaning>(this, ConsentDataMeaning.NULL, code); 512 String codeString = code.asStringValue(); 513 if (codeString == null || "".equals(codeString)) 514 return new Enumeration<ConsentDataMeaning>(this, ConsentDataMeaning.NULL, code); 515 if ("instance".equals(codeString)) 516 return new Enumeration<ConsentDataMeaning>(this, ConsentDataMeaning.INSTANCE, code); 517 if ("related".equals(codeString)) 518 return new Enumeration<ConsentDataMeaning>(this, ConsentDataMeaning.RELATED, code); 519 if ("dependents".equals(codeString)) 520 return new Enumeration<ConsentDataMeaning>(this, ConsentDataMeaning.DEPENDENTS, code); 521 if ("authoredby".equals(codeString)) 522 return new Enumeration<ConsentDataMeaning>(this, ConsentDataMeaning.AUTHOREDBY, code); 523 throw new FHIRException("Unknown ConsentDataMeaning code '" + codeString + "'"); 524 } 525 526 public String toCode(ConsentDataMeaning code) { 527 if (code == ConsentDataMeaning.NULL) 528 return null; 529 if (code == ConsentDataMeaning.INSTANCE) 530 return "instance"; 531 if (code == ConsentDataMeaning.RELATED) 532 return "related"; 533 if (code == ConsentDataMeaning.DEPENDENTS) 534 return "dependents"; 535 if (code == ConsentDataMeaning.AUTHOREDBY) 536 return "authoredby"; 537 return "?"; 538 } 539 540 public String toSystem(ConsentDataMeaning code) { 541 return code.getSystem(); 542 } 543 } 544 545 @Block() 546 public static class ConsentPolicyComponent extends BackboneElement implements IBaseBackboneElement { 547 /** 548 * Entity or Organization having regulatory jurisdiction or accountability for 549 * enforcing policies pertaining to Consent Directives. 550 */ 551 @Child(name = "authority", type = { UriType.class }, order = 1, min = 0, max = 1, modifier = false, summary = false) 552 @Description(shortDefinition = "Enforcement source for policy", formalDefinition = "Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives.") 553 protected UriType authority; 554 555 /** 556 * The references to the policies that are included in this consent scope. 557 * Policies may be organizational, but are often defined jurisdictionally, or in 558 * law. 559 */ 560 @Child(name = "uri", type = { UriType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 561 @Description(shortDefinition = "Specific policy covered by this consent", formalDefinition = "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.") 562 protected UriType uri; 563 564 private static final long serialVersionUID = 672275705L; 565 566 /** 567 * Constructor 568 */ 569 public ConsentPolicyComponent() { 570 super(); 571 } 572 573 /** 574 * @return {@link #authority} (Entity or Organization having regulatory 575 * jurisdiction or accountability for enforcing policies pertaining to 576 * Consent Directives.). This is the underlying object with id, value 577 * and extensions. The accessor "getAuthority" gives direct access to 578 * the value 579 */ 580 public UriType getAuthorityElement() { 581 if (this.authority == null) 582 if (Configuration.errorOnAutoCreate()) 583 throw new Error("Attempt to auto-create ConsentPolicyComponent.authority"); 584 else if (Configuration.doAutoCreate()) 585 this.authority = new UriType(); // bb 586 return this.authority; 587 } 588 589 public boolean hasAuthorityElement() { 590 return this.authority != null && !this.authority.isEmpty(); 591 } 592 593 public boolean hasAuthority() { 594 return this.authority != null && !this.authority.isEmpty(); 595 } 596 597 /** 598 * @param value {@link #authority} (Entity or Organization having regulatory 599 * jurisdiction or accountability for enforcing policies pertaining 600 * to Consent Directives.). This is the underlying object with id, 601 * value and extensions. The accessor "getAuthority" gives direct 602 * access to the value 603 */ 604 public ConsentPolicyComponent setAuthorityElement(UriType value) { 605 this.authority = value; 606 return this; 607 } 608 609 /** 610 * @return Entity or Organization having regulatory jurisdiction or 611 * accountability for enforcing policies pertaining to Consent 612 * Directives. 613 */ 614 public String getAuthority() { 615 return this.authority == null ? null : this.authority.getValue(); 616 } 617 618 /** 619 * @param value Entity or Organization having regulatory jurisdiction or 620 * accountability for enforcing policies pertaining to Consent 621 * Directives. 622 */ 623 public ConsentPolicyComponent setAuthority(String value) { 624 if (Utilities.noString(value)) 625 this.authority = null; 626 else { 627 if (this.authority == null) 628 this.authority = new UriType(); 629 this.authority.setValue(value); 630 } 631 return this; 632 } 633 634 /** 635 * @return {@link #uri} (The references to the policies that are included in 636 * this consent scope. Policies may be organizational, but are often 637 * defined jurisdictionally, or in law.). This is the underlying object 638 * with id, value and extensions. The accessor "getUri" gives direct 639 * access to the value 640 */ 641 public UriType getUriElement() { 642 if (this.uri == null) 643 if (Configuration.errorOnAutoCreate()) 644 throw new Error("Attempt to auto-create ConsentPolicyComponent.uri"); 645 else if (Configuration.doAutoCreate()) 646 this.uri = new UriType(); // bb 647 return this.uri; 648 } 649 650 public boolean hasUriElement() { 651 return this.uri != null && !this.uri.isEmpty(); 652 } 653 654 public boolean hasUri() { 655 return this.uri != null && !this.uri.isEmpty(); 656 } 657 658 /** 659 * @param value {@link #uri} (The references to the policies that are included 660 * in this consent scope. Policies may be organizational, but are 661 * often defined jurisdictionally, or in law.). This is the 662 * underlying object with id, value and extensions. The accessor 663 * "getUri" gives direct access to the value 664 */ 665 public ConsentPolicyComponent setUriElement(UriType value) { 666 this.uri = value; 667 return this; 668 } 669 670 /** 671 * @return The references to the policies that are included in this consent 672 * scope. Policies may be organizational, but are often defined 673 * jurisdictionally, or in law. 674 */ 675 public String getUri() { 676 return this.uri == null ? null : this.uri.getValue(); 677 } 678 679 /** 680 * @param value The references to the policies that are included in this consent 681 * scope. Policies may be organizational, but are often defined 682 * jurisdictionally, or in law. 683 */ 684 public ConsentPolicyComponent setUri(String value) { 685 if (Utilities.noString(value)) 686 this.uri = null; 687 else { 688 if (this.uri == null) 689 this.uri = new UriType(); 690 this.uri.setValue(value); 691 } 692 return this; 693 } 694 695 protected void listChildren(List<Property> children) { 696 super.listChildren(children); 697 children.add(new Property("authority", "uri", 698 "Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives.", 699 0, 1, authority)); 700 children.add(new Property("uri", "uri", 701 "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.", 702 0, 1, uri)); 703 } 704 705 @Override 706 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 707 switch (_hash) { 708 case 1475610435: 709 /* authority */ return new Property("authority", "uri", 710 "Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives.", 711 0, 1, authority); 712 case 116076: 713 /* uri */ return new Property("uri", "uri", 714 "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.", 715 0, 1, uri); 716 default: 717 return super.getNamedProperty(_hash, _name, _checkValid); 718 } 719 720 } 721 722 @Override 723 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 724 switch (hash) { 725 case 1475610435: 726 /* authority */ return this.authority == null ? new Base[0] : new Base[] { this.authority }; // UriType 727 case 116076: 728 /* uri */ return this.uri == null ? new Base[0] : new Base[] { this.uri }; // UriType 729 default: 730 return super.getProperty(hash, name, checkValid); 731 } 732 733 } 734 735 @Override 736 public Base setProperty(int hash, String name, Base value) throws FHIRException { 737 switch (hash) { 738 case 1475610435: // authority 739 this.authority = castToUri(value); // UriType 740 return value; 741 case 116076: // uri 742 this.uri = castToUri(value); // UriType 743 return value; 744 default: 745 return super.setProperty(hash, name, value); 746 } 747 748 } 749 750 @Override 751 public Base setProperty(String name, Base value) throws FHIRException { 752 if (name.equals("authority")) { 753 this.authority = castToUri(value); // UriType 754 } else if (name.equals("uri")) { 755 this.uri = castToUri(value); // UriType 756 } else 757 return super.setProperty(name, value); 758 return value; 759 } 760 761 @Override 762 public void removeChild(String name, Base value) throws FHIRException { 763 if (name.equals("authority")) { 764 this.authority = null; 765 } else if (name.equals("uri")) { 766 this.uri = null; 767 } else 768 super.removeChild(name, value); 769 770 } 771 772 @Override 773 public Base makeProperty(int hash, String name) throws FHIRException { 774 switch (hash) { 775 case 1475610435: 776 return getAuthorityElement(); 777 case 116076: 778 return getUriElement(); 779 default: 780 return super.makeProperty(hash, name); 781 } 782 783 } 784 785 @Override 786 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 787 switch (hash) { 788 case 1475610435: 789 /* authority */ return new String[] { "uri" }; 790 case 116076: 791 /* uri */ return new String[] { "uri" }; 792 default: 793 return super.getTypesForProperty(hash, name); 794 } 795 796 } 797 798 @Override 799 public Base addChild(String name) throws FHIRException { 800 if (name.equals("authority")) { 801 throw new FHIRException("Cannot call addChild on a singleton property Consent.authority"); 802 } else if (name.equals("uri")) { 803 throw new FHIRException("Cannot call addChild on a singleton property Consent.uri"); 804 } else 805 return super.addChild(name); 806 } 807 808 public ConsentPolicyComponent copy() { 809 ConsentPolicyComponent dst = new ConsentPolicyComponent(); 810 copyValues(dst); 811 return dst; 812 } 813 814 public void copyValues(ConsentPolicyComponent dst) { 815 super.copyValues(dst); 816 dst.authority = authority == null ? null : authority.copy(); 817 dst.uri = uri == null ? null : uri.copy(); 818 } 819 820 @Override 821 public boolean equalsDeep(Base other_) { 822 if (!super.equalsDeep(other_)) 823 return false; 824 if (!(other_ instanceof ConsentPolicyComponent)) 825 return false; 826 ConsentPolicyComponent o = (ConsentPolicyComponent) other_; 827 return compareDeep(authority, o.authority, true) && compareDeep(uri, o.uri, true); 828 } 829 830 @Override 831 public boolean equalsShallow(Base other_) { 832 if (!super.equalsShallow(other_)) 833 return false; 834 if (!(other_ instanceof ConsentPolicyComponent)) 835 return false; 836 ConsentPolicyComponent o = (ConsentPolicyComponent) other_; 837 return compareValues(authority, o.authority, true) && compareValues(uri, o.uri, true); 838 } 839 840 public boolean isEmpty() { 841 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(authority, uri); 842 } 843 844 public String fhirType() { 845 return "Consent.policy"; 846 847 } 848 849 } 850 851 @Block() 852 public static class ConsentVerificationComponent extends BackboneElement implements IBaseBackboneElement { 853 /** 854 * Has the instruction been verified. 855 */ 856 @Child(name = "verified", type = { 857 BooleanType.class }, order = 1, min = 1, max = 1, modifier = false, summary = true) 858 @Description(shortDefinition = "Has been verified", formalDefinition = "Has the instruction been verified.") 859 protected BooleanType verified; 860 861 /** 862 * Who verified the instruction (Patient, Relative or other Authorized Person). 863 */ 864 @Child(name = "verifiedWith", type = { Patient.class, 865 RelatedPerson.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 866 @Description(shortDefinition = "Person who verified", formalDefinition = "Who verified the instruction (Patient, Relative or other Authorized Person).") 867 protected Reference verifiedWith; 868 869 /** 870 * The actual object that is the target of the reference (Who verified the 871 * instruction (Patient, Relative or other Authorized Person).) 872 */ 873 protected Resource verifiedWithTarget; 874 875 /** 876 * Date verification was collected. 877 */ 878 @Child(name = "verificationDate", type = { 879 DateTimeType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 880 @Description(shortDefinition = "When consent verified", formalDefinition = "Date verification was collected.") 881 protected DateTimeType verificationDate; 882 883 private static final long serialVersionUID = 1305161458L; 884 885 /** 886 * Constructor 887 */ 888 public ConsentVerificationComponent() { 889 super(); 890 } 891 892 /** 893 * Constructor 894 */ 895 public ConsentVerificationComponent(BooleanType verified) { 896 super(); 897 this.verified = verified; 898 } 899 900 /** 901 * @return {@link #verified} (Has the instruction been verified.). This is the 902 * underlying object with id, value and extensions. The accessor 903 * "getVerified" gives direct access to the value 904 */ 905 public BooleanType getVerifiedElement() { 906 if (this.verified == null) 907 if (Configuration.errorOnAutoCreate()) 908 throw new Error("Attempt to auto-create ConsentVerificationComponent.verified"); 909 else if (Configuration.doAutoCreate()) 910 this.verified = new BooleanType(); // bb 911 return this.verified; 912 } 913 914 public boolean hasVerifiedElement() { 915 return this.verified != null && !this.verified.isEmpty(); 916 } 917 918 public boolean hasVerified() { 919 return this.verified != null && !this.verified.isEmpty(); 920 } 921 922 /** 923 * @param value {@link #verified} (Has the instruction been verified.). This is 924 * the underlying object with id, value and extensions. The 925 * accessor "getVerified" gives direct access to the value 926 */ 927 public ConsentVerificationComponent setVerifiedElement(BooleanType value) { 928 this.verified = value; 929 return this; 930 } 931 932 /** 933 * @return Has the instruction been verified. 934 */ 935 public boolean getVerified() { 936 return this.verified == null || this.verified.isEmpty() ? false : this.verified.getValue(); 937 } 938 939 /** 940 * @param value Has the instruction been verified. 941 */ 942 public ConsentVerificationComponent setVerified(boolean value) { 943 if (this.verified == null) 944 this.verified = new BooleanType(); 945 this.verified.setValue(value); 946 return this; 947 } 948 949 /** 950 * @return {@link #verifiedWith} (Who verified the instruction (Patient, 951 * Relative or other Authorized Person).) 952 */ 953 public Reference getVerifiedWith() { 954 if (this.verifiedWith == null) 955 if (Configuration.errorOnAutoCreate()) 956 throw new Error("Attempt to auto-create ConsentVerificationComponent.verifiedWith"); 957 else if (Configuration.doAutoCreate()) 958 this.verifiedWith = new Reference(); // cc 959 return this.verifiedWith; 960 } 961 962 public boolean hasVerifiedWith() { 963 return this.verifiedWith != null && !this.verifiedWith.isEmpty(); 964 } 965 966 /** 967 * @param value {@link #verifiedWith} (Who verified the instruction (Patient, 968 * Relative or other Authorized Person).) 969 */ 970 public ConsentVerificationComponent setVerifiedWith(Reference value) { 971 this.verifiedWith = value; 972 return this; 973 } 974 975 /** 976 * @return {@link #verifiedWith} The actual object that is the target of the 977 * reference. The reference library doesn't populate this, but you can 978 * use it to hold the resource if you resolve it. (Who verified the 979 * instruction (Patient, Relative or other Authorized Person).) 980 */ 981 public Resource getVerifiedWithTarget() { 982 return this.verifiedWithTarget; 983 } 984 985 /** 986 * @param value {@link #verifiedWith} The actual object that is the target of 987 * the reference. The reference library doesn't use these, but you 988 * can use it to hold the resource if you resolve it. (Who verified 989 * the instruction (Patient, Relative or other Authorized Person).) 990 */ 991 public ConsentVerificationComponent setVerifiedWithTarget(Resource value) { 992 this.verifiedWithTarget = value; 993 return this; 994 } 995 996 /** 997 * @return {@link #verificationDate} (Date verification was collected.). This is 998 * the underlying object with id, value and extensions. The accessor 999 * "getVerificationDate" gives direct access to the value 1000 */ 1001 public DateTimeType getVerificationDateElement() { 1002 if (this.verificationDate == null) 1003 if (Configuration.errorOnAutoCreate()) 1004 throw new Error("Attempt to auto-create ConsentVerificationComponent.verificationDate"); 1005 else if (Configuration.doAutoCreate()) 1006 this.verificationDate = new DateTimeType(); // bb 1007 return this.verificationDate; 1008 } 1009 1010 public boolean hasVerificationDateElement() { 1011 return this.verificationDate != null && !this.verificationDate.isEmpty(); 1012 } 1013 1014 public boolean hasVerificationDate() { 1015 return this.verificationDate != null && !this.verificationDate.isEmpty(); 1016 } 1017 1018 /** 1019 * @param value {@link #verificationDate} (Date verification was collected.). 1020 * This is the underlying object with id, value and extensions. The 1021 * accessor "getVerificationDate" gives direct access to the value 1022 */ 1023 public ConsentVerificationComponent setVerificationDateElement(DateTimeType value) { 1024 this.verificationDate = value; 1025 return this; 1026 } 1027 1028 /** 1029 * @return Date verification was collected. 1030 */ 1031 public Date getVerificationDate() { 1032 return this.verificationDate == null ? null : this.verificationDate.getValue(); 1033 } 1034 1035 /** 1036 * @param value Date verification was collected. 1037 */ 1038 public ConsentVerificationComponent setVerificationDate(Date value) { 1039 if (value == null) 1040 this.verificationDate = null; 1041 else { 1042 if (this.verificationDate == null) 1043 this.verificationDate = new DateTimeType(); 1044 this.verificationDate.setValue(value); 1045 } 1046 return this; 1047 } 1048 1049 protected void listChildren(List<Property> children) { 1050 super.listChildren(children); 1051 children.add(new Property("verified", "boolean", "Has the instruction been verified.", 0, 1, verified)); 1052 children.add(new Property("verifiedWith", "Reference(Patient|RelatedPerson)", 1053 "Who verified the instruction (Patient, Relative or other Authorized Person).", 0, 1, verifiedWith)); 1054 children.add( 1055 new Property("verificationDate", "dateTime", "Date verification was collected.", 0, 1, verificationDate)); 1056 } 1057 1058 @Override 1059 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1060 switch (_hash) { 1061 case -1994383672: 1062 /* verified */ return new Property("verified", "boolean", "Has the instruction been verified.", 0, 1, verified); 1063 case -1425236050: 1064 /* verifiedWith */ return new Property("verifiedWith", "Reference(Patient|RelatedPerson)", 1065 "Who verified the instruction (Patient, Relative or other Authorized Person).", 0, 1, verifiedWith); 1066 case 642233449: 1067 /* verificationDate */ return new Property("verificationDate", "dateTime", "Date verification was collected.", 1068 0, 1, verificationDate); 1069 default: 1070 return super.getNamedProperty(_hash, _name, _checkValid); 1071 } 1072 1073 } 1074 1075 @Override 1076 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1077 switch (hash) { 1078 case -1994383672: 1079 /* verified */ return this.verified == null ? new Base[0] : new Base[] { this.verified }; // BooleanType 1080 case -1425236050: 1081 /* verifiedWith */ return this.verifiedWith == null ? new Base[0] : new Base[] { this.verifiedWith }; // Reference 1082 case 642233449: 1083 /* verificationDate */ return this.verificationDate == null ? new Base[0] 1084 : new Base[] { this.verificationDate }; // DateTimeType 1085 default: 1086 return super.getProperty(hash, name, checkValid); 1087 } 1088 1089 } 1090 1091 @Override 1092 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1093 switch (hash) { 1094 case -1994383672: // verified 1095 this.verified = castToBoolean(value); // BooleanType 1096 return value; 1097 case -1425236050: // verifiedWith 1098 this.verifiedWith = castToReference(value); // Reference 1099 return value; 1100 case 642233449: // verificationDate 1101 this.verificationDate = castToDateTime(value); // DateTimeType 1102 return value; 1103 default: 1104 return super.setProperty(hash, name, value); 1105 } 1106 1107 } 1108 1109 @Override 1110 public Base setProperty(String name, Base value) throws FHIRException { 1111 if (name.equals("verified")) { 1112 this.verified = castToBoolean(value); // BooleanType 1113 } else if (name.equals("verifiedWith")) { 1114 this.verifiedWith = castToReference(value); // Reference 1115 } else if (name.equals("verificationDate")) { 1116 this.verificationDate = castToDateTime(value); // DateTimeType 1117 } else 1118 return super.setProperty(name, value); 1119 return value; 1120 } 1121 1122 @Override 1123 public void removeChild(String name, Base value) throws FHIRException { 1124 if (name.equals("verified")) { 1125 this.verified = null; 1126 } else if (name.equals("verifiedWith")) { 1127 this.verifiedWith = null; 1128 } else if (name.equals("verificationDate")) { 1129 this.verificationDate = null; 1130 } else 1131 super.removeChild(name, value); 1132 1133 } 1134 1135 @Override 1136 public Base makeProperty(int hash, String name) throws FHIRException { 1137 switch (hash) { 1138 case -1994383672: 1139 return getVerifiedElement(); 1140 case -1425236050: 1141 return getVerifiedWith(); 1142 case 642233449: 1143 return getVerificationDateElement(); 1144 default: 1145 return super.makeProperty(hash, name); 1146 } 1147 1148 } 1149 1150 @Override 1151 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1152 switch (hash) { 1153 case -1994383672: 1154 /* verified */ return new String[] { "boolean" }; 1155 case -1425236050: 1156 /* verifiedWith */ return new String[] { "Reference" }; 1157 case 642233449: 1158 /* verificationDate */ return new String[] { "dateTime" }; 1159 default: 1160 return super.getTypesForProperty(hash, name); 1161 } 1162 1163 } 1164 1165 @Override 1166 public Base addChild(String name) throws FHIRException { 1167 if (name.equals("verified")) { 1168 throw new FHIRException("Cannot call addChild on a singleton property Consent.verified"); 1169 } else if (name.equals("verifiedWith")) { 1170 this.verifiedWith = new Reference(); 1171 return this.verifiedWith; 1172 } else if (name.equals("verificationDate")) { 1173 throw new FHIRException("Cannot call addChild on a singleton property Consent.verificationDate"); 1174 } else 1175 return super.addChild(name); 1176 } 1177 1178 public ConsentVerificationComponent copy() { 1179 ConsentVerificationComponent dst = new ConsentVerificationComponent(); 1180 copyValues(dst); 1181 return dst; 1182 } 1183 1184 public void copyValues(ConsentVerificationComponent dst) { 1185 super.copyValues(dst); 1186 dst.verified = verified == null ? null : verified.copy(); 1187 dst.verifiedWith = verifiedWith == null ? null : verifiedWith.copy(); 1188 dst.verificationDate = verificationDate == null ? null : verificationDate.copy(); 1189 } 1190 1191 @Override 1192 public boolean equalsDeep(Base other_) { 1193 if (!super.equalsDeep(other_)) 1194 return false; 1195 if (!(other_ instanceof ConsentVerificationComponent)) 1196 return false; 1197 ConsentVerificationComponent o = (ConsentVerificationComponent) other_; 1198 return compareDeep(verified, o.verified, true) && compareDeep(verifiedWith, o.verifiedWith, true) 1199 && compareDeep(verificationDate, o.verificationDate, true); 1200 } 1201 1202 @Override 1203 public boolean equalsShallow(Base other_) { 1204 if (!super.equalsShallow(other_)) 1205 return false; 1206 if (!(other_ instanceof ConsentVerificationComponent)) 1207 return false; 1208 ConsentVerificationComponent o = (ConsentVerificationComponent) other_; 1209 return compareValues(verified, o.verified, true) && compareValues(verificationDate, o.verificationDate, true); 1210 } 1211 1212 public boolean isEmpty() { 1213 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(verified, verifiedWith, verificationDate); 1214 } 1215 1216 public String fhirType() { 1217 return "Consent.verification"; 1218 1219 } 1220 1221 } 1222 1223 @Block() 1224 public static class ProvisionComponent extends BackboneElement implements IBaseBackboneElement { 1225 /** 1226 * Action to take - permit or deny - when the rule conditions are met. Not 1227 * permitted in root rule, required in all nested rules. 1228 */ 1229 @Child(name = "type", type = { CodeType.class }, order = 1, min = 0, max = 1, modifier = false, summary = true) 1230 @Description(shortDefinition = "deny | permit", formalDefinition = "Action to take - permit or deny - when the rule conditions are met. Not permitted in root rule, required in all nested rules.") 1231 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-provision-type") 1232 protected Enumeration<ConsentProvisionType> type; 1233 1234 /** 1235 * The timeframe in this rule is valid. 1236 */ 1237 @Child(name = "period", type = { Period.class }, order = 2, min = 0, max = 1, modifier = false, summary = true) 1238 @Description(shortDefinition = "Timeframe for this rule", formalDefinition = "The timeframe in this rule is valid.") 1239 protected Period period; 1240 1241 /** 1242 * Who or what is controlled by this rule. Use group to identify a set of actors 1243 * by some property they share (e.g. 'admitting officers'). 1244 */ 1245 @Child(name = "actor", type = {}, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 1246 @Description(shortDefinition = "Who|what controlled by this rule (or group, by role)", formalDefinition = "Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers').") 1247 protected List<provisionActorComponent> actor; 1248 1249 /** 1250 * Actions controlled by this Rule. 1251 */ 1252 @Child(name = "action", type = { 1253 CodeableConcept.class }, order = 4, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1254 @Description(shortDefinition = "Actions controlled by this rule", formalDefinition = "Actions controlled by this Rule.") 1255 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-action") 1256 protected List<CodeableConcept> action; 1257 1258 /** 1259 * A security label, comprised of 0..* security label fields (Privacy tags), 1260 * which define which resources are controlled by this exception. 1261 */ 1262 @Child(name = "securityLabel", type = { 1263 Coding.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1264 @Description(shortDefinition = "Security Labels that define affected resources", formalDefinition = "A security label, comprised of 0..* security label fields (Privacy tags), which define which resources are controlled by this exception.") 1265 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/security-labels") 1266 protected List<Coding> securityLabel; 1267 1268 /** 1269 * The context of the activities a user is taking - why the user is accessing 1270 * the data - that are controlled by this rule. 1271 */ 1272 @Child(name = "purpose", type = { 1273 Coding.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1274 @Description(shortDefinition = "Context of activities covered by this rule", formalDefinition = "The context of the activities a user is taking - why the user is accessing the data - that are controlled by this rule.") 1275 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://terminology.hl7.org/ValueSet/v3-PurposeOfUse") 1276 protected List<Coding> purpose; 1277 1278 /** 1279 * The class of information covered by this rule. The type can be a FHIR 1280 * resource type, a profile on a type, or a CDA document, or some other type 1281 * that indicates what sort of information the consent relates to. 1282 */ 1283 @Child(name = "class", type = { 1284 Coding.class }, order = 7, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1285 @Description(shortDefinition = "e.g. Resource Type, Profile, CDA, etc.", formalDefinition = "The class of information covered by this rule. The type can be a FHIR resource type, a profile on a type, or a CDA document, or some other type that indicates what sort of information the consent relates to.") 1286 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-content-class") 1287 protected List<Coding> class_; 1288 1289 /** 1290 * If this code is found in an instance, then the rule applies. 1291 */ 1292 @Child(name = "code", type = { 1293 CodeableConcept.class }, order = 8, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1294 @Description(shortDefinition = "e.g. LOINC or SNOMED CT code, etc. in the content", formalDefinition = "If this code is found in an instance, then the rule applies.") 1295 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-content-code") 1296 protected List<CodeableConcept> code; 1297 1298 /** 1299 * Clinical or Operational Relevant period of time that bounds the data 1300 * controlled by this rule. 1301 */ 1302 @Child(name = "dataPeriod", type = { Period.class }, order = 9, min = 0, max = 1, modifier = false, summary = true) 1303 @Description(shortDefinition = "Timeframe for data controlled by this rule", formalDefinition = "Clinical or Operational Relevant period of time that bounds the data controlled by this rule.") 1304 protected Period dataPeriod; 1305 1306 /** 1307 * The resources controlled by this rule if specific resources are referenced. 1308 */ 1309 @Child(name = "data", type = {}, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1310 @Description(shortDefinition = "Data controlled by this rule", formalDefinition = "The resources controlled by this rule if specific resources are referenced.") 1311 protected List<provisionDataComponent> data; 1312 1313 /** 1314 * Rules which provide exceptions to the base rule or subrules. 1315 */ 1316 @Child(name = "provision", type = { 1317 ProvisionComponent.class }, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 1318 @Description(shortDefinition = "Nested Exception Rules", formalDefinition = "Rules which provide exceptions to the base rule or subrules.") 1319 protected List<ProvisionComponent> provision; 1320 1321 private static final long serialVersionUID = -1280172451L; 1322 1323 /** 1324 * Constructor 1325 */ 1326 public ProvisionComponent() { 1327 super(); 1328 } 1329 1330 /** 1331 * @return {@link #type} (Action to take - permit or deny - when the rule 1332 * conditions are met. Not permitted in root rule, required in all 1333 * nested rules.). This is the underlying object with id, value and 1334 * extensions. The accessor "getType" gives direct access to the value 1335 */ 1336 public Enumeration<ConsentProvisionType> getTypeElement() { 1337 if (this.type == null) 1338 if (Configuration.errorOnAutoCreate()) 1339 throw new Error("Attempt to auto-create provisionComponent.type"); 1340 else if (Configuration.doAutoCreate()) 1341 this.type = new Enumeration<ConsentProvisionType>(new ConsentProvisionTypeEnumFactory()); // bb 1342 return this.type; 1343 } 1344 1345 public boolean hasTypeElement() { 1346 return this.type != null && !this.type.isEmpty(); 1347 } 1348 1349 public boolean hasType() { 1350 return this.type != null && !this.type.isEmpty(); 1351 } 1352 1353 /** 1354 * @param value {@link #type} (Action to take - permit or deny - when the rule 1355 * conditions are met. Not permitted in root rule, required in all 1356 * nested rules.). This is the underlying object with id, value and 1357 * extensions. The accessor "getType" gives direct access to the 1358 * value 1359 */ 1360 public ProvisionComponent setTypeElement(Enumeration<ConsentProvisionType> value) { 1361 this.type = value; 1362 return this; 1363 } 1364 1365 /** 1366 * @return Action to take - permit or deny - when the rule conditions are met. 1367 * Not permitted in root rule, required in all nested rules. 1368 */ 1369 public ConsentProvisionType getType() { 1370 return this.type == null ? null : this.type.getValue(); 1371 } 1372 1373 /** 1374 * @param value Action to take - permit or deny - when the rule conditions are 1375 * met. Not permitted in root rule, required in all nested rules. 1376 */ 1377 public ProvisionComponent setType(ConsentProvisionType value) { 1378 if (value == null) 1379 this.type = null; 1380 else { 1381 if (this.type == null) 1382 this.type = new Enumeration<ConsentProvisionType>(new ConsentProvisionTypeEnumFactory()); 1383 this.type.setValue(value); 1384 } 1385 return this; 1386 } 1387 1388 /** 1389 * @return {@link #period} (The timeframe in this rule is valid.) 1390 */ 1391 public Period getPeriod() { 1392 if (this.period == null) 1393 if (Configuration.errorOnAutoCreate()) 1394 throw new Error("Attempt to auto-create provisionComponent.period"); 1395 else if (Configuration.doAutoCreate()) 1396 this.period = new Period(); // cc 1397 return this.period; 1398 } 1399 1400 public boolean hasPeriod() { 1401 return this.period != null && !this.period.isEmpty(); 1402 } 1403 1404 /** 1405 * @param value {@link #period} (The timeframe in this rule is valid.) 1406 */ 1407 public ProvisionComponent setPeriod(Period value) { 1408 this.period = value; 1409 return this; 1410 } 1411 1412 /** 1413 * @return {@link #actor} (Who or what is controlled by this rule. Use group to 1414 * identify a set of actors by some property they share (e.g. 'admitting 1415 * officers').) 1416 */ 1417 public List<provisionActorComponent> getActor() { 1418 if (this.actor == null) 1419 this.actor = new ArrayList<provisionActorComponent>(); 1420 return this.actor; 1421 } 1422 1423 /** 1424 * @return Returns a reference to <code>this</code> for easy method chaining 1425 */ 1426 public ProvisionComponent setActor(List<provisionActorComponent> theActor) { 1427 this.actor = theActor; 1428 return this; 1429 } 1430 1431 public boolean hasActor() { 1432 if (this.actor == null) 1433 return false; 1434 for (provisionActorComponent item : this.actor) 1435 if (!item.isEmpty()) 1436 return true; 1437 return false; 1438 } 1439 1440 public provisionActorComponent addActor() { // 3 1441 provisionActorComponent t = new provisionActorComponent(); 1442 if (this.actor == null) 1443 this.actor = new ArrayList<provisionActorComponent>(); 1444 this.actor.add(t); 1445 return t; 1446 } 1447 1448 public ProvisionComponent addActor(provisionActorComponent t) { // 3 1449 if (t == null) 1450 return this; 1451 if (this.actor == null) 1452 this.actor = new ArrayList<provisionActorComponent>(); 1453 this.actor.add(t); 1454 return this; 1455 } 1456 1457 /** 1458 * @return The first repetition of repeating field {@link #actor}, creating it 1459 * if it does not already exist 1460 */ 1461 public provisionActorComponent getActorFirstRep() { 1462 if (getActor().isEmpty()) { 1463 addActor(); 1464 } 1465 return getActor().get(0); 1466 } 1467 1468 /** 1469 * @return {@link #action} (Actions controlled by this Rule.) 1470 */ 1471 public List<CodeableConcept> getAction() { 1472 if (this.action == null) 1473 this.action = new ArrayList<CodeableConcept>(); 1474 return this.action; 1475 } 1476 1477 /** 1478 * @return Returns a reference to <code>this</code> for easy method chaining 1479 */ 1480 public ProvisionComponent setAction(List<CodeableConcept> theAction) { 1481 this.action = theAction; 1482 return this; 1483 } 1484 1485 public boolean hasAction() { 1486 if (this.action == null) 1487 return false; 1488 for (CodeableConcept item : this.action) 1489 if (!item.isEmpty()) 1490 return true; 1491 return false; 1492 } 1493 1494 public CodeableConcept addAction() { // 3 1495 CodeableConcept t = new CodeableConcept(); 1496 if (this.action == null) 1497 this.action = new ArrayList<CodeableConcept>(); 1498 this.action.add(t); 1499 return t; 1500 } 1501 1502 public ProvisionComponent addAction(CodeableConcept t) { // 3 1503 if (t == null) 1504 return this; 1505 if (this.action == null) 1506 this.action = new ArrayList<CodeableConcept>(); 1507 this.action.add(t); 1508 return this; 1509 } 1510 1511 /** 1512 * @return The first repetition of repeating field {@link #action}, creating it 1513 * if it does not already exist 1514 */ 1515 public CodeableConcept getActionFirstRep() { 1516 if (getAction().isEmpty()) { 1517 addAction(); 1518 } 1519 return getAction().get(0); 1520 } 1521 1522 /** 1523 * @return {@link #securityLabel} (A security label, comprised of 0..* security 1524 * label fields (Privacy tags), which define which resources are 1525 * controlled by this exception.) 1526 */ 1527 public List<Coding> getSecurityLabel() { 1528 if (this.securityLabel == null) 1529 this.securityLabel = new ArrayList<Coding>(); 1530 return this.securityLabel; 1531 } 1532 1533 /** 1534 * @return Returns a reference to <code>this</code> for easy method chaining 1535 */ 1536 public ProvisionComponent setSecurityLabel(List<Coding> theSecurityLabel) { 1537 this.securityLabel = theSecurityLabel; 1538 return this; 1539 } 1540 1541 public boolean hasSecurityLabel() { 1542 if (this.securityLabel == null) 1543 return false; 1544 for (Coding item : this.securityLabel) 1545 if (!item.isEmpty()) 1546 return true; 1547 return false; 1548 } 1549 1550 public Coding addSecurityLabel() { // 3 1551 Coding t = new Coding(); 1552 if (this.securityLabel == null) 1553 this.securityLabel = new ArrayList<Coding>(); 1554 this.securityLabel.add(t); 1555 return t; 1556 } 1557 1558 public ProvisionComponent addSecurityLabel(Coding t) { // 3 1559 if (t == null) 1560 return this; 1561 if (this.securityLabel == null) 1562 this.securityLabel = new ArrayList<Coding>(); 1563 this.securityLabel.add(t); 1564 return this; 1565 } 1566 1567 /** 1568 * @return The first repetition of repeating field {@link #securityLabel}, 1569 * creating it if it does not already exist 1570 */ 1571 public Coding getSecurityLabelFirstRep() { 1572 if (getSecurityLabel().isEmpty()) { 1573 addSecurityLabel(); 1574 } 1575 return getSecurityLabel().get(0); 1576 } 1577 1578 /** 1579 * @return {@link #purpose} (The context of the activities a user is taking - 1580 * why the user is accessing the data - that are controlled by this 1581 * rule.) 1582 */ 1583 public List<Coding> getPurpose() { 1584 if (this.purpose == null) 1585 this.purpose = new ArrayList<Coding>(); 1586 return this.purpose; 1587 } 1588 1589 /** 1590 * @return Returns a reference to <code>this</code> for easy method chaining 1591 */ 1592 public ProvisionComponent setPurpose(List<Coding> thePurpose) { 1593 this.purpose = thePurpose; 1594 return this; 1595 } 1596 1597 public boolean hasPurpose() { 1598 if (this.purpose == null) 1599 return false; 1600 for (Coding item : this.purpose) 1601 if (!item.isEmpty()) 1602 return true; 1603 return false; 1604 } 1605 1606 public Coding addPurpose() { // 3 1607 Coding t = new Coding(); 1608 if (this.purpose == null) 1609 this.purpose = new ArrayList<Coding>(); 1610 this.purpose.add(t); 1611 return t; 1612 } 1613 1614 public ProvisionComponent addPurpose(Coding t) { // 3 1615 if (t == null) 1616 return this; 1617 if (this.purpose == null) 1618 this.purpose = new ArrayList<Coding>(); 1619 this.purpose.add(t); 1620 return this; 1621 } 1622 1623 /** 1624 * @return The first repetition of repeating field {@link #purpose}, creating it 1625 * if it does not already exist 1626 */ 1627 public Coding getPurposeFirstRep() { 1628 if (getPurpose().isEmpty()) { 1629 addPurpose(); 1630 } 1631 return getPurpose().get(0); 1632 } 1633 1634 /** 1635 * @return {@link #class_} (The class of information covered by this rule. The 1636 * type can be a FHIR resource type, a profile on a type, or a CDA 1637 * document, or some other type that indicates what sort of information 1638 * the consent relates to.) 1639 */ 1640 public List<Coding> getClass_() { 1641 if (this.class_ == null) 1642 this.class_ = new ArrayList<Coding>(); 1643 return this.class_; 1644 } 1645 1646 /** 1647 * @return Returns a reference to <code>this</code> for easy method chaining 1648 */ 1649 public ProvisionComponent setClass_(List<Coding> theClass_) { 1650 this.class_ = theClass_; 1651 return this; 1652 } 1653 1654 public boolean hasClass_() { 1655 if (this.class_ == null) 1656 return false; 1657 for (Coding item : this.class_) 1658 if (!item.isEmpty()) 1659 return true; 1660 return false; 1661 } 1662 1663 public Coding addClass_() { // 3 1664 Coding t = new Coding(); 1665 if (this.class_ == null) 1666 this.class_ = new ArrayList<Coding>(); 1667 this.class_.add(t); 1668 return t; 1669 } 1670 1671 public ProvisionComponent addClass_(Coding t) { // 3 1672 if (t == null) 1673 return this; 1674 if (this.class_ == null) 1675 this.class_ = new ArrayList<Coding>(); 1676 this.class_.add(t); 1677 return this; 1678 } 1679 1680 /** 1681 * @return The first repetition of repeating field {@link #class_}, creating it 1682 * if it does not already exist 1683 */ 1684 public Coding getClass_FirstRep() { 1685 if (getClass_().isEmpty()) { 1686 addClass_(); 1687 } 1688 return getClass_().get(0); 1689 } 1690 1691 /** 1692 * @return {@link #code} (If this code is found in an instance, then the rule 1693 * applies.) 1694 */ 1695 public List<CodeableConcept> getCode() { 1696 if (this.code == null) 1697 this.code = new ArrayList<CodeableConcept>(); 1698 return this.code; 1699 } 1700 1701 /** 1702 * @return Returns a reference to <code>this</code> for easy method chaining 1703 */ 1704 public ProvisionComponent setCode(List<CodeableConcept> theCode) { 1705 this.code = theCode; 1706 return this; 1707 } 1708 1709 public boolean hasCode() { 1710 if (this.code == null) 1711 return false; 1712 for (CodeableConcept item : this.code) 1713 if (!item.isEmpty()) 1714 return true; 1715 return false; 1716 } 1717 1718 public CodeableConcept addCode() { // 3 1719 CodeableConcept t = new CodeableConcept(); 1720 if (this.code == null) 1721 this.code = new ArrayList<CodeableConcept>(); 1722 this.code.add(t); 1723 return t; 1724 } 1725 1726 public ProvisionComponent addCode(CodeableConcept t) { // 3 1727 if (t == null) 1728 return this; 1729 if (this.code == null) 1730 this.code = new ArrayList<CodeableConcept>(); 1731 this.code.add(t); 1732 return this; 1733 } 1734 1735 /** 1736 * @return The first repetition of repeating field {@link #code}, creating it if 1737 * it does not already exist 1738 */ 1739 public CodeableConcept getCodeFirstRep() { 1740 if (getCode().isEmpty()) { 1741 addCode(); 1742 } 1743 return getCode().get(0); 1744 } 1745 1746 /** 1747 * @return {@link #dataPeriod} (Clinical or Operational Relevant period of time 1748 * that bounds the data controlled by this rule.) 1749 */ 1750 public Period getDataPeriod() { 1751 if (this.dataPeriod == null) 1752 if (Configuration.errorOnAutoCreate()) 1753 throw new Error("Attempt to auto-create provisionComponent.dataPeriod"); 1754 else if (Configuration.doAutoCreate()) 1755 this.dataPeriod = new Period(); // cc 1756 return this.dataPeriod; 1757 } 1758 1759 public boolean hasDataPeriod() { 1760 return this.dataPeriod != null && !this.dataPeriod.isEmpty(); 1761 } 1762 1763 /** 1764 * @param value {@link #dataPeriod} (Clinical or Operational Relevant period of 1765 * time that bounds the data controlled by this rule.) 1766 */ 1767 public ProvisionComponent setDataPeriod(Period value) { 1768 this.dataPeriod = value; 1769 return this; 1770 } 1771 1772 /** 1773 * @return {@link #data} (The resources controlled by this rule if specific 1774 * resources are referenced.) 1775 */ 1776 public List<provisionDataComponent> getData() { 1777 if (this.data == null) 1778 this.data = new ArrayList<provisionDataComponent>(); 1779 return this.data; 1780 } 1781 1782 /** 1783 * @return Returns a reference to <code>this</code> for easy method chaining 1784 */ 1785 public ProvisionComponent setData(List<provisionDataComponent> theData) { 1786 this.data = theData; 1787 return this; 1788 } 1789 1790 public boolean hasData() { 1791 if (this.data == null) 1792 return false; 1793 for (provisionDataComponent item : this.data) 1794 if (!item.isEmpty()) 1795 return true; 1796 return false; 1797 } 1798 1799 public provisionDataComponent addData() { // 3 1800 provisionDataComponent t = new provisionDataComponent(); 1801 if (this.data == null) 1802 this.data = new ArrayList<provisionDataComponent>(); 1803 this.data.add(t); 1804 return t; 1805 } 1806 1807 public ProvisionComponent addData(provisionDataComponent t) { // 3 1808 if (t == null) 1809 return this; 1810 if (this.data == null) 1811 this.data = new ArrayList<provisionDataComponent>(); 1812 this.data.add(t); 1813 return this; 1814 } 1815 1816 /** 1817 * @return The first repetition of repeating field {@link #data}, creating it if 1818 * it does not already exist 1819 */ 1820 public provisionDataComponent getDataFirstRep() { 1821 if (getData().isEmpty()) { 1822 addData(); 1823 } 1824 return getData().get(0); 1825 } 1826 1827 /** 1828 * @return {@link #provision} (Rules which provide exceptions to the base rule 1829 * or subrules.) 1830 */ 1831 public List<ProvisionComponent> getProvision() { 1832 if (this.provision == null) 1833 this.provision = new ArrayList<ProvisionComponent>(); 1834 return this.provision; 1835 } 1836 1837 /** 1838 * @return Returns a reference to <code>this</code> for easy method chaining 1839 */ 1840 public ProvisionComponent setProvision(List<ProvisionComponent> theProvision) { 1841 this.provision = theProvision; 1842 return this; 1843 } 1844 1845 public boolean hasProvision() { 1846 if (this.provision == null) 1847 return false; 1848 for (ProvisionComponent item : this.provision) 1849 if (!item.isEmpty()) 1850 return true; 1851 return false; 1852 } 1853 1854 public ProvisionComponent addProvision() { // 3 1855 ProvisionComponent t = new ProvisionComponent(); 1856 if (this.provision == null) 1857 this.provision = new ArrayList<ProvisionComponent>(); 1858 this.provision.add(t); 1859 return t; 1860 } 1861 1862 public ProvisionComponent addProvision(ProvisionComponent t) { // 3 1863 if (t == null) 1864 return this; 1865 if (this.provision == null) 1866 this.provision = new ArrayList<ProvisionComponent>(); 1867 this.provision.add(t); 1868 return this; 1869 } 1870 1871 /** 1872 * @return The first repetition of repeating field {@link #provision}, creating 1873 * it if it does not already exist 1874 */ 1875 public ProvisionComponent getProvisionFirstRep() { 1876 if (getProvision().isEmpty()) { 1877 addProvision(); 1878 } 1879 return getProvision().get(0); 1880 } 1881 1882 protected void listChildren(List<Property> children) { 1883 super.listChildren(children); 1884 children.add(new Property("type", "code", 1885 "Action to take - permit or deny - when the rule conditions are met. Not permitted in root rule, required in all nested rules.", 1886 0, 1, type)); 1887 children.add(new Property("period", "Period", "The timeframe in this rule is valid.", 0, 1, period)); 1888 children.add(new Property("actor", "", 1889 "Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers').", 1890 0, java.lang.Integer.MAX_VALUE, actor)); 1891 children.add(new Property("action", "CodeableConcept", "Actions controlled by this Rule.", 0, 1892 java.lang.Integer.MAX_VALUE, action)); 1893 children.add(new Property("securityLabel", "Coding", 1894 "A security label, comprised of 0..* security label fields (Privacy tags), which define which resources are controlled by this exception.", 1895 0, java.lang.Integer.MAX_VALUE, securityLabel)); 1896 children.add(new Property("purpose", "Coding", 1897 "The context of the activities a user is taking - why the user is accessing the data - that are controlled by this rule.", 1898 0, java.lang.Integer.MAX_VALUE, purpose)); 1899 children.add(new Property("class", "Coding", 1900 "The class of information covered by this rule. The type can be a FHIR resource type, a profile on a type, or a CDA document, or some other type that indicates what sort of information the consent relates to.", 1901 0, java.lang.Integer.MAX_VALUE, class_)); 1902 children.add(new Property("code", "CodeableConcept", 1903 "If this code is found in an instance, then the rule applies.", 0, java.lang.Integer.MAX_VALUE, code)); 1904 children.add(new Property("dataPeriod", "Period", 1905 "Clinical or Operational Relevant period of time that bounds the data controlled by this rule.", 0, 1, 1906 dataPeriod)); 1907 children 1908 .add(new Property("data", "", "The resources controlled by this rule if specific resources are referenced.", 1909 0, java.lang.Integer.MAX_VALUE, data)); 1910 children.add(new Property("provision", "@Consent.provision", 1911 "Rules which provide exceptions to the base rule or subrules.", 0, java.lang.Integer.MAX_VALUE, provision)); 1912 } 1913 1914 @Override 1915 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1916 switch (_hash) { 1917 case 3575610: 1918 /* type */ return new Property("type", "code", 1919 "Action to take - permit or deny - when the rule conditions are met. Not permitted in root rule, required in all nested rules.", 1920 0, 1, type); 1921 case -991726143: 1922 /* period */ return new Property("period", "Period", "The timeframe in this rule is valid.", 0, 1, period); 1923 case 92645877: 1924 /* actor */ return new Property("actor", "", 1925 "Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers').", 1926 0, java.lang.Integer.MAX_VALUE, actor); 1927 case -1422950858: 1928 /* action */ return new Property("action", "CodeableConcept", "Actions controlled by this Rule.", 0, 1929 java.lang.Integer.MAX_VALUE, action); 1930 case -722296940: 1931 /* securityLabel */ return new Property("securityLabel", "Coding", 1932 "A security label, comprised of 0..* security label fields (Privacy tags), which define which resources are controlled by this exception.", 1933 0, java.lang.Integer.MAX_VALUE, securityLabel); 1934 case -220463842: 1935 /* purpose */ return new Property("purpose", "Coding", 1936 "The context of the activities a user is taking - why the user is accessing the data - that are controlled by this rule.", 1937 0, java.lang.Integer.MAX_VALUE, purpose); 1938 case 94742904: 1939 /* class */ return new Property("class", "Coding", 1940 "The class of information covered by this rule. The type can be a FHIR resource type, a profile on a type, or a CDA document, or some other type that indicates what sort of information the consent relates to.", 1941 0, java.lang.Integer.MAX_VALUE, class_); 1942 case 3059181: 1943 /* code */ return new Property("code", "CodeableConcept", 1944 "If this code is found in an instance, then the rule applies.", 0, java.lang.Integer.MAX_VALUE, code); 1945 case 1177250315: 1946 /* dataPeriod */ return new Property("dataPeriod", "Period", 1947 "Clinical or Operational Relevant period of time that bounds the data controlled by this rule.", 0, 1, 1948 dataPeriod); 1949 case 3076010: 1950 /* data */ return new Property("data", "", 1951 "The resources controlled by this rule if specific resources are referenced.", 0, 1952 java.lang.Integer.MAX_VALUE, data); 1953 case -547120939: 1954 /* provision */ return new Property("provision", "@Consent.provision", 1955 "Rules which provide exceptions to the base rule or subrules.", 0, java.lang.Integer.MAX_VALUE, provision); 1956 default: 1957 return super.getNamedProperty(_hash, _name, _checkValid); 1958 } 1959 1960 } 1961 1962 @Override 1963 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1964 switch (hash) { 1965 case 3575610: 1966 /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // Enumeration<ConsentProvisionType> 1967 case -991726143: 1968 /* period */ return this.period == null ? new Base[0] : new Base[] { this.period }; // Period 1969 case 92645877: 1970 /* actor */ return this.actor == null ? new Base[0] : this.actor.toArray(new Base[this.actor.size()]); // provisionActorComponent 1971 case -1422950858: 1972 /* action */ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // CodeableConcept 1973 case -722296940: 1974 /* securityLabel */ return this.securityLabel == null ? new Base[0] 1975 : this.securityLabel.toArray(new Base[this.securityLabel.size()]); // Coding 1976 case -220463842: 1977 /* purpose */ return this.purpose == null ? new Base[0] : this.purpose.toArray(new Base[this.purpose.size()]); // Coding 1978 case 94742904: 1979 /* class */ return this.class_ == null ? new Base[0] : this.class_.toArray(new Base[this.class_.size()]); // Coding 1980 case 3059181: 1981 /* code */ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept 1982 case 1177250315: 1983 /* dataPeriod */ return this.dataPeriod == null ? new Base[0] : new Base[] { this.dataPeriod }; // Period 1984 case 3076010: 1985 /* data */ return this.data == null ? new Base[0] : this.data.toArray(new Base[this.data.size()]); // provisionDataComponent 1986 case -547120939: 1987 /* provision */ return this.provision == null ? new Base[0] 1988 : this.provision.toArray(new Base[this.provision.size()]); // provisionComponent 1989 default: 1990 return super.getProperty(hash, name, checkValid); 1991 } 1992 1993 } 1994 1995 @Override 1996 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1997 switch (hash) { 1998 case 3575610: // type 1999 value = new ConsentProvisionTypeEnumFactory().fromType(castToCode(value)); 2000 this.type = (Enumeration) value; // Enumeration<ConsentProvisionType> 2001 return value; 2002 case -991726143: // period 2003 this.period = castToPeriod(value); // Period 2004 return value; 2005 case 92645877: // actor 2006 this.getActor().add((provisionActorComponent) value); // provisionActorComponent 2007 return value; 2008 case -1422950858: // action 2009 this.getAction().add(castToCodeableConcept(value)); // CodeableConcept 2010 return value; 2011 case -722296940: // securityLabel 2012 this.getSecurityLabel().add(castToCoding(value)); // Coding 2013 return value; 2014 case -220463842: // purpose 2015 this.getPurpose().add(castToCoding(value)); // Coding 2016 return value; 2017 case 94742904: // class 2018 this.getClass_().add(castToCoding(value)); // Coding 2019 return value; 2020 case 3059181: // code 2021 this.getCode().add(castToCodeableConcept(value)); // CodeableConcept 2022 return value; 2023 case 1177250315: // dataPeriod 2024 this.dataPeriod = castToPeriod(value); // Period 2025 return value; 2026 case 3076010: // data 2027 this.getData().add((provisionDataComponent) value); // provisionDataComponent 2028 return value; 2029 case -547120939: // provision 2030 this.getProvision().add((ProvisionComponent) value); // provisionComponent 2031 return value; 2032 default: 2033 return super.setProperty(hash, name, value); 2034 } 2035 2036 } 2037 2038 @Override 2039 public Base setProperty(String name, Base value) throws FHIRException { 2040 if (name.equals("type")) { 2041 value = new ConsentProvisionTypeEnumFactory().fromType(castToCode(value)); 2042 this.type = (Enumeration) value; // Enumeration<ConsentProvisionType> 2043 } else if (name.equals("period")) { 2044 this.period = castToPeriod(value); // Period 2045 } else if (name.equals("actor")) { 2046 this.getActor().add((provisionActorComponent) value); 2047 } else if (name.equals("action")) { 2048 this.getAction().add(castToCodeableConcept(value)); 2049 } else if (name.equals("securityLabel")) { 2050 this.getSecurityLabel().add(castToCoding(value)); 2051 } else if (name.equals("purpose")) { 2052 this.getPurpose().add(castToCoding(value)); 2053 } else if (name.equals("class")) { 2054 this.getClass_().add(castToCoding(value)); 2055 } else if (name.equals("code")) { 2056 this.getCode().add(castToCodeableConcept(value)); 2057 } else if (name.equals("dataPeriod")) { 2058 this.dataPeriod = castToPeriod(value); // Period 2059 } else if (name.equals("data")) { 2060 this.getData().add((provisionDataComponent) value); 2061 } else if (name.equals("provision")) { 2062 this.getProvision().add((ProvisionComponent) value); 2063 } else 2064 return super.setProperty(name, value); 2065 return value; 2066 } 2067 2068 @Override 2069 public void removeChild(String name, Base value) throws FHIRException { 2070 if (name.equals("type")) { 2071 this.type = null; 2072 } else if (name.equals("period")) { 2073 this.period = null; 2074 } else if (name.equals("actor")) { 2075 this.getActor().remove((provisionActorComponent) value); 2076 } else if (name.equals("action")) { 2077 this.getAction().remove(castToCodeableConcept(value)); 2078 } else if (name.equals("securityLabel")) { 2079 this.getSecurityLabel().remove(castToCoding(value)); 2080 } else if (name.equals("purpose")) { 2081 this.getPurpose().remove(castToCoding(value)); 2082 } else if (name.equals("class")) { 2083 this.getClass_().remove(castToCoding(value)); 2084 } else if (name.equals("code")) { 2085 this.getCode().remove(castToCodeableConcept(value)); 2086 } else if (name.equals("dataPeriod")) { 2087 this.dataPeriod = null; 2088 } else if (name.equals("data")) { 2089 this.getData().remove((provisionDataComponent) value); 2090 } else if (name.equals("provision")) { 2091 this.getProvision().remove((ProvisionComponent) value); 2092 } else 2093 super.removeChild(name, value); 2094 2095 } 2096 2097 @Override 2098 public Base makeProperty(int hash, String name) throws FHIRException { 2099 switch (hash) { 2100 case 3575610: 2101 return getTypeElement(); 2102 case -991726143: 2103 return getPeriod(); 2104 case 92645877: 2105 return addActor(); 2106 case -1422950858: 2107 return addAction(); 2108 case -722296940: 2109 return addSecurityLabel(); 2110 case -220463842: 2111 return addPurpose(); 2112 case 94742904: 2113 return addClass_(); 2114 case 3059181: 2115 return addCode(); 2116 case 1177250315: 2117 return getDataPeriod(); 2118 case 3076010: 2119 return addData(); 2120 case -547120939: 2121 return addProvision(); 2122 default: 2123 return super.makeProperty(hash, name); 2124 } 2125 2126 } 2127 2128 @Override 2129 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2130 switch (hash) { 2131 case 3575610: 2132 /* type */ return new String[] { "code" }; 2133 case -991726143: 2134 /* period */ return new String[] { "Period" }; 2135 case 92645877: 2136 /* actor */ return new String[] {}; 2137 case -1422950858: 2138 /* action */ return new String[] { "CodeableConcept" }; 2139 case -722296940: 2140 /* securityLabel */ return new String[] { "Coding" }; 2141 case -220463842: 2142 /* purpose */ return new String[] { "Coding" }; 2143 case 94742904: 2144 /* class */ return new String[] { "Coding" }; 2145 case 3059181: 2146 /* code */ return new String[] { "CodeableConcept" }; 2147 case 1177250315: 2148 /* dataPeriod */ return new String[] { "Period" }; 2149 case 3076010: 2150 /* data */ return new String[] {}; 2151 case -547120939: 2152 /* provision */ return new String[] { "@Consent.provision" }; 2153 default: 2154 return super.getTypesForProperty(hash, name); 2155 } 2156 2157 } 2158 2159 @Override 2160 public Base addChild(String name) throws FHIRException { 2161 if (name.equals("type")) { 2162 throw new FHIRException("Cannot call addChild on a singleton property Consent.type"); 2163 } else if (name.equals("period")) { 2164 this.period = new Period(); 2165 return this.period; 2166 } else if (name.equals("actor")) { 2167 return addActor(); 2168 } else if (name.equals("action")) { 2169 return addAction(); 2170 } else if (name.equals("securityLabel")) { 2171 return addSecurityLabel(); 2172 } else if (name.equals("purpose")) { 2173 return addPurpose(); 2174 } else if (name.equals("class")) { 2175 return addClass_(); 2176 } else if (name.equals("code")) { 2177 return addCode(); 2178 } else if (name.equals("dataPeriod")) { 2179 this.dataPeriod = new Period(); 2180 return this.dataPeriod; 2181 } else if (name.equals("data")) { 2182 return addData(); 2183 } else if (name.equals("provision")) { 2184 return addProvision(); 2185 } else 2186 return super.addChild(name); 2187 } 2188 2189 public ProvisionComponent copy() { 2190 ProvisionComponent dst = new ProvisionComponent(); 2191 copyValues(dst); 2192 return dst; 2193 } 2194 2195 public void copyValues(ProvisionComponent dst) { 2196 super.copyValues(dst); 2197 dst.type = type == null ? null : type.copy(); 2198 dst.period = period == null ? null : period.copy(); 2199 if (actor != null) { 2200 dst.actor = new ArrayList<provisionActorComponent>(); 2201 for (provisionActorComponent i : actor) 2202 dst.actor.add(i.copy()); 2203 } 2204 ; 2205 if (action != null) { 2206 dst.action = new ArrayList<CodeableConcept>(); 2207 for (CodeableConcept i : action) 2208 dst.action.add(i.copy()); 2209 } 2210 ; 2211 if (securityLabel != null) { 2212 dst.securityLabel = new ArrayList<Coding>(); 2213 for (Coding i : securityLabel) 2214 dst.securityLabel.add(i.copy()); 2215 } 2216 ; 2217 if (purpose != null) { 2218 dst.purpose = new ArrayList<Coding>(); 2219 for (Coding i : purpose) 2220 dst.purpose.add(i.copy()); 2221 } 2222 ; 2223 if (class_ != null) { 2224 dst.class_ = new ArrayList<Coding>(); 2225 for (Coding i : class_) 2226 dst.class_.add(i.copy()); 2227 } 2228 ; 2229 if (code != null) { 2230 dst.code = new ArrayList<CodeableConcept>(); 2231 for (CodeableConcept i : code) 2232 dst.code.add(i.copy()); 2233 } 2234 ; 2235 dst.dataPeriod = dataPeriod == null ? null : dataPeriod.copy(); 2236 if (data != null) { 2237 dst.data = new ArrayList<provisionDataComponent>(); 2238 for (provisionDataComponent i : data) 2239 dst.data.add(i.copy()); 2240 } 2241 ; 2242 if (provision != null) { 2243 dst.provision = new ArrayList<ProvisionComponent>(); 2244 for (ProvisionComponent i : provision) 2245 dst.provision.add(i.copy()); 2246 } 2247 ; 2248 } 2249 2250 @Override 2251 public boolean equalsDeep(Base other_) { 2252 if (!super.equalsDeep(other_)) 2253 return false; 2254 if (!(other_ instanceof ProvisionComponent)) 2255 return false; 2256 ProvisionComponent o = (ProvisionComponent) other_; 2257 return compareDeep(type, o.type, true) && compareDeep(period, o.period, true) && compareDeep(actor, o.actor, true) 2258 && compareDeep(action, o.action, true) && compareDeep(securityLabel, o.securityLabel, true) 2259 && compareDeep(purpose, o.purpose, true) && compareDeep(class_, o.class_, true) 2260 && compareDeep(code, o.code, true) && compareDeep(dataPeriod, o.dataPeriod, true) 2261 && compareDeep(data, o.data, true) && compareDeep(provision, o.provision, true); 2262 } 2263 2264 @Override 2265 public boolean equalsShallow(Base other_) { 2266 if (!super.equalsShallow(other_)) 2267 return false; 2268 if (!(other_ instanceof ProvisionComponent)) 2269 return false; 2270 ProvisionComponent o = (ProvisionComponent) other_; 2271 return compareValues(type, o.type, true); 2272 } 2273 2274 public boolean isEmpty() { 2275 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, period, actor, action, securityLabel, 2276 purpose, class_, code, dataPeriod, data, provision); 2277 } 2278 2279 public String fhirType() { 2280 return "Consent.provision"; 2281 2282 } 2283 2284 } 2285 2286 @Block() 2287 public static class provisionActorComponent extends BackboneElement implements IBaseBackboneElement { 2288 /** 2289 * How the individual is involved in the resources content that is described in 2290 * the exception. 2291 */ 2292 @Child(name = "role", type = { 2293 CodeableConcept.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 2294 @Description(shortDefinition = "How the actor is involved", formalDefinition = "How the individual is involved in the resources content that is described in the exception.") 2295 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/security-role-type") 2296 protected CodeableConcept role; 2297 2298 /** 2299 * The resource that identifies the actor. To identify actors by type, use group 2300 * to identify a set of actors by some property they share (e.g. 'admitting 2301 * officers'). 2302 */ 2303 @Child(name = "reference", type = { Device.class, Group.class, CareTeam.class, Organization.class, Patient.class, 2304 Practitioner.class, RelatedPerson.class, 2305 PractitionerRole.class }, order = 2, min = 1, max = 1, modifier = false, summary = false) 2306 @Description(shortDefinition = "Resource for the actor (or group, by role)", formalDefinition = "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers').") 2307 protected Reference reference; 2308 2309 /** 2310 * The actual object that is the target of the reference (The resource that 2311 * identifies the actor. To identify actors by type, use group to identify a set 2312 * of actors by some property they share (e.g. 'admitting officers').) 2313 */ 2314 protected Resource referenceTarget; 2315 2316 private static final long serialVersionUID = 1152919415L; 2317 2318 /** 2319 * Constructor 2320 */ 2321 public provisionActorComponent() { 2322 super(); 2323 } 2324 2325 /** 2326 * Constructor 2327 */ 2328 public provisionActorComponent(CodeableConcept role, Reference reference) { 2329 super(); 2330 this.role = role; 2331 this.reference = reference; 2332 } 2333 2334 /** 2335 * @return {@link #role} (How the individual is involved in the resources 2336 * content that is described in the exception.) 2337 */ 2338 public CodeableConcept getRole() { 2339 if (this.role == null) 2340 if (Configuration.errorOnAutoCreate()) 2341 throw new Error("Attempt to auto-create provisionActorComponent.role"); 2342 else if (Configuration.doAutoCreate()) 2343 this.role = new CodeableConcept(); // cc 2344 return this.role; 2345 } 2346 2347 public boolean hasRole() { 2348 return this.role != null && !this.role.isEmpty(); 2349 } 2350 2351 /** 2352 * @param value {@link #role} (How the individual is involved in the resources 2353 * content that is described in the exception.) 2354 */ 2355 public provisionActorComponent setRole(CodeableConcept value) { 2356 this.role = value; 2357 return this; 2358 } 2359 2360 /** 2361 * @return {@link #reference} (The resource that identifies the actor. To 2362 * identify actors by type, use group to identify a set of actors by 2363 * some property they share (e.g. 'admitting officers').) 2364 */ 2365 public Reference getReference() { 2366 if (this.reference == null) 2367 if (Configuration.errorOnAutoCreate()) 2368 throw new Error("Attempt to auto-create provisionActorComponent.reference"); 2369 else if (Configuration.doAutoCreate()) 2370 this.reference = new Reference(); // cc 2371 return this.reference; 2372 } 2373 2374 public boolean hasReference() { 2375 return this.reference != null && !this.reference.isEmpty(); 2376 } 2377 2378 /** 2379 * @param value {@link #reference} (The resource that identifies the actor. To 2380 * identify actors by type, use group to identify a set of actors 2381 * by some property they share (e.g. 'admitting officers').) 2382 */ 2383 public provisionActorComponent setReference(Reference value) { 2384 this.reference = value; 2385 return this; 2386 } 2387 2388 /** 2389 * @return {@link #reference} The actual object that is the target of the 2390 * reference. The reference library doesn't populate this, but you can 2391 * use it to hold the resource if you resolve it. (The resource that 2392 * identifies the actor. To identify actors by type, use group to 2393 * identify a set of actors by some property they share (e.g. 'admitting 2394 * officers').) 2395 */ 2396 public Resource getReferenceTarget() { 2397 return this.referenceTarget; 2398 } 2399 2400 /** 2401 * @param value {@link #reference} The actual object that is the target of the 2402 * reference. The reference library doesn't use these, but you can 2403 * use it to hold the resource if you resolve it. (The resource 2404 * that identifies the actor. To identify actors by type, use group 2405 * to identify a set of actors by some property they share (e.g. 2406 * 'admitting officers').) 2407 */ 2408 public provisionActorComponent setReferenceTarget(Resource value) { 2409 this.referenceTarget = value; 2410 return this; 2411 } 2412 2413 protected void listChildren(List<Property> children) { 2414 super.listChildren(children); 2415 children.add(new Property("role", "CodeableConcept", 2416 "How the individual is involved in the resources content that is described in the exception.", 0, 1, role)); 2417 children.add(new Property("reference", 2418 "Reference(Device|Group|CareTeam|Organization|Patient|Practitioner|RelatedPerson|PractitionerRole)", 2419 "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers').", 2420 0, 1, reference)); 2421 } 2422 2423 @Override 2424 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2425 switch (_hash) { 2426 case 3506294: 2427 /* role */ return new Property("role", "CodeableConcept", 2428 "How the individual is involved in the resources content that is described in the exception.", 0, 1, role); 2429 case -925155509: 2430 /* reference */ return new Property("reference", 2431 "Reference(Device|Group|CareTeam|Organization|Patient|Practitioner|RelatedPerson|PractitionerRole)", 2432 "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers').", 2433 0, 1, reference); 2434 default: 2435 return super.getNamedProperty(_hash, _name, _checkValid); 2436 } 2437 2438 } 2439 2440 @Override 2441 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2442 switch (hash) { 2443 case 3506294: 2444 /* role */ return this.role == null ? new Base[0] : new Base[] { this.role }; // CodeableConcept 2445 case -925155509: 2446 /* reference */ return this.reference == null ? new Base[0] : new Base[] { this.reference }; // Reference 2447 default: 2448 return super.getProperty(hash, name, checkValid); 2449 } 2450 2451 } 2452 2453 @Override 2454 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2455 switch (hash) { 2456 case 3506294: // role 2457 this.role = castToCodeableConcept(value); // CodeableConcept 2458 return value; 2459 case -925155509: // reference 2460 this.reference = castToReference(value); // Reference 2461 return value; 2462 default: 2463 return super.setProperty(hash, name, value); 2464 } 2465 2466 } 2467 2468 @Override 2469 public Base setProperty(String name, Base value) throws FHIRException { 2470 if (name.equals("role")) { 2471 this.role = castToCodeableConcept(value); // CodeableConcept 2472 } else if (name.equals("reference")) { 2473 this.reference = castToReference(value); // Reference 2474 } else 2475 return super.setProperty(name, value); 2476 return value; 2477 } 2478 2479 @Override 2480 public void removeChild(String name, Base value) throws FHIRException { 2481 if (name.equals("role")) { 2482 this.role = null; 2483 } else if (name.equals("reference")) { 2484 this.reference = null; 2485 } else 2486 super.removeChild(name, value); 2487 2488 } 2489 2490 @Override 2491 public Base makeProperty(int hash, String name) throws FHIRException { 2492 switch (hash) { 2493 case 3506294: 2494 return getRole(); 2495 case -925155509: 2496 return getReference(); 2497 default: 2498 return super.makeProperty(hash, name); 2499 } 2500 2501 } 2502 2503 @Override 2504 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2505 switch (hash) { 2506 case 3506294: 2507 /* role */ return new String[] { "CodeableConcept" }; 2508 case -925155509: 2509 /* reference */ return new String[] { "Reference" }; 2510 default: 2511 return super.getTypesForProperty(hash, name); 2512 } 2513 2514 } 2515 2516 @Override 2517 public Base addChild(String name) throws FHIRException { 2518 if (name.equals("role")) { 2519 this.role = new CodeableConcept(); 2520 return this.role; 2521 } else if (name.equals("reference")) { 2522 this.reference = new Reference(); 2523 return this.reference; 2524 } else 2525 return super.addChild(name); 2526 } 2527 2528 public provisionActorComponent copy() { 2529 provisionActorComponent dst = new provisionActorComponent(); 2530 copyValues(dst); 2531 return dst; 2532 } 2533 2534 public void copyValues(provisionActorComponent dst) { 2535 super.copyValues(dst); 2536 dst.role = role == null ? null : role.copy(); 2537 dst.reference = reference == null ? null : reference.copy(); 2538 } 2539 2540 @Override 2541 public boolean equalsDeep(Base other_) { 2542 if (!super.equalsDeep(other_)) 2543 return false; 2544 if (!(other_ instanceof provisionActorComponent)) 2545 return false; 2546 provisionActorComponent o = (provisionActorComponent) other_; 2547 return compareDeep(role, o.role, true) && compareDeep(reference, o.reference, true); 2548 } 2549 2550 @Override 2551 public boolean equalsShallow(Base other_) { 2552 if (!super.equalsShallow(other_)) 2553 return false; 2554 if (!(other_ instanceof provisionActorComponent)) 2555 return false; 2556 provisionActorComponent o = (provisionActorComponent) other_; 2557 return true; 2558 } 2559 2560 public boolean isEmpty() { 2561 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(role, reference); 2562 } 2563 2564 public String fhirType() { 2565 return "Consent.provision.actor"; 2566 2567 } 2568 2569 } 2570 2571 @Block() 2572 public static class provisionDataComponent extends BackboneElement implements IBaseBackboneElement { 2573 /** 2574 * How the resource reference is interpreted when testing consent restrictions. 2575 */ 2576 @Child(name = "meaning", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = false, summary = true) 2577 @Description(shortDefinition = "instance | related | dependents | authoredby", formalDefinition = "How the resource reference is interpreted when testing consent restrictions.") 2578 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-data-meaning") 2579 protected Enumeration<ConsentDataMeaning> meaning; 2580 2581 /** 2582 * A reference to a specific resource that defines which resources are covered 2583 * by this consent. 2584 */ 2585 @Child(name = "reference", type = { 2586 Reference.class }, order = 2, min = 1, max = 1, modifier = false, summary = true) 2587 @Description(shortDefinition = "The actual data reference", formalDefinition = "A reference to a specific resource that defines which resources are covered by this consent.") 2588 protected Reference reference; 2589 2590 /** 2591 * The actual object that is the target of the reference (A reference to a 2592 * specific resource that defines which resources are covered by this consent.) 2593 */ 2594 protected Resource referenceTarget; 2595 2596 private static final long serialVersionUID = -424898645L; 2597 2598 /** 2599 * Constructor 2600 */ 2601 public provisionDataComponent() { 2602 super(); 2603 } 2604 2605 /** 2606 * Constructor 2607 */ 2608 public provisionDataComponent(Enumeration<ConsentDataMeaning> meaning, Reference reference) { 2609 super(); 2610 this.meaning = meaning; 2611 this.reference = reference; 2612 } 2613 2614 /** 2615 * @return {@link #meaning} (How the resource reference is interpreted when 2616 * testing consent restrictions.). This is the underlying object with 2617 * id, value and extensions. The accessor "getMeaning" gives direct 2618 * access to the value 2619 */ 2620 public Enumeration<ConsentDataMeaning> getMeaningElement() { 2621 if (this.meaning == null) 2622 if (Configuration.errorOnAutoCreate()) 2623 throw new Error("Attempt to auto-create provisionDataComponent.meaning"); 2624 else if (Configuration.doAutoCreate()) 2625 this.meaning = new Enumeration<ConsentDataMeaning>(new ConsentDataMeaningEnumFactory()); // bb 2626 return this.meaning; 2627 } 2628 2629 public boolean hasMeaningElement() { 2630 return this.meaning != null && !this.meaning.isEmpty(); 2631 } 2632 2633 public boolean hasMeaning() { 2634 return this.meaning != null && !this.meaning.isEmpty(); 2635 } 2636 2637 /** 2638 * @param value {@link #meaning} (How the resource reference is interpreted when 2639 * testing consent restrictions.). This is the underlying object 2640 * with id, value and extensions. The accessor "getMeaning" gives 2641 * direct access to the value 2642 */ 2643 public provisionDataComponent setMeaningElement(Enumeration<ConsentDataMeaning> value) { 2644 this.meaning = value; 2645 return this; 2646 } 2647 2648 /** 2649 * @return How the resource reference is interpreted when testing consent 2650 * restrictions. 2651 */ 2652 public ConsentDataMeaning getMeaning() { 2653 return this.meaning == null ? null : this.meaning.getValue(); 2654 } 2655 2656 /** 2657 * @param value How the resource reference is interpreted when testing consent 2658 * restrictions. 2659 */ 2660 public provisionDataComponent setMeaning(ConsentDataMeaning value) { 2661 if (this.meaning == null) 2662 this.meaning = new Enumeration<ConsentDataMeaning>(new ConsentDataMeaningEnumFactory()); 2663 this.meaning.setValue(value); 2664 return this; 2665 } 2666 2667 /** 2668 * @return {@link #reference} (A reference to a specific resource that defines 2669 * which resources are covered by this consent.) 2670 */ 2671 public Reference getReference() { 2672 if (this.reference == null) 2673 if (Configuration.errorOnAutoCreate()) 2674 throw new Error("Attempt to auto-create provisionDataComponent.reference"); 2675 else if (Configuration.doAutoCreate()) 2676 this.reference = new Reference(); // cc 2677 return this.reference; 2678 } 2679 2680 public boolean hasReference() { 2681 return this.reference != null && !this.reference.isEmpty(); 2682 } 2683 2684 /** 2685 * @param value {@link #reference} (A reference to a specific resource that 2686 * defines which resources are covered by this consent.) 2687 */ 2688 public provisionDataComponent setReference(Reference value) { 2689 this.reference = value; 2690 return this; 2691 } 2692 2693 /** 2694 * @return {@link #reference} The actual object that is the target of the 2695 * reference. The reference library doesn't populate this, but you can 2696 * use it to hold the resource if you resolve it. (A reference to a 2697 * specific resource that defines which resources are covered by this 2698 * consent.) 2699 */ 2700 public Resource getReferenceTarget() { 2701 return this.referenceTarget; 2702 } 2703 2704 /** 2705 * @param value {@link #reference} The actual object that is the target of the 2706 * reference. The reference library doesn't use these, but you can 2707 * use it to hold the resource if you resolve it. (A reference to a 2708 * specific resource that defines which resources are covered by 2709 * this consent.) 2710 */ 2711 public provisionDataComponent setReferenceTarget(Resource value) { 2712 this.referenceTarget = value; 2713 return this; 2714 } 2715 2716 protected void listChildren(List<Property> children) { 2717 super.listChildren(children); 2718 children.add(new Property("meaning", "code", 2719 "How the resource reference is interpreted when testing consent restrictions.", 0, 1, meaning)); 2720 children.add(new Property("reference", "Reference(Any)", 2721 "A reference to a specific resource that defines which resources are covered by this consent.", 0, 1, 2722 reference)); 2723 } 2724 2725 @Override 2726 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2727 switch (_hash) { 2728 case 938160637: 2729 /* meaning */ return new Property("meaning", "code", 2730 "How the resource reference is interpreted when testing consent restrictions.", 0, 1, meaning); 2731 case -925155509: 2732 /* reference */ return new Property("reference", "Reference(Any)", 2733 "A reference to a specific resource that defines which resources are covered by this consent.", 0, 1, 2734 reference); 2735 default: 2736 return super.getNamedProperty(_hash, _name, _checkValid); 2737 } 2738 2739 } 2740 2741 @Override 2742 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2743 switch (hash) { 2744 case 938160637: 2745 /* meaning */ return this.meaning == null ? new Base[0] : new Base[] { this.meaning }; // Enumeration<ConsentDataMeaning> 2746 case -925155509: 2747 /* reference */ return this.reference == null ? new Base[0] : new Base[] { this.reference }; // Reference 2748 default: 2749 return super.getProperty(hash, name, checkValid); 2750 } 2751 2752 } 2753 2754 @Override 2755 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2756 switch (hash) { 2757 case 938160637: // meaning 2758 value = new ConsentDataMeaningEnumFactory().fromType(castToCode(value)); 2759 this.meaning = (Enumeration) value; // Enumeration<ConsentDataMeaning> 2760 return value; 2761 case -925155509: // reference 2762 this.reference = castToReference(value); // Reference 2763 return value; 2764 default: 2765 return super.setProperty(hash, name, value); 2766 } 2767 2768 } 2769 2770 @Override 2771 public Base setProperty(String name, Base value) throws FHIRException { 2772 if (name.equals("meaning")) { 2773 value = new ConsentDataMeaningEnumFactory().fromType(castToCode(value)); 2774 this.meaning = (Enumeration) value; // Enumeration<ConsentDataMeaning> 2775 } else if (name.equals("reference")) { 2776 this.reference = castToReference(value); // Reference 2777 } else 2778 return super.setProperty(name, value); 2779 return value; 2780 } 2781 2782 @Override 2783 public void removeChild(String name, Base value) throws FHIRException { 2784 if (name.equals("meaning")) { 2785 this.meaning = null; 2786 } else if (name.equals("reference")) { 2787 this.reference = null; 2788 } else 2789 super.removeChild(name, value); 2790 2791 } 2792 2793 @Override 2794 public Base makeProperty(int hash, String name) throws FHIRException { 2795 switch (hash) { 2796 case 938160637: 2797 return getMeaningElement(); 2798 case -925155509: 2799 return getReference(); 2800 default: 2801 return super.makeProperty(hash, name); 2802 } 2803 2804 } 2805 2806 @Override 2807 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2808 switch (hash) { 2809 case 938160637: 2810 /* meaning */ return new String[] { "code" }; 2811 case -925155509: 2812 /* reference */ return new String[] { "Reference" }; 2813 default: 2814 return super.getTypesForProperty(hash, name); 2815 } 2816 2817 } 2818 2819 @Override 2820 public Base addChild(String name) throws FHIRException { 2821 if (name.equals("meaning")) { 2822 throw new FHIRException("Cannot call addChild on a singleton property Consent.meaning"); 2823 } else if (name.equals("reference")) { 2824 this.reference = new Reference(); 2825 return this.reference; 2826 } else 2827 return super.addChild(name); 2828 } 2829 2830 public provisionDataComponent copy() { 2831 provisionDataComponent dst = new provisionDataComponent(); 2832 copyValues(dst); 2833 return dst; 2834 } 2835 2836 public void copyValues(provisionDataComponent dst) { 2837 super.copyValues(dst); 2838 dst.meaning = meaning == null ? null : meaning.copy(); 2839 dst.reference = reference == null ? null : reference.copy(); 2840 } 2841 2842 @Override 2843 public boolean equalsDeep(Base other_) { 2844 if (!super.equalsDeep(other_)) 2845 return false; 2846 if (!(other_ instanceof provisionDataComponent)) 2847 return false; 2848 provisionDataComponent o = (provisionDataComponent) other_; 2849 return compareDeep(meaning, o.meaning, true) && compareDeep(reference, o.reference, true); 2850 } 2851 2852 @Override 2853 public boolean equalsShallow(Base other_) { 2854 if (!super.equalsShallow(other_)) 2855 return false; 2856 if (!(other_ instanceof provisionDataComponent)) 2857 return false; 2858 provisionDataComponent o = (provisionDataComponent) other_; 2859 return compareValues(meaning, o.meaning, true); 2860 } 2861 2862 public boolean isEmpty() { 2863 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(meaning, reference); 2864 } 2865 2866 public String fhirType() { 2867 return "Consent.provision.data"; 2868 2869 } 2870 2871 } 2872 2873 /** 2874 * Unique identifier for this copy of the Consent Statement. 2875 */ 2876 @Child(name = "identifier", type = { 2877 Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 2878 @Description(shortDefinition = "Identifier for this record (external references)", formalDefinition = "Unique identifier for this copy of the Consent Statement.") 2879 protected List<Identifier> identifier; 2880 2881 /** 2882 * Indicates the current state of this consent. 2883 */ 2884 @Child(name = "status", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = true, summary = true) 2885 @Description(shortDefinition = "draft | proposed | active | rejected | inactive | entered-in-error", formalDefinition = "Indicates the current state of this consent.") 2886 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-state-codes") 2887 protected Enumeration<ConsentState> status; 2888 2889 /** 2890 * A selector of the type of consent being presented: ADR, Privacy, Treatment, 2891 * Research. This list is now extensible. 2892 */ 2893 @Child(name = "scope", type = { CodeableConcept.class }, order = 2, min = 1, max = 1, modifier = true, summary = true) 2894 @Description(shortDefinition = "Which of the four areas this resource covers (extensible)", formalDefinition = "A selector of the type of consent being presented: ADR, Privacy, Treatment, Research. This list is now extensible.") 2895 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-scope") 2896 protected CodeableConcept scope; 2897 2898 /** 2899 * A classification of the type of consents found in the statement. This element 2900 * supports indexing and retrieval of consent statements. 2901 */ 2902 @Child(name = "category", type = { 2903 CodeableConcept.class }, order = 3, min = 1, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 2904 @Description(shortDefinition = "Classification of the consent statement - for indexing/retrieval", formalDefinition = "A classification of the type of consents found in the statement. This element supports indexing and retrieval of consent statements.") 2905 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-category") 2906 protected List<CodeableConcept> category; 2907 2908 /** 2909 * The patient/healthcare consumer to whom this consent applies. 2910 */ 2911 @Child(name = "patient", type = { Patient.class }, order = 4, min = 0, max = 1, modifier = false, summary = true) 2912 @Description(shortDefinition = "Who the consent applies to", formalDefinition = "The patient/healthcare consumer to whom this consent applies.") 2913 protected Reference patient; 2914 2915 /** 2916 * The actual object that is the target of the reference (The patient/healthcare 2917 * consumer to whom this consent applies.) 2918 */ 2919 protected Patient patientTarget; 2920 2921 /** 2922 * When this Consent was issued / created / indexed. 2923 */ 2924 @Child(name = "dateTime", type = { 2925 DateTimeType.class }, order = 5, min = 0, max = 1, modifier = false, summary = true) 2926 @Description(shortDefinition = "When this Consent was created or indexed", formalDefinition = "When this Consent was issued / created / indexed.") 2927 protected DateTimeType dateTime; 2928 2929 /** 2930 * Either the Grantor, which is the entity responsible for granting the rights 2931 * listed in a Consent Directive or the Grantee, which is the entity responsible 2932 * for complying with the Consent Directive, including any obligations or 2933 * limitations on authorizations and enforcement of prohibitions. 2934 */ 2935 @Child(name = "performer", type = { Organization.class, Patient.class, Practitioner.class, RelatedPerson.class, 2936 PractitionerRole.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 2937 @Description(shortDefinition = "Who is agreeing to the policy and rules", formalDefinition = "Either the Grantor, which is the entity responsible for granting the rights listed in a Consent Directive or the Grantee, which is the entity responsible for complying with the Consent Directive, including any obligations or limitations on authorizations and enforcement of prohibitions.") 2938 protected List<Reference> performer; 2939 /** 2940 * The actual objects that are the target of the reference (Either the Grantor, 2941 * which is the entity responsible for granting the rights listed in a Consent 2942 * Directive or the Grantee, which is the entity responsible for complying with 2943 * the Consent Directive, including any obligations or limitations on 2944 * authorizations and enforcement of prohibitions.) 2945 */ 2946 protected List<Resource> performerTarget; 2947 2948 /** 2949 * The organization that manages the consent, and the framework within which it 2950 * is executed. 2951 */ 2952 @Child(name = "organization", type = { 2953 Organization.class }, order = 7, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 2954 @Description(shortDefinition = "Custodian of the consent", formalDefinition = "The organization that manages the consent, and the framework within which it is executed.") 2955 protected List<Reference> organization; 2956 /** 2957 * The actual objects that are the target of the reference (The organization 2958 * that manages the consent, and the framework within which it is executed.) 2959 */ 2960 protected List<Organization> organizationTarget; 2961 2962 /** 2963 * The source on which this consent statement is based. The source might be a 2964 * scanned original paper form, or a reference to a consent that links back to 2965 * such a source, a reference to a document repository (e.g. XDS) that stores 2966 * the original consent document. 2967 */ 2968 @Child(name = "source", type = { Attachment.class, Consent.class, DocumentReference.class, Contract.class, 2969 QuestionnaireResponse.class }, order = 8, min = 0, max = 1, modifier = false, summary = true) 2970 @Description(shortDefinition = "Source from which this consent is taken", formalDefinition = "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document.") 2971 protected Type source; 2972 2973 /** 2974 * The references to the policies that are included in this consent scope. 2975 * Policies may be organizational, but are often defined jurisdictionally, or in 2976 * law. 2977 */ 2978 @Child(name = "policy", type = {}, order = 9, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 2979 @Description(shortDefinition = "Policies covered by this consent", formalDefinition = "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.") 2980 protected List<ConsentPolicyComponent> policy; 2981 2982 /** 2983 * A reference to the specific base computable regulation or policy. 2984 */ 2985 @Child(name = "policyRule", type = { 2986 CodeableConcept.class }, order = 10, min = 0, max = 1, modifier = false, summary = true) 2987 @Description(shortDefinition = "Regulation that this consents to", formalDefinition = "A reference to the specific base computable regulation or policy.") 2988 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/consent-policy") 2989 protected CodeableConcept policyRule; 2990 2991 /** 2992 * Whether a treatment instruction (e.g. artificial respiration yes or no) was 2993 * verified with the patient, his/her family or another authorized person. 2994 */ 2995 @Child(name = "verification", type = {}, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 2996 @Description(shortDefinition = "Consent Verified by patient or family", formalDefinition = "Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person.") 2997 protected List<ConsentVerificationComponent> verification; 2998 2999 /** 3000 * An exception to the base policy of this consent. An exception can be an 3001 * addition or removal of access permissions. 3002 */ 3003 @Child(name = "provision", type = {}, order = 12, min = 0, max = 1, modifier = false, summary = true) 3004 @Description(shortDefinition = "Constraints to the base Consent.policyRule", formalDefinition = "An exception to the base policy of this consent. An exception can be an addition or removal of access permissions.") 3005 protected ProvisionComponent provision; 3006 3007 private static final long serialVersionUID = 206528051L; 3008 3009 /** 3010 * Constructor 3011 */ 3012 public Consent() { 3013 super(); 3014 } 3015 3016 /** 3017 * Constructor 3018 */ 3019 public Consent(Enumeration<ConsentState> status, CodeableConcept scope) { 3020 super(); 3021 this.status = status; 3022 this.scope = scope; 3023 } 3024 3025 /** 3026 * @return {@link #identifier} (Unique identifier for this copy of the Consent 3027 * Statement.) 3028 */ 3029 public List<Identifier> getIdentifier() { 3030 if (this.identifier == null) 3031 this.identifier = new ArrayList<Identifier>(); 3032 return this.identifier; 3033 } 3034 3035 /** 3036 * @return Returns a reference to <code>this</code> for easy method chaining 3037 */ 3038 public Consent setIdentifier(List<Identifier> theIdentifier) { 3039 this.identifier = theIdentifier; 3040 return this; 3041 } 3042 3043 public boolean hasIdentifier() { 3044 if (this.identifier == null) 3045 return false; 3046 for (Identifier item : this.identifier) 3047 if (!item.isEmpty()) 3048 return true; 3049 return false; 3050 } 3051 3052 public Identifier addIdentifier() { // 3 3053 Identifier t = new Identifier(); 3054 if (this.identifier == null) 3055 this.identifier = new ArrayList<Identifier>(); 3056 this.identifier.add(t); 3057 return t; 3058 } 3059 3060 public Consent addIdentifier(Identifier t) { // 3 3061 if (t == null) 3062 return this; 3063 if (this.identifier == null) 3064 this.identifier = new ArrayList<Identifier>(); 3065 this.identifier.add(t); 3066 return this; 3067 } 3068 3069 /** 3070 * @return The first repetition of repeating field {@link #identifier}, creating 3071 * it if it does not already exist 3072 */ 3073 public Identifier getIdentifierFirstRep() { 3074 if (getIdentifier().isEmpty()) { 3075 addIdentifier(); 3076 } 3077 return getIdentifier().get(0); 3078 } 3079 3080 /** 3081 * @return {@link #status} (Indicates the current state of this consent.). This 3082 * is the underlying object with id, value and extensions. The accessor 3083 * "getStatus" gives direct access to the value 3084 */ 3085 public Enumeration<ConsentState> getStatusElement() { 3086 if (this.status == null) 3087 if (Configuration.errorOnAutoCreate()) 3088 throw new Error("Attempt to auto-create Consent.status"); 3089 else if (Configuration.doAutoCreate()) 3090 this.status = new Enumeration<ConsentState>(new ConsentStateEnumFactory()); // bb 3091 return this.status; 3092 } 3093 3094 public boolean hasStatusElement() { 3095 return this.status != null && !this.status.isEmpty(); 3096 } 3097 3098 public boolean hasStatus() { 3099 return this.status != null && !this.status.isEmpty(); 3100 } 3101 3102 /** 3103 * @param value {@link #status} (Indicates the current state of this consent.). 3104 * This is the underlying object with id, value and extensions. The 3105 * accessor "getStatus" gives direct access to the value 3106 */ 3107 public Consent setStatusElement(Enumeration<ConsentState> value) { 3108 this.status = value; 3109 return this; 3110 } 3111 3112 /** 3113 * @return Indicates the current state of this consent. 3114 */ 3115 public ConsentState getStatus() { 3116 return this.status == null ? null : this.status.getValue(); 3117 } 3118 3119 /** 3120 * @param value Indicates the current state of this consent. 3121 */ 3122 public Consent setStatus(ConsentState value) { 3123 if (this.status == null) 3124 this.status = new Enumeration<ConsentState>(new ConsentStateEnumFactory()); 3125 this.status.setValue(value); 3126 return this; 3127 } 3128 3129 /** 3130 * @return {@link #scope} (A selector of the type of consent being presented: 3131 * ADR, Privacy, Treatment, Research. This list is now extensible.) 3132 */ 3133 public CodeableConcept getScope() { 3134 if (this.scope == null) 3135 if (Configuration.errorOnAutoCreate()) 3136 throw new Error("Attempt to auto-create Consent.scope"); 3137 else if (Configuration.doAutoCreate()) 3138 this.scope = new CodeableConcept(); // cc 3139 return this.scope; 3140 } 3141 3142 public boolean hasScope() { 3143 return this.scope != null && !this.scope.isEmpty(); 3144 } 3145 3146 /** 3147 * @param value {@link #scope} (A selector of the type of consent being 3148 * presented: ADR, Privacy, Treatment, Research. This list is now 3149 * extensible.) 3150 */ 3151 public Consent setScope(CodeableConcept value) { 3152 this.scope = value; 3153 return this; 3154 } 3155 3156 /** 3157 * @return {@link #category} (A classification of the type of consents found in 3158 * the statement. This element supports indexing and retrieval of 3159 * consent statements.) 3160 */ 3161 public List<CodeableConcept> getCategory() { 3162 if (this.category == null) 3163 this.category = new ArrayList<CodeableConcept>(); 3164 return this.category; 3165 } 3166 3167 /** 3168 * @return Returns a reference to <code>this</code> for easy method chaining 3169 */ 3170 public Consent setCategory(List<CodeableConcept> theCategory) { 3171 this.category = theCategory; 3172 return this; 3173 } 3174 3175 public boolean hasCategory() { 3176 if (this.category == null) 3177 return false; 3178 for (CodeableConcept item : this.category) 3179 if (!item.isEmpty()) 3180 return true; 3181 return false; 3182 } 3183 3184 public CodeableConcept addCategory() { // 3 3185 CodeableConcept t = new CodeableConcept(); 3186 if (this.category == null) 3187 this.category = new ArrayList<CodeableConcept>(); 3188 this.category.add(t); 3189 return t; 3190 } 3191 3192 public Consent addCategory(CodeableConcept t) { // 3 3193 if (t == null) 3194 return this; 3195 if (this.category == null) 3196 this.category = new ArrayList<CodeableConcept>(); 3197 this.category.add(t); 3198 return this; 3199 } 3200 3201 /** 3202 * @return The first repetition of repeating field {@link #category}, creating 3203 * it if it does not already exist 3204 */ 3205 public CodeableConcept getCategoryFirstRep() { 3206 if (getCategory().isEmpty()) { 3207 addCategory(); 3208 } 3209 return getCategory().get(0); 3210 } 3211 3212 /** 3213 * @return {@link #patient} (The patient/healthcare consumer to whom this 3214 * consent applies.) 3215 */ 3216 public Reference getPatient() { 3217 if (this.patient == null) 3218 if (Configuration.errorOnAutoCreate()) 3219 throw new Error("Attempt to auto-create Consent.patient"); 3220 else if (Configuration.doAutoCreate()) 3221 this.patient = new Reference(); // cc 3222 return this.patient; 3223 } 3224 3225 public boolean hasPatient() { 3226 return this.patient != null && !this.patient.isEmpty(); 3227 } 3228 3229 /** 3230 * @param value {@link #patient} (The patient/healthcare consumer to whom this 3231 * consent applies.) 3232 */ 3233 public Consent setPatient(Reference value) { 3234 this.patient = value; 3235 return this; 3236 } 3237 3238 /** 3239 * @return {@link #patient} The actual object that is the target of the 3240 * reference. The reference library doesn't populate this, but you can 3241 * use it to hold the resource if you resolve it. (The 3242 * patient/healthcare consumer to whom this consent applies.) 3243 */ 3244 public Patient getPatientTarget() { 3245 if (this.patientTarget == null) 3246 if (Configuration.errorOnAutoCreate()) 3247 throw new Error("Attempt to auto-create Consent.patient"); 3248 else if (Configuration.doAutoCreate()) 3249 this.patientTarget = new Patient(); // aa 3250 return this.patientTarget; 3251 } 3252 3253 /** 3254 * @param value {@link #patient} The actual object that is the target of the 3255 * reference. The reference library doesn't use these, but you can 3256 * use it to hold the resource if you resolve it. (The 3257 * patient/healthcare consumer to whom this consent applies.) 3258 */ 3259 public Consent setPatientTarget(Patient value) { 3260 this.patientTarget = value; 3261 return this; 3262 } 3263 3264 /** 3265 * @return {@link #dateTime} (When this Consent was issued / created / 3266 * indexed.). This is the underlying object with id, value and 3267 * extensions. The accessor "getDateTime" gives direct access to the 3268 * value 3269 */ 3270 public DateTimeType getDateTimeElement() { 3271 if (this.dateTime == null) 3272 if (Configuration.errorOnAutoCreate()) 3273 throw new Error("Attempt to auto-create Consent.dateTime"); 3274 else if (Configuration.doAutoCreate()) 3275 this.dateTime = new DateTimeType(); // bb 3276 return this.dateTime; 3277 } 3278 3279 public boolean hasDateTimeElement() { 3280 return this.dateTime != null && !this.dateTime.isEmpty(); 3281 } 3282 3283 public boolean hasDateTime() { 3284 return this.dateTime != null && !this.dateTime.isEmpty(); 3285 } 3286 3287 /** 3288 * @param value {@link #dateTime} (When this Consent was issued / created / 3289 * indexed.). This is the underlying object with id, value and 3290 * extensions. The accessor "getDateTime" gives direct access to 3291 * the value 3292 */ 3293 public Consent setDateTimeElement(DateTimeType value) { 3294 this.dateTime = value; 3295 return this; 3296 } 3297 3298 /** 3299 * @return When this Consent was issued / created / indexed. 3300 */ 3301 public Date getDateTime() { 3302 return this.dateTime == null ? null : this.dateTime.getValue(); 3303 } 3304 3305 /** 3306 * @param value When this Consent was issued / created / indexed. 3307 */ 3308 public Consent setDateTime(Date value) { 3309 if (value == null) 3310 this.dateTime = null; 3311 else { 3312 if (this.dateTime == null) 3313 this.dateTime = new DateTimeType(); 3314 this.dateTime.setValue(value); 3315 } 3316 return this; 3317 } 3318 3319 /** 3320 * @return {@link #performer} (Either the Grantor, which is the entity 3321 * responsible for granting the rights listed in a Consent Directive or 3322 * the Grantee, which is the entity responsible for complying with the 3323 * Consent Directive, including any obligations or limitations on 3324 * authorizations and enforcement of prohibitions.) 3325 */ 3326 public List<Reference> getPerformer() { 3327 if (this.performer == null) 3328 this.performer = new ArrayList<Reference>(); 3329 return this.performer; 3330 } 3331 3332 /** 3333 * @return Returns a reference to <code>this</code> for easy method chaining 3334 */ 3335 public Consent setPerformer(List<Reference> thePerformer) { 3336 this.performer = thePerformer; 3337 return this; 3338 } 3339 3340 public boolean hasPerformer() { 3341 if (this.performer == null) 3342 return false; 3343 for (Reference item : this.performer) 3344 if (!item.isEmpty()) 3345 return true; 3346 return false; 3347 } 3348 3349 public Reference addPerformer() { // 3 3350 Reference t = new Reference(); 3351 if (this.performer == null) 3352 this.performer = new ArrayList<Reference>(); 3353 this.performer.add(t); 3354 return t; 3355 } 3356 3357 public Consent addPerformer(Reference t) { // 3 3358 if (t == null) 3359 return this; 3360 if (this.performer == null) 3361 this.performer = new ArrayList<Reference>(); 3362 this.performer.add(t); 3363 return this; 3364 } 3365 3366 /** 3367 * @return The first repetition of repeating field {@link #performer}, creating 3368 * it if it does not already exist 3369 */ 3370 public Reference getPerformerFirstRep() { 3371 if (getPerformer().isEmpty()) { 3372 addPerformer(); 3373 } 3374 return getPerformer().get(0); 3375 } 3376 3377 /** 3378 * @return {@link #organization} (The organization that manages the consent, and 3379 * the framework within which it is executed.) 3380 */ 3381 public List<Reference> getOrganization() { 3382 if (this.organization == null) 3383 this.organization = new ArrayList<Reference>(); 3384 return this.organization; 3385 } 3386 3387 /** 3388 * @return Returns a reference to <code>this</code> for easy method chaining 3389 */ 3390 public Consent setOrganization(List<Reference> theOrganization) { 3391 this.organization = theOrganization; 3392 return this; 3393 } 3394 3395 public boolean hasOrganization() { 3396 if (this.organization == null) 3397 return false; 3398 for (Reference item : this.organization) 3399 if (!item.isEmpty()) 3400 return true; 3401 return false; 3402 } 3403 3404 public Reference addOrganization() { // 3 3405 Reference t = new Reference(); 3406 if (this.organization == null) 3407 this.organization = new ArrayList<Reference>(); 3408 this.organization.add(t); 3409 return t; 3410 } 3411 3412 public Consent addOrganization(Reference t) { // 3 3413 if (t == null) 3414 return this; 3415 if (this.organization == null) 3416 this.organization = new ArrayList<Reference>(); 3417 this.organization.add(t); 3418 return this; 3419 } 3420 3421 /** 3422 * @return The first repetition of repeating field {@link #organization}, 3423 * creating it if it does not already exist 3424 */ 3425 public Reference getOrganizationFirstRep() { 3426 if (getOrganization().isEmpty()) { 3427 addOrganization(); 3428 } 3429 return getOrganization().get(0); 3430 } 3431 3432 /** 3433 * @return {@link #source} (The source on which this consent statement is based. 3434 * The source might be a scanned original paper form, or a reference to 3435 * a consent that links back to such a source, a reference to a document 3436 * repository (e.g. XDS) that stores the original consent document.) 3437 */ 3438 public Type getSource() { 3439 return this.source; 3440 } 3441 3442 /** 3443 * @return {@link #source} (The source on which this consent statement is based. 3444 * The source might be a scanned original paper form, or a reference to 3445 * a consent that links back to such a source, a reference to a document 3446 * repository (e.g. XDS) that stores the original consent document.) 3447 */ 3448 public Attachment getSourceAttachment() throws FHIRException { 3449 if (this.source == null) 3450 this.source = new Attachment(); 3451 if (!(this.source instanceof Attachment)) 3452 throw new FHIRException("Type mismatch: the type Attachment was expected, but " + this.source.getClass().getName() 3453 + " was encountered"); 3454 return (Attachment) this.source; 3455 } 3456 3457 public boolean hasSourceAttachment() { 3458 return this.source instanceof Attachment; 3459 } 3460 3461 /** 3462 * @return {@link #source} (The source on which this consent statement is based. 3463 * The source might be a scanned original paper form, or a reference to 3464 * a consent that links back to such a source, a reference to a document 3465 * repository (e.g. XDS) that stores the original consent document.) 3466 */ 3467 public Reference getSourceReference() throws FHIRException { 3468 if (this.source == null) 3469 this.source = new Reference(); 3470 if (!(this.source instanceof Reference)) 3471 throw new FHIRException("Type mismatch: the type Reference was expected, but " + this.source.getClass().getName() 3472 + " was encountered"); 3473 return (Reference) this.source; 3474 } 3475 3476 public boolean hasSourceReference() { 3477 return this.source instanceof Reference; 3478 } 3479 3480 public boolean hasSource() { 3481 return this.source != null && !this.source.isEmpty(); 3482 } 3483 3484 /** 3485 * @param value {@link #source} (The source on which this consent statement is 3486 * based. The source might be a scanned original paper form, or a 3487 * reference to a consent that links back to such a source, a 3488 * reference to a document repository (e.g. XDS) that stores the 3489 * original consent document.) 3490 */ 3491 public Consent setSource(Type value) { 3492 if (value != null && !(value instanceof Attachment || value instanceof Reference)) 3493 throw new Error("Not the right type for Consent.source[x]: " + value.fhirType()); 3494 this.source = value; 3495 return this; 3496 } 3497 3498 /** 3499 * @return {@link #policy} (The references to the policies that are included in 3500 * this consent scope. Policies may be organizational, but are often 3501 * defined jurisdictionally, or in law.) 3502 */ 3503 public List<ConsentPolicyComponent> getPolicy() { 3504 if (this.policy == null) 3505 this.policy = new ArrayList<ConsentPolicyComponent>(); 3506 return this.policy; 3507 } 3508 3509 /** 3510 * @return Returns a reference to <code>this</code> for easy method chaining 3511 */ 3512 public Consent setPolicy(List<ConsentPolicyComponent> thePolicy) { 3513 this.policy = thePolicy; 3514 return this; 3515 } 3516 3517 public boolean hasPolicy() { 3518 if (this.policy == null) 3519 return false; 3520 for (ConsentPolicyComponent item : this.policy) 3521 if (!item.isEmpty()) 3522 return true; 3523 return false; 3524 } 3525 3526 public ConsentPolicyComponent addPolicy() { // 3 3527 ConsentPolicyComponent t = new ConsentPolicyComponent(); 3528 if (this.policy == null) 3529 this.policy = new ArrayList<ConsentPolicyComponent>(); 3530 this.policy.add(t); 3531 return t; 3532 } 3533 3534 public Consent addPolicy(ConsentPolicyComponent t) { // 3 3535 if (t == null) 3536 return this; 3537 if (this.policy == null) 3538 this.policy = new ArrayList<ConsentPolicyComponent>(); 3539 this.policy.add(t); 3540 return this; 3541 } 3542 3543 /** 3544 * @return The first repetition of repeating field {@link #policy}, creating it 3545 * if it does not already exist 3546 */ 3547 public ConsentPolicyComponent getPolicyFirstRep() { 3548 if (getPolicy().isEmpty()) { 3549 addPolicy(); 3550 } 3551 return getPolicy().get(0); 3552 } 3553 3554 /** 3555 * @return {@link #policyRule} (A reference to the specific base computable 3556 * regulation or policy.) 3557 */ 3558 public CodeableConcept getPolicyRule() { 3559 if (this.policyRule == null) 3560 if (Configuration.errorOnAutoCreate()) 3561 throw new Error("Attempt to auto-create Consent.policyRule"); 3562 else if (Configuration.doAutoCreate()) 3563 this.policyRule = new CodeableConcept(); // cc 3564 return this.policyRule; 3565 } 3566 3567 public boolean hasPolicyRule() { 3568 return this.policyRule != null && !this.policyRule.isEmpty(); 3569 } 3570 3571 /** 3572 * @param value {@link #policyRule} (A reference to the specific base computable 3573 * regulation or policy.) 3574 */ 3575 public Consent setPolicyRule(CodeableConcept value) { 3576 this.policyRule = value; 3577 return this; 3578 } 3579 3580 /** 3581 * @return {@link #verification} (Whether a treatment instruction (e.g. 3582 * artificial respiration yes or no) was verified with the patient, 3583 * his/her family or another authorized person.) 3584 */ 3585 public List<ConsentVerificationComponent> getVerification() { 3586 if (this.verification == null) 3587 this.verification = new ArrayList<ConsentVerificationComponent>(); 3588 return this.verification; 3589 } 3590 3591 /** 3592 * @return Returns a reference to <code>this</code> for easy method chaining 3593 */ 3594 public Consent setVerification(List<ConsentVerificationComponent> theVerification) { 3595 this.verification = theVerification; 3596 return this; 3597 } 3598 3599 public boolean hasVerification() { 3600 if (this.verification == null) 3601 return false; 3602 for (ConsentVerificationComponent item : this.verification) 3603 if (!item.isEmpty()) 3604 return true; 3605 return false; 3606 } 3607 3608 public ConsentVerificationComponent addVerification() { // 3 3609 ConsentVerificationComponent t = new ConsentVerificationComponent(); 3610 if (this.verification == null) 3611 this.verification = new ArrayList<ConsentVerificationComponent>(); 3612 this.verification.add(t); 3613 return t; 3614 } 3615 3616 public Consent addVerification(ConsentVerificationComponent t) { // 3 3617 if (t == null) 3618 return this; 3619 if (this.verification == null) 3620 this.verification = new ArrayList<ConsentVerificationComponent>(); 3621 this.verification.add(t); 3622 return this; 3623 } 3624 3625 /** 3626 * @return The first repetition of repeating field {@link #verification}, 3627 * creating it if it does not already exist 3628 */ 3629 public ConsentVerificationComponent getVerificationFirstRep() { 3630 if (getVerification().isEmpty()) { 3631 addVerification(); 3632 } 3633 return getVerification().get(0); 3634 } 3635 3636 /** 3637 * @return {@link #provision} (An exception to the base policy of this consent. 3638 * An exception can be an addition or removal of access permissions.) 3639 */ 3640 public ProvisionComponent getProvision() { 3641 if (this.provision == null) 3642 if (Configuration.errorOnAutoCreate()) 3643 throw new Error("Attempt to auto-create Consent.provision"); 3644 else if (Configuration.doAutoCreate()) 3645 this.provision = new ProvisionComponent(); // cc 3646 return this.provision; 3647 } 3648 3649 public boolean hasProvision() { 3650 return this.provision != null && !this.provision.isEmpty(); 3651 } 3652 3653 /** 3654 * @param value {@link #provision} (An exception to the base policy of this 3655 * consent. An exception can be an addition or removal of access 3656 * permissions.) 3657 */ 3658 public Consent setProvision(ProvisionComponent value) { 3659 this.provision = value; 3660 return this; 3661 } 3662 3663 protected void listChildren(List<Property> children) { 3664 super.listChildren(children); 3665 children.add(new Property("identifier", "Identifier", "Unique identifier for this copy of the Consent Statement.", 3666 0, java.lang.Integer.MAX_VALUE, identifier)); 3667 children.add(new Property("status", "code", "Indicates the current state of this consent.", 0, 1, status)); 3668 children.add(new Property("scope", "CodeableConcept", 3669 "A selector of the type of consent being presented: ADR, Privacy, Treatment, Research. This list is now extensible.", 3670 0, 1, scope)); 3671 children.add(new Property("category", "CodeableConcept", 3672 "A classification of the type of consents found in the statement. This element supports indexing and retrieval of consent statements.", 3673 0, java.lang.Integer.MAX_VALUE, category)); 3674 children.add(new Property("patient", "Reference(Patient)", 3675 "The patient/healthcare consumer to whom this consent applies.", 0, 1, patient)); 3676 children.add( 3677 new Property("dateTime", "dateTime", "When this Consent was issued / created / indexed.", 0, 1, dateTime)); 3678 children.add(new Property("performer", 3679 "Reference(Organization|Patient|Practitioner|RelatedPerson|PractitionerRole)", 3680 "Either the Grantor, which is the entity responsible for granting the rights listed in a Consent Directive or the Grantee, which is the entity responsible for complying with the Consent Directive, including any obligations or limitations on authorizations and enforcement of prohibitions.", 3681 0, java.lang.Integer.MAX_VALUE, performer)); 3682 children.add(new Property("organization", "Reference(Organization)", 3683 "The organization that manages the consent, and the framework within which it is executed.", 0, 3684 java.lang.Integer.MAX_VALUE, organization)); 3685 children.add(new Property("source[x]", 3686 "Attachment|Reference(Consent|DocumentReference|Contract|QuestionnaireResponse)", 3687 "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document.", 3688 0, 1, source)); 3689 children.add(new Property("policy", "", 3690 "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.", 3691 0, java.lang.Integer.MAX_VALUE, policy)); 3692 children.add(new Property("policyRule", "CodeableConcept", 3693 "A reference to the specific base computable regulation or policy.", 0, 1, policyRule)); 3694 children.add(new Property("verification", "", 3695 "Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person.", 3696 0, java.lang.Integer.MAX_VALUE, verification)); 3697 children.add(new Property("provision", "", 3698 "An exception to the base policy of this consent. An exception can be an addition or removal of access permissions.", 3699 0, 1, provision)); 3700 } 3701 3702 @Override 3703 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 3704 switch (_hash) { 3705 case -1618432855: 3706 /* identifier */ return new Property("identifier", "Identifier", 3707 "Unique identifier for this copy of the Consent Statement.", 0, java.lang.Integer.MAX_VALUE, identifier); 3708 case -892481550: 3709 /* status */ return new Property("status", "code", "Indicates the current state of this consent.", 0, 1, status); 3710 case 109264468: 3711 /* scope */ return new Property("scope", "CodeableConcept", 3712 "A selector of the type of consent being presented: ADR, Privacy, Treatment, Research. This list is now extensible.", 3713 0, 1, scope); 3714 case 50511102: 3715 /* category */ return new Property("category", "CodeableConcept", 3716 "A classification of the type of consents found in the statement. This element supports indexing and retrieval of consent statements.", 3717 0, java.lang.Integer.MAX_VALUE, category); 3718 case -791418107: 3719 /* patient */ return new Property("patient", "Reference(Patient)", 3720 "The patient/healthcare consumer to whom this consent applies.", 0, 1, patient); 3721 case 1792749467: 3722 /* dateTime */ return new Property("dateTime", "dateTime", "When this Consent was issued / created / indexed.", 3723 0, 1, dateTime); 3724 case 481140686: 3725 /* performer */ return new Property("performer", 3726 "Reference(Organization|Patient|Practitioner|RelatedPerson|PractitionerRole)", 3727 "Either the Grantor, which is the entity responsible for granting the rights listed in a Consent Directive or the Grantee, which is the entity responsible for complying with the Consent Directive, including any obligations or limitations on authorizations and enforcement of prohibitions.", 3728 0, java.lang.Integer.MAX_VALUE, performer); 3729 case 1178922291: 3730 /* organization */ return new Property("organization", "Reference(Organization)", 3731 "The organization that manages the consent, and the framework within which it is executed.", 0, 3732 java.lang.Integer.MAX_VALUE, organization); 3733 case -1698413947: 3734 /* source[x] */ return new Property("source[x]", 3735 "Attachment|Reference(Consent|DocumentReference|Contract|QuestionnaireResponse)", 3736 "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document.", 3737 0, 1, source); 3738 case -896505829: 3739 /* source */ return new Property("source[x]", 3740 "Attachment|Reference(Consent|DocumentReference|Contract|QuestionnaireResponse)", 3741 "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document.", 3742 0, 1, source); 3743 case 1964406686: 3744 /* sourceAttachment */ return new Property("source[x]", 3745 "Attachment|Reference(Consent|DocumentReference|Contract|QuestionnaireResponse)", 3746 "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document.", 3747 0, 1, source); 3748 case -244259472: 3749 /* sourceReference */ return new Property("source[x]", 3750 "Attachment|Reference(Consent|DocumentReference|Contract|QuestionnaireResponse)", 3751 "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document.", 3752 0, 1, source); 3753 case -982670030: 3754 /* policy */ return new Property("policy", "", 3755 "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.", 3756 0, java.lang.Integer.MAX_VALUE, policy); 3757 case 1593493326: 3758 /* policyRule */ return new Property("policyRule", "CodeableConcept", 3759 "A reference to the specific base computable regulation or policy.", 0, 1, policyRule); 3760 case -1484401125: 3761 /* verification */ return new Property("verification", "", 3762 "Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person.", 3763 0, java.lang.Integer.MAX_VALUE, verification); 3764 case -547120939: 3765 /* provision */ return new Property("provision", "", 3766 "An exception to the base policy of this consent. An exception can be an addition or removal of access permissions.", 3767 0, 1, provision); 3768 default: 3769 return super.getNamedProperty(_hash, _name, _checkValid); 3770 } 3771 3772 } 3773 3774 @Override 3775 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 3776 switch (hash) { 3777 case -1618432855: 3778 /* identifier */ return this.identifier == null ? new Base[0] 3779 : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier 3780 case -892481550: 3781 /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<ConsentState> 3782 case 109264468: 3783 /* scope */ return this.scope == null ? new Base[0] : new Base[] { this.scope }; // CodeableConcept 3784 case 50511102: 3785 /* category */ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept 3786 case -791418107: 3787 /* patient */ return this.patient == null ? new Base[0] : new Base[] { this.patient }; // Reference 3788 case 1792749467: 3789 /* dateTime */ return this.dateTime == null ? new Base[0] : new Base[] { this.dateTime }; // DateTimeType 3790 case 481140686: 3791 /* performer */ return this.performer == null ? new Base[0] 3792 : this.performer.toArray(new Base[this.performer.size()]); // Reference 3793 case 1178922291: 3794 /* organization */ return this.organization == null ? new Base[0] 3795 : this.organization.toArray(new Base[this.organization.size()]); // Reference 3796 case -896505829: 3797 /* source */ return this.source == null ? new Base[0] : new Base[] { this.source }; // Type 3798 case -982670030: 3799 /* policy */ return this.policy == null ? new Base[0] : this.policy.toArray(new Base[this.policy.size()]); // ConsentPolicyComponent 3800 case 1593493326: 3801 /* policyRule */ return this.policyRule == null ? new Base[0] : new Base[] { this.policyRule }; // CodeableConcept 3802 case -1484401125: 3803 /* verification */ return this.verification == null ? new Base[0] 3804 : this.verification.toArray(new Base[this.verification.size()]); // ConsentVerificationComponent 3805 case -547120939: 3806 /* provision */ return this.provision == null ? new Base[0] : new Base[] { this.provision }; // provisionComponent 3807 default: 3808 return super.getProperty(hash, name, checkValid); 3809 } 3810 3811 } 3812 3813 @Override 3814 public Base setProperty(int hash, String name, Base value) throws FHIRException { 3815 switch (hash) { 3816 case -1618432855: // identifier 3817 this.getIdentifier().add(castToIdentifier(value)); // Identifier 3818 return value; 3819 case -892481550: // status 3820 value = new ConsentStateEnumFactory().fromType(castToCode(value)); 3821 this.status = (Enumeration) value; // Enumeration<ConsentState> 3822 return value; 3823 case 109264468: // scope 3824 this.scope = castToCodeableConcept(value); // CodeableConcept 3825 return value; 3826 case 50511102: // category 3827 this.getCategory().add(castToCodeableConcept(value)); // CodeableConcept 3828 return value; 3829 case -791418107: // patient 3830 this.patient = castToReference(value); // Reference 3831 return value; 3832 case 1792749467: // dateTime 3833 this.dateTime = castToDateTime(value); // DateTimeType 3834 return value; 3835 case 481140686: // performer 3836 this.getPerformer().add(castToReference(value)); // Reference 3837 return value; 3838 case 1178922291: // organization 3839 this.getOrganization().add(castToReference(value)); // Reference 3840 return value; 3841 case -896505829: // source 3842 this.source = castToType(value); // Type 3843 return value; 3844 case -982670030: // policy 3845 this.getPolicy().add((ConsentPolicyComponent) value); // ConsentPolicyComponent 3846 return value; 3847 case 1593493326: // policyRule 3848 this.policyRule = castToCodeableConcept(value); // CodeableConcept 3849 return value; 3850 case -1484401125: // verification 3851 this.getVerification().add((ConsentVerificationComponent) value); // ConsentVerificationComponent 3852 return value; 3853 case -547120939: // provision 3854 this.provision = (ProvisionComponent) value; // provisionComponent 3855 return value; 3856 default: 3857 return super.setProperty(hash, name, value); 3858 } 3859 3860 } 3861 3862 @Override 3863 public Base setProperty(String name, Base value) throws FHIRException { 3864 if (name.equals("identifier")) { 3865 this.getIdentifier().add(castToIdentifier(value)); 3866 } else if (name.equals("status")) { 3867 value = new ConsentStateEnumFactory().fromType(castToCode(value)); 3868 this.status = (Enumeration) value; // Enumeration<ConsentState> 3869 } else if (name.equals("scope")) { 3870 this.scope = castToCodeableConcept(value); // CodeableConcept 3871 } else if (name.equals("category")) { 3872 this.getCategory().add(castToCodeableConcept(value)); 3873 } else if (name.equals("patient")) { 3874 this.patient = castToReference(value); // Reference 3875 } else if (name.equals("dateTime")) { 3876 this.dateTime = castToDateTime(value); // DateTimeType 3877 } else if (name.equals("performer")) { 3878 this.getPerformer().add(castToReference(value)); 3879 } else if (name.equals("organization")) { 3880 this.getOrganization().add(castToReference(value)); 3881 } else if (name.equals("source[x]")) { 3882 this.source = castToType(value); // Type 3883 } else if (name.equals("policy")) { 3884 this.getPolicy().add((ConsentPolicyComponent) value); 3885 } else if (name.equals("policyRule")) { 3886 this.policyRule = castToCodeableConcept(value); // CodeableConcept 3887 } else if (name.equals("verification")) { 3888 this.getVerification().add((ConsentVerificationComponent) value); 3889 } else if (name.equals("provision")) { 3890 this.provision = (ProvisionComponent) value; // provisionComponent 3891 } else 3892 return super.setProperty(name, value); 3893 return value; 3894 } 3895 3896 @Override 3897 public void removeChild(String name, Base value) throws FHIRException { 3898 if (name.equals("identifier")) { 3899 this.getIdentifier().remove(castToIdentifier(value)); 3900 } else if (name.equals("status")) { 3901 this.status = null; 3902 } else if (name.equals("scope")) { 3903 this.scope = null; 3904 } else if (name.equals("category")) { 3905 this.getCategory().remove(castToCodeableConcept(value)); 3906 } else if (name.equals("patient")) { 3907 this.patient = null; 3908 } else if (name.equals("dateTime")) { 3909 this.dateTime = null; 3910 } else if (name.equals("performer")) { 3911 this.getPerformer().remove(castToReference(value)); 3912 } else if (name.equals("organization")) { 3913 this.getOrganization().remove(castToReference(value)); 3914 } else if (name.equals("source[x]")) { 3915 this.source = null; 3916 } else if (name.equals("policy")) { 3917 this.getPolicy().remove((ConsentPolicyComponent) value); 3918 } else if (name.equals("policyRule")) { 3919 this.policyRule = null; 3920 } else if (name.equals("verification")) { 3921 this.getVerification().remove((ConsentVerificationComponent) value); 3922 } else if (name.equals("provision")) { 3923 this.provision = (ProvisionComponent) value; // provisionComponent 3924 } else 3925 super.removeChild(name, value); 3926 3927 } 3928 3929 @Override 3930 public Base makeProperty(int hash, String name) throws FHIRException { 3931 switch (hash) { 3932 case -1618432855: 3933 return addIdentifier(); 3934 case -892481550: 3935 return getStatusElement(); 3936 case 109264468: 3937 return getScope(); 3938 case 50511102: 3939 return addCategory(); 3940 case -791418107: 3941 return getPatient(); 3942 case 1792749467: 3943 return getDateTimeElement(); 3944 case 481140686: 3945 return addPerformer(); 3946 case 1178922291: 3947 return addOrganization(); 3948 case -1698413947: 3949 return getSource(); 3950 case -896505829: 3951 return getSource(); 3952 case -982670030: 3953 return addPolicy(); 3954 case 1593493326: 3955 return getPolicyRule(); 3956 case -1484401125: 3957 return addVerification(); 3958 case -547120939: 3959 return getProvision(); 3960 default: 3961 return super.makeProperty(hash, name); 3962 } 3963 3964 } 3965 3966 @Override 3967 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 3968 switch (hash) { 3969 case -1618432855: 3970 /* identifier */ return new String[] { "Identifier" }; 3971 case -892481550: 3972 /* status */ return new String[] { "code" }; 3973 case 109264468: 3974 /* scope */ return new String[] { "CodeableConcept" }; 3975 case 50511102: 3976 /* category */ return new String[] { "CodeableConcept" }; 3977 case -791418107: 3978 /* patient */ return new String[] { "Reference" }; 3979 case 1792749467: 3980 /* dateTime */ return new String[] { "dateTime" }; 3981 case 481140686: 3982 /* performer */ return new String[] { "Reference" }; 3983 case 1178922291: 3984 /* organization */ return new String[] { "Reference" }; 3985 case -896505829: 3986 /* source */ return new String[] { "Attachment", "Reference" }; 3987 case -982670030: 3988 /* policy */ return new String[] {}; 3989 case 1593493326: 3990 /* policyRule */ return new String[] { "CodeableConcept" }; 3991 case -1484401125: 3992 /* verification */ return new String[] {}; 3993 case -547120939: 3994 /* provision */ return new String[] {}; 3995 default: 3996 return super.getTypesForProperty(hash, name); 3997 } 3998 3999 } 4000 4001 @Override 4002 public Base addChild(String name) throws FHIRException { 4003 if (name.equals("identifier")) { 4004 return addIdentifier(); 4005 } else if (name.equals("status")) { 4006 throw new FHIRException("Cannot call addChild on a singleton property Consent.status"); 4007 } else if (name.equals("scope")) { 4008 this.scope = new CodeableConcept(); 4009 return this.scope; 4010 } else if (name.equals("category")) { 4011 return addCategory(); 4012 } else if (name.equals("patient")) { 4013 this.patient = new Reference(); 4014 return this.patient; 4015 } else if (name.equals("dateTime")) { 4016 throw new FHIRException("Cannot call addChild on a singleton property Consent.dateTime"); 4017 } else if (name.equals("performer")) { 4018 return addPerformer(); 4019 } else if (name.equals("organization")) { 4020 return addOrganization(); 4021 } else if (name.equals("sourceAttachment")) { 4022 this.source = new Attachment(); 4023 return this.source; 4024 } else if (name.equals("sourceReference")) { 4025 this.source = new Reference(); 4026 return this.source; 4027 } else if (name.equals("policy")) { 4028 return addPolicy(); 4029 } else if (name.equals("policyRule")) { 4030 this.policyRule = new CodeableConcept(); 4031 return this.policyRule; 4032 } else if (name.equals("verification")) { 4033 return addVerification(); 4034 } else if (name.equals("provision")) { 4035 this.provision = new ProvisionComponent(); 4036 return this.provision; 4037 } else 4038 return super.addChild(name); 4039 } 4040 4041 public String fhirType() { 4042 return "Consent"; 4043 4044 } 4045 4046 public Consent copy() { 4047 Consent dst = new Consent(); 4048 copyValues(dst); 4049 return dst; 4050 } 4051 4052 public void copyValues(Consent dst) { 4053 super.copyValues(dst); 4054 if (identifier != null) { 4055 dst.identifier = new ArrayList<Identifier>(); 4056 for (Identifier i : identifier) 4057 dst.identifier.add(i.copy()); 4058 } 4059 ; 4060 dst.status = status == null ? null : status.copy(); 4061 dst.scope = scope == null ? null : scope.copy(); 4062 if (category != null) { 4063 dst.category = new ArrayList<CodeableConcept>(); 4064 for (CodeableConcept i : category) 4065 dst.category.add(i.copy()); 4066 } 4067 ; 4068 dst.patient = patient == null ? null : patient.copy(); 4069 dst.dateTime = dateTime == null ? null : dateTime.copy(); 4070 if (performer != null) { 4071 dst.performer = new ArrayList<Reference>(); 4072 for (Reference i : performer) 4073 dst.performer.add(i.copy()); 4074 } 4075 ; 4076 if (organization != null) { 4077 dst.organization = new ArrayList<Reference>(); 4078 for (Reference i : organization) 4079 dst.organization.add(i.copy()); 4080 } 4081 ; 4082 dst.source = source == null ? null : source.copy(); 4083 if (policy != null) { 4084 dst.policy = new ArrayList<ConsentPolicyComponent>(); 4085 for (ConsentPolicyComponent i : policy) 4086 dst.policy.add(i.copy()); 4087 } 4088 ; 4089 dst.policyRule = policyRule == null ? null : policyRule.copy(); 4090 if (verification != null) { 4091 dst.verification = new ArrayList<ConsentVerificationComponent>(); 4092 for (ConsentVerificationComponent i : verification) 4093 dst.verification.add(i.copy()); 4094 } 4095 ; 4096 dst.provision = provision == null ? null : provision.copy(); 4097 } 4098 4099 protected Consent typedCopy() { 4100 return copy(); 4101 } 4102 4103 @Override 4104 public boolean equalsDeep(Base other_) { 4105 if (!super.equalsDeep(other_)) 4106 return false; 4107 if (!(other_ instanceof Consent)) 4108 return false; 4109 Consent o = (Consent) other_; 4110 return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) 4111 && compareDeep(scope, o.scope, true) && compareDeep(category, o.category, true) 4112 && compareDeep(patient, o.patient, true) && compareDeep(dateTime, o.dateTime, true) 4113 && compareDeep(performer, o.performer, true) && compareDeep(organization, o.organization, true) 4114 && compareDeep(source, o.source, true) && compareDeep(policy, o.policy, true) 4115 && compareDeep(policyRule, o.policyRule, true) && compareDeep(verification, o.verification, true) 4116 && compareDeep(provision, o.provision, true); 4117 } 4118 4119 @Override 4120 public boolean equalsShallow(Base other_) { 4121 if (!super.equalsShallow(other_)) 4122 return false; 4123 if (!(other_ instanceof Consent)) 4124 return false; 4125 Consent o = (Consent) other_; 4126 return compareValues(status, o.status, true) && compareValues(dateTime, o.dateTime, true); 4127 } 4128 4129 public boolean isEmpty() { 4130 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, scope, category, patient, 4131 dateTime, performer, organization, source, policy, policyRule, verification, provision); 4132 } 4133 4134 @Override 4135 public ResourceType getResourceType() { 4136 return ResourceType.Consent; 4137 } 4138 4139 /** 4140 * Search parameter: <b>date</b> 4141 * <p> 4142 * Description: <b>When this Consent was created or indexed</b><br> 4143 * Type: <b>date</b><br> 4144 * Path: <b>Consent.dateTime</b><br> 4145 * </p> 4146 */ 4147 @SearchParamDefinition(name = "date", path = "Consent.dateTime", description = "When this Consent was created or indexed", type = "date") 4148 public static final String SP_DATE = "date"; 4149 /** 4150 * <b>Fluent Client</b> search parameter constant for <b>date</b> 4151 * <p> 4152 * Description: <b>When this Consent was created or indexed</b><br> 4153 * Type: <b>date</b><br> 4154 * Path: <b>Consent.dateTime</b><br> 4155 * </p> 4156 */ 4157 public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam( 4158 SP_DATE); 4159 4160 /** 4161 * Search parameter: <b>identifier</b> 4162 * <p> 4163 * Description: <b>Identifier for this record (external references)</b><br> 4164 * Type: <b>token</b><br> 4165 * Path: <b>Consent.identifier</b><br> 4166 * </p> 4167 */ 4168 @SearchParamDefinition(name = "identifier", path = "Consent.identifier", description = "Identifier for this record (external references)", type = "token") 4169 public static final String SP_IDENTIFIER = "identifier"; 4170 /** 4171 * <b>Fluent Client</b> search parameter constant for <b>identifier</b> 4172 * <p> 4173 * Description: <b>Identifier for this record (external references)</b><br> 4174 * Type: <b>token</b><br> 4175 * Path: <b>Consent.identifier</b><br> 4176 * </p> 4177 */ 4178 public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4179 SP_IDENTIFIER); 4180 4181 /** 4182 * Search parameter: <b>period</b> 4183 * <p> 4184 * Description: <b>Timeframe for this rule</b><br> 4185 * Type: <b>date</b><br> 4186 * Path: <b>Consent.provision.period</b><br> 4187 * </p> 4188 */ 4189 @SearchParamDefinition(name = "period", path = "Consent.provision.period", description = "Timeframe for this rule", type = "date") 4190 public static final String SP_PERIOD = "period"; 4191 /** 4192 * <b>Fluent Client</b> search parameter constant for <b>period</b> 4193 * <p> 4194 * Description: <b>Timeframe for this rule</b><br> 4195 * Type: <b>date</b><br> 4196 * Path: <b>Consent.provision.period</b><br> 4197 * </p> 4198 */ 4199 public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam( 4200 SP_PERIOD); 4201 4202 /** 4203 * Search parameter: <b>data</b> 4204 * <p> 4205 * Description: <b>The actual data reference</b><br> 4206 * Type: <b>reference</b><br> 4207 * Path: <b>Consent.provision.data.reference</b><br> 4208 * </p> 4209 */ 4210 @SearchParamDefinition(name = "data", path = "Consent.provision.data.reference", description = "The actual data reference", type = "reference") 4211 public static final String SP_DATA = "data"; 4212 /** 4213 * <b>Fluent Client</b> search parameter constant for <b>data</b> 4214 * <p> 4215 * Description: <b>The actual data reference</b><br> 4216 * Type: <b>reference</b><br> 4217 * Path: <b>Consent.provision.data.reference</b><br> 4218 * </p> 4219 */ 4220 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DATA = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 4221 SP_DATA); 4222 4223 /** 4224 * Constant for fluent queries to be used to add include statements. Specifies 4225 * the path value of "<b>Consent:data</b>". 4226 */ 4227 public static final ca.uhn.fhir.model.api.Include INCLUDE_DATA = new ca.uhn.fhir.model.api.Include("Consent:data") 4228 .toLocked(); 4229 4230 /** 4231 * Search parameter: <b>purpose</b> 4232 * <p> 4233 * Description: <b>Context of activities covered by this rule</b><br> 4234 * Type: <b>token</b><br> 4235 * Path: <b>Consent.provision.purpose</b><br> 4236 * </p> 4237 */ 4238 @SearchParamDefinition(name = "purpose", path = "Consent.provision.purpose", description = "Context of activities covered by this rule", type = "token") 4239 public static final String SP_PURPOSE = "purpose"; 4240 /** 4241 * <b>Fluent Client</b> search parameter constant for <b>purpose</b> 4242 * <p> 4243 * Description: <b>Context of activities covered by this rule</b><br> 4244 * Type: <b>token</b><br> 4245 * Path: <b>Consent.provision.purpose</b><br> 4246 * </p> 4247 */ 4248 public static final ca.uhn.fhir.rest.gclient.TokenClientParam PURPOSE = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4249 SP_PURPOSE); 4250 4251 /** 4252 * Search parameter: <b>source-reference</b> 4253 * <p> 4254 * Description: <b>Search by reference to a Consent, DocumentReference, Contract 4255 * or QuestionnaireResponse</b><br> 4256 * Type: <b>reference</b><br> 4257 * Path: <b>Consent.source[x]</b><br> 4258 * </p> 4259 */ 4260 @SearchParamDefinition(name = "source-reference", path = "Consent.source", description = "Search by reference to a Consent, DocumentReference, Contract or QuestionnaireResponse", type = "reference", target = { 4261 Consent.class, Contract.class, DocumentReference.class, QuestionnaireResponse.class }) 4262 public static final String SP_SOURCE_REFERENCE = "source-reference"; 4263 /** 4264 * <b>Fluent Client</b> search parameter constant for <b>source-reference</b> 4265 * <p> 4266 * Description: <b>Search by reference to a Consent, DocumentReference, Contract 4267 * or QuestionnaireResponse</b><br> 4268 * Type: <b>reference</b><br> 4269 * Path: <b>Consent.source[x]</b><br> 4270 * </p> 4271 */ 4272 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SOURCE_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 4273 SP_SOURCE_REFERENCE); 4274 4275 /** 4276 * Constant for fluent queries to be used to add include statements. Specifies 4277 * the path value of "<b>Consent:source-reference</b>". 4278 */ 4279 public static final ca.uhn.fhir.model.api.Include INCLUDE_SOURCE_REFERENCE = new ca.uhn.fhir.model.api.Include( 4280 "Consent:source-reference").toLocked(); 4281 4282 /** 4283 * Search parameter: <b>actor</b> 4284 * <p> 4285 * Description: <b>Resource for the actor (or group, by role)</b><br> 4286 * Type: <b>reference</b><br> 4287 * Path: <b>Consent.provision.actor.reference</b><br> 4288 * </p> 4289 */ 4290 @SearchParamDefinition(name = "actor", path = "Consent.provision.actor.reference", description = "Resource for the actor (or group, by role)", type = "reference", target = { 4291 CareTeam.class, Device.class, Group.class, Organization.class, Patient.class, Practitioner.class, 4292 PractitionerRole.class, RelatedPerson.class }) 4293 public static final String SP_ACTOR = "actor"; 4294 /** 4295 * <b>Fluent Client</b> search parameter constant for <b>actor</b> 4296 * <p> 4297 * Description: <b>Resource for the actor (or group, by role)</b><br> 4298 * Type: <b>reference</b><br> 4299 * Path: <b>Consent.provision.actor.reference</b><br> 4300 * </p> 4301 */ 4302 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ACTOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 4303 SP_ACTOR); 4304 4305 /** 4306 * Constant for fluent queries to be used to add include statements. Specifies 4307 * the path value of "<b>Consent:actor</b>". 4308 */ 4309 public static final ca.uhn.fhir.model.api.Include INCLUDE_ACTOR = new ca.uhn.fhir.model.api.Include("Consent:actor") 4310 .toLocked(); 4311 4312 /** 4313 * Search parameter: <b>security-label</b> 4314 * <p> 4315 * Description: <b>Security Labels that define affected resources</b><br> 4316 * Type: <b>token</b><br> 4317 * Path: <b>Consent.provision.securityLabel</b><br> 4318 * </p> 4319 */ 4320 @SearchParamDefinition(name = "security-label", path = "Consent.provision.securityLabel", description = "Security Labels that define affected resources", type = "token") 4321 public static final String SP_SECURITY_LABEL = "security-label"; 4322 /** 4323 * <b>Fluent Client</b> search parameter constant for <b>security-label</b> 4324 * <p> 4325 * Description: <b>Security Labels that define affected resources</b><br> 4326 * Type: <b>token</b><br> 4327 * Path: <b>Consent.provision.securityLabel</b><br> 4328 * </p> 4329 */ 4330 public static final ca.uhn.fhir.rest.gclient.TokenClientParam SECURITY_LABEL = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4331 SP_SECURITY_LABEL); 4332 4333 /** 4334 * Search parameter: <b>patient</b> 4335 * <p> 4336 * Description: <b>Who the consent applies to</b><br> 4337 * Type: <b>reference</b><br> 4338 * Path: <b>Consent.patient</b><br> 4339 * </p> 4340 */ 4341 @SearchParamDefinition(name = "patient", path = "Consent.patient", description = "Who the consent applies to", type = "reference", providesMembershipIn = { 4342 @ca.uhn.fhir.model.api.annotation.Compartment(name = "Patient") }, target = { Patient.class }) 4343 public static final String SP_PATIENT = "patient"; 4344 /** 4345 * <b>Fluent Client</b> search parameter constant for <b>patient</b> 4346 * <p> 4347 * Description: <b>Who the consent applies to</b><br> 4348 * Type: <b>reference</b><br> 4349 * Path: <b>Consent.patient</b><br> 4350 * </p> 4351 */ 4352 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 4353 SP_PATIENT); 4354 4355 /** 4356 * Constant for fluent queries to be used to add include statements. Specifies 4357 * the path value of "<b>Consent:patient</b>". 4358 */ 4359 public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include( 4360 "Consent:patient").toLocked(); 4361 4362 /** 4363 * Search parameter: <b>organization</b> 4364 * <p> 4365 * Description: <b>Custodian of the consent</b><br> 4366 * Type: <b>reference</b><br> 4367 * Path: <b>Consent.organization</b><br> 4368 * </p> 4369 */ 4370 @SearchParamDefinition(name = "organization", path = "Consent.organization", description = "Custodian of the consent", type = "reference", target = { 4371 Organization.class }) 4372 public static final String SP_ORGANIZATION = "organization"; 4373 /** 4374 * <b>Fluent Client</b> search parameter constant for <b>organization</b> 4375 * <p> 4376 * Description: <b>Custodian of the consent</b><br> 4377 * Type: <b>reference</b><br> 4378 * Path: <b>Consent.organization</b><br> 4379 * </p> 4380 */ 4381 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 4382 SP_ORGANIZATION); 4383 4384 /** 4385 * Constant for fluent queries to be used to add include statements. Specifies 4386 * the path value of "<b>Consent:organization</b>". 4387 */ 4388 public static final ca.uhn.fhir.model.api.Include INCLUDE_ORGANIZATION = new ca.uhn.fhir.model.api.Include( 4389 "Consent:organization").toLocked(); 4390 4391 /** 4392 * Search parameter: <b>scope</b> 4393 * <p> 4394 * Description: <b>Which of the four areas this resource covers 4395 * (extensible)</b><br> 4396 * Type: <b>token</b><br> 4397 * Path: <b>Consent.scope</b><br> 4398 * </p> 4399 */ 4400 @SearchParamDefinition(name = "scope", path = "Consent.scope", description = "Which of the four areas this resource covers (extensible)", type = "token") 4401 public static final String SP_SCOPE = "scope"; 4402 /** 4403 * <b>Fluent Client</b> search parameter constant for <b>scope</b> 4404 * <p> 4405 * Description: <b>Which of the four areas this resource covers 4406 * (extensible)</b><br> 4407 * Type: <b>token</b><br> 4408 * Path: <b>Consent.scope</b><br> 4409 * </p> 4410 */ 4411 public static final ca.uhn.fhir.rest.gclient.TokenClientParam SCOPE = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4412 SP_SCOPE); 4413 4414 /** 4415 * Search parameter: <b>action</b> 4416 * <p> 4417 * Description: <b>Actions controlled by this rule</b><br> 4418 * Type: <b>token</b><br> 4419 * Path: <b>Consent.provision.action</b><br> 4420 * </p> 4421 */ 4422 @SearchParamDefinition(name = "action", path = "Consent.provision.action", description = "Actions controlled by this rule", type = "token") 4423 public static final String SP_ACTION = "action"; 4424 /** 4425 * <b>Fluent Client</b> search parameter constant for <b>action</b> 4426 * <p> 4427 * Description: <b>Actions controlled by this rule</b><br> 4428 * Type: <b>token</b><br> 4429 * Path: <b>Consent.provision.action</b><br> 4430 * </p> 4431 */ 4432 public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTION = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4433 SP_ACTION); 4434 4435 /** 4436 * Search parameter: <b>consentor</b> 4437 * <p> 4438 * Description: <b>Who is agreeing to the policy and rules</b><br> 4439 * Type: <b>reference</b><br> 4440 * Path: <b>Consent.performer</b><br> 4441 * </p> 4442 */ 4443 @SearchParamDefinition(name = "consentor", path = "Consent.performer", description = "Who is agreeing to the policy and rules", type = "reference", target = { 4444 Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class }) 4445 public static final String SP_CONSENTOR = "consentor"; 4446 /** 4447 * <b>Fluent Client</b> search parameter constant for <b>consentor</b> 4448 * <p> 4449 * Description: <b>Who is agreeing to the policy and rules</b><br> 4450 * Type: <b>reference</b><br> 4451 * Path: <b>Consent.performer</b><br> 4452 * </p> 4453 */ 4454 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONSENTOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 4455 SP_CONSENTOR); 4456 4457 /** 4458 * Constant for fluent queries to be used to add include statements. Specifies 4459 * the path value of "<b>Consent:consentor</b>". 4460 */ 4461 public static final ca.uhn.fhir.model.api.Include INCLUDE_CONSENTOR = new ca.uhn.fhir.model.api.Include( 4462 "Consent:consentor").toLocked(); 4463 4464 /** 4465 * Search parameter: <b>category</b> 4466 * <p> 4467 * Description: <b>Classification of the consent statement - for 4468 * indexing/retrieval</b><br> 4469 * Type: <b>token</b><br> 4470 * Path: <b>Consent.category</b><br> 4471 * </p> 4472 */ 4473 @SearchParamDefinition(name = "category", path = "Consent.category", description = "Classification of the consent statement - for indexing/retrieval", type = "token") 4474 public static final String SP_CATEGORY = "category"; 4475 /** 4476 * <b>Fluent Client</b> search parameter constant for <b>category</b> 4477 * <p> 4478 * Description: <b>Classification of the consent statement - for 4479 * indexing/retrieval</b><br> 4480 * Type: <b>token</b><br> 4481 * Path: <b>Consent.category</b><br> 4482 * </p> 4483 */ 4484 public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4485 SP_CATEGORY); 4486 4487 /** 4488 * Search parameter: <b>status</b> 4489 * <p> 4490 * Description: <b>draft | proposed | active | rejected | inactive | 4491 * entered-in-error</b><br> 4492 * Type: <b>token</b><br> 4493 * Path: <b>Consent.status</b><br> 4494 * </p> 4495 */ 4496 @SearchParamDefinition(name = "status", path = "Consent.status", description = "draft | proposed | active | rejected | inactive | entered-in-error", type = "token") 4497 public static final String SP_STATUS = "status"; 4498 /** 4499 * <b>Fluent Client</b> search parameter constant for <b>status</b> 4500 * <p> 4501 * Description: <b>draft | proposed | active | rejected | inactive | 4502 * entered-in-error</b><br> 4503 * Type: <b>token</b><br> 4504 * Path: <b>Consent.status</b><br> 4505 * </p> 4506 */ 4507 public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam( 4508 SP_STATUS); 4509 4510}