001package org.hl7.fhir.r4.model; 002 003import java.math.BigDecimal; 004 005/* 006 Copyright (c) 2011+, HL7, Inc. 007 All rights reserved. 008 009 Redistribution and use in source and binary forms, with or without modification, 010 are permitted provided that the following conditions are met: 011 012 * Redistributions of source code must retain the above copyright notice, this 013 list of conditions and the following disclaimer. 014 * Redistributions in binary form must reproduce the above copyright notice, 015 this list of conditions and the following disclaimer in the documentation 016 and/or other materials provided with the distribution. 017 * Neither the name of HL7 nor the names of its contributors may be used to 018 endorse or promote products derived from this software without specific 019 prior written permission. 020 021 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 022 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 023 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 024 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 025 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 026 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 027 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 028 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 029 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 030 POSSIBILITY OF SUCH DAMAGE. 031 032*/ 033 034// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1 035import java.util.ArrayList; 036import java.util.Date; 037import java.util.List; 038 039import org.hl7.fhir.exceptions.FHIRException; 040import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 041import org.hl7.fhir.r4.model.Enumerations.NoteType; 042import org.hl7.fhir.r4.model.Enumerations.NoteTypeEnumFactory; 043import org.hl7.fhir.utilities.Utilities; 044 045import ca.uhn.fhir.model.api.annotation.Block; 046import ca.uhn.fhir.model.api.annotation.Child; 047import ca.uhn.fhir.model.api.annotation.Description; 048import ca.uhn.fhir.model.api.annotation.ResourceDef; 049import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; 050 051/** 052 * This resource provides: the claim details; adjudication details from the 053 * processing of a Claim; and optionally account balance information, for 054 * informing the subscriber of the benefits provided. 055 */ 056@ResourceDef(name = "ExplanationOfBenefit", profile = "http://hl7.org/fhir/StructureDefinition/ExplanationOfBenefit") 057public class ExplanationOfBenefit extends DomainResource { 058 059 public enum ExplanationOfBenefitStatus { 060 /** 061 * The resource instance is currently in-force. 062 */ 063 ACTIVE, 064 /** 065 * The resource instance is withdrawn, rescinded or reversed. 066 */ 067 CANCELLED, 068 /** 069 * A new resource instance the contents of which is not complete. 070 */ 071 DRAFT, 072 /** 073 * The resource instance was entered in error. 074 */ 075 ENTEREDINERROR, 076 /** 077 * added to help the parsers with the generic types 078 */ 079 NULL; 080 081 public static ExplanationOfBenefitStatus fromCode(String codeString) throws FHIRException { 082 if (codeString == null || "".equals(codeString)) 083 return null; 084 if ("active".equals(codeString)) 085 return ACTIVE; 086 if ("cancelled".equals(codeString)) 087 return CANCELLED; 088 if ("draft".equals(codeString)) 089 return DRAFT; 090 if ("entered-in-error".equals(codeString)) 091 return ENTEREDINERROR; 092 if (Configuration.isAcceptInvalidEnums()) 093 return null; 094 else 095 throw new FHIRException("Unknown ExplanationOfBenefitStatus code '" + codeString + "'"); 096 } 097 098 public String toCode() { 099 switch (this) { 100 case ACTIVE: 101 return "active"; 102 case CANCELLED: 103 return "cancelled"; 104 case DRAFT: 105 return "draft"; 106 case ENTEREDINERROR: 107 return "entered-in-error"; 108 case NULL: 109 return null; 110 default: 111 return "?"; 112 } 113 } 114 115 public String getSystem() { 116 switch (this) { 117 case ACTIVE: 118 return "http://hl7.org/fhir/explanationofbenefit-status"; 119 case CANCELLED: 120 return "http://hl7.org/fhir/explanationofbenefit-status"; 121 case DRAFT: 122 return "http://hl7.org/fhir/explanationofbenefit-status"; 123 case ENTEREDINERROR: 124 return "http://hl7.org/fhir/explanationofbenefit-status"; 125 case NULL: 126 return null; 127 default: 128 return "?"; 129 } 130 } 131 132 public String getDefinition() { 133 switch (this) { 134 case ACTIVE: 135 return "The resource instance is currently in-force."; 136 case CANCELLED: 137 return "The resource instance is withdrawn, rescinded or reversed."; 138 case DRAFT: 139 return "A new resource instance the contents of which is not complete."; 140 case ENTEREDINERROR: 141 return "The resource instance was entered in error."; 142 case NULL: 143 return null; 144 default: 145 return "?"; 146 } 147 } 148 149 public String getDisplay() { 150 switch (this) { 151 case ACTIVE: 152 return "Active"; 153 case CANCELLED: 154 return "Cancelled"; 155 case DRAFT: 156 return "Draft"; 157 case ENTEREDINERROR: 158 return "Entered In Error"; 159 case NULL: 160 return null; 161 default: 162 return "?"; 163 } 164 } 165 } 166 167 public static class ExplanationOfBenefitStatusEnumFactory implements EnumFactory<ExplanationOfBenefitStatus> { 168 public ExplanationOfBenefitStatus fromCode(String codeString) throws IllegalArgumentException { 169 if (codeString == null || "".equals(codeString)) 170 if (codeString == null || "".equals(codeString)) 171 return null; 172 if ("active".equals(codeString)) 173 return ExplanationOfBenefitStatus.ACTIVE; 174 if ("cancelled".equals(codeString)) 175 return ExplanationOfBenefitStatus.CANCELLED; 176 if ("draft".equals(codeString)) 177 return ExplanationOfBenefitStatus.DRAFT; 178 if ("entered-in-error".equals(codeString)) 179 return ExplanationOfBenefitStatus.ENTEREDINERROR; 180 throw new IllegalArgumentException("Unknown ExplanationOfBenefitStatus code '" + codeString + "'"); 181 } 182 183 public Enumeration<ExplanationOfBenefitStatus> fromType(PrimitiveType<?> code) throws FHIRException { 184 if (code == null) 185 return null; 186 if (code.isEmpty()) 187 return new Enumeration<ExplanationOfBenefitStatus>(this, ExplanationOfBenefitStatus.NULL, code); 188 String codeString = code.asStringValue(); 189 if (codeString == null || "".equals(codeString)) 190 return new Enumeration<ExplanationOfBenefitStatus>(this, ExplanationOfBenefitStatus.NULL, code); 191 if ("active".equals(codeString)) 192 return new Enumeration<ExplanationOfBenefitStatus>(this, ExplanationOfBenefitStatus.ACTIVE, code); 193 if ("cancelled".equals(codeString)) 194 return new Enumeration<ExplanationOfBenefitStatus>(this, ExplanationOfBenefitStatus.CANCELLED, code); 195 if ("draft".equals(codeString)) 196 return new Enumeration<ExplanationOfBenefitStatus>(this, ExplanationOfBenefitStatus.DRAFT, code); 197 if ("entered-in-error".equals(codeString)) 198 return new Enumeration<ExplanationOfBenefitStatus>(this, ExplanationOfBenefitStatus.ENTEREDINERROR, code); 199 throw new FHIRException("Unknown ExplanationOfBenefitStatus code '" + codeString + "'"); 200 } 201 202 public String toCode(ExplanationOfBenefitStatus code) { 203 if (code == ExplanationOfBenefitStatus.NULL) 204 return null; 205 if (code == ExplanationOfBenefitStatus.ACTIVE) 206 return "active"; 207 if (code == ExplanationOfBenefitStatus.CANCELLED) 208 return "cancelled"; 209 if (code == ExplanationOfBenefitStatus.DRAFT) 210 return "draft"; 211 if (code == ExplanationOfBenefitStatus.ENTEREDINERROR) 212 return "entered-in-error"; 213 return "?"; 214 } 215 216 public String toSystem(ExplanationOfBenefitStatus code) { 217 return code.getSystem(); 218 } 219 } 220 221 public enum Use { 222 /** 223 * The treatment is complete and this represents a Claim for the services. 224 */ 225 CLAIM, 226 /** 227 * The treatment is proposed and this represents a Pre-authorization for the 228 * services. 229 */ 230 PREAUTHORIZATION, 231 /** 232 * The treatment is proposed and this represents a Pre-determination for the 233 * services. 234 */ 235 PREDETERMINATION, 236 /** 237 * added to help the parsers with the generic types 238 */ 239 NULL; 240 241 public static Use fromCode(String codeString) throws FHIRException { 242 if (codeString == null || "".equals(codeString)) 243 return null; 244 if ("claim".equals(codeString)) 245 return CLAIM; 246 if ("preauthorization".equals(codeString)) 247 return PREAUTHORIZATION; 248 if ("predetermination".equals(codeString)) 249 return PREDETERMINATION; 250 if (Configuration.isAcceptInvalidEnums()) 251 return null; 252 else 253 throw new FHIRException("Unknown Use code '" + codeString + "'"); 254 } 255 256 public String toCode() { 257 switch (this) { 258 case CLAIM: 259 return "claim"; 260 case PREAUTHORIZATION: 261 return "preauthorization"; 262 case PREDETERMINATION: 263 return "predetermination"; 264 case NULL: 265 return null; 266 default: 267 return "?"; 268 } 269 } 270 271 public String getSystem() { 272 switch (this) { 273 case CLAIM: 274 return "http://hl7.org/fhir/claim-use"; 275 case PREAUTHORIZATION: 276 return "http://hl7.org/fhir/claim-use"; 277 case PREDETERMINATION: 278 return "http://hl7.org/fhir/claim-use"; 279 case NULL: 280 return null; 281 default: 282 return "?"; 283 } 284 } 285 286 public String getDefinition() { 287 switch (this) { 288 case CLAIM: 289 return "The treatment is complete and this represents a Claim for the services."; 290 case PREAUTHORIZATION: 291 return "The treatment is proposed and this represents a Pre-authorization for the services."; 292 case PREDETERMINATION: 293 return "The treatment is proposed and this represents a Pre-determination for the services."; 294 case NULL: 295 return null; 296 default: 297 return "?"; 298 } 299 } 300 301 public String getDisplay() { 302 switch (this) { 303 case CLAIM: 304 return "Claim"; 305 case PREAUTHORIZATION: 306 return "Preauthorization"; 307 case PREDETERMINATION: 308 return "Predetermination"; 309 case NULL: 310 return null; 311 default: 312 return "?"; 313 } 314 } 315 } 316 317 public static class UseEnumFactory implements EnumFactory<Use> { 318 public Use fromCode(String codeString) throws IllegalArgumentException { 319 if (codeString == null || "".equals(codeString)) 320 if (codeString == null || "".equals(codeString)) 321 return null; 322 if ("claim".equals(codeString)) 323 return Use.CLAIM; 324 if ("preauthorization".equals(codeString)) 325 return Use.PREAUTHORIZATION; 326 if ("predetermination".equals(codeString)) 327 return Use.PREDETERMINATION; 328 throw new IllegalArgumentException("Unknown Use code '" + codeString + "'"); 329 } 330 331 public Enumeration<Use> fromType(PrimitiveType<?> code) throws FHIRException { 332 if (code == null) 333 return null; 334 if (code.isEmpty()) 335 return new Enumeration<Use>(this, Use.NULL, code); 336 String codeString = code.asStringValue(); 337 if (codeString == null || "".equals(codeString)) 338 return new Enumeration<Use>(this, Use.NULL, code); 339 if ("claim".equals(codeString)) 340 return new Enumeration<Use>(this, Use.CLAIM, code); 341 if ("preauthorization".equals(codeString)) 342 return new Enumeration<Use>(this, Use.PREAUTHORIZATION, code); 343 if ("predetermination".equals(codeString)) 344 return new Enumeration<Use>(this, Use.PREDETERMINATION, code); 345 throw new FHIRException("Unknown Use code '" + codeString + "'"); 346 } 347 348 public String toCode(Use code) { 349 if (code == Use.NULL) 350 return null; 351 if (code == Use.CLAIM) 352 return "claim"; 353 if (code == Use.PREAUTHORIZATION) 354 return "preauthorization"; 355 if (code == Use.PREDETERMINATION) 356 return "predetermination"; 357 return "?"; 358 } 359 360 public String toSystem(Use code) { 361 return code.getSystem(); 362 } 363 } 364 365 public enum RemittanceOutcome { 366 /** 367 * The Claim/Pre-authorization/Pre-determination has been received but 368 * processing has not begun. 369 */ 370 QUEUED, 371 /** 372 * The processing has completed without errors 373 */ 374 COMPLETE, 375 /** 376 * One or more errors have been detected in the Claim 377 */ 378 ERROR, 379 /** 380 * No errors have been detected in the Claim and some of the adjudication has 381 * been performed. 382 */ 383 PARTIAL, 384 /** 385 * added to help the parsers with the generic types 386 */ 387 NULL; 388 389 public static RemittanceOutcome fromCode(String codeString) throws FHIRException { 390 if (codeString == null || "".equals(codeString)) 391 return null; 392 if ("queued".equals(codeString)) 393 return QUEUED; 394 if ("complete".equals(codeString)) 395 return COMPLETE; 396 if ("error".equals(codeString)) 397 return ERROR; 398 if ("partial".equals(codeString)) 399 return PARTIAL; 400 if (Configuration.isAcceptInvalidEnums()) 401 return null; 402 else 403 throw new FHIRException("Unknown RemittanceOutcome code '" + codeString + "'"); 404 } 405 406 public String toCode() { 407 switch (this) { 408 case QUEUED: 409 return "queued"; 410 case COMPLETE: 411 return "complete"; 412 case ERROR: 413 return "error"; 414 case PARTIAL: 415 return "partial"; 416 case NULL: 417 return null; 418 default: 419 return "?"; 420 } 421 } 422 423 public String getSystem() { 424 switch (this) { 425 case QUEUED: 426 return "http://hl7.org/fhir/remittance-outcome"; 427 case COMPLETE: 428 return "http://hl7.org/fhir/remittance-outcome"; 429 case ERROR: 430 return "http://hl7.org/fhir/remittance-outcome"; 431 case PARTIAL: 432 return "http://hl7.org/fhir/remittance-outcome"; 433 case NULL: 434 return null; 435 default: 436 return "?"; 437 } 438 } 439 440 public String getDefinition() { 441 switch (this) { 442 case QUEUED: 443 return "The Claim/Pre-authorization/Pre-determination has been received but processing has not begun."; 444 case COMPLETE: 445 return "The processing has completed without errors"; 446 case ERROR: 447 return "One or more errors have been detected in the Claim"; 448 case PARTIAL: 449 return "No errors have been detected in the Claim and some of the adjudication has been performed."; 450 case NULL: 451 return null; 452 default: 453 return "?"; 454 } 455 } 456 457 public String getDisplay() { 458 switch (this) { 459 case QUEUED: 460 return "Queued"; 461 case COMPLETE: 462 return "Processing Complete"; 463 case ERROR: 464 return "Error"; 465 case PARTIAL: 466 return "Partial Processing"; 467 case NULL: 468 return null; 469 default: 470 return "?"; 471 } 472 } 473 } 474 475 public static class RemittanceOutcomeEnumFactory implements EnumFactory<RemittanceOutcome> { 476 public RemittanceOutcome fromCode(String codeString) throws IllegalArgumentException { 477 if (codeString == null || "".equals(codeString)) 478 if (codeString == null || "".equals(codeString)) 479 return null; 480 if ("queued".equals(codeString)) 481 return RemittanceOutcome.QUEUED; 482 if ("complete".equals(codeString)) 483 return RemittanceOutcome.COMPLETE; 484 if ("error".equals(codeString)) 485 return RemittanceOutcome.ERROR; 486 if ("partial".equals(codeString)) 487 return RemittanceOutcome.PARTIAL; 488 throw new IllegalArgumentException("Unknown RemittanceOutcome code '" + codeString + "'"); 489 } 490 491 public Enumeration<RemittanceOutcome> fromType(PrimitiveType<?> code) throws FHIRException { 492 if (code == null) 493 return null; 494 if (code.isEmpty()) 495 return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.NULL, code); 496 String codeString = code.asStringValue(); 497 if (codeString == null || "".equals(codeString)) 498 return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.NULL, code); 499 if ("queued".equals(codeString)) 500 return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.QUEUED, code); 501 if ("complete".equals(codeString)) 502 return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.COMPLETE, code); 503 if ("error".equals(codeString)) 504 return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.ERROR, code); 505 if ("partial".equals(codeString)) 506 return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.PARTIAL, code); 507 throw new FHIRException("Unknown RemittanceOutcome code '" + codeString + "'"); 508 } 509 510 public String toCode(RemittanceOutcome code) { 511 if (code == RemittanceOutcome.NULL) 512 return null; 513 if (code == RemittanceOutcome.QUEUED) 514 return "queued"; 515 if (code == RemittanceOutcome.COMPLETE) 516 return "complete"; 517 if (code == RemittanceOutcome.ERROR) 518 return "error"; 519 if (code == RemittanceOutcome.PARTIAL) 520 return "partial"; 521 return "?"; 522 } 523 524 public String toSystem(RemittanceOutcome code) { 525 return code.getSystem(); 526 } 527 } 528 529 @Block() 530 public static class RelatedClaimComponent extends BackboneElement implements IBaseBackboneElement { 531 /** 532 * Reference to a related claim. 533 */ 534 @Child(name = "claim", type = { Claim.class }, order = 1, min = 0, max = 1, modifier = false, summary = false) 535 @Description(shortDefinition = "Reference to the related claim", formalDefinition = "Reference to a related claim.") 536 protected Reference claim; 537 538 /** 539 * The actual object that is the target of the reference (Reference to a related 540 * claim.) 541 */ 542 protected Claim claimTarget; 543 544 /** 545 * A code to convey how the claims are related. 546 */ 547 @Child(name = "relationship", type = { 548 CodeableConcept.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 549 @Description(shortDefinition = "How the reference claim is related", formalDefinition = "A code to convey how the claims are related.") 550 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/related-claim-relationship") 551 protected CodeableConcept relationship; 552 553 /** 554 * An alternate organizational reference to the case or file to which this 555 * particular claim pertains. 556 */ 557 @Child(name = "reference", type = { 558 Identifier.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 559 @Description(shortDefinition = "File or case reference", formalDefinition = "An alternate organizational reference to the case or file to which this particular claim pertains.") 560 protected Identifier reference; 561 562 private static final long serialVersionUID = -379338905L; 563 564 /** 565 * Constructor 566 */ 567 public RelatedClaimComponent() { 568 super(); 569 } 570 571 /** 572 * @return {@link #claim} (Reference to a related claim.) 573 */ 574 public Reference getClaim() { 575 if (this.claim == null) 576 if (Configuration.errorOnAutoCreate()) 577 throw new Error("Attempt to auto-create RelatedClaimComponent.claim"); 578 else if (Configuration.doAutoCreate()) 579 this.claim = new Reference(); // cc 580 return this.claim; 581 } 582 583 public boolean hasClaim() { 584 return this.claim != null && !this.claim.isEmpty(); 585 } 586 587 /** 588 * @param value {@link #claim} (Reference to a related claim.) 589 */ 590 public RelatedClaimComponent setClaim(Reference value) { 591 this.claim = value; 592 return this; 593 } 594 595 /** 596 * @return {@link #claim} The actual object that is the target of the reference. 597 * The reference library doesn't populate this, but you can use it to 598 * hold the resource if you resolve it. (Reference to a related claim.) 599 */ 600 public Claim getClaimTarget() { 601 if (this.claimTarget == null) 602 if (Configuration.errorOnAutoCreate()) 603 throw new Error("Attempt to auto-create RelatedClaimComponent.claim"); 604 else if (Configuration.doAutoCreate()) 605 this.claimTarget = new Claim(); // aa 606 return this.claimTarget; 607 } 608 609 /** 610 * @param value {@link #claim} The actual object that is the target of the 611 * reference. The reference library doesn't use these, but you can 612 * use it to hold the resource if you resolve it. (Reference to a 613 * related claim.) 614 */ 615 public RelatedClaimComponent setClaimTarget(Claim value) { 616 this.claimTarget = value; 617 return this; 618 } 619 620 /** 621 * @return {@link #relationship} (A code to convey how the claims are related.) 622 */ 623 public CodeableConcept getRelationship() { 624 if (this.relationship == null) 625 if (Configuration.errorOnAutoCreate()) 626 throw new Error("Attempt to auto-create RelatedClaimComponent.relationship"); 627 else if (Configuration.doAutoCreate()) 628 this.relationship = new CodeableConcept(); // cc 629 return this.relationship; 630 } 631 632 public boolean hasRelationship() { 633 return this.relationship != null && !this.relationship.isEmpty(); 634 } 635 636 /** 637 * @param value {@link #relationship} (A code to convey how the claims are 638 * related.) 639 */ 640 public RelatedClaimComponent setRelationship(CodeableConcept value) { 641 this.relationship = value; 642 return this; 643 } 644 645 /** 646 * @return {@link #reference} (An alternate organizational reference to the case 647 * or file to which this particular claim pertains.) 648 */ 649 public Identifier getReference() { 650 if (this.reference == null) 651 if (Configuration.errorOnAutoCreate()) 652 throw new Error("Attempt to auto-create RelatedClaimComponent.reference"); 653 else if (Configuration.doAutoCreate()) 654 this.reference = new Identifier(); // cc 655 return this.reference; 656 } 657 658 public boolean hasReference() { 659 return this.reference != null && !this.reference.isEmpty(); 660 } 661 662 /** 663 * @param value {@link #reference} (An alternate organizational reference to the 664 * case or file to which this particular claim pertains.) 665 */ 666 public RelatedClaimComponent setReference(Identifier value) { 667 this.reference = value; 668 return this; 669 } 670 671 protected void listChildren(List<Property> children) { 672 super.listChildren(children); 673 children.add(new Property("claim", "Reference(Claim)", "Reference to a related claim.", 0, 1, claim)); 674 children.add(new Property("relationship", "CodeableConcept", "A code to convey how the claims are related.", 0, 1, 675 relationship)); 676 children.add(new Property("reference", "Identifier", 677 "An alternate organizational reference to the case or file to which this particular claim pertains.", 0, 1, 678 reference)); 679 } 680 681 @Override 682 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 683 switch (_hash) { 684 case 94742588: 685 /* claim */ return new Property("claim", "Reference(Claim)", "Reference to a related claim.", 0, 1, claim); 686 case -261851592: 687 /* relationship */ return new Property("relationship", "CodeableConcept", 688 "A code to convey how the claims are related.", 0, 1, relationship); 689 case -925155509: 690 /* reference */ return new Property("reference", "Identifier", 691 "An alternate organizational reference to the case or file to which this particular claim pertains.", 0, 1, 692 reference); 693 default: 694 return super.getNamedProperty(_hash, _name, _checkValid); 695 } 696 697 } 698 699 @Override 700 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 701 switch (hash) { 702 case 94742588: 703 /* claim */ return this.claim == null ? new Base[0] : new Base[] { this.claim }; // Reference 704 case -261851592: 705 /* relationship */ return this.relationship == null ? new Base[0] : new Base[] { this.relationship }; // CodeableConcept 706 case -925155509: 707 /* reference */ return this.reference == null ? new Base[0] : new Base[] { this.reference }; // Identifier 708 default: 709 return super.getProperty(hash, name, checkValid); 710 } 711 712 } 713 714 @Override 715 public Base setProperty(int hash, String name, Base value) throws FHIRException { 716 switch (hash) { 717 case 94742588: // claim 718 this.claim = castToReference(value); // Reference 719 return value; 720 case -261851592: // relationship 721 this.relationship = castToCodeableConcept(value); // CodeableConcept 722 return value; 723 case -925155509: // reference 724 this.reference = castToIdentifier(value); // Identifier 725 return value; 726 default: 727 return super.setProperty(hash, name, value); 728 } 729 730 } 731 732 @Override 733 public Base setProperty(String name, Base value) throws FHIRException { 734 if (name.equals("claim")) { 735 this.claim = castToReference(value); // Reference 736 } else if (name.equals("relationship")) { 737 this.relationship = castToCodeableConcept(value); // CodeableConcept 738 } else if (name.equals("reference")) { 739 this.reference = castToIdentifier(value); // Identifier 740 } else 741 return super.setProperty(name, value); 742 return value; 743 } 744 745 @Override 746 public void removeChild(String name, Base value) throws FHIRException { 747 if (name.equals("claim")) { 748 this.claim = null; 749 } else if (name.equals("relationship")) { 750 this.relationship = null; 751 } else if (name.equals("reference")) { 752 this.reference = null; 753 } else 754 super.removeChild(name, value); 755 756 } 757 758 @Override 759 public Base makeProperty(int hash, String name) throws FHIRException { 760 switch (hash) { 761 case 94742588: 762 return getClaim(); 763 case -261851592: 764 return getRelationship(); 765 case -925155509: 766 return getReference(); 767 default: 768 return super.makeProperty(hash, name); 769 } 770 771 } 772 773 @Override 774 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 775 switch (hash) { 776 case 94742588: 777 /* claim */ return new String[] { "Reference" }; 778 case -261851592: 779 /* relationship */ return new String[] { "CodeableConcept" }; 780 case -925155509: 781 /* reference */ return new String[] { "Identifier" }; 782 default: 783 return super.getTypesForProperty(hash, name); 784 } 785 786 } 787 788 @Override 789 public Base addChild(String name) throws FHIRException { 790 if (name.equals("claim")) { 791 this.claim = new Reference(); 792 return this.claim; 793 } else if (name.equals("relationship")) { 794 this.relationship = new CodeableConcept(); 795 return this.relationship; 796 } else if (name.equals("reference")) { 797 this.reference = new Identifier(); 798 return this.reference; 799 } else 800 return super.addChild(name); 801 } 802 803 public RelatedClaimComponent copy() { 804 RelatedClaimComponent dst = new RelatedClaimComponent(); 805 copyValues(dst); 806 return dst; 807 } 808 809 public void copyValues(RelatedClaimComponent dst) { 810 super.copyValues(dst); 811 dst.claim = claim == null ? null : claim.copy(); 812 dst.relationship = relationship == null ? null : relationship.copy(); 813 dst.reference = reference == null ? null : reference.copy(); 814 } 815 816 @Override 817 public boolean equalsDeep(Base other_) { 818 if (!super.equalsDeep(other_)) 819 return false; 820 if (!(other_ instanceof RelatedClaimComponent)) 821 return false; 822 RelatedClaimComponent o = (RelatedClaimComponent) other_; 823 return compareDeep(claim, o.claim, true) && compareDeep(relationship, o.relationship, true) 824 && compareDeep(reference, o.reference, true); 825 } 826 827 @Override 828 public boolean equalsShallow(Base other_) { 829 if (!super.equalsShallow(other_)) 830 return false; 831 if (!(other_ instanceof RelatedClaimComponent)) 832 return false; 833 RelatedClaimComponent o = (RelatedClaimComponent) other_; 834 return true; 835 } 836 837 public boolean isEmpty() { 838 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(claim, relationship, reference); 839 } 840 841 public String fhirType() { 842 return "ExplanationOfBenefit.related"; 843 844 } 845 846 } 847 848 @Block() 849 public static class PayeeComponent extends BackboneElement implements IBaseBackboneElement { 850 /** 851 * Type of Party to be reimbursed: Subscriber, provider, other. 852 */ 853 @Child(name = "type", type = { 854 CodeableConcept.class }, order = 1, min = 0, max = 1, modifier = false, summary = false) 855 @Description(shortDefinition = "Category of recipient", formalDefinition = "Type of Party to be reimbursed: Subscriber, provider, other.") 856 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/payeetype") 857 protected CodeableConcept type; 858 859 /** 860 * Reference to the individual or organization to whom any payment will be made. 861 */ 862 @Child(name = "party", type = { Practitioner.class, PractitionerRole.class, Organization.class, Patient.class, 863 RelatedPerson.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 864 @Description(shortDefinition = "Recipient reference", formalDefinition = "Reference to the individual or organization to whom any payment will be made.") 865 protected Reference party; 866 867 /** 868 * The actual object that is the target of the reference (Reference to the 869 * individual or organization to whom any payment will be made.) 870 */ 871 protected Resource partyTarget; 872 873 private static final long serialVersionUID = 1609484699L; 874 875 /** 876 * Constructor 877 */ 878 public PayeeComponent() { 879 super(); 880 } 881 882 /** 883 * @return {@link #type} (Type of Party to be reimbursed: Subscriber, provider, 884 * other.) 885 */ 886 public CodeableConcept getType() { 887 if (this.type == null) 888 if (Configuration.errorOnAutoCreate()) 889 throw new Error("Attempt to auto-create PayeeComponent.type"); 890 else if (Configuration.doAutoCreate()) 891 this.type = new CodeableConcept(); // cc 892 return this.type; 893 } 894 895 public boolean hasType() { 896 return this.type != null && !this.type.isEmpty(); 897 } 898 899 /** 900 * @param value {@link #type} (Type of Party to be reimbursed: Subscriber, 901 * provider, other.) 902 */ 903 public PayeeComponent setType(CodeableConcept value) { 904 this.type = value; 905 return this; 906 } 907 908 /** 909 * @return {@link #party} (Reference to the individual or organization to whom 910 * any payment will be made.) 911 */ 912 public Reference getParty() { 913 if (this.party == null) 914 if (Configuration.errorOnAutoCreate()) 915 throw new Error("Attempt to auto-create PayeeComponent.party"); 916 else if (Configuration.doAutoCreate()) 917 this.party = new Reference(); // cc 918 return this.party; 919 } 920 921 public boolean hasParty() { 922 return this.party != null && !this.party.isEmpty(); 923 } 924 925 /** 926 * @param value {@link #party} (Reference to the individual or organization to 927 * whom any payment will be made.) 928 */ 929 public PayeeComponent setParty(Reference value) { 930 this.party = value; 931 return this; 932 } 933 934 /** 935 * @return {@link #party} The actual object that is the target of the reference. 936 * The reference library doesn't populate this, but you can use it to 937 * hold the resource if you resolve it. (Reference to the individual or 938 * organization to whom any payment will be made.) 939 */ 940 public Resource getPartyTarget() { 941 return this.partyTarget; 942 } 943 944 /** 945 * @param value {@link #party} The actual object that is the target of the 946 * reference. The reference library doesn't use these, but you can 947 * use it to hold the resource if you resolve it. (Reference to the 948 * individual or organization to whom any payment will be made.) 949 */ 950 public PayeeComponent setPartyTarget(Resource value) { 951 this.partyTarget = value; 952 return this; 953 } 954 955 protected void listChildren(List<Property> children) { 956 super.listChildren(children); 957 children.add(new Property("type", "CodeableConcept", 958 "Type of Party to be reimbursed: Subscriber, provider, other.", 0, 1, type)); 959 children.add(new Property("party", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson)", 960 "Reference to the individual or organization to whom any payment will be made.", 0, 1, party)); 961 } 962 963 @Override 964 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 965 switch (_hash) { 966 case 3575610: 967 /* type */ return new Property("type", "CodeableConcept", 968 "Type of Party to be reimbursed: Subscriber, provider, other.", 0, 1, type); 969 case 106437350: 970 /* party */ return new Property("party", 971 "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson)", 972 "Reference to the individual or organization to whom any payment will be made.", 0, 1, party); 973 default: 974 return super.getNamedProperty(_hash, _name, _checkValid); 975 } 976 977 } 978 979 @Override 980 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 981 switch (hash) { 982 case 3575610: 983 /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // CodeableConcept 984 case 106437350: 985 /* party */ return this.party == null ? new Base[0] : new Base[] { this.party }; // Reference 986 default: 987 return super.getProperty(hash, name, checkValid); 988 } 989 990 } 991 992 @Override 993 public Base setProperty(int hash, String name, Base value) throws FHIRException { 994 switch (hash) { 995 case 3575610: // type 996 this.type = castToCodeableConcept(value); // CodeableConcept 997 return value; 998 case 106437350: // party 999 this.party = castToReference(value); // Reference 1000 return value; 1001 default: 1002 return super.setProperty(hash, name, value); 1003 } 1004 1005 } 1006 1007 @Override 1008 public Base setProperty(String name, Base value) throws FHIRException { 1009 if (name.equals("type")) { 1010 this.type = castToCodeableConcept(value); // CodeableConcept 1011 } else if (name.equals("party")) { 1012 this.party = castToReference(value); // Reference 1013 } else 1014 return super.setProperty(name, value); 1015 return value; 1016 } 1017 1018 @Override 1019 public void removeChild(String name, Base value) throws FHIRException { 1020 if (name.equals("type")) { 1021 this.type = null; 1022 } else if (name.equals("party")) { 1023 this.party = null; 1024 } else 1025 super.removeChild(name, value); 1026 1027 } 1028 1029 @Override 1030 public Base makeProperty(int hash, String name) throws FHIRException { 1031 switch (hash) { 1032 case 3575610: 1033 return getType(); 1034 case 106437350: 1035 return getParty(); 1036 default: 1037 return super.makeProperty(hash, name); 1038 } 1039 1040 } 1041 1042 @Override 1043 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1044 switch (hash) { 1045 case 3575610: 1046 /* type */ return new String[] { "CodeableConcept" }; 1047 case 106437350: 1048 /* party */ return new String[] { "Reference" }; 1049 default: 1050 return super.getTypesForProperty(hash, name); 1051 } 1052 1053 } 1054 1055 @Override 1056 public Base addChild(String name) throws FHIRException { 1057 if (name.equals("type")) { 1058 this.type = new CodeableConcept(); 1059 return this.type; 1060 } else if (name.equals("party")) { 1061 this.party = new Reference(); 1062 return this.party; 1063 } else 1064 return super.addChild(name); 1065 } 1066 1067 public PayeeComponent copy() { 1068 PayeeComponent dst = new PayeeComponent(); 1069 copyValues(dst); 1070 return dst; 1071 } 1072 1073 public void copyValues(PayeeComponent dst) { 1074 super.copyValues(dst); 1075 dst.type = type == null ? null : type.copy(); 1076 dst.party = party == null ? null : party.copy(); 1077 } 1078 1079 @Override 1080 public boolean equalsDeep(Base other_) { 1081 if (!super.equalsDeep(other_)) 1082 return false; 1083 if (!(other_ instanceof PayeeComponent)) 1084 return false; 1085 PayeeComponent o = (PayeeComponent) other_; 1086 return compareDeep(type, o.type, true) && compareDeep(party, o.party, true); 1087 } 1088 1089 @Override 1090 public boolean equalsShallow(Base other_) { 1091 if (!super.equalsShallow(other_)) 1092 return false; 1093 if (!(other_ instanceof PayeeComponent)) 1094 return false; 1095 PayeeComponent o = (PayeeComponent) other_; 1096 return true; 1097 } 1098 1099 public boolean isEmpty() { 1100 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, party); 1101 } 1102 1103 public String fhirType() { 1104 return "ExplanationOfBenefit.payee"; 1105 1106 } 1107 1108 } 1109 1110 @Block() 1111 public static class CareTeamComponent extends BackboneElement implements IBaseBackboneElement { 1112 /** 1113 * A number to uniquely identify care team entries. 1114 */ 1115 @Child(name = "sequence", type = { 1116 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 1117 @Description(shortDefinition = "Order of care team", formalDefinition = "A number to uniquely identify care team entries.") 1118 protected PositiveIntType sequence; 1119 1120 /** 1121 * Member of the team who provided the product or service. 1122 */ 1123 @Child(name = "provider", type = { Practitioner.class, PractitionerRole.class, 1124 Organization.class }, order = 2, min = 1, max = 1, modifier = false, summary = false) 1125 @Description(shortDefinition = "Practitioner or organization", formalDefinition = "Member of the team who provided the product or service.") 1126 protected Reference provider; 1127 1128 /** 1129 * The actual object that is the target of the reference (Member of the team who 1130 * provided the product or service.) 1131 */ 1132 protected Resource providerTarget; 1133 1134 /** 1135 * The party who is billing and/or responsible for the claimed products or 1136 * services. 1137 */ 1138 @Child(name = "responsible", type = { 1139 BooleanType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 1140 @Description(shortDefinition = "Indicator of the lead practitioner", formalDefinition = "The party who is billing and/or responsible for the claimed products or services.") 1141 protected BooleanType responsible; 1142 1143 /** 1144 * The lead, assisting or supervising practitioner and their discipline if a 1145 * multidisciplinary team. 1146 */ 1147 @Child(name = "role", type = { 1148 CodeableConcept.class }, order = 4, min = 0, max = 1, modifier = false, summary = false) 1149 @Description(shortDefinition = "Function within the team", formalDefinition = "The lead, assisting or supervising practitioner and their discipline if a multidisciplinary team.") 1150 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-careteamrole") 1151 protected CodeableConcept role; 1152 1153 /** 1154 * The qualification of the practitioner which is applicable for this service. 1155 */ 1156 @Child(name = "qualification", type = { 1157 CodeableConcept.class }, order = 5, min = 0, max = 1, modifier = false, summary = false) 1158 @Description(shortDefinition = "Practitioner credential or specialization", formalDefinition = "The qualification of the practitioner which is applicable for this service.") 1159 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/provider-qualification") 1160 protected CodeableConcept qualification; 1161 1162 private static final long serialVersionUID = 1758966968L; 1163 1164 /** 1165 * Constructor 1166 */ 1167 public CareTeamComponent() { 1168 super(); 1169 } 1170 1171 /** 1172 * Constructor 1173 */ 1174 public CareTeamComponent(PositiveIntType sequence, Reference provider) { 1175 super(); 1176 this.sequence = sequence; 1177 this.provider = provider; 1178 } 1179 1180 /** 1181 * @return {@link #sequence} (A number to uniquely identify care team entries.). 1182 * This is the underlying object with id, value and extensions. The 1183 * accessor "getSequence" gives direct access to the value 1184 */ 1185 public PositiveIntType getSequenceElement() { 1186 if (this.sequence == null) 1187 if (Configuration.errorOnAutoCreate()) 1188 throw new Error("Attempt to auto-create CareTeamComponent.sequence"); 1189 else if (Configuration.doAutoCreate()) 1190 this.sequence = new PositiveIntType(); // bb 1191 return this.sequence; 1192 } 1193 1194 public boolean hasSequenceElement() { 1195 return this.sequence != null && !this.sequence.isEmpty(); 1196 } 1197 1198 public boolean hasSequence() { 1199 return this.sequence != null && !this.sequence.isEmpty(); 1200 } 1201 1202 /** 1203 * @param value {@link #sequence} (A number to uniquely identify care team 1204 * entries.). This is the underlying object with id, value and 1205 * extensions. The accessor "getSequence" gives direct access to 1206 * the value 1207 */ 1208 public CareTeamComponent setSequenceElement(PositiveIntType value) { 1209 this.sequence = value; 1210 return this; 1211 } 1212 1213 /** 1214 * @return A number to uniquely identify care team entries. 1215 */ 1216 public int getSequence() { 1217 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 1218 } 1219 1220 /** 1221 * @param value A number to uniquely identify care team entries. 1222 */ 1223 public CareTeamComponent setSequence(int value) { 1224 if (this.sequence == null) 1225 this.sequence = new PositiveIntType(); 1226 this.sequence.setValue(value); 1227 return this; 1228 } 1229 1230 /** 1231 * @return {@link #provider} (Member of the team who provided the product or 1232 * service.) 1233 */ 1234 public Reference getProvider() { 1235 if (this.provider == null) 1236 if (Configuration.errorOnAutoCreate()) 1237 throw new Error("Attempt to auto-create CareTeamComponent.provider"); 1238 else if (Configuration.doAutoCreate()) 1239 this.provider = new Reference(); // cc 1240 return this.provider; 1241 } 1242 1243 public boolean hasProvider() { 1244 return this.provider != null && !this.provider.isEmpty(); 1245 } 1246 1247 /** 1248 * @param value {@link #provider} (Member of the team who provided the product 1249 * or service.) 1250 */ 1251 public CareTeamComponent setProvider(Reference value) { 1252 this.provider = value; 1253 return this; 1254 } 1255 1256 /** 1257 * @return {@link #provider} The actual object that is the target of the 1258 * reference. The reference library doesn't populate this, but you can 1259 * use it to hold the resource if you resolve it. (Member of the team 1260 * who provided the product or service.) 1261 */ 1262 public Resource getProviderTarget() { 1263 return this.providerTarget; 1264 } 1265 1266 /** 1267 * @param value {@link #provider} The actual object that is the target of the 1268 * reference. The reference library doesn't use these, but you can 1269 * use it to hold the resource if you resolve it. (Member of the 1270 * team who provided the product or service.) 1271 */ 1272 public CareTeamComponent setProviderTarget(Resource value) { 1273 this.providerTarget = value; 1274 return this; 1275 } 1276 1277 /** 1278 * @return {@link #responsible} (The party who is billing and/or responsible for 1279 * the claimed products or services.). This is the underlying object 1280 * with id, value and extensions. The accessor "getResponsible" gives 1281 * direct access to the value 1282 */ 1283 public BooleanType getResponsibleElement() { 1284 if (this.responsible == null) 1285 if (Configuration.errorOnAutoCreate()) 1286 throw new Error("Attempt to auto-create CareTeamComponent.responsible"); 1287 else if (Configuration.doAutoCreate()) 1288 this.responsible = new BooleanType(); // bb 1289 return this.responsible; 1290 } 1291 1292 public boolean hasResponsibleElement() { 1293 return this.responsible != null && !this.responsible.isEmpty(); 1294 } 1295 1296 public boolean hasResponsible() { 1297 return this.responsible != null && !this.responsible.isEmpty(); 1298 } 1299 1300 /** 1301 * @param value {@link #responsible} (The party who is billing and/or 1302 * responsible for the claimed products or services.). This is the 1303 * underlying object with id, value and extensions. The accessor 1304 * "getResponsible" gives direct access to the value 1305 */ 1306 public CareTeamComponent setResponsibleElement(BooleanType value) { 1307 this.responsible = value; 1308 return this; 1309 } 1310 1311 /** 1312 * @return The party who is billing and/or responsible for the claimed products 1313 * or services. 1314 */ 1315 public boolean getResponsible() { 1316 return this.responsible == null || this.responsible.isEmpty() ? false : this.responsible.getValue(); 1317 } 1318 1319 /** 1320 * @param value The party who is billing and/or responsible for the claimed 1321 * products or services. 1322 */ 1323 public CareTeamComponent setResponsible(boolean value) { 1324 if (this.responsible == null) 1325 this.responsible = new BooleanType(); 1326 this.responsible.setValue(value); 1327 return this; 1328 } 1329 1330 /** 1331 * @return {@link #role} (The lead, assisting or supervising practitioner and 1332 * their discipline if a multidisciplinary team.) 1333 */ 1334 public CodeableConcept getRole() { 1335 if (this.role == null) 1336 if (Configuration.errorOnAutoCreate()) 1337 throw new Error("Attempt to auto-create CareTeamComponent.role"); 1338 else if (Configuration.doAutoCreate()) 1339 this.role = new CodeableConcept(); // cc 1340 return this.role; 1341 } 1342 1343 public boolean hasRole() { 1344 return this.role != null && !this.role.isEmpty(); 1345 } 1346 1347 /** 1348 * @param value {@link #role} (The lead, assisting or supervising practitioner 1349 * and their discipline if a multidisciplinary team.) 1350 */ 1351 public CareTeamComponent setRole(CodeableConcept value) { 1352 this.role = value; 1353 return this; 1354 } 1355 1356 /** 1357 * @return {@link #qualification} (The qualification of the practitioner which 1358 * is applicable for this service.) 1359 */ 1360 public CodeableConcept getQualification() { 1361 if (this.qualification == null) 1362 if (Configuration.errorOnAutoCreate()) 1363 throw new Error("Attempt to auto-create CareTeamComponent.qualification"); 1364 else if (Configuration.doAutoCreate()) 1365 this.qualification = new CodeableConcept(); // cc 1366 return this.qualification; 1367 } 1368 1369 public boolean hasQualification() { 1370 return this.qualification != null && !this.qualification.isEmpty(); 1371 } 1372 1373 /** 1374 * @param value {@link #qualification} (The qualification of the practitioner 1375 * which is applicable for this service.) 1376 */ 1377 public CareTeamComponent setQualification(CodeableConcept value) { 1378 this.qualification = value; 1379 return this; 1380 } 1381 1382 protected void listChildren(List<Property> children) { 1383 super.listChildren(children); 1384 children.add( 1385 new Property("sequence", "positiveInt", "A number to uniquely identify care team entries.", 0, 1, sequence)); 1386 children.add(new Property("provider", "Reference(Practitioner|PractitionerRole|Organization)", 1387 "Member of the team who provided the product or service.", 0, 1, provider)); 1388 children.add(new Property("responsible", "boolean", 1389 "The party who is billing and/or responsible for the claimed products or services.", 0, 1, responsible)); 1390 children.add(new Property("role", "CodeableConcept", 1391 "The lead, assisting or supervising practitioner and their discipline if a multidisciplinary team.", 0, 1, 1392 role)); 1393 children.add(new Property("qualification", "CodeableConcept", 1394 "The qualification of the practitioner which is applicable for this service.", 0, 1, qualification)); 1395 } 1396 1397 @Override 1398 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1399 switch (_hash) { 1400 case 1349547969: 1401 /* sequence */ return new Property("sequence", "positiveInt", 1402 "A number to uniquely identify care team entries.", 0, 1, sequence); 1403 case -987494927: 1404 /* provider */ return new Property("provider", "Reference(Practitioner|PractitionerRole|Organization)", 1405 "Member of the team who provided the product or service.", 0, 1, provider); 1406 case 1847674614: 1407 /* responsible */ return new Property("responsible", "boolean", 1408 "The party who is billing and/or responsible for the claimed products or services.", 0, 1, responsible); 1409 case 3506294: 1410 /* role */ return new Property("role", "CodeableConcept", 1411 "The lead, assisting or supervising practitioner and their discipline if a multidisciplinary team.", 0, 1, 1412 role); 1413 case -631333393: 1414 /* qualification */ return new Property("qualification", "CodeableConcept", 1415 "The qualification of the practitioner which is applicable for this service.", 0, 1, qualification); 1416 default: 1417 return super.getNamedProperty(_hash, _name, _checkValid); 1418 } 1419 1420 } 1421 1422 @Override 1423 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1424 switch (hash) { 1425 case 1349547969: 1426 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 1427 case -987494927: 1428 /* provider */ return this.provider == null ? new Base[0] : new Base[] { this.provider }; // Reference 1429 case 1847674614: 1430 /* responsible */ return this.responsible == null ? new Base[0] : new Base[] { this.responsible }; // BooleanType 1431 case 3506294: 1432 /* role */ return this.role == null ? new Base[0] : new Base[] { this.role }; // CodeableConcept 1433 case -631333393: 1434 /* qualification */ return this.qualification == null ? new Base[0] : new Base[] { this.qualification }; // CodeableConcept 1435 default: 1436 return super.getProperty(hash, name, checkValid); 1437 } 1438 1439 } 1440 1441 @Override 1442 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1443 switch (hash) { 1444 case 1349547969: // sequence 1445 this.sequence = castToPositiveInt(value); // PositiveIntType 1446 return value; 1447 case -987494927: // provider 1448 this.provider = castToReference(value); // Reference 1449 return value; 1450 case 1847674614: // responsible 1451 this.responsible = castToBoolean(value); // BooleanType 1452 return value; 1453 case 3506294: // role 1454 this.role = castToCodeableConcept(value); // CodeableConcept 1455 return value; 1456 case -631333393: // qualification 1457 this.qualification = castToCodeableConcept(value); // CodeableConcept 1458 return value; 1459 default: 1460 return super.setProperty(hash, name, value); 1461 } 1462 1463 } 1464 1465 @Override 1466 public Base setProperty(String name, Base value) throws FHIRException { 1467 if (name.equals("sequence")) { 1468 this.sequence = castToPositiveInt(value); // PositiveIntType 1469 } else if (name.equals("provider")) { 1470 this.provider = castToReference(value); // Reference 1471 } else if (name.equals("responsible")) { 1472 this.responsible = castToBoolean(value); // BooleanType 1473 } else if (name.equals("role")) { 1474 this.role = castToCodeableConcept(value); // CodeableConcept 1475 } else if (name.equals("qualification")) { 1476 this.qualification = castToCodeableConcept(value); // CodeableConcept 1477 } else 1478 return super.setProperty(name, value); 1479 return value; 1480 } 1481 1482 @Override 1483 public void removeChild(String name, Base value) throws FHIRException { 1484 if (name.equals("sequence")) { 1485 this.sequence = null; 1486 } else if (name.equals("provider")) { 1487 this.provider = null; 1488 } else if (name.equals("responsible")) { 1489 this.responsible = null; 1490 } else if (name.equals("role")) { 1491 this.role = null; 1492 } else if (name.equals("qualification")) { 1493 this.qualification = null; 1494 } else 1495 super.removeChild(name, value); 1496 1497 } 1498 1499 @Override 1500 public Base makeProperty(int hash, String name) throws FHIRException { 1501 switch (hash) { 1502 case 1349547969: 1503 return getSequenceElement(); 1504 case -987494927: 1505 return getProvider(); 1506 case 1847674614: 1507 return getResponsibleElement(); 1508 case 3506294: 1509 return getRole(); 1510 case -631333393: 1511 return getQualification(); 1512 default: 1513 return super.makeProperty(hash, name); 1514 } 1515 1516 } 1517 1518 @Override 1519 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1520 switch (hash) { 1521 case 1349547969: 1522 /* sequence */ return new String[] { "positiveInt" }; 1523 case -987494927: 1524 /* provider */ return new String[] { "Reference" }; 1525 case 1847674614: 1526 /* responsible */ return new String[] { "boolean" }; 1527 case 3506294: 1528 /* role */ return new String[] { "CodeableConcept" }; 1529 case -631333393: 1530 /* qualification */ return new String[] { "CodeableConcept" }; 1531 default: 1532 return super.getTypesForProperty(hash, name); 1533 } 1534 1535 } 1536 1537 @Override 1538 public Base addChild(String name) throws FHIRException { 1539 if (name.equals("sequence")) { 1540 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 1541 } else if (name.equals("provider")) { 1542 this.provider = new Reference(); 1543 return this.provider; 1544 } else if (name.equals("responsible")) { 1545 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.responsible"); 1546 } else if (name.equals("role")) { 1547 this.role = new CodeableConcept(); 1548 return this.role; 1549 } else if (name.equals("qualification")) { 1550 this.qualification = new CodeableConcept(); 1551 return this.qualification; 1552 } else 1553 return super.addChild(name); 1554 } 1555 1556 public CareTeamComponent copy() { 1557 CareTeamComponent dst = new CareTeamComponent(); 1558 copyValues(dst); 1559 return dst; 1560 } 1561 1562 public void copyValues(CareTeamComponent dst) { 1563 super.copyValues(dst); 1564 dst.sequence = sequence == null ? null : sequence.copy(); 1565 dst.provider = provider == null ? null : provider.copy(); 1566 dst.responsible = responsible == null ? null : responsible.copy(); 1567 dst.role = role == null ? null : role.copy(); 1568 dst.qualification = qualification == null ? null : qualification.copy(); 1569 } 1570 1571 @Override 1572 public boolean equalsDeep(Base other_) { 1573 if (!super.equalsDeep(other_)) 1574 return false; 1575 if (!(other_ instanceof CareTeamComponent)) 1576 return false; 1577 CareTeamComponent o = (CareTeamComponent) other_; 1578 return compareDeep(sequence, o.sequence, true) && compareDeep(provider, o.provider, true) 1579 && compareDeep(responsible, o.responsible, true) && compareDeep(role, o.role, true) 1580 && compareDeep(qualification, o.qualification, true); 1581 } 1582 1583 @Override 1584 public boolean equalsShallow(Base other_) { 1585 if (!super.equalsShallow(other_)) 1586 return false; 1587 if (!(other_ instanceof CareTeamComponent)) 1588 return false; 1589 CareTeamComponent o = (CareTeamComponent) other_; 1590 return compareValues(sequence, o.sequence, true) && compareValues(responsible, o.responsible, true); 1591 } 1592 1593 public boolean isEmpty() { 1594 return super.isEmpty() 1595 && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, provider, responsible, role, qualification); 1596 } 1597 1598 public String fhirType() { 1599 return "ExplanationOfBenefit.careTeam"; 1600 1601 } 1602 1603 } 1604 1605 @Block() 1606 public static class SupportingInformationComponent extends BackboneElement implements IBaseBackboneElement { 1607 /** 1608 * A number to uniquely identify supporting information entries. 1609 */ 1610 @Child(name = "sequence", type = { 1611 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 1612 @Description(shortDefinition = "Information instance identifier", formalDefinition = "A number to uniquely identify supporting information entries.") 1613 protected PositiveIntType sequence; 1614 1615 /** 1616 * The general class of the information supplied: information; exception; 1617 * accident, employment; onset, etc. 1618 */ 1619 @Child(name = "category", type = { 1620 CodeableConcept.class }, order = 2, min = 1, max = 1, modifier = false, summary = false) 1621 @Description(shortDefinition = "Classification of the supplied information", formalDefinition = "The general class of the information supplied: information; exception; accident, employment; onset, etc.") 1622 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-informationcategory") 1623 protected CodeableConcept category; 1624 1625 /** 1626 * System and code pertaining to the specific information regarding special 1627 * conditions relating to the setting, treatment or patient for which care is 1628 * sought. 1629 */ 1630 @Child(name = "code", type = { 1631 CodeableConcept.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 1632 @Description(shortDefinition = "Type of information", formalDefinition = "System and code pertaining to the specific information regarding special conditions relating to the setting, treatment or patient for which care is sought.") 1633 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-exception") 1634 protected CodeableConcept code; 1635 1636 /** 1637 * The date when or period to which this information refers. 1638 */ 1639 @Child(name = "timing", type = { DateType.class, 1640 Period.class }, order = 4, min = 0, max = 1, modifier = false, summary = false) 1641 @Description(shortDefinition = "When it occurred", formalDefinition = "The date when or period to which this information refers.") 1642 protected Type timing; 1643 1644 /** 1645 * Additional data or information such as resources, documents, images etc. 1646 * including references to the data or the actual inclusion of the data. 1647 */ 1648 @Child(name = "value", type = { BooleanType.class, StringType.class, Quantity.class, Attachment.class, 1649 Reference.class }, order = 5, min = 0, max = 1, modifier = false, summary = false) 1650 @Description(shortDefinition = "Data to be provided", formalDefinition = "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.") 1651 protected Type value; 1652 1653 /** 1654 * Provides the reason in the situation where a reason code is required in 1655 * addition to the content. 1656 */ 1657 @Child(name = "reason", type = { Coding.class }, order = 6, min = 0, max = 1, modifier = false, summary = false) 1658 @Description(shortDefinition = "Explanation for the information", formalDefinition = "Provides the reason in the situation where a reason code is required in addition to the content.") 1659 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/missing-tooth-reason") 1660 protected Coding reason; 1661 1662 private static final long serialVersionUID = -410136661L; 1663 1664 /** 1665 * Constructor 1666 */ 1667 public SupportingInformationComponent() { 1668 super(); 1669 } 1670 1671 /** 1672 * Constructor 1673 */ 1674 public SupportingInformationComponent(PositiveIntType sequence, CodeableConcept category) { 1675 super(); 1676 this.sequence = sequence; 1677 this.category = category; 1678 } 1679 1680 /** 1681 * @return {@link #sequence} (A number to uniquely identify supporting 1682 * information entries.). This is the underlying object with id, value 1683 * and extensions. The accessor "getSequence" gives direct access to the 1684 * value 1685 */ 1686 public PositiveIntType getSequenceElement() { 1687 if (this.sequence == null) 1688 if (Configuration.errorOnAutoCreate()) 1689 throw new Error("Attempt to auto-create SupportingInformationComponent.sequence"); 1690 else if (Configuration.doAutoCreate()) 1691 this.sequence = new PositiveIntType(); // bb 1692 return this.sequence; 1693 } 1694 1695 public boolean hasSequenceElement() { 1696 return this.sequence != null && !this.sequence.isEmpty(); 1697 } 1698 1699 public boolean hasSequence() { 1700 return this.sequence != null && !this.sequence.isEmpty(); 1701 } 1702 1703 /** 1704 * @param value {@link #sequence} (A number to uniquely identify supporting 1705 * information entries.). This is the underlying object with id, 1706 * value and extensions. The accessor "getSequence" gives direct 1707 * access to the value 1708 */ 1709 public SupportingInformationComponent setSequenceElement(PositiveIntType value) { 1710 this.sequence = value; 1711 return this; 1712 } 1713 1714 /** 1715 * @return A number to uniquely identify supporting information entries. 1716 */ 1717 public int getSequence() { 1718 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 1719 } 1720 1721 /** 1722 * @param value A number to uniquely identify supporting information entries. 1723 */ 1724 public SupportingInformationComponent setSequence(int value) { 1725 if (this.sequence == null) 1726 this.sequence = new PositiveIntType(); 1727 this.sequence.setValue(value); 1728 return this; 1729 } 1730 1731 /** 1732 * @return {@link #category} (The general class of the information supplied: 1733 * information; exception; accident, employment; onset, etc.) 1734 */ 1735 public CodeableConcept getCategory() { 1736 if (this.category == null) 1737 if (Configuration.errorOnAutoCreate()) 1738 throw new Error("Attempt to auto-create SupportingInformationComponent.category"); 1739 else if (Configuration.doAutoCreate()) 1740 this.category = new CodeableConcept(); // cc 1741 return this.category; 1742 } 1743 1744 public boolean hasCategory() { 1745 return this.category != null && !this.category.isEmpty(); 1746 } 1747 1748 /** 1749 * @param value {@link #category} (The general class of the information 1750 * supplied: information; exception; accident, employment; onset, 1751 * etc.) 1752 */ 1753 public SupportingInformationComponent setCategory(CodeableConcept value) { 1754 this.category = value; 1755 return this; 1756 } 1757 1758 /** 1759 * @return {@link #code} (System and code pertaining to the specific information 1760 * regarding special conditions relating to the setting, treatment or 1761 * patient for which care is sought.) 1762 */ 1763 public CodeableConcept getCode() { 1764 if (this.code == null) 1765 if (Configuration.errorOnAutoCreate()) 1766 throw new Error("Attempt to auto-create SupportingInformationComponent.code"); 1767 else if (Configuration.doAutoCreate()) 1768 this.code = new CodeableConcept(); // cc 1769 return this.code; 1770 } 1771 1772 public boolean hasCode() { 1773 return this.code != null && !this.code.isEmpty(); 1774 } 1775 1776 /** 1777 * @param value {@link #code} (System and code pertaining to the specific 1778 * information regarding special conditions relating to the 1779 * setting, treatment or patient for which care is sought.) 1780 */ 1781 public SupportingInformationComponent setCode(CodeableConcept value) { 1782 this.code = value; 1783 return this; 1784 } 1785 1786 /** 1787 * @return {@link #timing} (The date when or period to which this information 1788 * refers.) 1789 */ 1790 public Type getTiming() { 1791 return this.timing; 1792 } 1793 1794 /** 1795 * @return {@link #timing} (The date when or period to which this information 1796 * refers.) 1797 */ 1798 public DateType getTimingDateType() throws FHIRException { 1799 if (this.timing == null) 1800 this.timing = new DateType(); 1801 if (!(this.timing instanceof DateType)) 1802 throw new FHIRException("Type mismatch: the type DateType was expected, but " + this.timing.getClass().getName() 1803 + " was encountered"); 1804 return (DateType) this.timing; 1805 } 1806 1807 public boolean hasTimingDateType() { 1808 return this != null && this.timing instanceof DateType; 1809 } 1810 1811 /** 1812 * @return {@link #timing} (The date when or period to which this information 1813 * refers.) 1814 */ 1815 public Period getTimingPeriod() throws FHIRException { 1816 if (this.timing == null) 1817 this.timing = new Period(); 1818 if (!(this.timing instanceof Period)) 1819 throw new FHIRException("Type mismatch: the type Period was expected, but " + this.timing.getClass().getName() 1820 + " was encountered"); 1821 return (Period) this.timing; 1822 } 1823 1824 public boolean hasTimingPeriod() { 1825 return this != null && this.timing instanceof Period; 1826 } 1827 1828 public boolean hasTiming() { 1829 return this.timing != null && !this.timing.isEmpty(); 1830 } 1831 1832 /** 1833 * @param value {@link #timing} (The date when or period to which this 1834 * information refers.) 1835 */ 1836 public SupportingInformationComponent setTiming(Type value) { 1837 if (value != null && !(value instanceof DateType || value instanceof Period)) 1838 throw new Error("Not the right type for ExplanationOfBenefit.supportingInfo.timing[x]: " + value.fhirType()); 1839 this.timing = value; 1840 return this; 1841 } 1842 1843 /** 1844 * @return {@link #value} (Additional data or information such as resources, 1845 * documents, images etc. including references to the data or the actual 1846 * inclusion of the data.) 1847 */ 1848 public Type getValue() { 1849 return this.value; 1850 } 1851 1852 /** 1853 * @return {@link #value} (Additional data or information such as resources, 1854 * documents, images etc. including references to the data or the actual 1855 * inclusion of the data.) 1856 */ 1857 public BooleanType getValueBooleanType() throws FHIRException { 1858 if (this.value == null) 1859 this.value = new BooleanType(); 1860 if (!(this.value instanceof BooleanType)) 1861 throw new FHIRException("Type mismatch: the type BooleanType was expected, but " 1862 + this.value.getClass().getName() + " was encountered"); 1863 return (BooleanType) this.value; 1864 } 1865 1866 public boolean hasValueBooleanType() { 1867 return this != null && this.value instanceof BooleanType; 1868 } 1869 1870 /** 1871 * @return {@link #value} (Additional data or information such as resources, 1872 * documents, images etc. including references to the data or the actual 1873 * inclusion of the data.) 1874 */ 1875 public StringType getValueStringType() throws FHIRException { 1876 if (this.value == null) 1877 this.value = new StringType(); 1878 if (!(this.value instanceof StringType)) 1879 throw new FHIRException("Type mismatch: the type StringType was expected, but " 1880 + this.value.getClass().getName() + " was encountered"); 1881 return (StringType) this.value; 1882 } 1883 1884 public boolean hasValueStringType() { 1885 return this != null && this.value instanceof StringType; 1886 } 1887 1888 /** 1889 * @return {@link #value} (Additional data or information such as resources, 1890 * documents, images etc. including references to the data or the actual 1891 * inclusion of the data.) 1892 */ 1893 public Quantity getValueQuantity() throws FHIRException { 1894 if (this.value == null) 1895 this.value = new Quantity(); 1896 if (!(this.value instanceof Quantity)) 1897 throw new FHIRException("Type mismatch: the type Quantity was expected, but " + this.value.getClass().getName() 1898 + " was encountered"); 1899 return (Quantity) this.value; 1900 } 1901 1902 public boolean hasValueQuantity() { 1903 return this != null && this.value instanceof Quantity; 1904 } 1905 1906 /** 1907 * @return {@link #value} (Additional data or information such as resources, 1908 * documents, images etc. including references to the data or the actual 1909 * inclusion of the data.) 1910 */ 1911 public Attachment getValueAttachment() throws FHIRException { 1912 if (this.value == null) 1913 this.value = new Attachment(); 1914 if (!(this.value instanceof Attachment)) 1915 throw new FHIRException("Type mismatch: the type Attachment was expected, but " 1916 + this.value.getClass().getName() + " was encountered"); 1917 return (Attachment) this.value; 1918 } 1919 1920 public boolean hasValueAttachment() { 1921 return this != null && this.value instanceof Attachment; 1922 } 1923 1924 /** 1925 * @return {@link #value} (Additional data or information such as resources, 1926 * documents, images etc. including references to the data or the actual 1927 * inclusion of the data.) 1928 */ 1929 public Reference getValueReference() throws FHIRException { 1930 if (this.value == null) 1931 this.value = new Reference(); 1932 if (!(this.value instanceof Reference)) 1933 throw new FHIRException("Type mismatch: the type Reference was expected, but " + this.value.getClass().getName() 1934 + " was encountered"); 1935 return (Reference) this.value; 1936 } 1937 1938 public boolean hasValueReference() { 1939 return this != null && this.value instanceof Reference; 1940 } 1941 1942 public boolean hasValue() { 1943 return this.value != null && !this.value.isEmpty(); 1944 } 1945 1946 /** 1947 * @param value {@link #value} (Additional data or information such as 1948 * resources, documents, images etc. including references to the 1949 * data or the actual inclusion of the data.) 1950 */ 1951 public SupportingInformationComponent setValue(Type value) { 1952 if (value != null && !(value instanceof BooleanType || value instanceof StringType || value instanceof Quantity 1953 || value instanceof Attachment || value instanceof Reference)) 1954 throw new Error("Not the right type for ExplanationOfBenefit.supportingInfo.value[x]: " + value.fhirType()); 1955 this.value = value; 1956 return this; 1957 } 1958 1959 /** 1960 * @return {@link #reason} (Provides the reason in the situation where a reason 1961 * code is required in addition to the content.) 1962 */ 1963 public Coding getReason() { 1964 if (this.reason == null) 1965 if (Configuration.errorOnAutoCreate()) 1966 throw new Error("Attempt to auto-create SupportingInformationComponent.reason"); 1967 else if (Configuration.doAutoCreate()) 1968 this.reason = new Coding(); // cc 1969 return this.reason; 1970 } 1971 1972 public boolean hasReason() { 1973 return this.reason != null && !this.reason.isEmpty(); 1974 } 1975 1976 /** 1977 * @param value {@link #reason} (Provides the reason in the situation where a 1978 * reason code is required in addition to the content.) 1979 */ 1980 public SupportingInformationComponent setReason(Coding value) { 1981 this.reason = value; 1982 return this; 1983 } 1984 1985 protected void listChildren(List<Property> children) { 1986 super.listChildren(children); 1987 children.add(new Property("sequence", "positiveInt", 1988 "A number to uniquely identify supporting information entries.", 0, 1, sequence)); 1989 children.add(new Property("category", "CodeableConcept", 1990 "The general class of the information supplied: information; exception; accident, employment; onset, etc.", 0, 1991 1, category)); 1992 children.add(new Property("code", "CodeableConcept", 1993 "System and code pertaining to the specific information regarding special conditions relating to the setting, treatment or patient for which care is sought.", 1994 0, 1, code)); 1995 children.add(new Property("timing[x]", "date|Period", "The date when or period to which this information refers.", 1996 0, 1, timing)); 1997 children.add(new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 1998 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 1999 0, 1, value)); 2000 children.add(new Property("reason", "Coding", 2001 "Provides the reason in the situation where a reason code is required in addition to the content.", 0, 1, 2002 reason)); 2003 } 2004 2005 @Override 2006 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2007 switch (_hash) { 2008 case 1349547969: 2009 /* sequence */ return new Property("sequence", "positiveInt", 2010 "A number to uniquely identify supporting information entries.", 0, 1, sequence); 2011 case 50511102: 2012 /* category */ return new Property("category", "CodeableConcept", 2013 "The general class of the information supplied: information; exception; accident, employment; onset, etc.", 2014 0, 1, category); 2015 case 3059181: 2016 /* code */ return new Property("code", "CodeableConcept", 2017 "System and code pertaining to the specific information regarding special conditions relating to the setting, treatment or patient for which care is sought.", 2018 0, 1, code); 2019 case 164632566: 2020 /* timing[x] */ return new Property("timing[x]", "date|Period", 2021 "The date when or period to which this information refers.", 0, 1, timing); 2022 case -873664438: 2023 /* timing */ return new Property("timing[x]", "date|Period", 2024 "The date when or period to which this information refers.", 0, 1, timing); 2025 case 807935768: 2026 /* timingDate */ return new Property("timing[x]", "date|Period", 2027 "The date when or period to which this information refers.", 0, 1, timing); 2028 case -615615829: 2029 /* timingPeriod */ return new Property("timing[x]", "date|Period", 2030 "The date when or period to which this information refers.", 0, 1, timing); 2031 case -1410166417: 2032 /* value[x] */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2033 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2034 0, 1, value); 2035 case 111972721: 2036 /* value */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2037 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2038 0, 1, value); 2039 case 733421943: 2040 /* valueBoolean */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2041 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2042 0, 1, value); 2043 case -1424603934: 2044 /* valueString */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2045 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2046 0, 1, value); 2047 case -2029823716: 2048 /* valueQuantity */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2049 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2050 0, 1, value); 2051 case -475566732: 2052 /* valueAttachment */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2053 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2054 0, 1, value); 2055 case 1755241690: 2056 /* valueReference */ return new Property("value[x]", "boolean|string|Quantity|Attachment|Reference(Any)", 2057 "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 2058 0, 1, value); 2059 case -934964668: 2060 /* reason */ return new Property("reason", "Coding", 2061 "Provides the reason in the situation where a reason code is required in addition to the content.", 0, 1, 2062 reason); 2063 default: 2064 return super.getNamedProperty(_hash, _name, _checkValid); 2065 } 2066 2067 } 2068 2069 @Override 2070 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2071 switch (hash) { 2072 case 1349547969: 2073 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 2074 case 50511102: 2075 /* category */ return this.category == null ? new Base[0] : new Base[] { this.category }; // CodeableConcept 2076 case 3059181: 2077 /* code */ return this.code == null ? new Base[0] : new Base[] { this.code }; // CodeableConcept 2078 case -873664438: 2079 /* timing */ return this.timing == null ? new Base[0] : new Base[] { this.timing }; // Type 2080 case 111972721: 2081 /* value */ return this.value == null ? new Base[0] : new Base[] { this.value }; // Type 2082 case -934964668: 2083 /* reason */ return this.reason == null ? new Base[0] : new Base[] { this.reason }; // Coding 2084 default: 2085 return super.getProperty(hash, name, checkValid); 2086 } 2087 2088 } 2089 2090 @Override 2091 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2092 switch (hash) { 2093 case 1349547969: // sequence 2094 this.sequence = castToPositiveInt(value); // PositiveIntType 2095 return value; 2096 case 50511102: // category 2097 this.category = castToCodeableConcept(value); // CodeableConcept 2098 return value; 2099 case 3059181: // code 2100 this.code = castToCodeableConcept(value); // CodeableConcept 2101 return value; 2102 case -873664438: // timing 2103 this.timing = castToType(value); // Type 2104 return value; 2105 case 111972721: // value 2106 this.value = castToType(value); // Type 2107 return value; 2108 case -934964668: // reason 2109 this.reason = castToCoding(value); // Coding 2110 return value; 2111 default: 2112 return super.setProperty(hash, name, value); 2113 } 2114 2115 } 2116 2117 @Override 2118 public Base setProperty(String name, Base value) throws FHIRException { 2119 if (name.equals("sequence")) { 2120 this.sequence = castToPositiveInt(value); // PositiveIntType 2121 } else if (name.equals("category")) { 2122 this.category = castToCodeableConcept(value); // CodeableConcept 2123 } else if (name.equals("code")) { 2124 this.code = castToCodeableConcept(value); // CodeableConcept 2125 } else if (name.equals("timing[x]")) { 2126 this.timing = castToType(value); // Type 2127 } else if (name.equals("value[x]")) { 2128 this.value = castToType(value); // Type 2129 } else if (name.equals("reason")) { 2130 this.reason = castToCoding(value); // Coding 2131 } else 2132 return super.setProperty(name, value); 2133 return value; 2134 } 2135 2136 @Override 2137 public void removeChild(String name, Base value) throws FHIRException { 2138 if (name.equals("sequence")) { 2139 this.sequence = null; 2140 } else if (name.equals("category")) { 2141 this.category = null; 2142 } else if (name.equals("code")) { 2143 this.code = null; 2144 } else if (name.equals("timing[x]")) { 2145 this.timing = null; 2146 } else if (name.equals("value[x]")) { 2147 this.value = null; 2148 } else if (name.equals("reason")) { 2149 this.reason = null; 2150 } else 2151 super.removeChild(name, value); 2152 2153 } 2154 2155 @Override 2156 public Base makeProperty(int hash, String name) throws FHIRException { 2157 switch (hash) { 2158 case 1349547969: 2159 return getSequenceElement(); 2160 case 50511102: 2161 return getCategory(); 2162 case 3059181: 2163 return getCode(); 2164 case 164632566: 2165 return getTiming(); 2166 case -873664438: 2167 return getTiming(); 2168 case -1410166417: 2169 return getValue(); 2170 case 111972721: 2171 return getValue(); 2172 case -934964668: 2173 return getReason(); 2174 default: 2175 return super.makeProperty(hash, name); 2176 } 2177 2178 } 2179 2180 @Override 2181 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2182 switch (hash) { 2183 case 1349547969: 2184 /* sequence */ return new String[] { "positiveInt" }; 2185 case 50511102: 2186 /* category */ return new String[] { "CodeableConcept" }; 2187 case 3059181: 2188 /* code */ return new String[] { "CodeableConcept" }; 2189 case -873664438: 2190 /* timing */ return new String[] { "date", "Period" }; 2191 case 111972721: 2192 /* value */ return new String[] { "boolean", "string", "Quantity", "Attachment", "Reference" }; 2193 case -934964668: 2194 /* reason */ return new String[] { "Coding" }; 2195 default: 2196 return super.getTypesForProperty(hash, name); 2197 } 2198 2199 } 2200 2201 @Override 2202 public Base addChild(String name) throws FHIRException { 2203 if (name.equals("sequence")) { 2204 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 2205 } else if (name.equals("category")) { 2206 this.category = new CodeableConcept(); 2207 return this.category; 2208 } else if (name.equals("code")) { 2209 this.code = new CodeableConcept(); 2210 return this.code; 2211 } else if (name.equals("timingDate")) { 2212 this.timing = new DateType(); 2213 return this.timing; 2214 } else if (name.equals("timingPeriod")) { 2215 this.timing = new Period(); 2216 return this.timing; 2217 } else if (name.equals("valueBoolean")) { 2218 this.value = new BooleanType(); 2219 return this.value; 2220 } else if (name.equals("valueString")) { 2221 this.value = new StringType(); 2222 return this.value; 2223 } else if (name.equals("valueQuantity")) { 2224 this.value = new Quantity(); 2225 return this.value; 2226 } else if (name.equals("valueAttachment")) { 2227 this.value = new Attachment(); 2228 return this.value; 2229 } else if (name.equals("valueReference")) { 2230 this.value = new Reference(); 2231 return this.value; 2232 } else if (name.equals("reason")) { 2233 this.reason = new Coding(); 2234 return this.reason; 2235 } else 2236 return super.addChild(name); 2237 } 2238 2239 public SupportingInformationComponent copy() { 2240 SupportingInformationComponent dst = new SupportingInformationComponent(); 2241 copyValues(dst); 2242 return dst; 2243 } 2244 2245 public void copyValues(SupportingInformationComponent dst) { 2246 super.copyValues(dst); 2247 dst.sequence = sequence == null ? null : sequence.copy(); 2248 dst.category = category == null ? null : category.copy(); 2249 dst.code = code == null ? null : code.copy(); 2250 dst.timing = timing == null ? null : timing.copy(); 2251 dst.value = value == null ? null : value.copy(); 2252 dst.reason = reason == null ? null : reason.copy(); 2253 } 2254 2255 @Override 2256 public boolean equalsDeep(Base other_) { 2257 if (!super.equalsDeep(other_)) 2258 return false; 2259 if (!(other_ instanceof SupportingInformationComponent)) 2260 return false; 2261 SupportingInformationComponent o = (SupportingInformationComponent) other_; 2262 return compareDeep(sequence, o.sequence, true) && compareDeep(category, o.category, true) 2263 && compareDeep(code, o.code, true) && compareDeep(timing, o.timing, true) && compareDeep(value, o.value, true) 2264 && compareDeep(reason, o.reason, true); 2265 } 2266 2267 @Override 2268 public boolean equalsShallow(Base other_) { 2269 if (!super.equalsShallow(other_)) 2270 return false; 2271 if (!(other_ instanceof SupportingInformationComponent)) 2272 return false; 2273 SupportingInformationComponent o = (SupportingInformationComponent) other_; 2274 return compareValues(sequence, o.sequence, true); 2275 } 2276 2277 public boolean isEmpty() { 2278 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, category, code, timing, value, reason); 2279 } 2280 2281 public String fhirType() { 2282 return "ExplanationOfBenefit.supportingInfo"; 2283 2284 } 2285 2286 } 2287 2288 @Block() 2289 public static class DiagnosisComponent extends BackboneElement implements IBaseBackboneElement { 2290 /** 2291 * A number to uniquely identify diagnosis entries. 2292 */ 2293 @Child(name = "sequence", type = { 2294 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 2295 @Description(shortDefinition = "Diagnosis instance identifier", formalDefinition = "A number to uniquely identify diagnosis entries.") 2296 protected PositiveIntType sequence; 2297 2298 /** 2299 * The nature of illness or problem in a coded form or as a reference to an 2300 * external defined Condition. 2301 */ 2302 @Child(name = "diagnosis", type = { CodeableConcept.class, 2303 Condition.class }, order = 2, min = 1, max = 1, modifier = false, summary = false) 2304 @Description(shortDefinition = "Nature of illness or problem", formalDefinition = "The nature of illness or problem in a coded form or as a reference to an external defined Condition.") 2305 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/icd-10") 2306 protected Type diagnosis; 2307 2308 /** 2309 * When the condition was observed or the relative ranking. 2310 */ 2311 @Child(name = "type", type = { 2312 CodeableConcept.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 2313 @Description(shortDefinition = "Timing or nature of the diagnosis", formalDefinition = "When the condition was observed or the relative ranking.") 2314 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-diagnosistype") 2315 protected List<CodeableConcept> type; 2316 2317 /** 2318 * Indication of whether the diagnosis was present on admission to a facility. 2319 */ 2320 @Child(name = "onAdmission", type = { 2321 CodeableConcept.class }, order = 4, min = 0, max = 1, modifier = false, summary = false) 2322 @Description(shortDefinition = "Present on admission", formalDefinition = "Indication of whether the diagnosis was present on admission to a facility.") 2323 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-diagnosis-on-admission") 2324 protected CodeableConcept onAdmission; 2325 2326 /** 2327 * A package billing code or bundle code used to group products and services to 2328 * a particular health condition (such as heart attack) which is based on a 2329 * predetermined grouping code system. 2330 */ 2331 @Child(name = "packageCode", type = { 2332 CodeableConcept.class }, order = 5, min = 0, max = 1, modifier = false, summary = false) 2333 @Description(shortDefinition = "Package billing code", formalDefinition = "A package billing code or bundle code used to group products and services to a particular health condition (such as heart attack) which is based on a predetermined grouping code system.") 2334 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-diagnosisrelatedgroup") 2335 protected CodeableConcept packageCode; 2336 2337 private static final long serialVersionUID = 2120593974L; 2338 2339 /** 2340 * Constructor 2341 */ 2342 public DiagnosisComponent() { 2343 super(); 2344 } 2345 2346 /** 2347 * Constructor 2348 */ 2349 public DiagnosisComponent(PositiveIntType sequence, Type diagnosis) { 2350 super(); 2351 this.sequence = sequence; 2352 this.diagnosis = diagnosis; 2353 } 2354 2355 /** 2356 * @return {@link #sequence} (A number to uniquely identify diagnosis entries.). 2357 * This is the underlying object with id, value and extensions. The 2358 * accessor "getSequence" gives direct access to the value 2359 */ 2360 public PositiveIntType getSequenceElement() { 2361 if (this.sequence == null) 2362 if (Configuration.errorOnAutoCreate()) 2363 throw new Error("Attempt to auto-create DiagnosisComponent.sequence"); 2364 else if (Configuration.doAutoCreate()) 2365 this.sequence = new PositiveIntType(); // bb 2366 return this.sequence; 2367 } 2368 2369 public boolean hasSequenceElement() { 2370 return this.sequence != null && !this.sequence.isEmpty(); 2371 } 2372 2373 public boolean hasSequence() { 2374 return this.sequence != null && !this.sequence.isEmpty(); 2375 } 2376 2377 /** 2378 * @param value {@link #sequence} (A number to uniquely identify diagnosis 2379 * entries.). This is the underlying object with id, value and 2380 * extensions. The accessor "getSequence" gives direct access to 2381 * the value 2382 */ 2383 public DiagnosisComponent setSequenceElement(PositiveIntType value) { 2384 this.sequence = value; 2385 return this; 2386 } 2387 2388 /** 2389 * @return A number to uniquely identify diagnosis entries. 2390 */ 2391 public int getSequence() { 2392 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 2393 } 2394 2395 /** 2396 * @param value A number to uniquely identify diagnosis entries. 2397 */ 2398 public DiagnosisComponent setSequence(int value) { 2399 if (this.sequence == null) 2400 this.sequence = new PositiveIntType(); 2401 this.sequence.setValue(value); 2402 return this; 2403 } 2404 2405 /** 2406 * @return {@link #diagnosis} (The nature of illness or problem in a coded form 2407 * or as a reference to an external defined Condition.) 2408 */ 2409 public Type getDiagnosis() { 2410 return this.diagnosis; 2411 } 2412 2413 /** 2414 * @return {@link #diagnosis} (The nature of illness or problem in a coded form 2415 * or as a reference to an external defined Condition.) 2416 */ 2417 public CodeableConcept getDiagnosisCodeableConcept() throws FHIRException { 2418 if (this.diagnosis == null) 2419 this.diagnosis = new CodeableConcept(); 2420 if (!(this.diagnosis instanceof CodeableConcept)) 2421 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but " 2422 + this.diagnosis.getClass().getName() + " was encountered"); 2423 return (CodeableConcept) this.diagnosis; 2424 } 2425 2426 public boolean hasDiagnosisCodeableConcept() { 2427 return this != null && this.diagnosis instanceof CodeableConcept; 2428 } 2429 2430 /** 2431 * @return {@link #diagnosis} (The nature of illness or problem in a coded form 2432 * or as a reference to an external defined Condition.) 2433 */ 2434 public Reference getDiagnosisReference() throws FHIRException { 2435 if (this.diagnosis == null) 2436 this.diagnosis = new Reference(); 2437 if (!(this.diagnosis instanceof Reference)) 2438 throw new FHIRException("Type mismatch: the type Reference was expected, but " 2439 + this.diagnosis.getClass().getName() + " was encountered"); 2440 return (Reference) this.diagnosis; 2441 } 2442 2443 public boolean hasDiagnosisReference() { 2444 return this != null && this.diagnosis instanceof Reference; 2445 } 2446 2447 public boolean hasDiagnosis() { 2448 return this.diagnosis != null && !this.diagnosis.isEmpty(); 2449 } 2450 2451 /** 2452 * @param value {@link #diagnosis} (The nature of illness or problem in a coded 2453 * form or as a reference to an external defined Condition.) 2454 */ 2455 public DiagnosisComponent setDiagnosis(Type value) { 2456 if (value != null && !(value instanceof CodeableConcept || value instanceof Reference)) 2457 throw new Error("Not the right type for ExplanationOfBenefit.diagnosis.diagnosis[x]: " + value.fhirType()); 2458 this.diagnosis = value; 2459 return this; 2460 } 2461 2462 /** 2463 * @return {@link #type} (When the condition was observed or the relative 2464 * ranking.) 2465 */ 2466 public List<CodeableConcept> getType() { 2467 if (this.type == null) 2468 this.type = new ArrayList<CodeableConcept>(); 2469 return this.type; 2470 } 2471 2472 /** 2473 * @return Returns a reference to <code>this</code> for easy method chaining 2474 */ 2475 public DiagnosisComponent setType(List<CodeableConcept> theType) { 2476 this.type = theType; 2477 return this; 2478 } 2479 2480 public boolean hasType() { 2481 if (this.type == null) 2482 return false; 2483 for (CodeableConcept item : this.type) 2484 if (!item.isEmpty()) 2485 return true; 2486 return false; 2487 } 2488 2489 public CodeableConcept addType() { // 3 2490 CodeableConcept t = new CodeableConcept(); 2491 if (this.type == null) 2492 this.type = new ArrayList<CodeableConcept>(); 2493 this.type.add(t); 2494 return t; 2495 } 2496 2497 public DiagnosisComponent addType(CodeableConcept t) { // 3 2498 if (t == null) 2499 return this; 2500 if (this.type == null) 2501 this.type = new ArrayList<CodeableConcept>(); 2502 this.type.add(t); 2503 return this; 2504 } 2505 2506 /** 2507 * @return The first repetition of repeating field {@link #type}, creating it if 2508 * it does not already exist 2509 */ 2510 public CodeableConcept getTypeFirstRep() { 2511 if (getType().isEmpty()) { 2512 addType(); 2513 } 2514 return getType().get(0); 2515 } 2516 2517 /** 2518 * @return {@link #onAdmission} (Indication of whether the diagnosis was present 2519 * on admission to a facility.) 2520 */ 2521 public CodeableConcept getOnAdmission() { 2522 if (this.onAdmission == null) 2523 if (Configuration.errorOnAutoCreate()) 2524 throw new Error("Attempt to auto-create DiagnosisComponent.onAdmission"); 2525 else if (Configuration.doAutoCreate()) 2526 this.onAdmission = new CodeableConcept(); // cc 2527 return this.onAdmission; 2528 } 2529 2530 public boolean hasOnAdmission() { 2531 return this.onAdmission != null && !this.onAdmission.isEmpty(); 2532 } 2533 2534 /** 2535 * @param value {@link #onAdmission} (Indication of whether the diagnosis was 2536 * present on admission to a facility.) 2537 */ 2538 public DiagnosisComponent setOnAdmission(CodeableConcept value) { 2539 this.onAdmission = value; 2540 return this; 2541 } 2542 2543 /** 2544 * @return {@link #packageCode} (A package billing code or bundle code used to 2545 * group products and services to a particular health condition (such as 2546 * heart attack) which is based on a predetermined grouping code 2547 * system.) 2548 */ 2549 public CodeableConcept getPackageCode() { 2550 if (this.packageCode == null) 2551 if (Configuration.errorOnAutoCreate()) 2552 throw new Error("Attempt to auto-create DiagnosisComponent.packageCode"); 2553 else if (Configuration.doAutoCreate()) 2554 this.packageCode = new CodeableConcept(); // cc 2555 return this.packageCode; 2556 } 2557 2558 public boolean hasPackageCode() { 2559 return this.packageCode != null && !this.packageCode.isEmpty(); 2560 } 2561 2562 /** 2563 * @param value {@link #packageCode} (A package billing code or bundle code used 2564 * to group products and services to a particular health condition 2565 * (such as heart attack) which is based on a predetermined 2566 * grouping code system.) 2567 */ 2568 public DiagnosisComponent setPackageCode(CodeableConcept value) { 2569 this.packageCode = value; 2570 return this; 2571 } 2572 2573 protected void listChildren(List<Property> children) { 2574 super.listChildren(children); 2575 children.add( 2576 new Property("sequence", "positiveInt", "A number to uniquely identify diagnosis entries.", 0, 1, sequence)); 2577 children.add(new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", 2578 "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 1, 2579 diagnosis)); 2580 children.add(new Property("type", "CodeableConcept", "When the condition was observed or the relative ranking.", 2581 0, java.lang.Integer.MAX_VALUE, type)); 2582 children.add(new Property("onAdmission", "CodeableConcept", 2583 "Indication of whether the diagnosis was present on admission to a facility.", 0, 1, onAdmission)); 2584 children.add(new Property("packageCode", "CodeableConcept", 2585 "A package billing code or bundle code used to group products and services to a particular health condition (such as heart attack) which is based on a predetermined grouping code system.", 2586 0, 1, packageCode)); 2587 } 2588 2589 @Override 2590 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2591 switch (_hash) { 2592 case 1349547969: 2593 /* sequence */ return new Property("sequence", "positiveInt", 2594 "A number to uniquely identify diagnosis entries.", 0, 1, sequence); 2595 case -1487009809: 2596 /* diagnosis[x] */ return new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", 2597 "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 2598 1, diagnosis); 2599 case 1196993265: 2600 /* diagnosis */ return new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", 2601 "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 2602 1, diagnosis); 2603 case 277781616: 2604 /* diagnosisCodeableConcept */ return new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", 2605 "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 2606 1, diagnosis); 2607 case 2050454362: 2608 /* diagnosisReference */ return new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", 2609 "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 2610 1, diagnosis); 2611 case 3575610: 2612 /* type */ return new Property("type", "CodeableConcept", 2613 "When the condition was observed or the relative ranking.", 0, java.lang.Integer.MAX_VALUE, type); 2614 case -3386134: 2615 /* onAdmission */ return new Property("onAdmission", "CodeableConcept", 2616 "Indication of whether the diagnosis was present on admission to a facility.", 0, 1, onAdmission); 2617 case 908444499: 2618 /* packageCode */ return new Property("packageCode", "CodeableConcept", 2619 "A package billing code or bundle code used to group products and services to a particular health condition (such as heart attack) which is based on a predetermined grouping code system.", 2620 0, 1, packageCode); 2621 default: 2622 return super.getNamedProperty(_hash, _name, _checkValid); 2623 } 2624 2625 } 2626 2627 @Override 2628 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2629 switch (hash) { 2630 case 1349547969: 2631 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 2632 case 1196993265: 2633 /* diagnosis */ return this.diagnosis == null ? new Base[0] : new Base[] { this.diagnosis }; // Type 2634 case 3575610: 2635 /* type */ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept 2636 case -3386134: 2637 /* onAdmission */ return this.onAdmission == null ? new Base[0] : new Base[] { this.onAdmission }; // CodeableConcept 2638 case 908444499: 2639 /* packageCode */ return this.packageCode == null ? new Base[0] : new Base[] { this.packageCode }; // CodeableConcept 2640 default: 2641 return super.getProperty(hash, name, checkValid); 2642 } 2643 2644 } 2645 2646 @Override 2647 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2648 switch (hash) { 2649 case 1349547969: // sequence 2650 this.sequence = castToPositiveInt(value); // PositiveIntType 2651 return value; 2652 case 1196993265: // diagnosis 2653 this.diagnosis = castToType(value); // Type 2654 return value; 2655 case 3575610: // type 2656 this.getType().add(castToCodeableConcept(value)); // CodeableConcept 2657 return value; 2658 case -3386134: // onAdmission 2659 this.onAdmission = castToCodeableConcept(value); // CodeableConcept 2660 return value; 2661 case 908444499: // packageCode 2662 this.packageCode = castToCodeableConcept(value); // CodeableConcept 2663 return value; 2664 default: 2665 return super.setProperty(hash, name, value); 2666 } 2667 2668 } 2669 2670 @Override 2671 public Base setProperty(String name, Base value) throws FHIRException { 2672 if (name.equals("sequence")) { 2673 this.sequence = castToPositiveInt(value); // PositiveIntType 2674 } else if (name.equals("diagnosis[x]")) { 2675 this.diagnosis = castToType(value); // Type 2676 } else if (name.equals("type")) { 2677 this.getType().add(castToCodeableConcept(value)); 2678 } else if (name.equals("onAdmission")) { 2679 this.onAdmission = castToCodeableConcept(value); // CodeableConcept 2680 } else if (name.equals("packageCode")) { 2681 this.packageCode = castToCodeableConcept(value); // CodeableConcept 2682 } else 2683 return super.setProperty(name, value); 2684 return value; 2685 } 2686 2687 @Override 2688 public void removeChild(String name, Base value) throws FHIRException { 2689 if (name.equals("sequence")) { 2690 this.sequence = null; 2691 } else if (name.equals("diagnosis[x]")) { 2692 this.diagnosis = null; 2693 } else if (name.equals("type")) { 2694 this.getType().remove(castToCodeableConcept(value)); 2695 } else if (name.equals("onAdmission")) { 2696 this.onAdmission = null; 2697 } else if (name.equals("packageCode")) { 2698 this.packageCode = null; 2699 } else 2700 super.removeChild(name, value); 2701 2702 } 2703 2704 @Override 2705 public Base makeProperty(int hash, String name) throws FHIRException { 2706 switch (hash) { 2707 case 1349547969: 2708 return getSequenceElement(); 2709 case -1487009809: 2710 return getDiagnosis(); 2711 case 1196993265: 2712 return getDiagnosis(); 2713 case 3575610: 2714 return addType(); 2715 case -3386134: 2716 return getOnAdmission(); 2717 case 908444499: 2718 return getPackageCode(); 2719 default: 2720 return super.makeProperty(hash, name); 2721 } 2722 2723 } 2724 2725 @Override 2726 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2727 switch (hash) { 2728 case 1349547969: 2729 /* sequence */ return new String[] { "positiveInt" }; 2730 case 1196993265: 2731 /* diagnosis */ return new String[] { "CodeableConcept", "Reference" }; 2732 case 3575610: 2733 /* type */ return new String[] { "CodeableConcept" }; 2734 case -3386134: 2735 /* onAdmission */ return new String[] { "CodeableConcept" }; 2736 case 908444499: 2737 /* packageCode */ return new String[] { "CodeableConcept" }; 2738 default: 2739 return super.getTypesForProperty(hash, name); 2740 } 2741 2742 } 2743 2744 @Override 2745 public Base addChild(String name) throws FHIRException { 2746 if (name.equals("sequence")) { 2747 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 2748 } else if (name.equals("diagnosisCodeableConcept")) { 2749 this.diagnosis = new CodeableConcept(); 2750 return this.diagnosis; 2751 } else if (name.equals("diagnosisReference")) { 2752 this.diagnosis = new Reference(); 2753 return this.diagnosis; 2754 } else if (name.equals("type")) { 2755 return addType(); 2756 } else if (name.equals("onAdmission")) { 2757 this.onAdmission = new CodeableConcept(); 2758 return this.onAdmission; 2759 } else if (name.equals("packageCode")) { 2760 this.packageCode = new CodeableConcept(); 2761 return this.packageCode; 2762 } else 2763 return super.addChild(name); 2764 } 2765 2766 public DiagnosisComponent copy() { 2767 DiagnosisComponent dst = new DiagnosisComponent(); 2768 copyValues(dst); 2769 return dst; 2770 } 2771 2772 public void copyValues(DiagnosisComponent dst) { 2773 super.copyValues(dst); 2774 dst.sequence = sequence == null ? null : sequence.copy(); 2775 dst.diagnosis = diagnosis == null ? null : diagnosis.copy(); 2776 if (type != null) { 2777 dst.type = new ArrayList<CodeableConcept>(); 2778 for (CodeableConcept i : type) 2779 dst.type.add(i.copy()); 2780 } 2781 ; 2782 dst.onAdmission = onAdmission == null ? null : onAdmission.copy(); 2783 dst.packageCode = packageCode == null ? null : packageCode.copy(); 2784 } 2785 2786 @Override 2787 public boolean equalsDeep(Base other_) { 2788 if (!super.equalsDeep(other_)) 2789 return false; 2790 if (!(other_ instanceof DiagnosisComponent)) 2791 return false; 2792 DiagnosisComponent o = (DiagnosisComponent) other_; 2793 return compareDeep(sequence, o.sequence, true) && compareDeep(diagnosis, o.diagnosis, true) 2794 && compareDeep(type, o.type, true) && compareDeep(onAdmission, o.onAdmission, true) 2795 && compareDeep(packageCode, o.packageCode, true); 2796 } 2797 2798 @Override 2799 public boolean equalsShallow(Base other_) { 2800 if (!super.equalsShallow(other_)) 2801 return false; 2802 if (!(other_ instanceof DiagnosisComponent)) 2803 return false; 2804 DiagnosisComponent o = (DiagnosisComponent) other_; 2805 return compareValues(sequence, o.sequence, true); 2806 } 2807 2808 public boolean isEmpty() { 2809 return super.isEmpty() 2810 && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, diagnosis, type, onAdmission, packageCode); 2811 } 2812 2813 public String fhirType() { 2814 return "ExplanationOfBenefit.diagnosis"; 2815 2816 } 2817 2818 } 2819 2820 @Block() 2821 public static class ProcedureComponent extends BackboneElement implements IBaseBackboneElement { 2822 /** 2823 * A number to uniquely identify procedure entries. 2824 */ 2825 @Child(name = "sequence", type = { 2826 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 2827 @Description(shortDefinition = "Procedure instance identifier", formalDefinition = "A number to uniquely identify procedure entries.") 2828 protected PositiveIntType sequence; 2829 2830 /** 2831 * When the condition was observed or the relative ranking. 2832 */ 2833 @Child(name = "type", type = { 2834 CodeableConcept.class }, order = 2, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 2835 @Description(shortDefinition = "Category of Procedure", formalDefinition = "When the condition was observed or the relative ranking.") 2836 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-procedure-type") 2837 protected List<CodeableConcept> type; 2838 2839 /** 2840 * Date and optionally time the procedure was performed. 2841 */ 2842 @Child(name = "date", type = { DateTimeType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 2843 @Description(shortDefinition = "When the procedure was performed", formalDefinition = "Date and optionally time the procedure was performed.") 2844 protected DateTimeType date; 2845 2846 /** 2847 * The code or reference to a Procedure resource which identifies the clinical 2848 * intervention performed. 2849 */ 2850 @Child(name = "procedure", type = { CodeableConcept.class, 2851 Procedure.class }, order = 4, min = 1, max = 1, modifier = false, summary = false) 2852 @Description(shortDefinition = "Specific clinical procedure", formalDefinition = "The code or reference to a Procedure resource which identifies the clinical intervention performed.") 2853 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/icd-10-procedures") 2854 protected Type procedure; 2855 2856 /** 2857 * Unique Device Identifiers associated with this line item. 2858 */ 2859 @Child(name = "udi", type = { 2860 Device.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 2861 @Description(shortDefinition = "Unique device identifier", formalDefinition = "Unique Device Identifiers associated with this line item.") 2862 protected List<Reference> udi; 2863 /** 2864 * The actual objects that are the target of the reference (Unique Device 2865 * Identifiers associated with this line item.) 2866 */ 2867 protected List<Device> udiTarget; 2868 2869 private static final long serialVersionUID = 935341852L; 2870 2871 /** 2872 * Constructor 2873 */ 2874 public ProcedureComponent() { 2875 super(); 2876 } 2877 2878 /** 2879 * Constructor 2880 */ 2881 public ProcedureComponent(PositiveIntType sequence, Type procedure) { 2882 super(); 2883 this.sequence = sequence; 2884 this.procedure = procedure; 2885 } 2886 2887 /** 2888 * @return {@link #sequence} (A number to uniquely identify procedure entries.). 2889 * This is the underlying object with id, value and extensions. The 2890 * accessor "getSequence" gives direct access to the value 2891 */ 2892 public PositiveIntType getSequenceElement() { 2893 if (this.sequence == null) 2894 if (Configuration.errorOnAutoCreate()) 2895 throw new Error("Attempt to auto-create ProcedureComponent.sequence"); 2896 else if (Configuration.doAutoCreate()) 2897 this.sequence = new PositiveIntType(); // bb 2898 return this.sequence; 2899 } 2900 2901 public boolean hasSequenceElement() { 2902 return this.sequence != null && !this.sequence.isEmpty(); 2903 } 2904 2905 public boolean hasSequence() { 2906 return this.sequence != null && !this.sequence.isEmpty(); 2907 } 2908 2909 /** 2910 * @param value {@link #sequence} (A number to uniquely identify procedure 2911 * entries.). This is the underlying object with id, value and 2912 * extensions. The accessor "getSequence" gives direct access to 2913 * the value 2914 */ 2915 public ProcedureComponent setSequenceElement(PositiveIntType value) { 2916 this.sequence = value; 2917 return this; 2918 } 2919 2920 /** 2921 * @return A number to uniquely identify procedure entries. 2922 */ 2923 public int getSequence() { 2924 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 2925 } 2926 2927 /** 2928 * @param value A number to uniquely identify procedure entries. 2929 */ 2930 public ProcedureComponent setSequence(int value) { 2931 if (this.sequence == null) 2932 this.sequence = new PositiveIntType(); 2933 this.sequence.setValue(value); 2934 return this; 2935 } 2936 2937 /** 2938 * @return {@link #type} (When the condition was observed or the relative 2939 * ranking.) 2940 */ 2941 public List<CodeableConcept> getType() { 2942 if (this.type == null) 2943 this.type = new ArrayList<CodeableConcept>(); 2944 return this.type; 2945 } 2946 2947 /** 2948 * @return Returns a reference to <code>this</code> for easy method chaining 2949 */ 2950 public ProcedureComponent setType(List<CodeableConcept> theType) { 2951 this.type = theType; 2952 return this; 2953 } 2954 2955 public boolean hasType() { 2956 if (this.type == null) 2957 return false; 2958 for (CodeableConcept item : this.type) 2959 if (!item.isEmpty()) 2960 return true; 2961 return false; 2962 } 2963 2964 public CodeableConcept addType() { // 3 2965 CodeableConcept t = new CodeableConcept(); 2966 if (this.type == null) 2967 this.type = new ArrayList<CodeableConcept>(); 2968 this.type.add(t); 2969 return t; 2970 } 2971 2972 public ProcedureComponent addType(CodeableConcept t) { // 3 2973 if (t == null) 2974 return this; 2975 if (this.type == null) 2976 this.type = new ArrayList<CodeableConcept>(); 2977 this.type.add(t); 2978 return this; 2979 } 2980 2981 /** 2982 * @return The first repetition of repeating field {@link #type}, creating it if 2983 * it does not already exist 2984 */ 2985 public CodeableConcept getTypeFirstRep() { 2986 if (getType().isEmpty()) { 2987 addType(); 2988 } 2989 return getType().get(0); 2990 } 2991 2992 /** 2993 * @return {@link #date} (Date and optionally time the procedure was 2994 * performed.). This is the underlying object with id, value and 2995 * extensions. The accessor "getDate" gives direct access to the value 2996 */ 2997 public DateTimeType getDateElement() { 2998 if (this.date == null) 2999 if (Configuration.errorOnAutoCreate()) 3000 throw new Error("Attempt to auto-create ProcedureComponent.date"); 3001 else if (Configuration.doAutoCreate()) 3002 this.date = new DateTimeType(); // bb 3003 return this.date; 3004 } 3005 3006 public boolean hasDateElement() { 3007 return this.date != null && !this.date.isEmpty(); 3008 } 3009 3010 public boolean hasDate() { 3011 return this.date != null && !this.date.isEmpty(); 3012 } 3013 3014 /** 3015 * @param value {@link #date} (Date and optionally time the procedure was 3016 * performed.). This is the underlying object with id, value and 3017 * extensions. The accessor "getDate" gives direct access to the 3018 * value 3019 */ 3020 public ProcedureComponent setDateElement(DateTimeType value) { 3021 this.date = value; 3022 return this; 3023 } 3024 3025 /** 3026 * @return Date and optionally time the procedure was performed. 3027 */ 3028 public Date getDate() { 3029 return this.date == null ? null : this.date.getValue(); 3030 } 3031 3032 /** 3033 * @param value Date and optionally time the procedure was performed. 3034 */ 3035 public ProcedureComponent setDate(Date value) { 3036 if (value == null) 3037 this.date = null; 3038 else { 3039 if (this.date == null) 3040 this.date = new DateTimeType(); 3041 this.date.setValue(value); 3042 } 3043 return this; 3044 } 3045 3046 /** 3047 * @return {@link #procedure} (The code or reference to a Procedure resource 3048 * which identifies the clinical intervention performed.) 3049 */ 3050 public Type getProcedure() { 3051 return this.procedure; 3052 } 3053 3054 /** 3055 * @return {@link #procedure} (The code or reference to a Procedure resource 3056 * which identifies the clinical intervention performed.) 3057 */ 3058 public CodeableConcept getProcedureCodeableConcept() throws FHIRException { 3059 if (this.procedure == null) 3060 this.procedure = new CodeableConcept(); 3061 if (!(this.procedure instanceof CodeableConcept)) 3062 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but " 3063 + this.procedure.getClass().getName() + " was encountered"); 3064 return (CodeableConcept) this.procedure; 3065 } 3066 3067 public boolean hasProcedureCodeableConcept() { 3068 return this != null && this.procedure instanceof CodeableConcept; 3069 } 3070 3071 /** 3072 * @return {@link #procedure} (The code or reference to a Procedure resource 3073 * which identifies the clinical intervention performed.) 3074 */ 3075 public Reference getProcedureReference() throws FHIRException { 3076 if (this.procedure == null) 3077 this.procedure = new Reference(); 3078 if (!(this.procedure instanceof Reference)) 3079 throw new FHIRException("Type mismatch: the type Reference was expected, but " 3080 + this.procedure.getClass().getName() + " was encountered"); 3081 return (Reference) this.procedure; 3082 } 3083 3084 public boolean hasProcedureReference() { 3085 return this != null && this.procedure instanceof Reference; 3086 } 3087 3088 public boolean hasProcedure() { 3089 return this.procedure != null && !this.procedure.isEmpty(); 3090 } 3091 3092 /** 3093 * @param value {@link #procedure} (The code or reference to a Procedure 3094 * resource which identifies the clinical intervention performed.) 3095 */ 3096 public ProcedureComponent setProcedure(Type value) { 3097 if (value != null && !(value instanceof CodeableConcept || value instanceof Reference)) 3098 throw new Error("Not the right type for ExplanationOfBenefit.procedure.procedure[x]: " + value.fhirType()); 3099 this.procedure = value; 3100 return this; 3101 } 3102 3103 /** 3104 * @return {@link #udi} (Unique Device Identifiers associated with this line 3105 * item.) 3106 */ 3107 public List<Reference> getUdi() { 3108 if (this.udi == null) 3109 this.udi = new ArrayList<Reference>(); 3110 return this.udi; 3111 } 3112 3113 /** 3114 * @return Returns a reference to <code>this</code> for easy method chaining 3115 */ 3116 public ProcedureComponent setUdi(List<Reference> theUdi) { 3117 this.udi = theUdi; 3118 return this; 3119 } 3120 3121 public boolean hasUdi() { 3122 if (this.udi == null) 3123 return false; 3124 for (Reference item : this.udi) 3125 if (!item.isEmpty()) 3126 return true; 3127 return false; 3128 } 3129 3130 public Reference addUdi() { // 3 3131 Reference t = new Reference(); 3132 if (this.udi == null) 3133 this.udi = new ArrayList<Reference>(); 3134 this.udi.add(t); 3135 return t; 3136 } 3137 3138 public ProcedureComponent addUdi(Reference t) { // 3 3139 if (t == null) 3140 return this; 3141 if (this.udi == null) 3142 this.udi = new ArrayList<Reference>(); 3143 this.udi.add(t); 3144 return this; 3145 } 3146 3147 /** 3148 * @return The first repetition of repeating field {@link #udi}, creating it if 3149 * it does not already exist 3150 */ 3151 public Reference getUdiFirstRep() { 3152 if (getUdi().isEmpty()) { 3153 addUdi(); 3154 } 3155 return getUdi().get(0); 3156 } 3157 3158 /** 3159 * @deprecated Use Reference#setResource(IBaseResource) instead 3160 */ 3161 @Deprecated 3162 public List<Device> getUdiTarget() { 3163 if (this.udiTarget == null) 3164 this.udiTarget = new ArrayList<Device>(); 3165 return this.udiTarget; 3166 } 3167 3168 /** 3169 * @deprecated Use Reference#setResource(IBaseResource) instead 3170 */ 3171 @Deprecated 3172 public Device addUdiTarget() { 3173 Device r = new Device(); 3174 if (this.udiTarget == null) 3175 this.udiTarget = new ArrayList<Device>(); 3176 this.udiTarget.add(r); 3177 return r; 3178 } 3179 3180 protected void listChildren(List<Property> children) { 3181 super.listChildren(children); 3182 children.add( 3183 new Property("sequence", "positiveInt", "A number to uniquely identify procedure entries.", 0, 1, sequence)); 3184 children.add(new Property("type", "CodeableConcept", "When the condition was observed or the relative ranking.", 3185 0, java.lang.Integer.MAX_VALUE, type)); 3186 children 3187 .add(new Property("date", "dateTime", "Date and optionally time the procedure was performed.", 0, 1, date)); 3188 children.add(new Property("procedure[x]", "CodeableConcept|Reference(Procedure)", 3189 "The code or reference to a Procedure resource which identifies the clinical intervention performed.", 0, 1, 3190 procedure)); 3191 children.add(new Property("udi", "Reference(Device)", "Unique Device Identifiers associated with this line item.", 3192 0, java.lang.Integer.MAX_VALUE, udi)); 3193 } 3194 3195 @Override 3196 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 3197 switch (_hash) { 3198 case 1349547969: 3199 /* sequence */ return new Property("sequence", "positiveInt", 3200 "A number to uniquely identify procedure entries.", 0, 1, sequence); 3201 case 3575610: 3202 /* type */ return new Property("type", "CodeableConcept", 3203 "When the condition was observed or the relative ranking.", 0, java.lang.Integer.MAX_VALUE, type); 3204 case 3076014: 3205 /* date */ return new Property("date", "dateTime", "Date and optionally time the procedure was performed.", 0, 3206 1, date); 3207 case 1640074445: 3208 /* procedure[x] */ return new Property("procedure[x]", "CodeableConcept|Reference(Procedure)", 3209 "The code or reference to a Procedure resource which identifies the clinical intervention performed.", 0, 1, 3210 procedure); 3211 case -1095204141: 3212 /* procedure */ return new Property("procedure[x]", "CodeableConcept|Reference(Procedure)", 3213 "The code or reference to a Procedure resource which identifies the clinical intervention performed.", 0, 1, 3214 procedure); 3215 case -1284783026: 3216 /* procedureCodeableConcept */ return new Property("procedure[x]", "CodeableConcept|Reference(Procedure)", 3217 "The code or reference to a Procedure resource which identifies the clinical intervention performed.", 0, 1, 3218 procedure); 3219 case 881809848: 3220 /* procedureReference */ return new Property("procedure[x]", "CodeableConcept|Reference(Procedure)", 3221 "The code or reference to a Procedure resource which identifies the clinical intervention performed.", 0, 1, 3222 procedure); 3223 case 115642: 3224 /* udi */ return new Property("udi", "Reference(Device)", 3225 "Unique Device Identifiers associated with this line item.", 0, java.lang.Integer.MAX_VALUE, udi); 3226 default: 3227 return super.getNamedProperty(_hash, _name, _checkValid); 3228 } 3229 3230 } 3231 3232 @Override 3233 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 3234 switch (hash) { 3235 case 1349547969: 3236 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 3237 case 3575610: 3238 /* type */ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept 3239 case 3076014: 3240 /* date */ return this.date == null ? new Base[0] : new Base[] { this.date }; // DateTimeType 3241 case -1095204141: 3242 /* procedure */ return this.procedure == null ? new Base[0] : new Base[] { this.procedure }; // Type 3243 case 115642: 3244 /* udi */ return this.udi == null ? new Base[0] : this.udi.toArray(new Base[this.udi.size()]); // Reference 3245 default: 3246 return super.getProperty(hash, name, checkValid); 3247 } 3248 3249 } 3250 3251 @Override 3252 public Base setProperty(int hash, String name, Base value) throws FHIRException { 3253 switch (hash) { 3254 case 1349547969: // sequence 3255 this.sequence = castToPositiveInt(value); // PositiveIntType 3256 return value; 3257 case 3575610: // type 3258 this.getType().add(castToCodeableConcept(value)); // CodeableConcept 3259 return value; 3260 case 3076014: // date 3261 this.date = castToDateTime(value); // DateTimeType 3262 return value; 3263 case -1095204141: // procedure 3264 this.procedure = castToType(value); // Type 3265 return value; 3266 case 115642: // udi 3267 this.getUdi().add(castToReference(value)); // Reference 3268 return value; 3269 default: 3270 return super.setProperty(hash, name, value); 3271 } 3272 3273 } 3274 3275 @Override 3276 public Base setProperty(String name, Base value) throws FHIRException { 3277 if (name.equals("sequence")) { 3278 this.sequence = castToPositiveInt(value); // PositiveIntType 3279 } else if (name.equals("type")) { 3280 this.getType().add(castToCodeableConcept(value)); 3281 } else if (name.equals("date")) { 3282 this.date = castToDateTime(value); // DateTimeType 3283 } else if (name.equals("procedure[x]")) { 3284 this.procedure = castToType(value); // Type 3285 } else if (name.equals("udi")) { 3286 this.getUdi().add(castToReference(value)); 3287 } else 3288 return super.setProperty(name, value); 3289 return value; 3290 } 3291 3292 @Override 3293 public void removeChild(String name, Base value) throws FHIRException { 3294 if (name.equals("sequence")) { 3295 this.sequence = null; 3296 } else if (name.equals("type")) { 3297 this.getType().remove(castToCodeableConcept(value)); 3298 } else if (name.equals("date")) { 3299 this.date = null; 3300 } else if (name.equals("procedure[x]")) { 3301 this.procedure = null; 3302 } else if (name.equals("udi")) { 3303 this.getUdi().remove(castToReference(value)); 3304 } else 3305 super.removeChild(name, value); 3306 3307 } 3308 3309 @Override 3310 public Base makeProperty(int hash, String name) throws FHIRException { 3311 switch (hash) { 3312 case 1349547969: 3313 return getSequenceElement(); 3314 case 3575610: 3315 return addType(); 3316 case 3076014: 3317 return getDateElement(); 3318 case 1640074445: 3319 return getProcedure(); 3320 case -1095204141: 3321 return getProcedure(); 3322 case 115642: 3323 return addUdi(); 3324 default: 3325 return super.makeProperty(hash, name); 3326 } 3327 3328 } 3329 3330 @Override 3331 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 3332 switch (hash) { 3333 case 1349547969: 3334 /* sequence */ return new String[] { "positiveInt" }; 3335 case 3575610: 3336 /* type */ return new String[] { "CodeableConcept" }; 3337 case 3076014: 3338 /* date */ return new String[] { "dateTime" }; 3339 case -1095204141: 3340 /* procedure */ return new String[] { "CodeableConcept", "Reference" }; 3341 case 115642: 3342 /* udi */ return new String[] { "Reference" }; 3343 default: 3344 return super.getTypesForProperty(hash, name); 3345 } 3346 3347 } 3348 3349 @Override 3350 public Base addChild(String name) throws FHIRException { 3351 if (name.equals("sequence")) { 3352 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 3353 } else if (name.equals("type")) { 3354 return addType(); 3355 } else if (name.equals("date")) { 3356 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.date"); 3357 } else if (name.equals("procedureCodeableConcept")) { 3358 this.procedure = new CodeableConcept(); 3359 return this.procedure; 3360 } else if (name.equals("procedureReference")) { 3361 this.procedure = new Reference(); 3362 return this.procedure; 3363 } else if (name.equals("udi")) { 3364 return addUdi(); 3365 } else 3366 return super.addChild(name); 3367 } 3368 3369 public ProcedureComponent copy() { 3370 ProcedureComponent dst = new ProcedureComponent(); 3371 copyValues(dst); 3372 return dst; 3373 } 3374 3375 public void copyValues(ProcedureComponent dst) { 3376 super.copyValues(dst); 3377 dst.sequence = sequence == null ? null : sequence.copy(); 3378 if (type != null) { 3379 dst.type = new ArrayList<CodeableConcept>(); 3380 for (CodeableConcept i : type) 3381 dst.type.add(i.copy()); 3382 } 3383 ; 3384 dst.date = date == null ? null : date.copy(); 3385 dst.procedure = procedure == null ? null : procedure.copy(); 3386 if (udi != null) { 3387 dst.udi = new ArrayList<Reference>(); 3388 for (Reference i : udi) 3389 dst.udi.add(i.copy()); 3390 } 3391 ; 3392 } 3393 3394 @Override 3395 public boolean equalsDeep(Base other_) { 3396 if (!super.equalsDeep(other_)) 3397 return false; 3398 if (!(other_ instanceof ProcedureComponent)) 3399 return false; 3400 ProcedureComponent o = (ProcedureComponent) other_; 3401 return compareDeep(sequence, o.sequence, true) && compareDeep(type, o.type, true) 3402 && compareDeep(date, o.date, true) && compareDeep(procedure, o.procedure, true) 3403 && compareDeep(udi, o.udi, true); 3404 } 3405 3406 @Override 3407 public boolean equalsShallow(Base other_) { 3408 if (!super.equalsShallow(other_)) 3409 return false; 3410 if (!(other_ instanceof ProcedureComponent)) 3411 return false; 3412 ProcedureComponent o = (ProcedureComponent) other_; 3413 return compareValues(sequence, o.sequence, true) && compareValues(date, o.date, true); 3414 } 3415 3416 public boolean isEmpty() { 3417 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, type, date, procedure, udi); 3418 } 3419 3420 public String fhirType() { 3421 return "ExplanationOfBenefit.procedure"; 3422 3423 } 3424 3425 } 3426 3427 @Block() 3428 public static class InsuranceComponent extends BackboneElement implements IBaseBackboneElement { 3429 /** 3430 * A flag to indicate that this Coverage is to be used for adjudication of this 3431 * claim when set to true. 3432 */ 3433 @Child(name = "focal", type = { BooleanType.class }, order = 1, min = 1, max = 1, modifier = false, summary = true) 3434 @Description(shortDefinition = "Coverage to be used for adjudication", formalDefinition = "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true.") 3435 protected BooleanType focal; 3436 3437 /** 3438 * Reference to the insurance card level information contained in the Coverage 3439 * resource. The coverage issuing insurer will use these details to locate the 3440 * patient's actual coverage within the insurer's information system. 3441 */ 3442 @Child(name = "coverage", type = { Coverage.class }, order = 2, min = 1, max = 1, modifier = false, summary = true) 3443 @Description(shortDefinition = "Insurance information", formalDefinition = "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.") 3444 protected Reference coverage; 3445 3446 /** 3447 * The actual object that is the target of the reference (Reference to the 3448 * insurance card level information contained in the Coverage resource. The 3449 * coverage issuing insurer will use these details to locate the patient's 3450 * actual coverage within the insurer's information system.) 3451 */ 3452 protected Coverage coverageTarget; 3453 3454 /** 3455 * Reference numbers previously provided by the insurer to the provider to be 3456 * quoted on subsequent claims containing services or products related to the 3457 * prior authorization. 3458 */ 3459 @Child(name = "preAuthRef", type = { 3460 StringType.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 3461 @Description(shortDefinition = "Prior authorization reference number", formalDefinition = "Reference numbers previously provided by the insurer to the provider to be quoted on subsequent claims containing services or products related to the prior authorization.") 3462 protected List<StringType> preAuthRef; 3463 3464 private static final long serialVersionUID = -606383626L; 3465 3466 /** 3467 * Constructor 3468 */ 3469 public InsuranceComponent() { 3470 super(); 3471 } 3472 3473 /** 3474 * Constructor 3475 */ 3476 public InsuranceComponent(BooleanType focal, Reference coverage) { 3477 super(); 3478 this.focal = focal; 3479 this.coverage = coverage; 3480 } 3481 3482 /** 3483 * @return {@link #focal} (A flag to indicate that this Coverage is to be used 3484 * for adjudication of this claim when set to true.). This is the 3485 * underlying object with id, value and extensions. The accessor 3486 * "getFocal" gives direct access to the value 3487 */ 3488 public BooleanType getFocalElement() { 3489 if (this.focal == null) 3490 if (Configuration.errorOnAutoCreate()) 3491 throw new Error("Attempt to auto-create InsuranceComponent.focal"); 3492 else if (Configuration.doAutoCreate()) 3493 this.focal = new BooleanType(); // bb 3494 return this.focal; 3495 } 3496 3497 public boolean hasFocalElement() { 3498 return this.focal != null && !this.focal.isEmpty(); 3499 } 3500 3501 public boolean hasFocal() { 3502 return this.focal != null && !this.focal.isEmpty(); 3503 } 3504 3505 /** 3506 * @param value {@link #focal} (A flag to indicate that this Coverage is to be 3507 * used for adjudication of this claim when set to true.). This is 3508 * the underlying object with id, value and extensions. The 3509 * accessor "getFocal" gives direct access to the value 3510 */ 3511 public InsuranceComponent setFocalElement(BooleanType value) { 3512 this.focal = value; 3513 return this; 3514 } 3515 3516 /** 3517 * @return A flag to indicate that this Coverage is to be used for adjudication 3518 * of this claim when set to true. 3519 */ 3520 public boolean getFocal() { 3521 return this.focal == null || this.focal.isEmpty() ? false : this.focal.getValue(); 3522 } 3523 3524 /** 3525 * @param value A flag to indicate that this Coverage is to be used for 3526 * adjudication of this claim when set to true. 3527 */ 3528 public InsuranceComponent setFocal(boolean value) { 3529 if (this.focal == null) 3530 this.focal = new BooleanType(); 3531 this.focal.setValue(value); 3532 return this; 3533 } 3534 3535 /** 3536 * @return {@link #coverage} (Reference to the insurance card level information 3537 * contained in the Coverage resource. The coverage issuing insurer will 3538 * use these details to locate the patient's actual coverage within the 3539 * insurer's information system.) 3540 */ 3541 public Reference getCoverage() { 3542 if (this.coverage == null) 3543 if (Configuration.errorOnAutoCreate()) 3544 throw new Error("Attempt to auto-create InsuranceComponent.coverage"); 3545 else if (Configuration.doAutoCreate()) 3546 this.coverage = new Reference(); // cc 3547 return this.coverage; 3548 } 3549 3550 public boolean hasCoverage() { 3551 return this.coverage != null && !this.coverage.isEmpty(); 3552 } 3553 3554 /** 3555 * @param value {@link #coverage} (Reference to the insurance card level 3556 * information contained in the Coverage resource. The coverage 3557 * issuing insurer will use these details to locate the patient's 3558 * actual coverage within the insurer's information system.) 3559 */ 3560 public InsuranceComponent setCoverage(Reference value) { 3561 this.coverage = value; 3562 return this; 3563 } 3564 3565 /** 3566 * @return {@link #coverage} The actual object that is the target of the 3567 * reference. The reference library doesn't populate this, but you can 3568 * use it to hold the resource if you resolve it. (Reference to the 3569 * insurance card level information contained in the Coverage resource. 3570 * The coverage issuing insurer will use these details to locate the 3571 * patient's actual coverage within the insurer's information system.) 3572 */ 3573 public Coverage getCoverageTarget() { 3574 if (this.coverageTarget == null) 3575 if (Configuration.errorOnAutoCreate()) 3576 throw new Error("Attempt to auto-create InsuranceComponent.coverage"); 3577 else if (Configuration.doAutoCreate()) 3578 this.coverageTarget = new Coverage(); // aa 3579 return this.coverageTarget; 3580 } 3581 3582 /** 3583 * @param value {@link #coverage} The actual object that is the target of the 3584 * reference. The reference library doesn't use these, but you can 3585 * use it to hold the resource if you resolve it. (Reference to the 3586 * insurance card level information contained in the Coverage 3587 * resource. The coverage issuing insurer will use these details to 3588 * locate the patient's actual coverage within the insurer's 3589 * information system.) 3590 */ 3591 public InsuranceComponent setCoverageTarget(Coverage value) { 3592 this.coverageTarget = value; 3593 return this; 3594 } 3595 3596 /** 3597 * @return {@link #preAuthRef} (Reference numbers previously provided by the 3598 * insurer to the provider to be quoted on subsequent claims containing 3599 * services or products related to the prior authorization.) 3600 */ 3601 public List<StringType> getPreAuthRef() { 3602 if (this.preAuthRef == null) 3603 this.preAuthRef = new ArrayList<StringType>(); 3604 return this.preAuthRef; 3605 } 3606 3607 /** 3608 * @return Returns a reference to <code>this</code> for easy method chaining 3609 */ 3610 public InsuranceComponent setPreAuthRef(List<StringType> thePreAuthRef) { 3611 this.preAuthRef = thePreAuthRef; 3612 return this; 3613 } 3614 3615 public boolean hasPreAuthRef() { 3616 if (this.preAuthRef == null) 3617 return false; 3618 for (StringType item : this.preAuthRef) 3619 if (!item.isEmpty()) 3620 return true; 3621 return false; 3622 } 3623 3624 /** 3625 * @return {@link #preAuthRef} (Reference numbers previously provided by the 3626 * insurer to the provider to be quoted on subsequent claims containing 3627 * services or products related to the prior authorization.) 3628 */ 3629 public StringType addPreAuthRefElement() {// 2 3630 StringType t = new StringType(); 3631 if (this.preAuthRef == null) 3632 this.preAuthRef = new ArrayList<StringType>(); 3633 this.preAuthRef.add(t); 3634 return t; 3635 } 3636 3637 /** 3638 * @param value {@link #preAuthRef} (Reference numbers previously provided by 3639 * the insurer to the provider to be quoted on subsequent claims 3640 * containing services or products related to the prior 3641 * authorization.) 3642 */ 3643 public InsuranceComponent addPreAuthRef(String value) { // 1 3644 StringType t = new StringType(); 3645 t.setValue(value); 3646 if (this.preAuthRef == null) 3647 this.preAuthRef = new ArrayList<StringType>(); 3648 this.preAuthRef.add(t); 3649 return this; 3650 } 3651 3652 /** 3653 * @param value {@link #preAuthRef} (Reference numbers previously provided by 3654 * the insurer to the provider to be quoted on subsequent claims 3655 * containing services or products related to the prior 3656 * authorization.) 3657 */ 3658 public boolean hasPreAuthRef(String value) { 3659 if (this.preAuthRef == null) 3660 return false; 3661 for (StringType v : this.preAuthRef) 3662 if (v.getValue().equals(value)) // string 3663 return true; 3664 return false; 3665 } 3666 3667 protected void listChildren(List<Property> children) { 3668 super.listChildren(children); 3669 children.add(new Property("focal", "boolean", 3670 "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true.", 0, 1, 3671 focal)); 3672 children.add(new Property("coverage", "Reference(Coverage)", 3673 "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.", 3674 0, 1, coverage)); 3675 children.add(new Property("preAuthRef", "string", 3676 "Reference numbers previously provided by the insurer to the provider to be quoted on subsequent claims containing services or products related to the prior authorization.", 3677 0, java.lang.Integer.MAX_VALUE, preAuthRef)); 3678 } 3679 3680 @Override 3681 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 3682 switch (_hash) { 3683 case 97604197: 3684 /* focal */ return new Property("focal", "boolean", 3685 "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true.", 0, 3686 1, focal); 3687 case -351767064: 3688 /* coverage */ return new Property("coverage", "Reference(Coverage)", 3689 "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.", 3690 0, 1, coverage); 3691 case 522246568: 3692 /* preAuthRef */ return new Property("preAuthRef", "string", 3693 "Reference numbers previously provided by the insurer to the provider to be quoted on subsequent claims containing services or products related to the prior authorization.", 3694 0, java.lang.Integer.MAX_VALUE, preAuthRef); 3695 default: 3696 return super.getNamedProperty(_hash, _name, _checkValid); 3697 } 3698 3699 } 3700 3701 @Override 3702 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 3703 switch (hash) { 3704 case 97604197: 3705 /* focal */ return this.focal == null ? new Base[0] : new Base[] { this.focal }; // BooleanType 3706 case -351767064: 3707 /* coverage */ return this.coverage == null ? new Base[0] : new Base[] { this.coverage }; // Reference 3708 case 522246568: 3709 /* preAuthRef */ return this.preAuthRef == null ? new Base[0] 3710 : this.preAuthRef.toArray(new Base[this.preAuthRef.size()]); // StringType 3711 default: 3712 return super.getProperty(hash, name, checkValid); 3713 } 3714 3715 } 3716 3717 @Override 3718 public Base setProperty(int hash, String name, Base value) throws FHIRException { 3719 switch (hash) { 3720 case 97604197: // focal 3721 this.focal = castToBoolean(value); // BooleanType 3722 return value; 3723 case -351767064: // coverage 3724 this.coverage = castToReference(value); // Reference 3725 return value; 3726 case 522246568: // preAuthRef 3727 this.getPreAuthRef().add(castToString(value)); // StringType 3728 return value; 3729 default: 3730 return super.setProperty(hash, name, value); 3731 } 3732 3733 } 3734 3735 @Override 3736 public Base setProperty(String name, Base value) throws FHIRException { 3737 if (name.equals("focal")) { 3738 this.focal = castToBoolean(value); // BooleanType 3739 } else if (name.equals("coverage")) { 3740 this.coverage = castToReference(value); // Reference 3741 } else if (name.equals("preAuthRef")) { 3742 this.getPreAuthRef().add(castToString(value)); 3743 } else 3744 return super.setProperty(name, value); 3745 return value; 3746 } 3747 3748 @Override 3749 public void removeChild(String name, Base value) throws FHIRException { 3750 if (name.equals("focal")) { 3751 this.focal = null; 3752 } else if (name.equals("coverage")) { 3753 this.coverage = null; 3754 } else if (name.equals("preAuthRef")) { 3755 this.getPreAuthRef().remove(castToString(value)); 3756 } else 3757 super.removeChild(name, value); 3758 3759 } 3760 3761 @Override 3762 public Base makeProperty(int hash, String name) throws FHIRException { 3763 switch (hash) { 3764 case 97604197: 3765 return getFocalElement(); 3766 case -351767064: 3767 return getCoverage(); 3768 case 522246568: 3769 return addPreAuthRefElement(); 3770 default: 3771 return super.makeProperty(hash, name); 3772 } 3773 3774 } 3775 3776 @Override 3777 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 3778 switch (hash) { 3779 case 97604197: 3780 /* focal */ return new String[] { "boolean" }; 3781 case -351767064: 3782 /* coverage */ return new String[] { "Reference" }; 3783 case 522246568: 3784 /* preAuthRef */ return new String[] { "string" }; 3785 default: 3786 return super.getTypesForProperty(hash, name); 3787 } 3788 3789 } 3790 3791 @Override 3792 public Base addChild(String name) throws FHIRException { 3793 if (name.equals("focal")) { 3794 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.focal"); 3795 } else if (name.equals("coverage")) { 3796 this.coverage = new Reference(); 3797 return this.coverage; 3798 } else if (name.equals("preAuthRef")) { 3799 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.preAuthRef"); 3800 } else 3801 return super.addChild(name); 3802 } 3803 3804 public InsuranceComponent copy() { 3805 InsuranceComponent dst = new InsuranceComponent(); 3806 copyValues(dst); 3807 return dst; 3808 } 3809 3810 public void copyValues(InsuranceComponent dst) { 3811 super.copyValues(dst); 3812 dst.focal = focal == null ? null : focal.copy(); 3813 dst.coverage = coverage == null ? null : coverage.copy(); 3814 if (preAuthRef != null) { 3815 dst.preAuthRef = new ArrayList<StringType>(); 3816 for (StringType i : preAuthRef) 3817 dst.preAuthRef.add(i.copy()); 3818 } 3819 ; 3820 } 3821 3822 @Override 3823 public boolean equalsDeep(Base other_) { 3824 if (!super.equalsDeep(other_)) 3825 return false; 3826 if (!(other_ instanceof InsuranceComponent)) 3827 return false; 3828 InsuranceComponent o = (InsuranceComponent) other_; 3829 return compareDeep(focal, o.focal, true) && compareDeep(coverage, o.coverage, true) 3830 && compareDeep(preAuthRef, o.preAuthRef, true); 3831 } 3832 3833 @Override 3834 public boolean equalsShallow(Base other_) { 3835 if (!super.equalsShallow(other_)) 3836 return false; 3837 if (!(other_ instanceof InsuranceComponent)) 3838 return false; 3839 InsuranceComponent o = (InsuranceComponent) other_; 3840 return compareValues(focal, o.focal, true) && compareValues(preAuthRef, o.preAuthRef, true); 3841 } 3842 3843 public boolean isEmpty() { 3844 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(focal, coverage, preAuthRef); 3845 } 3846 3847 public String fhirType() { 3848 return "ExplanationOfBenefit.insurance"; 3849 3850 } 3851 3852 } 3853 3854 @Block() 3855 public static class AccidentComponent extends BackboneElement implements IBaseBackboneElement { 3856 /** 3857 * Date of an accident event related to the products and services contained in 3858 * the claim. 3859 */ 3860 @Child(name = "date", type = { DateType.class }, order = 1, min = 0, max = 1, modifier = false, summary = false) 3861 @Description(shortDefinition = "When the incident occurred", formalDefinition = "Date of an accident event related to the products and services contained in the claim.") 3862 protected DateType date; 3863 3864 /** 3865 * The type or context of the accident event for the purposes of selection of 3866 * potential insurance coverages and determination of coordination between 3867 * insurers. 3868 */ 3869 @Child(name = "type", type = { 3870 CodeableConcept.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 3871 @Description(shortDefinition = "The nature of the accident", formalDefinition = "The type or context of the accident event for the purposes of selection of potential insurance coverages and determination of coordination between insurers.") 3872 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://terminology.hl7.org/ValueSet/v3-ActIncidentCode") 3873 protected CodeableConcept type; 3874 3875 /** 3876 * The physical location of the accident event. 3877 */ 3878 @Child(name = "location", type = { Address.class, 3879 Location.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 3880 @Description(shortDefinition = "Where the event occurred", formalDefinition = "The physical location of the accident event.") 3881 protected Type location; 3882 3883 private static final long serialVersionUID = 622904984L; 3884 3885 /** 3886 * Constructor 3887 */ 3888 public AccidentComponent() { 3889 super(); 3890 } 3891 3892 /** 3893 * @return {@link #date} (Date of an accident event related to the products and 3894 * services contained in the claim.). This is the underlying object with 3895 * id, value and extensions. The accessor "getDate" gives direct access 3896 * to the value 3897 */ 3898 public DateType getDateElement() { 3899 if (this.date == null) 3900 if (Configuration.errorOnAutoCreate()) 3901 throw new Error("Attempt to auto-create AccidentComponent.date"); 3902 else if (Configuration.doAutoCreate()) 3903 this.date = new DateType(); // bb 3904 return this.date; 3905 } 3906 3907 public boolean hasDateElement() { 3908 return this.date != null && !this.date.isEmpty(); 3909 } 3910 3911 public boolean hasDate() { 3912 return this.date != null && !this.date.isEmpty(); 3913 } 3914 3915 /** 3916 * @param value {@link #date} (Date of an accident event related to the products 3917 * and services contained in the claim.). This is the underlying 3918 * object with id, value and extensions. The accessor "getDate" 3919 * gives direct access to the value 3920 */ 3921 public AccidentComponent setDateElement(DateType value) { 3922 this.date = value; 3923 return this; 3924 } 3925 3926 /** 3927 * @return Date of an accident event related to the products and services 3928 * contained in the claim. 3929 */ 3930 public Date getDate() { 3931 return this.date == null ? null : this.date.getValue(); 3932 } 3933 3934 /** 3935 * @param value Date of an accident event related to the products and services 3936 * contained in the claim. 3937 */ 3938 public AccidentComponent setDate(Date value) { 3939 if (value == null) 3940 this.date = null; 3941 else { 3942 if (this.date == null) 3943 this.date = new DateType(); 3944 this.date.setValue(value); 3945 } 3946 return this; 3947 } 3948 3949 /** 3950 * @return {@link #type} (The type or context of the accident event for the 3951 * purposes of selection of potential insurance coverages and 3952 * determination of coordination between insurers.) 3953 */ 3954 public CodeableConcept getType() { 3955 if (this.type == null) 3956 if (Configuration.errorOnAutoCreate()) 3957 throw new Error("Attempt to auto-create AccidentComponent.type"); 3958 else if (Configuration.doAutoCreate()) 3959 this.type = new CodeableConcept(); // cc 3960 return this.type; 3961 } 3962 3963 public boolean hasType() { 3964 return this.type != null && !this.type.isEmpty(); 3965 } 3966 3967 /** 3968 * @param value {@link #type} (The type or context of the accident event for the 3969 * purposes of selection of potential insurance coverages and 3970 * determination of coordination between insurers.) 3971 */ 3972 public AccidentComponent setType(CodeableConcept value) { 3973 this.type = value; 3974 return this; 3975 } 3976 3977 /** 3978 * @return {@link #location} (The physical location of the accident event.) 3979 */ 3980 public Type getLocation() { 3981 return this.location; 3982 } 3983 3984 /** 3985 * @return {@link #location} (The physical location of the accident event.) 3986 */ 3987 public Address getLocationAddress() throws FHIRException { 3988 if (this.location == null) 3989 this.location = new Address(); 3990 if (!(this.location instanceof Address)) 3991 throw new FHIRException("Type mismatch: the type Address was expected, but " 3992 + this.location.getClass().getName() + " was encountered"); 3993 return (Address) this.location; 3994 } 3995 3996 public boolean hasLocationAddress() { 3997 return this != null && this.location instanceof Address; 3998 } 3999 4000 /** 4001 * @return {@link #location} (The physical location of the accident event.) 4002 */ 4003 public Reference getLocationReference() throws FHIRException { 4004 if (this.location == null) 4005 this.location = new Reference(); 4006 if (!(this.location instanceof Reference)) 4007 throw new FHIRException("Type mismatch: the type Reference was expected, but " 4008 + this.location.getClass().getName() + " was encountered"); 4009 return (Reference) this.location; 4010 } 4011 4012 public boolean hasLocationReference() { 4013 return this != null && this.location instanceof Reference; 4014 } 4015 4016 public boolean hasLocation() { 4017 return this.location != null && !this.location.isEmpty(); 4018 } 4019 4020 /** 4021 * @param value {@link #location} (The physical location of the accident event.) 4022 */ 4023 public AccidentComponent setLocation(Type value) { 4024 if (value != null && !(value instanceof Address || value instanceof Reference)) 4025 throw new Error("Not the right type for ExplanationOfBenefit.accident.location[x]: " + value.fhirType()); 4026 this.location = value; 4027 return this; 4028 } 4029 4030 protected void listChildren(List<Property> children) { 4031 super.listChildren(children); 4032 children.add(new Property("date", "date", 4033 "Date of an accident event related to the products and services contained in the claim.", 0, 1, date)); 4034 children.add(new Property("type", "CodeableConcept", 4035 "The type or context of the accident event for the purposes of selection of potential insurance coverages and determination of coordination between insurers.", 4036 0, 1, type)); 4037 children.add(new Property("location[x]", "Address|Reference(Location)", 4038 "The physical location of the accident event.", 0, 1, location)); 4039 } 4040 4041 @Override 4042 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 4043 switch (_hash) { 4044 case 3076014: 4045 /* date */ return new Property("date", "date", 4046 "Date of an accident event related to the products and services contained in the claim.", 0, 1, date); 4047 case 3575610: 4048 /* type */ return new Property("type", "CodeableConcept", 4049 "The type or context of the accident event for the purposes of selection of potential insurance coverages and determination of coordination between insurers.", 4050 0, 1, type); 4051 case 552316075: 4052 /* location[x] */ return new Property("location[x]", "Address|Reference(Location)", 4053 "The physical location of the accident event.", 0, 1, location); 4054 case 1901043637: 4055 /* location */ return new Property("location[x]", "Address|Reference(Location)", 4056 "The physical location of the accident event.", 0, 1, location); 4057 case -1280020865: 4058 /* locationAddress */ return new Property("location[x]", "Address|Reference(Location)", 4059 "The physical location of the accident event.", 0, 1, location); 4060 case 755866390: 4061 /* locationReference */ return new Property("location[x]", "Address|Reference(Location)", 4062 "The physical location of the accident event.", 0, 1, location); 4063 default: 4064 return super.getNamedProperty(_hash, _name, _checkValid); 4065 } 4066 4067 } 4068 4069 @Override 4070 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 4071 switch (hash) { 4072 case 3076014: 4073 /* date */ return this.date == null ? new Base[0] : new Base[] { this.date }; // DateType 4074 case 3575610: 4075 /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // CodeableConcept 4076 case 1901043637: 4077 /* location */ return this.location == null ? new Base[0] : new Base[] { this.location }; // Type 4078 default: 4079 return super.getProperty(hash, name, checkValid); 4080 } 4081 4082 } 4083 4084 @Override 4085 public Base setProperty(int hash, String name, Base value) throws FHIRException { 4086 switch (hash) { 4087 case 3076014: // date 4088 this.date = castToDate(value); // DateType 4089 return value; 4090 case 3575610: // type 4091 this.type = castToCodeableConcept(value); // CodeableConcept 4092 return value; 4093 case 1901043637: // location 4094 this.location = castToType(value); // Type 4095 return value; 4096 default: 4097 return super.setProperty(hash, name, value); 4098 } 4099 4100 } 4101 4102 @Override 4103 public Base setProperty(String name, Base value) throws FHIRException { 4104 if (name.equals("date")) { 4105 this.date = castToDate(value); // DateType 4106 } else if (name.equals("type")) { 4107 this.type = castToCodeableConcept(value); // CodeableConcept 4108 } else if (name.equals("location[x]")) { 4109 this.location = castToType(value); // Type 4110 } else 4111 return super.setProperty(name, value); 4112 return value; 4113 } 4114 4115 @Override 4116 public void removeChild(String name, Base value) throws FHIRException { 4117 if (name.equals("date")) { 4118 this.date = null; 4119 } else if (name.equals("type")) { 4120 this.type = null; 4121 } else if (name.equals("location[x]")) { 4122 this.location = null; 4123 } else 4124 super.removeChild(name, value); 4125 4126 } 4127 4128 @Override 4129 public Base makeProperty(int hash, String name) throws FHIRException { 4130 switch (hash) { 4131 case 3076014: 4132 return getDateElement(); 4133 case 3575610: 4134 return getType(); 4135 case 552316075: 4136 return getLocation(); 4137 case 1901043637: 4138 return getLocation(); 4139 default: 4140 return super.makeProperty(hash, name); 4141 } 4142 4143 } 4144 4145 @Override 4146 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 4147 switch (hash) { 4148 case 3076014: 4149 /* date */ return new String[] { "date" }; 4150 case 3575610: 4151 /* type */ return new String[] { "CodeableConcept" }; 4152 case 1901043637: 4153 /* location */ return new String[] { "Address", "Reference" }; 4154 default: 4155 return super.getTypesForProperty(hash, name); 4156 } 4157 4158 } 4159 4160 @Override 4161 public Base addChild(String name) throws FHIRException { 4162 if (name.equals("date")) { 4163 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.date"); 4164 } else if (name.equals("type")) { 4165 this.type = new CodeableConcept(); 4166 return this.type; 4167 } else if (name.equals("locationAddress")) { 4168 this.location = new Address(); 4169 return this.location; 4170 } else if (name.equals("locationReference")) { 4171 this.location = new Reference(); 4172 return this.location; 4173 } else 4174 return super.addChild(name); 4175 } 4176 4177 public AccidentComponent copy() { 4178 AccidentComponent dst = new AccidentComponent(); 4179 copyValues(dst); 4180 return dst; 4181 } 4182 4183 public void copyValues(AccidentComponent dst) { 4184 super.copyValues(dst); 4185 dst.date = date == null ? null : date.copy(); 4186 dst.type = type == null ? null : type.copy(); 4187 dst.location = location == null ? null : location.copy(); 4188 } 4189 4190 @Override 4191 public boolean equalsDeep(Base other_) { 4192 if (!super.equalsDeep(other_)) 4193 return false; 4194 if (!(other_ instanceof AccidentComponent)) 4195 return false; 4196 AccidentComponent o = (AccidentComponent) other_; 4197 return compareDeep(date, o.date, true) && compareDeep(type, o.type, true) 4198 && compareDeep(location, o.location, true); 4199 } 4200 4201 @Override 4202 public boolean equalsShallow(Base other_) { 4203 if (!super.equalsShallow(other_)) 4204 return false; 4205 if (!(other_ instanceof AccidentComponent)) 4206 return false; 4207 AccidentComponent o = (AccidentComponent) other_; 4208 return compareValues(date, o.date, true); 4209 } 4210 4211 public boolean isEmpty() { 4212 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(date, type, location); 4213 } 4214 4215 public String fhirType() { 4216 return "ExplanationOfBenefit.accident"; 4217 4218 } 4219 4220 } 4221 4222 @Block() 4223 public static class ItemComponent extends BackboneElement implements IBaseBackboneElement { 4224 /** 4225 * A number to uniquely identify item entries. 4226 */ 4227 @Child(name = "sequence", type = { 4228 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 4229 @Description(shortDefinition = "Item instance identifier", formalDefinition = "A number to uniquely identify item entries.") 4230 protected PositiveIntType sequence; 4231 4232 /** 4233 * Care team members related to this service or product. 4234 */ 4235 @Child(name = "careTeamSequence", type = { 4236 PositiveIntType.class }, order = 2, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4237 @Description(shortDefinition = "Applicable care team members", formalDefinition = "Care team members related to this service or product.") 4238 protected List<PositiveIntType> careTeamSequence; 4239 4240 /** 4241 * Diagnoses applicable for this service or product. 4242 */ 4243 @Child(name = "diagnosisSequence", type = { 4244 PositiveIntType.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4245 @Description(shortDefinition = "Applicable diagnoses", formalDefinition = "Diagnoses applicable for this service or product.") 4246 protected List<PositiveIntType> diagnosisSequence; 4247 4248 /** 4249 * Procedures applicable for this service or product. 4250 */ 4251 @Child(name = "procedureSequence", type = { 4252 PositiveIntType.class }, order = 4, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4253 @Description(shortDefinition = "Applicable procedures", formalDefinition = "Procedures applicable for this service or product.") 4254 protected List<PositiveIntType> procedureSequence; 4255 4256 /** 4257 * Exceptions, special conditions and supporting information applicable for this 4258 * service or product. 4259 */ 4260 @Child(name = "informationSequence", type = { 4261 PositiveIntType.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4262 @Description(shortDefinition = "Applicable exception and supporting information", formalDefinition = "Exceptions, special conditions and supporting information applicable for this service or product.") 4263 protected List<PositiveIntType> informationSequence; 4264 4265 /** 4266 * The type of revenue or cost center providing the product and/or service. 4267 */ 4268 @Child(name = "revenue", type = { 4269 CodeableConcept.class }, order = 6, min = 0, max = 1, modifier = false, summary = false) 4270 @Description(shortDefinition = "Revenue or cost center code", formalDefinition = "The type of revenue or cost center providing the product and/or service.") 4271 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-revenue-center") 4272 protected CodeableConcept revenue; 4273 4274 /** 4275 * Code to identify the general type of benefits under which products and 4276 * services are provided. 4277 */ 4278 @Child(name = "category", type = { 4279 CodeableConcept.class }, order = 7, min = 0, max = 1, modifier = false, summary = false) 4280 @Description(shortDefinition = "Benefit classification", formalDefinition = "Code to identify the general type of benefits under which products and services are provided.") 4281 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-benefitcategory") 4282 protected CodeableConcept category; 4283 4284 /** 4285 * When the value is a group code then this item collects a set of related claim 4286 * details, otherwise this contains the product, service, drug or other billing 4287 * code for the item. 4288 */ 4289 @Child(name = "productOrService", type = { 4290 CodeableConcept.class }, order = 8, min = 1, max = 1, modifier = false, summary = false) 4291 @Description(shortDefinition = "Billing, service, product, or drug code", formalDefinition = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.") 4292 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/service-uscls") 4293 protected CodeableConcept productOrService; 4294 4295 /** 4296 * Item typification or modifiers codes to convey additional context for the 4297 * product or service. 4298 */ 4299 @Child(name = "modifier", type = { 4300 CodeableConcept.class }, order = 9, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4301 @Description(shortDefinition = "Product or service billing modifiers", formalDefinition = "Item typification or modifiers codes to convey additional context for the product or service.") 4302 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-modifiers") 4303 protected List<CodeableConcept> modifier; 4304 4305 /** 4306 * Identifies the program under which this may be recovered. 4307 */ 4308 @Child(name = "programCode", type = { 4309 CodeableConcept.class }, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4310 @Description(shortDefinition = "Program the product or service is provided under", formalDefinition = "Identifies the program under which this may be recovered.") 4311 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-program-code") 4312 protected List<CodeableConcept> programCode; 4313 4314 /** 4315 * The date or dates when the service or product was supplied, performed or 4316 * completed. 4317 */ 4318 @Child(name = "serviced", type = { DateType.class, 4319 Period.class }, order = 11, min = 0, max = 1, modifier = false, summary = false) 4320 @Description(shortDefinition = "Date or dates of service or product delivery", formalDefinition = "The date or dates when the service or product was supplied, performed or completed.") 4321 protected Type serviced; 4322 4323 /** 4324 * Where the product or service was provided. 4325 */ 4326 @Child(name = "location", type = { CodeableConcept.class, Address.class, 4327 Location.class }, order = 12, min = 0, max = 1, modifier = false, summary = false) 4328 @Description(shortDefinition = "Place of service or where product was supplied", formalDefinition = "Where the product or service was provided.") 4329 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/service-place") 4330 protected Type location; 4331 4332 /** 4333 * The number of repetitions of a service or product. 4334 */ 4335 @Child(name = "quantity", type = { 4336 Quantity.class }, order = 13, min = 0, max = 1, modifier = false, summary = false) 4337 @Description(shortDefinition = "Count of products or services", formalDefinition = "The number of repetitions of a service or product.") 4338 protected Quantity quantity; 4339 4340 /** 4341 * If the item is not a group then this is the fee for the product or service, 4342 * otherwise this is the total of the fees for the details of the group. 4343 */ 4344 @Child(name = "unitPrice", type = { Money.class }, order = 14, min = 0, max = 1, modifier = false, summary = false) 4345 @Description(shortDefinition = "Fee, charge or cost per item", formalDefinition = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.") 4346 protected Money unitPrice; 4347 4348 /** 4349 * A real number that represents a multiplier used in determining the overall 4350 * value of services delivered and/or goods received. The concept of a Factor 4351 * allows for a discount or surcharge multiplier to be applied to a monetary 4352 * amount. 4353 */ 4354 @Child(name = "factor", type = { 4355 DecimalType.class }, order = 15, min = 0, max = 1, modifier = false, summary = false) 4356 @Description(shortDefinition = "Price scaling factor", formalDefinition = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.") 4357 protected DecimalType factor; 4358 4359 /** 4360 * The quantity times the unit price for an additional service or product or 4361 * charge. 4362 */ 4363 @Child(name = "net", type = { Money.class }, order = 16, min = 0, max = 1, modifier = false, summary = false) 4364 @Description(shortDefinition = "Total item cost", formalDefinition = "The quantity times the unit price for an additional service or product or charge.") 4365 protected Money net; 4366 4367 /** 4368 * Unique Device Identifiers associated with this line item. 4369 */ 4370 @Child(name = "udi", type = { 4371 Device.class }, order = 17, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4372 @Description(shortDefinition = "Unique device identifier", formalDefinition = "Unique Device Identifiers associated with this line item.") 4373 protected List<Reference> udi; 4374 /** 4375 * The actual objects that are the target of the reference (Unique Device 4376 * Identifiers associated with this line item.) 4377 */ 4378 protected List<Device> udiTarget; 4379 4380 /** 4381 * Physical service site on the patient (limb, tooth, etc.). 4382 */ 4383 @Child(name = "bodySite", type = { 4384 CodeableConcept.class }, order = 18, min = 0, max = 1, modifier = false, summary = false) 4385 @Description(shortDefinition = "Anatomical location", formalDefinition = "Physical service site on the patient (limb, tooth, etc.).") 4386 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/tooth") 4387 protected CodeableConcept bodySite; 4388 4389 /** 4390 * A region or surface of the bodySite, e.g. limb region or tooth surface(s). 4391 */ 4392 @Child(name = "subSite", type = { 4393 CodeableConcept.class }, order = 19, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4394 @Description(shortDefinition = "Anatomical sub-location", formalDefinition = "A region or surface of the bodySite, e.g. limb region or tooth surface(s).") 4395 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/surface") 4396 protected List<CodeableConcept> subSite; 4397 4398 /** 4399 * A billed item may include goods or services provided in multiple encounters. 4400 */ 4401 @Child(name = "encounter", type = { 4402 Encounter.class }, order = 20, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4403 @Description(shortDefinition = "Encounters related to this billed item", formalDefinition = "A billed item may include goods or services provided in multiple encounters.") 4404 protected List<Reference> encounter; 4405 /** 4406 * The actual objects that are the target of the reference (A billed item may 4407 * include goods or services provided in multiple encounters.) 4408 */ 4409 protected List<Encounter> encounterTarget; 4410 4411 /** 4412 * The numbers associated with notes below which apply to the adjudication of 4413 * this item. 4414 */ 4415 @Child(name = "noteNumber", type = { 4416 PositiveIntType.class }, order = 21, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4417 @Description(shortDefinition = "Applicable note numbers", formalDefinition = "The numbers associated with notes below which apply to the adjudication of this item.") 4418 protected List<PositiveIntType> noteNumber; 4419 4420 /** 4421 * If this item is a group then the values here are a summary of the 4422 * adjudication of the detail items. If this item is a simple product or service 4423 * then this is the result of the adjudication of this item. 4424 */ 4425 @Child(name = "adjudication", type = {}, order = 22, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4426 @Description(shortDefinition = "Adjudication details", formalDefinition = "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item.") 4427 protected List<AdjudicationComponent> adjudication; 4428 4429 /** 4430 * Second-tier of goods and services. 4431 */ 4432 @Child(name = "detail", type = {}, order = 23, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 4433 @Description(shortDefinition = "Additional items", formalDefinition = "Second-tier of goods and services.") 4434 protected List<DetailComponent> detail; 4435 4436 private static final long serialVersionUID = 67419471L; 4437 4438 /** 4439 * Constructor 4440 */ 4441 public ItemComponent() { 4442 super(); 4443 } 4444 4445 /** 4446 * Constructor 4447 */ 4448 public ItemComponent(PositiveIntType sequence, CodeableConcept productOrService) { 4449 super(); 4450 this.sequence = sequence; 4451 this.productOrService = productOrService; 4452 } 4453 4454 /** 4455 * @return {@link #sequence} (A number to uniquely identify item entries.). This 4456 * is the underlying object with id, value and extensions. The accessor 4457 * "getSequence" gives direct access to the value 4458 */ 4459 public PositiveIntType getSequenceElement() { 4460 if (this.sequence == null) 4461 if (Configuration.errorOnAutoCreate()) 4462 throw new Error("Attempt to auto-create ItemComponent.sequence"); 4463 else if (Configuration.doAutoCreate()) 4464 this.sequence = new PositiveIntType(); // bb 4465 return this.sequence; 4466 } 4467 4468 public boolean hasSequenceElement() { 4469 return this.sequence != null && !this.sequence.isEmpty(); 4470 } 4471 4472 public boolean hasSequence() { 4473 return this.sequence != null && !this.sequence.isEmpty(); 4474 } 4475 4476 /** 4477 * @param value {@link #sequence} (A number to uniquely identify item entries.). 4478 * This is the underlying object with id, value and extensions. The 4479 * accessor "getSequence" gives direct access to the value 4480 */ 4481 public ItemComponent setSequenceElement(PositiveIntType value) { 4482 this.sequence = value; 4483 return this; 4484 } 4485 4486 /** 4487 * @return A number to uniquely identify item entries. 4488 */ 4489 public int getSequence() { 4490 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 4491 } 4492 4493 /** 4494 * @param value A number to uniquely identify item entries. 4495 */ 4496 public ItemComponent setSequence(int value) { 4497 if (this.sequence == null) 4498 this.sequence = new PositiveIntType(); 4499 this.sequence.setValue(value); 4500 return this; 4501 } 4502 4503 /** 4504 * @return {@link #careTeamSequence} (Care team members related to this service 4505 * or product.) 4506 */ 4507 public List<PositiveIntType> getCareTeamSequence() { 4508 if (this.careTeamSequence == null) 4509 this.careTeamSequence = new ArrayList<PositiveIntType>(); 4510 return this.careTeamSequence; 4511 } 4512 4513 /** 4514 * @return Returns a reference to <code>this</code> for easy method chaining 4515 */ 4516 public ItemComponent setCareTeamSequence(List<PositiveIntType> theCareTeamSequence) { 4517 this.careTeamSequence = theCareTeamSequence; 4518 return this; 4519 } 4520 4521 public boolean hasCareTeamSequence() { 4522 if (this.careTeamSequence == null) 4523 return false; 4524 for (PositiveIntType item : this.careTeamSequence) 4525 if (!item.isEmpty()) 4526 return true; 4527 return false; 4528 } 4529 4530 /** 4531 * @return {@link #careTeamSequence} (Care team members related to this service 4532 * or product.) 4533 */ 4534 public PositiveIntType addCareTeamSequenceElement() {// 2 4535 PositiveIntType t = new PositiveIntType(); 4536 if (this.careTeamSequence == null) 4537 this.careTeamSequence = new ArrayList<PositiveIntType>(); 4538 this.careTeamSequence.add(t); 4539 return t; 4540 } 4541 4542 /** 4543 * @param value {@link #careTeamSequence} (Care team members related to this 4544 * service or product.) 4545 */ 4546 public ItemComponent addCareTeamSequence(int value) { // 1 4547 PositiveIntType t = new PositiveIntType(); 4548 t.setValue(value); 4549 if (this.careTeamSequence == null) 4550 this.careTeamSequence = new ArrayList<PositiveIntType>(); 4551 this.careTeamSequence.add(t); 4552 return this; 4553 } 4554 4555 /** 4556 * @param value {@link #careTeamSequence} (Care team members related to this 4557 * service or product.) 4558 */ 4559 public boolean hasCareTeamSequence(int value) { 4560 if (this.careTeamSequence == null) 4561 return false; 4562 for (PositiveIntType v : this.careTeamSequence) 4563 if (v.getValue().equals(value)) // positiveInt 4564 return true; 4565 return false; 4566 } 4567 4568 /** 4569 * @return {@link #diagnosisSequence} (Diagnoses applicable for this service or 4570 * product.) 4571 */ 4572 public List<PositiveIntType> getDiagnosisSequence() { 4573 if (this.diagnosisSequence == null) 4574 this.diagnosisSequence = new ArrayList<PositiveIntType>(); 4575 return this.diagnosisSequence; 4576 } 4577 4578 /** 4579 * @return Returns a reference to <code>this</code> for easy method chaining 4580 */ 4581 public ItemComponent setDiagnosisSequence(List<PositiveIntType> theDiagnosisSequence) { 4582 this.diagnosisSequence = theDiagnosisSequence; 4583 return this; 4584 } 4585 4586 public boolean hasDiagnosisSequence() { 4587 if (this.diagnosisSequence == null) 4588 return false; 4589 for (PositiveIntType item : this.diagnosisSequence) 4590 if (!item.isEmpty()) 4591 return true; 4592 return false; 4593 } 4594 4595 /** 4596 * @return {@link #diagnosisSequence} (Diagnoses applicable for this service or 4597 * product.) 4598 */ 4599 public PositiveIntType addDiagnosisSequenceElement() {// 2 4600 PositiveIntType t = new PositiveIntType(); 4601 if (this.diagnosisSequence == null) 4602 this.diagnosisSequence = new ArrayList<PositiveIntType>(); 4603 this.diagnosisSequence.add(t); 4604 return t; 4605 } 4606 4607 /** 4608 * @param value {@link #diagnosisSequence} (Diagnoses applicable for this 4609 * service or product.) 4610 */ 4611 public ItemComponent addDiagnosisSequence(int value) { // 1 4612 PositiveIntType t = new PositiveIntType(); 4613 t.setValue(value); 4614 if (this.diagnosisSequence == null) 4615 this.diagnosisSequence = new ArrayList<PositiveIntType>(); 4616 this.diagnosisSequence.add(t); 4617 return this; 4618 } 4619 4620 /** 4621 * @param value {@link #diagnosisSequence} (Diagnoses applicable for this 4622 * service or product.) 4623 */ 4624 public boolean hasDiagnosisSequence(int value) { 4625 if (this.diagnosisSequence == null) 4626 return false; 4627 for (PositiveIntType v : this.diagnosisSequence) 4628 if (v.getValue().equals(value)) // positiveInt 4629 return true; 4630 return false; 4631 } 4632 4633 /** 4634 * @return {@link #procedureSequence} (Procedures applicable for this service or 4635 * product.) 4636 */ 4637 public List<PositiveIntType> getProcedureSequence() { 4638 if (this.procedureSequence == null) 4639 this.procedureSequence = new ArrayList<PositiveIntType>(); 4640 return this.procedureSequence; 4641 } 4642 4643 /** 4644 * @return Returns a reference to <code>this</code> for easy method chaining 4645 */ 4646 public ItemComponent setProcedureSequence(List<PositiveIntType> theProcedureSequence) { 4647 this.procedureSequence = theProcedureSequence; 4648 return this; 4649 } 4650 4651 public boolean hasProcedureSequence() { 4652 if (this.procedureSequence == null) 4653 return false; 4654 for (PositiveIntType item : this.procedureSequence) 4655 if (!item.isEmpty()) 4656 return true; 4657 return false; 4658 } 4659 4660 /** 4661 * @return {@link #procedureSequence} (Procedures applicable for this service or 4662 * product.) 4663 */ 4664 public PositiveIntType addProcedureSequenceElement() {// 2 4665 PositiveIntType t = new PositiveIntType(); 4666 if (this.procedureSequence == null) 4667 this.procedureSequence = new ArrayList<PositiveIntType>(); 4668 this.procedureSequence.add(t); 4669 return t; 4670 } 4671 4672 /** 4673 * @param value {@link #procedureSequence} (Procedures applicable for this 4674 * service or product.) 4675 */ 4676 public ItemComponent addProcedureSequence(int value) { // 1 4677 PositiveIntType t = new PositiveIntType(); 4678 t.setValue(value); 4679 if (this.procedureSequence == null) 4680 this.procedureSequence = new ArrayList<PositiveIntType>(); 4681 this.procedureSequence.add(t); 4682 return this; 4683 } 4684 4685 /** 4686 * @param value {@link #procedureSequence} (Procedures applicable for this 4687 * service or product.) 4688 */ 4689 public boolean hasProcedureSequence(int value) { 4690 if (this.procedureSequence == null) 4691 return false; 4692 for (PositiveIntType v : this.procedureSequence) 4693 if (v.getValue().equals(value)) // positiveInt 4694 return true; 4695 return false; 4696 } 4697 4698 /** 4699 * @return {@link #informationSequence} (Exceptions, special conditions and 4700 * supporting information applicable for this service or product.) 4701 */ 4702 public List<PositiveIntType> getInformationSequence() { 4703 if (this.informationSequence == null) 4704 this.informationSequence = new ArrayList<PositiveIntType>(); 4705 return this.informationSequence; 4706 } 4707 4708 /** 4709 * @return Returns a reference to <code>this</code> for easy method chaining 4710 */ 4711 public ItemComponent setInformationSequence(List<PositiveIntType> theInformationSequence) { 4712 this.informationSequence = theInformationSequence; 4713 return this; 4714 } 4715 4716 public boolean hasInformationSequence() { 4717 if (this.informationSequence == null) 4718 return false; 4719 for (PositiveIntType item : this.informationSequence) 4720 if (!item.isEmpty()) 4721 return true; 4722 return false; 4723 } 4724 4725 /** 4726 * @return {@link #informationSequence} (Exceptions, special conditions and 4727 * supporting information applicable for this service or product.) 4728 */ 4729 public PositiveIntType addInformationSequenceElement() {// 2 4730 PositiveIntType t = new PositiveIntType(); 4731 if (this.informationSequence == null) 4732 this.informationSequence = new ArrayList<PositiveIntType>(); 4733 this.informationSequence.add(t); 4734 return t; 4735 } 4736 4737 /** 4738 * @param value {@link #informationSequence} (Exceptions, special conditions and 4739 * supporting information applicable for this service or product.) 4740 */ 4741 public ItemComponent addInformationSequence(int value) { // 1 4742 PositiveIntType t = new PositiveIntType(); 4743 t.setValue(value); 4744 if (this.informationSequence == null) 4745 this.informationSequence = new ArrayList<PositiveIntType>(); 4746 this.informationSequence.add(t); 4747 return this; 4748 } 4749 4750 /** 4751 * @param value {@link #informationSequence} (Exceptions, special conditions and 4752 * supporting information applicable for this service or product.) 4753 */ 4754 public boolean hasInformationSequence(int value) { 4755 if (this.informationSequence == null) 4756 return false; 4757 for (PositiveIntType v : this.informationSequence) 4758 if (v.getValue().equals(value)) // positiveInt 4759 return true; 4760 return false; 4761 } 4762 4763 /** 4764 * @return {@link #revenue} (The type of revenue or cost center providing the 4765 * product and/or service.) 4766 */ 4767 public CodeableConcept getRevenue() { 4768 if (this.revenue == null) 4769 if (Configuration.errorOnAutoCreate()) 4770 throw new Error("Attempt to auto-create ItemComponent.revenue"); 4771 else if (Configuration.doAutoCreate()) 4772 this.revenue = new CodeableConcept(); // cc 4773 return this.revenue; 4774 } 4775 4776 public boolean hasRevenue() { 4777 return this.revenue != null && !this.revenue.isEmpty(); 4778 } 4779 4780 /** 4781 * @param value {@link #revenue} (The type of revenue or cost center providing 4782 * the product and/or service.) 4783 */ 4784 public ItemComponent setRevenue(CodeableConcept value) { 4785 this.revenue = value; 4786 return this; 4787 } 4788 4789 /** 4790 * @return {@link #category} (Code to identify the general type of benefits 4791 * under which products and services are provided.) 4792 */ 4793 public CodeableConcept getCategory() { 4794 if (this.category == null) 4795 if (Configuration.errorOnAutoCreate()) 4796 throw new Error("Attempt to auto-create ItemComponent.category"); 4797 else if (Configuration.doAutoCreate()) 4798 this.category = new CodeableConcept(); // cc 4799 return this.category; 4800 } 4801 4802 public boolean hasCategory() { 4803 return this.category != null && !this.category.isEmpty(); 4804 } 4805 4806 /** 4807 * @param value {@link #category} (Code to identify the general type of benefits 4808 * under which products and services are provided.) 4809 */ 4810 public ItemComponent setCategory(CodeableConcept value) { 4811 this.category = value; 4812 return this; 4813 } 4814 4815 /** 4816 * @return {@link #productOrService} (When the value is a group code then this 4817 * item collects a set of related claim details, otherwise this contains 4818 * the product, service, drug or other billing code for the item.) 4819 */ 4820 public CodeableConcept getProductOrService() { 4821 if (this.productOrService == null) 4822 if (Configuration.errorOnAutoCreate()) 4823 throw new Error("Attempt to auto-create ItemComponent.productOrService"); 4824 else if (Configuration.doAutoCreate()) 4825 this.productOrService = new CodeableConcept(); // cc 4826 return this.productOrService; 4827 } 4828 4829 public boolean hasProductOrService() { 4830 return this.productOrService != null && !this.productOrService.isEmpty(); 4831 } 4832 4833 /** 4834 * @param value {@link #productOrService} (When the value is a group code then 4835 * this item collects a set of related claim details, otherwise 4836 * this contains the product, service, drug or other billing code 4837 * for the item.) 4838 */ 4839 public ItemComponent setProductOrService(CodeableConcept value) { 4840 this.productOrService = value; 4841 return this; 4842 } 4843 4844 /** 4845 * @return {@link #modifier} (Item typification or modifiers codes to convey 4846 * additional context for the product or service.) 4847 */ 4848 public List<CodeableConcept> getModifier() { 4849 if (this.modifier == null) 4850 this.modifier = new ArrayList<CodeableConcept>(); 4851 return this.modifier; 4852 } 4853 4854 /** 4855 * @return Returns a reference to <code>this</code> for easy method chaining 4856 */ 4857 public ItemComponent setModifier(List<CodeableConcept> theModifier) { 4858 this.modifier = theModifier; 4859 return this; 4860 } 4861 4862 public boolean hasModifier() { 4863 if (this.modifier == null) 4864 return false; 4865 for (CodeableConcept item : this.modifier) 4866 if (!item.isEmpty()) 4867 return true; 4868 return false; 4869 } 4870 4871 public CodeableConcept addModifier() { // 3 4872 CodeableConcept t = new CodeableConcept(); 4873 if (this.modifier == null) 4874 this.modifier = new ArrayList<CodeableConcept>(); 4875 this.modifier.add(t); 4876 return t; 4877 } 4878 4879 public ItemComponent addModifier(CodeableConcept t) { // 3 4880 if (t == null) 4881 return this; 4882 if (this.modifier == null) 4883 this.modifier = new ArrayList<CodeableConcept>(); 4884 this.modifier.add(t); 4885 return this; 4886 } 4887 4888 /** 4889 * @return The first repetition of repeating field {@link #modifier}, creating 4890 * it if it does not already exist 4891 */ 4892 public CodeableConcept getModifierFirstRep() { 4893 if (getModifier().isEmpty()) { 4894 addModifier(); 4895 } 4896 return getModifier().get(0); 4897 } 4898 4899 /** 4900 * @return {@link #programCode} (Identifies the program under which this may be 4901 * recovered.) 4902 */ 4903 public List<CodeableConcept> getProgramCode() { 4904 if (this.programCode == null) 4905 this.programCode = new ArrayList<CodeableConcept>(); 4906 return this.programCode; 4907 } 4908 4909 /** 4910 * @return Returns a reference to <code>this</code> for easy method chaining 4911 */ 4912 public ItemComponent setProgramCode(List<CodeableConcept> theProgramCode) { 4913 this.programCode = theProgramCode; 4914 return this; 4915 } 4916 4917 public boolean hasProgramCode() { 4918 if (this.programCode == null) 4919 return false; 4920 for (CodeableConcept item : this.programCode) 4921 if (!item.isEmpty()) 4922 return true; 4923 return false; 4924 } 4925 4926 public CodeableConcept addProgramCode() { // 3 4927 CodeableConcept t = new CodeableConcept(); 4928 if (this.programCode == null) 4929 this.programCode = new ArrayList<CodeableConcept>(); 4930 this.programCode.add(t); 4931 return t; 4932 } 4933 4934 public ItemComponent addProgramCode(CodeableConcept t) { // 3 4935 if (t == null) 4936 return this; 4937 if (this.programCode == null) 4938 this.programCode = new ArrayList<CodeableConcept>(); 4939 this.programCode.add(t); 4940 return this; 4941 } 4942 4943 /** 4944 * @return The first repetition of repeating field {@link #programCode}, 4945 * creating it if it does not already exist 4946 */ 4947 public CodeableConcept getProgramCodeFirstRep() { 4948 if (getProgramCode().isEmpty()) { 4949 addProgramCode(); 4950 } 4951 return getProgramCode().get(0); 4952 } 4953 4954 /** 4955 * @return {@link #serviced} (The date or dates when the service or product was 4956 * supplied, performed or completed.) 4957 */ 4958 public Type getServiced() { 4959 return this.serviced; 4960 } 4961 4962 /** 4963 * @return {@link #serviced} (The date or dates when the service or product was 4964 * supplied, performed or completed.) 4965 */ 4966 public DateType getServicedDateType() throws FHIRException { 4967 if (this.serviced == null) 4968 this.serviced = new DateType(); 4969 if (!(this.serviced instanceof DateType)) 4970 throw new FHIRException("Type mismatch: the type DateType was expected, but " 4971 + this.serviced.getClass().getName() + " was encountered"); 4972 return (DateType) this.serviced; 4973 } 4974 4975 public boolean hasServicedDateType() { 4976 return this != null && this.serviced instanceof DateType; 4977 } 4978 4979 /** 4980 * @return {@link #serviced} (The date or dates when the service or product was 4981 * supplied, performed or completed.) 4982 */ 4983 public Period getServicedPeriod() throws FHIRException { 4984 if (this.serviced == null) 4985 this.serviced = new Period(); 4986 if (!(this.serviced instanceof Period)) 4987 throw new FHIRException("Type mismatch: the type Period was expected, but " + this.serviced.getClass().getName() 4988 + " was encountered"); 4989 return (Period) this.serviced; 4990 } 4991 4992 public boolean hasServicedPeriod() { 4993 return this != null && this.serviced instanceof Period; 4994 } 4995 4996 public boolean hasServiced() { 4997 return this.serviced != null && !this.serviced.isEmpty(); 4998 } 4999 5000 /** 5001 * @param value {@link #serviced} (The date or dates when the service or product 5002 * was supplied, performed or completed.) 5003 */ 5004 public ItemComponent setServiced(Type value) { 5005 if (value != null && !(value instanceof DateType || value instanceof Period)) 5006 throw new Error("Not the right type for ExplanationOfBenefit.item.serviced[x]: " + value.fhirType()); 5007 this.serviced = value; 5008 return this; 5009 } 5010 5011 /** 5012 * @return {@link #location} (Where the product or service was provided.) 5013 */ 5014 public Type getLocation() { 5015 return this.location; 5016 } 5017 5018 /** 5019 * @return {@link #location} (Where the product or service was provided.) 5020 */ 5021 public CodeableConcept getLocationCodeableConcept() throws FHIRException { 5022 if (this.location == null) 5023 this.location = new CodeableConcept(); 5024 if (!(this.location instanceof CodeableConcept)) 5025 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but " 5026 + this.location.getClass().getName() + " was encountered"); 5027 return (CodeableConcept) this.location; 5028 } 5029 5030 public boolean hasLocationCodeableConcept() { 5031 return this != null && this.location instanceof CodeableConcept; 5032 } 5033 5034 /** 5035 * @return {@link #location} (Where the product or service was provided.) 5036 */ 5037 public Address getLocationAddress() throws FHIRException { 5038 if (this.location == null) 5039 this.location = new Address(); 5040 if (!(this.location instanceof Address)) 5041 throw new FHIRException("Type mismatch: the type Address was expected, but " 5042 + this.location.getClass().getName() + " was encountered"); 5043 return (Address) this.location; 5044 } 5045 5046 public boolean hasLocationAddress() { 5047 return this != null && this.location instanceof Address; 5048 } 5049 5050 /** 5051 * @return {@link #location} (Where the product or service was provided.) 5052 */ 5053 public Reference getLocationReference() throws FHIRException { 5054 if (this.location == null) 5055 this.location = new Reference(); 5056 if (!(this.location instanceof Reference)) 5057 throw new FHIRException("Type mismatch: the type Reference was expected, but " 5058 + this.location.getClass().getName() + " was encountered"); 5059 return (Reference) this.location; 5060 } 5061 5062 public boolean hasLocationReference() { 5063 return this != null && this.location instanceof Reference; 5064 } 5065 5066 public boolean hasLocation() { 5067 return this.location != null && !this.location.isEmpty(); 5068 } 5069 5070 /** 5071 * @param value {@link #location} (Where the product or service was provided.) 5072 */ 5073 public ItemComponent setLocation(Type value) { 5074 if (value != null 5075 && !(value instanceof CodeableConcept || value instanceof Address || value instanceof Reference)) 5076 throw new Error("Not the right type for ExplanationOfBenefit.item.location[x]: " + value.fhirType()); 5077 this.location = value; 5078 return this; 5079 } 5080 5081 /** 5082 * @return {@link #quantity} (The number of repetitions of a service or 5083 * product.) 5084 */ 5085 public Quantity getQuantity() { 5086 if (this.quantity == null) 5087 if (Configuration.errorOnAutoCreate()) 5088 throw new Error("Attempt to auto-create ItemComponent.quantity"); 5089 else if (Configuration.doAutoCreate()) 5090 this.quantity = new Quantity(); // cc 5091 return this.quantity; 5092 } 5093 5094 public boolean hasQuantity() { 5095 return this.quantity != null && !this.quantity.isEmpty(); 5096 } 5097 5098 /** 5099 * @param value {@link #quantity} (The number of repetitions of a service or 5100 * product.) 5101 */ 5102 public ItemComponent setQuantity(Quantity value) { 5103 this.quantity = value; 5104 return this; 5105 } 5106 5107 /** 5108 * @return {@link #unitPrice} (If the item is not a group then this is the fee 5109 * for the product or service, otherwise this is the total of the fees 5110 * for the details of the group.) 5111 */ 5112 public Money getUnitPrice() { 5113 if (this.unitPrice == null) 5114 if (Configuration.errorOnAutoCreate()) 5115 throw new Error("Attempt to auto-create ItemComponent.unitPrice"); 5116 else if (Configuration.doAutoCreate()) 5117 this.unitPrice = new Money(); // cc 5118 return this.unitPrice; 5119 } 5120 5121 public boolean hasUnitPrice() { 5122 return this.unitPrice != null && !this.unitPrice.isEmpty(); 5123 } 5124 5125 /** 5126 * @param value {@link #unitPrice} (If the item is not a group then this is the 5127 * fee for the product or service, otherwise this is the total of 5128 * the fees for the details of the group.) 5129 */ 5130 public ItemComponent setUnitPrice(Money value) { 5131 this.unitPrice = value; 5132 return this; 5133 } 5134 5135 /** 5136 * @return {@link #factor} (A real number that represents a multiplier used in 5137 * determining the overall value of services delivered and/or goods 5138 * received. The concept of a Factor allows for a discount or surcharge 5139 * multiplier to be applied to a monetary amount.). This is the 5140 * underlying object with id, value and extensions. The accessor 5141 * "getFactor" gives direct access to the value 5142 */ 5143 public DecimalType getFactorElement() { 5144 if (this.factor == null) 5145 if (Configuration.errorOnAutoCreate()) 5146 throw new Error("Attempt to auto-create ItemComponent.factor"); 5147 else if (Configuration.doAutoCreate()) 5148 this.factor = new DecimalType(); // bb 5149 return this.factor; 5150 } 5151 5152 public boolean hasFactorElement() { 5153 return this.factor != null && !this.factor.isEmpty(); 5154 } 5155 5156 public boolean hasFactor() { 5157 return this.factor != null && !this.factor.isEmpty(); 5158 } 5159 5160 /** 5161 * @param value {@link #factor} (A real number that represents a multiplier used 5162 * in determining the overall value of services delivered and/or 5163 * goods received. The concept of a Factor allows for a discount or 5164 * surcharge multiplier to be applied to a monetary amount.). This 5165 * is the underlying object with id, value and extensions. The 5166 * accessor "getFactor" gives direct access to the value 5167 */ 5168 public ItemComponent setFactorElement(DecimalType value) { 5169 this.factor = value; 5170 return this; 5171 } 5172 5173 /** 5174 * @return A real number that represents a multiplier used in determining the 5175 * overall value of services delivered and/or goods received. The 5176 * concept of a Factor allows for a discount or surcharge multiplier to 5177 * be applied to a monetary amount. 5178 */ 5179 public BigDecimal getFactor() { 5180 return this.factor == null ? null : this.factor.getValue(); 5181 } 5182 5183 /** 5184 * @param value A real number that represents a multiplier used in determining 5185 * the overall value of services delivered and/or goods received. 5186 * The concept of a Factor allows for a discount or surcharge 5187 * multiplier to be applied to a monetary amount. 5188 */ 5189 public ItemComponent setFactor(BigDecimal value) { 5190 if (value == null) 5191 this.factor = null; 5192 else { 5193 if (this.factor == null) 5194 this.factor = new DecimalType(); 5195 this.factor.setValue(value); 5196 } 5197 return this; 5198 } 5199 5200 /** 5201 * @param value A real number that represents a multiplier used in determining 5202 * the overall value of services delivered and/or goods received. 5203 * The concept of a Factor allows for a discount or surcharge 5204 * multiplier to be applied to a monetary amount. 5205 */ 5206 public ItemComponent setFactor(long value) { 5207 this.factor = new DecimalType(); 5208 this.factor.setValue(value); 5209 return this; 5210 } 5211 5212 /** 5213 * @param value A real number that represents a multiplier used in determining 5214 * the overall value of services delivered and/or goods received. 5215 * The concept of a Factor allows for a discount or surcharge 5216 * multiplier to be applied to a monetary amount. 5217 */ 5218 public ItemComponent setFactor(double value) { 5219 this.factor = new DecimalType(); 5220 this.factor.setValue(value); 5221 return this; 5222 } 5223 5224 /** 5225 * @return {@link #net} (The quantity times the unit price for an additional 5226 * service or product or charge.) 5227 */ 5228 public Money getNet() { 5229 if (this.net == null) 5230 if (Configuration.errorOnAutoCreate()) 5231 throw new Error("Attempt to auto-create ItemComponent.net"); 5232 else if (Configuration.doAutoCreate()) 5233 this.net = new Money(); // cc 5234 return this.net; 5235 } 5236 5237 public boolean hasNet() { 5238 return this.net != null && !this.net.isEmpty(); 5239 } 5240 5241 /** 5242 * @param value {@link #net} (The quantity times the unit price for an 5243 * additional service or product or charge.) 5244 */ 5245 public ItemComponent setNet(Money value) { 5246 this.net = value; 5247 return this; 5248 } 5249 5250 /** 5251 * @return {@link #udi} (Unique Device Identifiers associated with this line 5252 * item.) 5253 */ 5254 public List<Reference> getUdi() { 5255 if (this.udi == null) 5256 this.udi = new ArrayList<Reference>(); 5257 return this.udi; 5258 } 5259 5260 /** 5261 * @return Returns a reference to <code>this</code> for easy method chaining 5262 */ 5263 public ItemComponent setUdi(List<Reference> theUdi) { 5264 this.udi = theUdi; 5265 return this; 5266 } 5267 5268 public boolean hasUdi() { 5269 if (this.udi == null) 5270 return false; 5271 for (Reference item : this.udi) 5272 if (!item.isEmpty()) 5273 return true; 5274 return false; 5275 } 5276 5277 public Reference addUdi() { // 3 5278 Reference t = new Reference(); 5279 if (this.udi == null) 5280 this.udi = new ArrayList<Reference>(); 5281 this.udi.add(t); 5282 return t; 5283 } 5284 5285 public ItemComponent addUdi(Reference t) { // 3 5286 if (t == null) 5287 return this; 5288 if (this.udi == null) 5289 this.udi = new ArrayList<Reference>(); 5290 this.udi.add(t); 5291 return this; 5292 } 5293 5294 /** 5295 * @return The first repetition of repeating field {@link #udi}, creating it if 5296 * it does not already exist 5297 */ 5298 public Reference getUdiFirstRep() { 5299 if (getUdi().isEmpty()) { 5300 addUdi(); 5301 } 5302 return getUdi().get(0); 5303 } 5304 5305 /** 5306 * @deprecated Use Reference#setResource(IBaseResource) instead 5307 */ 5308 @Deprecated 5309 public List<Device> getUdiTarget() { 5310 if (this.udiTarget == null) 5311 this.udiTarget = new ArrayList<Device>(); 5312 return this.udiTarget; 5313 } 5314 5315 /** 5316 * @deprecated Use Reference#setResource(IBaseResource) instead 5317 */ 5318 @Deprecated 5319 public Device addUdiTarget() { 5320 Device r = new Device(); 5321 if (this.udiTarget == null) 5322 this.udiTarget = new ArrayList<Device>(); 5323 this.udiTarget.add(r); 5324 return r; 5325 } 5326 5327 /** 5328 * @return {@link #bodySite} (Physical service site on the patient (limb, tooth, 5329 * etc.).) 5330 */ 5331 public CodeableConcept getBodySite() { 5332 if (this.bodySite == null) 5333 if (Configuration.errorOnAutoCreate()) 5334 throw new Error("Attempt to auto-create ItemComponent.bodySite"); 5335 else if (Configuration.doAutoCreate()) 5336 this.bodySite = new CodeableConcept(); // cc 5337 return this.bodySite; 5338 } 5339 5340 public boolean hasBodySite() { 5341 return this.bodySite != null && !this.bodySite.isEmpty(); 5342 } 5343 5344 /** 5345 * @param value {@link #bodySite} (Physical service site on the patient (limb, 5346 * tooth, etc.).) 5347 */ 5348 public ItemComponent setBodySite(CodeableConcept value) { 5349 this.bodySite = value; 5350 return this; 5351 } 5352 5353 /** 5354 * @return {@link #subSite} (A region or surface of the bodySite, e.g. limb 5355 * region or tooth surface(s).) 5356 */ 5357 public List<CodeableConcept> getSubSite() { 5358 if (this.subSite == null) 5359 this.subSite = new ArrayList<CodeableConcept>(); 5360 return this.subSite; 5361 } 5362 5363 /** 5364 * @return Returns a reference to <code>this</code> for easy method chaining 5365 */ 5366 public ItemComponent setSubSite(List<CodeableConcept> theSubSite) { 5367 this.subSite = theSubSite; 5368 return this; 5369 } 5370 5371 public boolean hasSubSite() { 5372 if (this.subSite == null) 5373 return false; 5374 for (CodeableConcept item : this.subSite) 5375 if (!item.isEmpty()) 5376 return true; 5377 return false; 5378 } 5379 5380 public CodeableConcept addSubSite() { // 3 5381 CodeableConcept t = new CodeableConcept(); 5382 if (this.subSite == null) 5383 this.subSite = new ArrayList<CodeableConcept>(); 5384 this.subSite.add(t); 5385 return t; 5386 } 5387 5388 public ItemComponent addSubSite(CodeableConcept t) { // 3 5389 if (t == null) 5390 return this; 5391 if (this.subSite == null) 5392 this.subSite = new ArrayList<CodeableConcept>(); 5393 this.subSite.add(t); 5394 return this; 5395 } 5396 5397 /** 5398 * @return The first repetition of repeating field {@link #subSite}, creating it 5399 * if it does not already exist 5400 */ 5401 public CodeableConcept getSubSiteFirstRep() { 5402 if (getSubSite().isEmpty()) { 5403 addSubSite(); 5404 } 5405 return getSubSite().get(0); 5406 } 5407 5408 /** 5409 * @return {@link #encounter} (A billed item may include goods or services 5410 * provided in multiple encounters.) 5411 */ 5412 public List<Reference> getEncounter() { 5413 if (this.encounter == null) 5414 this.encounter = new ArrayList<Reference>(); 5415 return this.encounter; 5416 } 5417 5418 /** 5419 * @return Returns a reference to <code>this</code> for easy method chaining 5420 */ 5421 public ItemComponent setEncounter(List<Reference> theEncounter) { 5422 this.encounter = theEncounter; 5423 return this; 5424 } 5425 5426 public boolean hasEncounter() { 5427 if (this.encounter == null) 5428 return false; 5429 for (Reference item : this.encounter) 5430 if (!item.isEmpty()) 5431 return true; 5432 return false; 5433 } 5434 5435 public Reference addEncounter() { // 3 5436 Reference t = new Reference(); 5437 if (this.encounter == null) 5438 this.encounter = new ArrayList<Reference>(); 5439 this.encounter.add(t); 5440 return t; 5441 } 5442 5443 public ItemComponent addEncounter(Reference t) { // 3 5444 if (t == null) 5445 return this; 5446 if (this.encounter == null) 5447 this.encounter = new ArrayList<Reference>(); 5448 this.encounter.add(t); 5449 return this; 5450 } 5451 5452 /** 5453 * @return The first repetition of repeating field {@link #encounter}, creating 5454 * it if it does not already exist 5455 */ 5456 public Reference getEncounterFirstRep() { 5457 if (getEncounter().isEmpty()) { 5458 addEncounter(); 5459 } 5460 return getEncounter().get(0); 5461 } 5462 5463 /** 5464 * @deprecated Use Reference#setResource(IBaseResource) instead 5465 */ 5466 @Deprecated 5467 public List<Encounter> getEncounterTarget() { 5468 if (this.encounterTarget == null) 5469 this.encounterTarget = new ArrayList<Encounter>(); 5470 return this.encounterTarget; 5471 } 5472 5473 /** 5474 * @deprecated Use Reference#setResource(IBaseResource) instead 5475 */ 5476 @Deprecated 5477 public Encounter addEncounterTarget() { 5478 Encounter r = new Encounter(); 5479 if (this.encounterTarget == null) 5480 this.encounterTarget = new ArrayList<Encounter>(); 5481 this.encounterTarget.add(r); 5482 return r; 5483 } 5484 5485 /** 5486 * @return {@link #noteNumber} (The numbers associated with notes below which 5487 * apply to the adjudication of this item.) 5488 */ 5489 public List<PositiveIntType> getNoteNumber() { 5490 if (this.noteNumber == null) 5491 this.noteNumber = new ArrayList<PositiveIntType>(); 5492 return this.noteNumber; 5493 } 5494 5495 /** 5496 * @return Returns a reference to <code>this</code> for easy method chaining 5497 */ 5498 public ItemComponent setNoteNumber(List<PositiveIntType> theNoteNumber) { 5499 this.noteNumber = theNoteNumber; 5500 return this; 5501 } 5502 5503 public boolean hasNoteNumber() { 5504 if (this.noteNumber == null) 5505 return false; 5506 for (PositiveIntType item : this.noteNumber) 5507 if (!item.isEmpty()) 5508 return true; 5509 return false; 5510 } 5511 5512 /** 5513 * @return {@link #noteNumber} (The numbers associated with notes below which 5514 * apply to the adjudication of this item.) 5515 */ 5516 public PositiveIntType addNoteNumberElement() {// 2 5517 PositiveIntType t = new PositiveIntType(); 5518 if (this.noteNumber == null) 5519 this.noteNumber = new ArrayList<PositiveIntType>(); 5520 this.noteNumber.add(t); 5521 return t; 5522 } 5523 5524 /** 5525 * @param value {@link #noteNumber} (The numbers associated with notes below 5526 * which apply to the adjudication of this item.) 5527 */ 5528 public ItemComponent addNoteNumber(int value) { // 1 5529 PositiveIntType t = new PositiveIntType(); 5530 t.setValue(value); 5531 if (this.noteNumber == null) 5532 this.noteNumber = new ArrayList<PositiveIntType>(); 5533 this.noteNumber.add(t); 5534 return this; 5535 } 5536 5537 /** 5538 * @param value {@link #noteNumber} (The numbers associated with notes below 5539 * which apply to the adjudication of this item.) 5540 */ 5541 public boolean hasNoteNumber(int value) { 5542 if (this.noteNumber == null) 5543 return false; 5544 for (PositiveIntType v : this.noteNumber) 5545 if (v.getValue().equals(value)) // positiveInt 5546 return true; 5547 return false; 5548 } 5549 5550 /** 5551 * @return {@link #adjudication} (If this item is a group then the values here 5552 * are a summary of the adjudication of the detail items. If this item 5553 * is a simple product or service then this is the result of the 5554 * adjudication of this item.) 5555 */ 5556 public List<AdjudicationComponent> getAdjudication() { 5557 if (this.adjudication == null) 5558 this.adjudication = new ArrayList<AdjudicationComponent>(); 5559 return this.adjudication; 5560 } 5561 5562 /** 5563 * @return Returns a reference to <code>this</code> for easy method chaining 5564 */ 5565 public ItemComponent setAdjudication(List<AdjudicationComponent> theAdjudication) { 5566 this.adjudication = theAdjudication; 5567 return this; 5568 } 5569 5570 public boolean hasAdjudication() { 5571 if (this.adjudication == null) 5572 return false; 5573 for (AdjudicationComponent item : this.adjudication) 5574 if (!item.isEmpty()) 5575 return true; 5576 return false; 5577 } 5578 5579 public AdjudicationComponent addAdjudication() { // 3 5580 AdjudicationComponent t = new AdjudicationComponent(); 5581 if (this.adjudication == null) 5582 this.adjudication = new ArrayList<AdjudicationComponent>(); 5583 this.adjudication.add(t); 5584 return t; 5585 } 5586 5587 public ItemComponent addAdjudication(AdjudicationComponent t) { // 3 5588 if (t == null) 5589 return this; 5590 if (this.adjudication == null) 5591 this.adjudication = new ArrayList<AdjudicationComponent>(); 5592 this.adjudication.add(t); 5593 return this; 5594 } 5595 5596 /** 5597 * @return The first repetition of repeating field {@link #adjudication}, 5598 * creating it if it does not already exist 5599 */ 5600 public AdjudicationComponent getAdjudicationFirstRep() { 5601 if (getAdjudication().isEmpty()) { 5602 addAdjudication(); 5603 } 5604 return getAdjudication().get(0); 5605 } 5606 5607 /** 5608 * @return {@link #detail} (Second-tier of goods and services.) 5609 */ 5610 public List<DetailComponent> getDetail() { 5611 if (this.detail == null) 5612 this.detail = new ArrayList<DetailComponent>(); 5613 return this.detail; 5614 } 5615 5616 /** 5617 * @return Returns a reference to <code>this</code> for easy method chaining 5618 */ 5619 public ItemComponent setDetail(List<DetailComponent> theDetail) { 5620 this.detail = theDetail; 5621 return this; 5622 } 5623 5624 public boolean hasDetail() { 5625 if (this.detail == null) 5626 return false; 5627 for (DetailComponent item : this.detail) 5628 if (!item.isEmpty()) 5629 return true; 5630 return false; 5631 } 5632 5633 public DetailComponent addDetail() { // 3 5634 DetailComponent t = new DetailComponent(); 5635 if (this.detail == null) 5636 this.detail = new ArrayList<DetailComponent>(); 5637 this.detail.add(t); 5638 return t; 5639 } 5640 5641 public ItemComponent addDetail(DetailComponent t) { // 3 5642 if (t == null) 5643 return this; 5644 if (this.detail == null) 5645 this.detail = new ArrayList<DetailComponent>(); 5646 this.detail.add(t); 5647 return this; 5648 } 5649 5650 /** 5651 * @return The first repetition of repeating field {@link #detail}, creating it 5652 * if it does not already exist 5653 */ 5654 public DetailComponent getDetailFirstRep() { 5655 if (getDetail().isEmpty()) { 5656 addDetail(); 5657 } 5658 return getDetail().get(0); 5659 } 5660 5661 protected void listChildren(List<Property> children) { 5662 super.listChildren(children); 5663 children 5664 .add(new Property("sequence", "positiveInt", "A number to uniquely identify item entries.", 0, 1, sequence)); 5665 children.add(new Property("careTeamSequence", "positiveInt", 5666 "Care team members related to this service or product.", 0, java.lang.Integer.MAX_VALUE, careTeamSequence)); 5667 children.add(new Property("diagnosisSequence", "positiveInt", "Diagnoses applicable for this service or product.", 5668 0, java.lang.Integer.MAX_VALUE, diagnosisSequence)); 5669 children.add(new Property("procedureSequence", "positiveInt", 5670 "Procedures applicable for this service or product.", 0, java.lang.Integer.MAX_VALUE, procedureSequence)); 5671 children.add(new Property("informationSequence", "positiveInt", 5672 "Exceptions, special conditions and supporting information applicable for this service or product.", 0, 5673 java.lang.Integer.MAX_VALUE, informationSequence)); 5674 children.add(new Property("revenue", "CodeableConcept", 5675 "The type of revenue or cost center providing the product and/or service.", 0, 1, revenue)); 5676 children.add(new Property("category", "CodeableConcept", 5677 "Code to identify the general type of benefits under which products and services are provided.", 0, 1, 5678 category)); 5679 children.add(new Property("productOrService", "CodeableConcept", 5680 "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", 5681 0, 1, productOrService)); 5682 children.add(new Property("modifier", "CodeableConcept", 5683 "Item typification or modifiers codes to convey additional context for the product or service.", 0, 5684 java.lang.Integer.MAX_VALUE, modifier)); 5685 children.add(new Property("programCode", "CodeableConcept", 5686 "Identifies the program under which this may be recovered.", 0, java.lang.Integer.MAX_VALUE, programCode)); 5687 children.add(new Property("serviced[x]", "date|Period", 5688 "The date or dates when the service or product was supplied, performed or completed.", 0, 1, serviced)); 5689 children.add(new Property("location[x]", "CodeableConcept|Address|Reference(Location)", 5690 "Where the product or service was provided.", 0, 1, location)); 5691 children.add(new Property("quantity", "SimpleQuantity", "The number of repetitions of a service or product.", 0, 5692 1, quantity)); 5693 children.add(new Property("unitPrice", "Money", 5694 "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", 5695 0, 1, unitPrice)); 5696 children.add(new Property("factor", "decimal", 5697 "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 5698 0, 1, factor)); 5699 children.add(new Property("net", "Money", 5700 "The quantity times the unit price for an additional service or product or charge.", 0, 1, net)); 5701 children.add(new Property("udi", "Reference(Device)", "Unique Device Identifiers associated with this line item.", 5702 0, java.lang.Integer.MAX_VALUE, udi)); 5703 children.add(new Property("bodySite", "CodeableConcept", 5704 "Physical service site on the patient (limb, tooth, etc.).", 0, 1, bodySite)); 5705 children.add(new Property("subSite", "CodeableConcept", 5706 "A region or surface of the bodySite, e.g. limb region or tooth surface(s).", 0, java.lang.Integer.MAX_VALUE, 5707 subSite)); 5708 children.add(new Property("encounter", "Reference(Encounter)", 5709 "A billed item may include goods or services provided in multiple encounters.", 0, 5710 java.lang.Integer.MAX_VALUE, encounter)); 5711 children.add(new Property("noteNumber", "positiveInt", 5712 "The numbers associated with notes below which apply to the adjudication of this item.", 0, 5713 java.lang.Integer.MAX_VALUE, noteNumber)); 5714 children.add(new Property("adjudication", "", 5715 "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item.", 5716 0, java.lang.Integer.MAX_VALUE, adjudication)); 5717 children.add( 5718 new Property("detail", "", "Second-tier of goods and services.", 0, java.lang.Integer.MAX_VALUE, detail)); 5719 } 5720 5721 @Override 5722 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 5723 switch (_hash) { 5724 case 1349547969: 5725 /* sequence */ return new Property("sequence", "positiveInt", "A number to uniquely identify item entries.", 0, 5726 1, sequence); 5727 case 1070083823: 5728 /* careTeamSequence */ return new Property("careTeamSequence", "positiveInt", 5729 "Care team members related to this service or product.", 0, java.lang.Integer.MAX_VALUE, careTeamSequence); 5730 case -909769262: 5731 /* diagnosisSequence */ return new Property("diagnosisSequence", "positiveInt", 5732 "Diagnoses applicable for this service or product.", 0, java.lang.Integer.MAX_VALUE, diagnosisSequence); 5733 case -808920140: 5734 /* procedureSequence */ return new Property("procedureSequence", "positiveInt", 5735 "Procedures applicable for this service or product.", 0, java.lang.Integer.MAX_VALUE, procedureSequence); 5736 case -702585587: 5737 /* informationSequence */ return new Property("informationSequence", "positiveInt", 5738 "Exceptions, special conditions and supporting information applicable for this service or product.", 0, 5739 java.lang.Integer.MAX_VALUE, informationSequence); 5740 case 1099842588: 5741 /* revenue */ return new Property("revenue", "CodeableConcept", 5742 "The type of revenue or cost center providing the product and/or service.", 0, 1, revenue); 5743 case 50511102: 5744 /* category */ return new Property("category", "CodeableConcept", 5745 "Code to identify the general type of benefits under which products and services are provided.", 0, 1, 5746 category); 5747 case 1957227299: 5748 /* productOrService */ return new Property("productOrService", "CodeableConcept", 5749 "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", 5750 0, 1, productOrService); 5751 case -615513385: 5752 /* modifier */ return new Property("modifier", "CodeableConcept", 5753 "Item typification or modifiers codes to convey additional context for the product or service.", 0, 5754 java.lang.Integer.MAX_VALUE, modifier); 5755 case 1010065041: 5756 /* programCode */ return new Property("programCode", "CodeableConcept", 5757 "Identifies the program under which this may be recovered.", 0, java.lang.Integer.MAX_VALUE, programCode); 5758 case -1927922223: 5759 /* serviced[x] */ return new Property("serviced[x]", "date|Period", 5760 "The date or dates when the service or product was supplied, performed or completed.", 0, 1, serviced); 5761 case 1379209295: 5762 /* serviced */ return new Property("serviced[x]", "date|Period", 5763 "The date or dates when the service or product was supplied, performed or completed.", 0, 1, serviced); 5764 case 363246749: 5765 /* servicedDate */ return new Property("serviced[x]", "date|Period", 5766 "The date or dates when the service or product was supplied, performed or completed.", 0, 1, serviced); 5767 case 1534966512: 5768 /* servicedPeriod */ return new Property("serviced[x]", "date|Period", 5769 "The date or dates when the service or product was supplied, performed or completed.", 0, 1, serviced); 5770 case 552316075: 5771 /* location[x] */ return new Property("location[x]", "CodeableConcept|Address|Reference(Location)", 5772 "Where the product or service was provided.", 0, 1, location); 5773 case 1901043637: 5774 /* location */ return new Property("location[x]", "CodeableConcept|Address|Reference(Location)", 5775 "Where the product or service was provided.", 0, 1, location); 5776 case -1224800468: 5777 /* locationCodeableConcept */ return new Property("location[x]", "CodeableConcept|Address|Reference(Location)", 5778 "Where the product or service was provided.", 0, 1, location); 5779 case -1280020865: 5780 /* locationAddress */ return new Property("location[x]", "CodeableConcept|Address|Reference(Location)", 5781 "Where the product or service was provided.", 0, 1, location); 5782 case 755866390: 5783 /* locationReference */ return new Property("location[x]", "CodeableConcept|Address|Reference(Location)", 5784 "Where the product or service was provided.", 0, 1, location); 5785 case -1285004149: 5786 /* quantity */ return new Property("quantity", "SimpleQuantity", 5787 "The number of repetitions of a service or product.", 0, 1, quantity); 5788 case -486196699: 5789 /* unitPrice */ return new Property("unitPrice", "Money", 5790 "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", 5791 0, 1, unitPrice); 5792 case -1282148017: 5793 /* factor */ return new Property("factor", "decimal", 5794 "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 5795 0, 1, factor); 5796 case 108957: 5797 /* net */ return new Property("net", "Money", 5798 "The quantity times the unit price for an additional service or product or charge.", 0, 1, net); 5799 case 115642: 5800 /* udi */ return new Property("udi", "Reference(Device)", 5801 "Unique Device Identifiers associated with this line item.", 0, java.lang.Integer.MAX_VALUE, udi); 5802 case 1702620169: 5803 /* bodySite */ return new Property("bodySite", "CodeableConcept", 5804 "Physical service site on the patient (limb, tooth, etc.).", 0, 1, bodySite); 5805 case -1868566105: 5806 /* subSite */ return new Property("subSite", "CodeableConcept", 5807 "A region or surface of the bodySite, e.g. limb region or tooth surface(s).", 0, 5808 java.lang.Integer.MAX_VALUE, subSite); 5809 case 1524132147: 5810 /* encounter */ return new Property("encounter", "Reference(Encounter)", 5811 "A billed item may include goods or services provided in multiple encounters.", 0, 5812 java.lang.Integer.MAX_VALUE, encounter); 5813 case -1110033957: 5814 /* noteNumber */ return new Property("noteNumber", "positiveInt", 5815 "The numbers associated with notes below which apply to the adjudication of this item.", 0, 5816 java.lang.Integer.MAX_VALUE, noteNumber); 5817 case -231349275: 5818 /* adjudication */ return new Property("adjudication", "", 5819 "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item.", 5820 0, java.lang.Integer.MAX_VALUE, adjudication); 5821 case -1335224239: 5822 /* detail */ return new Property("detail", "", "Second-tier of goods and services.", 0, 5823 java.lang.Integer.MAX_VALUE, detail); 5824 default: 5825 return super.getNamedProperty(_hash, _name, _checkValid); 5826 } 5827 5828 } 5829 5830 @Override 5831 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 5832 switch (hash) { 5833 case 1349547969: 5834 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 5835 case 1070083823: 5836 /* careTeamSequence */ return this.careTeamSequence == null ? new Base[0] 5837 : this.careTeamSequence.toArray(new Base[this.careTeamSequence.size()]); // PositiveIntType 5838 case -909769262: 5839 /* diagnosisSequence */ return this.diagnosisSequence == null ? new Base[0] 5840 : this.diagnosisSequence.toArray(new Base[this.diagnosisSequence.size()]); // PositiveIntType 5841 case -808920140: 5842 /* procedureSequence */ return this.procedureSequence == null ? new Base[0] 5843 : this.procedureSequence.toArray(new Base[this.procedureSequence.size()]); // PositiveIntType 5844 case -702585587: 5845 /* informationSequence */ return this.informationSequence == null ? new Base[0] 5846 : this.informationSequence.toArray(new Base[this.informationSequence.size()]); // PositiveIntType 5847 case 1099842588: 5848 /* revenue */ return this.revenue == null ? new Base[0] : new Base[] { this.revenue }; // CodeableConcept 5849 case 50511102: 5850 /* category */ return this.category == null ? new Base[0] : new Base[] { this.category }; // CodeableConcept 5851 case 1957227299: 5852 /* productOrService */ return this.productOrService == null ? new Base[0] 5853 : new Base[] { this.productOrService }; // CodeableConcept 5854 case -615513385: 5855 /* modifier */ return this.modifier == null ? new Base[0] 5856 : this.modifier.toArray(new Base[this.modifier.size()]); // CodeableConcept 5857 case 1010065041: 5858 /* programCode */ return this.programCode == null ? new Base[0] 5859 : this.programCode.toArray(new Base[this.programCode.size()]); // CodeableConcept 5860 case 1379209295: 5861 /* serviced */ return this.serviced == null ? new Base[0] : new Base[] { this.serviced }; // Type 5862 case 1901043637: 5863 /* location */ return this.location == null ? new Base[0] : new Base[] { this.location }; // Type 5864 case -1285004149: 5865 /* quantity */ return this.quantity == null ? new Base[0] : new Base[] { this.quantity }; // Quantity 5866 case -486196699: 5867 /* unitPrice */ return this.unitPrice == null ? new Base[0] : new Base[] { this.unitPrice }; // Money 5868 case -1282148017: 5869 /* factor */ return this.factor == null ? new Base[0] : new Base[] { this.factor }; // DecimalType 5870 case 108957: 5871 /* net */ return this.net == null ? new Base[0] : new Base[] { this.net }; // Money 5872 case 115642: 5873 /* udi */ return this.udi == null ? new Base[0] : this.udi.toArray(new Base[this.udi.size()]); // Reference 5874 case 1702620169: 5875 /* bodySite */ return this.bodySite == null ? new Base[0] : new Base[] { this.bodySite }; // CodeableConcept 5876 case -1868566105: 5877 /* subSite */ return this.subSite == null ? new Base[0] : this.subSite.toArray(new Base[this.subSite.size()]); // CodeableConcept 5878 case 1524132147: 5879 /* encounter */ return this.encounter == null ? new Base[0] 5880 : this.encounter.toArray(new Base[this.encounter.size()]); // Reference 5881 case -1110033957: 5882 /* noteNumber */ return this.noteNumber == null ? new Base[0] 5883 : this.noteNumber.toArray(new Base[this.noteNumber.size()]); // PositiveIntType 5884 case -231349275: 5885 /* adjudication */ return this.adjudication == null ? new Base[0] 5886 : this.adjudication.toArray(new Base[this.adjudication.size()]); // AdjudicationComponent 5887 case -1335224239: 5888 /* detail */ return this.detail == null ? new Base[0] : this.detail.toArray(new Base[this.detail.size()]); // DetailComponent 5889 default: 5890 return super.getProperty(hash, name, checkValid); 5891 } 5892 5893 } 5894 5895 @Override 5896 public Base setProperty(int hash, String name, Base value) throws FHIRException { 5897 switch (hash) { 5898 case 1349547969: // sequence 5899 this.sequence = castToPositiveInt(value); // PositiveIntType 5900 return value; 5901 case 1070083823: // careTeamSequence 5902 this.getCareTeamSequence().add(castToPositiveInt(value)); // PositiveIntType 5903 return value; 5904 case -909769262: // diagnosisSequence 5905 this.getDiagnosisSequence().add(castToPositiveInt(value)); // PositiveIntType 5906 return value; 5907 case -808920140: // procedureSequence 5908 this.getProcedureSequence().add(castToPositiveInt(value)); // PositiveIntType 5909 return value; 5910 case -702585587: // informationSequence 5911 this.getInformationSequence().add(castToPositiveInt(value)); // PositiveIntType 5912 return value; 5913 case 1099842588: // revenue 5914 this.revenue = castToCodeableConcept(value); // CodeableConcept 5915 return value; 5916 case 50511102: // category 5917 this.category = castToCodeableConcept(value); // CodeableConcept 5918 return value; 5919 case 1957227299: // productOrService 5920 this.productOrService = castToCodeableConcept(value); // CodeableConcept 5921 return value; 5922 case -615513385: // modifier 5923 this.getModifier().add(castToCodeableConcept(value)); // CodeableConcept 5924 return value; 5925 case 1010065041: // programCode 5926 this.getProgramCode().add(castToCodeableConcept(value)); // CodeableConcept 5927 return value; 5928 case 1379209295: // serviced 5929 this.serviced = castToType(value); // Type 5930 return value; 5931 case 1901043637: // location 5932 this.location = castToType(value); // Type 5933 return value; 5934 case -1285004149: // quantity 5935 this.quantity = castToQuantity(value); // Quantity 5936 return value; 5937 case -486196699: // unitPrice 5938 this.unitPrice = castToMoney(value); // Money 5939 return value; 5940 case -1282148017: // factor 5941 this.factor = castToDecimal(value); // DecimalType 5942 return value; 5943 case 108957: // net 5944 this.net = castToMoney(value); // Money 5945 return value; 5946 case 115642: // udi 5947 this.getUdi().add(castToReference(value)); // Reference 5948 return value; 5949 case 1702620169: // bodySite 5950 this.bodySite = castToCodeableConcept(value); // CodeableConcept 5951 return value; 5952 case -1868566105: // subSite 5953 this.getSubSite().add(castToCodeableConcept(value)); // CodeableConcept 5954 return value; 5955 case 1524132147: // encounter 5956 this.getEncounter().add(castToReference(value)); // Reference 5957 return value; 5958 case -1110033957: // noteNumber 5959 this.getNoteNumber().add(castToPositiveInt(value)); // PositiveIntType 5960 return value; 5961 case -231349275: // adjudication 5962 this.getAdjudication().add((AdjudicationComponent) value); // AdjudicationComponent 5963 return value; 5964 case -1335224239: // detail 5965 this.getDetail().add((DetailComponent) value); // DetailComponent 5966 return value; 5967 default: 5968 return super.setProperty(hash, name, value); 5969 } 5970 5971 } 5972 5973 @Override 5974 public Base setProperty(String name, Base value) throws FHIRException { 5975 if (name.equals("sequence")) { 5976 this.sequence = castToPositiveInt(value); // PositiveIntType 5977 } else if (name.equals("careTeamSequence")) { 5978 this.getCareTeamSequence().add(castToPositiveInt(value)); 5979 } else if (name.equals("diagnosisSequence")) { 5980 this.getDiagnosisSequence().add(castToPositiveInt(value)); 5981 } else if (name.equals("procedureSequence")) { 5982 this.getProcedureSequence().add(castToPositiveInt(value)); 5983 } else if (name.equals("informationSequence")) { 5984 this.getInformationSequence().add(castToPositiveInt(value)); 5985 } else if (name.equals("revenue")) { 5986 this.revenue = castToCodeableConcept(value); // CodeableConcept 5987 } else if (name.equals("category")) { 5988 this.category = castToCodeableConcept(value); // CodeableConcept 5989 } else if (name.equals("productOrService")) { 5990 this.productOrService = castToCodeableConcept(value); // CodeableConcept 5991 } else if (name.equals("modifier")) { 5992 this.getModifier().add(castToCodeableConcept(value)); 5993 } else if (name.equals("programCode")) { 5994 this.getProgramCode().add(castToCodeableConcept(value)); 5995 } else if (name.equals("serviced[x]")) { 5996 this.serviced = castToType(value); // Type 5997 } else if (name.equals("location[x]")) { 5998 this.location = castToType(value); // Type 5999 } else if (name.equals("quantity")) { 6000 this.quantity = castToQuantity(value); // Quantity 6001 } else if (name.equals("unitPrice")) { 6002 this.unitPrice = castToMoney(value); // Money 6003 } else if (name.equals("factor")) { 6004 this.factor = castToDecimal(value); // DecimalType 6005 } else if (name.equals("net")) { 6006 this.net = castToMoney(value); // Money 6007 } else if (name.equals("udi")) { 6008 this.getUdi().add(castToReference(value)); 6009 } else if (name.equals("bodySite")) { 6010 this.bodySite = castToCodeableConcept(value); // CodeableConcept 6011 } else if (name.equals("subSite")) { 6012 this.getSubSite().add(castToCodeableConcept(value)); 6013 } else if (name.equals("encounter")) { 6014 this.getEncounter().add(castToReference(value)); 6015 } else if (name.equals("noteNumber")) { 6016 this.getNoteNumber().add(castToPositiveInt(value)); 6017 } else if (name.equals("adjudication")) { 6018 this.getAdjudication().add((AdjudicationComponent) value); 6019 } else if (name.equals("detail")) { 6020 this.getDetail().add((DetailComponent) value); 6021 } else 6022 return super.setProperty(name, value); 6023 return value; 6024 } 6025 6026 @Override 6027 public void removeChild(String name, Base value) throws FHIRException { 6028 if (name.equals("sequence")) { 6029 this.sequence = null; 6030 } else if (name.equals("careTeamSequence")) { 6031 this.getCareTeamSequence().remove(castToPositiveInt(value)); 6032 } else if (name.equals("diagnosisSequence")) { 6033 this.getDiagnosisSequence().remove(castToPositiveInt(value)); 6034 } else if (name.equals("procedureSequence")) { 6035 this.getProcedureSequence().remove(castToPositiveInt(value)); 6036 } else if (name.equals("informationSequence")) { 6037 this.getInformationSequence().remove(castToPositiveInt(value)); 6038 } else if (name.equals("revenue")) { 6039 this.revenue = null; 6040 } else if (name.equals("category")) { 6041 this.category = null; 6042 } else if (name.equals("productOrService")) { 6043 this.productOrService = null; 6044 } else if (name.equals("modifier")) { 6045 this.getModifier().remove(castToCodeableConcept(value)); 6046 } else if (name.equals("programCode")) { 6047 this.getProgramCode().remove(castToCodeableConcept(value)); 6048 } else if (name.equals("serviced[x]")) { 6049 this.serviced = null; 6050 } else if (name.equals("location[x]")) { 6051 this.location = null; 6052 } else if (name.equals("quantity")) { 6053 this.quantity = null; 6054 } else if (name.equals("unitPrice")) { 6055 this.unitPrice = null; 6056 } else if (name.equals("factor")) { 6057 this.factor = null; 6058 } else if (name.equals("net")) { 6059 this.net = null; 6060 } else if (name.equals("udi")) { 6061 this.getUdi().remove(castToReference(value)); 6062 } else if (name.equals("bodySite")) { 6063 this.bodySite = null; 6064 } else if (name.equals("subSite")) { 6065 this.getSubSite().remove(castToCodeableConcept(value)); 6066 } else if (name.equals("encounter")) { 6067 this.getEncounter().remove(castToReference(value)); 6068 } else if (name.equals("noteNumber")) { 6069 this.getNoteNumber().remove(castToPositiveInt(value)); 6070 } else if (name.equals("adjudication")) { 6071 this.getAdjudication().remove((AdjudicationComponent) value); 6072 } else if (name.equals("detail")) { 6073 this.getDetail().remove((DetailComponent) value); 6074 } else 6075 super.removeChild(name, value); 6076 6077 } 6078 6079 @Override 6080 public Base makeProperty(int hash, String name) throws FHIRException { 6081 switch (hash) { 6082 case 1349547969: 6083 return getSequenceElement(); 6084 case 1070083823: 6085 return addCareTeamSequenceElement(); 6086 case -909769262: 6087 return addDiagnosisSequenceElement(); 6088 case -808920140: 6089 return addProcedureSequenceElement(); 6090 case -702585587: 6091 return addInformationSequenceElement(); 6092 case 1099842588: 6093 return getRevenue(); 6094 case 50511102: 6095 return getCategory(); 6096 case 1957227299: 6097 return getProductOrService(); 6098 case -615513385: 6099 return addModifier(); 6100 case 1010065041: 6101 return addProgramCode(); 6102 case -1927922223: 6103 return getServiced(); 6104 case 1379209295: 6105 return getServiced(); 6106 case 552316075: 6107 return getLocation(); 6108 case 1901043637: 6109 return getLocation(); 6110 case -1285004149: 6111 return getQuantity(); 6112 case -486196699: 6113 return getUnitPrice(); 6114 case -1282148017: 6115 return getFactorElement(); 6116 case 108957: 6117 return getNet(); 6118 case 115642: 6119 return addUdi(); 6120 case 1702620169: 6121 return getBodySite(); 6122 case -1868566105: 6123 return addSubSite(); 6124 case 1524132147: 6125 return addEncounter(); 6126 case -1110033957: 6127 return addNoteNumberElement(); 6128 case -231349275: 6129 return addAdjudication(); 6130 case -1335224239: 6131 return addDetail(); 6132 default: 6133 return super.makeProperty(hash, name); 6134 } 6135 6136 } 6137 6138 @Override 6139 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 6140 switch (hash) { 6141 case 1349547969: 6142 /* sequence */ return new String[] { "positiveInt" }; 6143 case 1070083823: 6144 /* careTeamSequence */ return new String[] { "positiveInt" }; 6145 case -909769262: 6146 /* diagnosisSequence */ return new String[] { "positiveInt" }; 6147 case -808920140: 6148 /* procedureSequence */ return new String[] { "positiveInt" }; 6149 case -702585587: 6150 /* informationSequence */ return new String[] { "positiveInt" }; 6151 case 1099842588: 6152 /* revenue */ return new String[] { "CodeableConcept" }; 6153 case 50511102: 6154 /* category */ return new String[] { "CodeableConcept" }; 6155 case 1957227299: 6156 /* productOrService */ return new String[] { "CodeableConcept" }; 6157 case -615513385: 6158 /* modifier */ return new String[] { "CodeableConcept" }; 6159 case 1010065041: 6160 /* programCode */ return new String[] { "CodeableConcept" }; 6161 case 1379209295: 6162 /* serviced */ return new String[] { "date", "Period" }; 6163 case 1901043637: 6164 /* location */ return new String[] { "CodeableConcept", "Address", "Reference" }; 6165 case -1285004149: 6166 /* quantity */ return new String[] { "SimpleQuantity" }; 6167 case -486196699: 6168 /* unitPrice */ return new String[] { "Money" }; 6169 case -1282148017: 6170 /* factor */ return new String[] { "decimal" }; 6171 case 108957: 6172 /* net */ return new String[] { "Money" }; 6173 case 115642: 6174 /* udi */ return new String[] { "Reference" }; 6175 case 1702620169: 6176 /* bodySite */ return new String[] { "CodeableConcept" }; 6177 case -1868566105: 6178 /* subSite */ return new String[] { "CodeableConcept" }; 6179 case 1524132147: 6180 /* encounter */ return new String[] { "Reference" }; 6181 case -1110033957: 6182 /* noteNumber */ return new String[] { "positiveInt" }; 6183 case -231349275: 6184 /* adjudication */ return new String[] {}; 6185 case -1335224239: 6186 /* detail */ return new String[] {}; 6187 default: 6188 return super.getTypesForProperty(hash, name); 6189 } 6190 6191 } 6192 6193 @Override 6194 public Base addChild(String name) throws FHIRException { 6195 if (name.equals("sequence")) { 6196 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 6197 } else if (name.equals("careTeamSequence")) { 6198 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.careTeamSequence"); 6199 } else if (name.equals("diagnosisSequence")) { 6200 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.diagnosisSequence"); 6201 } else if (name.equals("procedureSequence")) { 6202 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.procedureSequence"); 6203 } else if (name.equals("informationSequence")) { 6204 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.informationSequence"); 6205 } else if (name.equals("revenue")) { 6206 this.revenue = new CodeableConcept(); 6207 return this.revenue; 6208 } else if (name.equals("category")) { 6209 this.category = new CodeableConcept(); 6210 return this.category; 6211 } else if (name.equals("productOrService")) { 6212 this.productOrService = new CodeableConcept(); 6213 return this.productOrService; 6214 } else if (name.equals("modifier")) { 6215 return addModifier(); 6216 } else if (name.equals("programCode")) { 6217 return addProgramCode(); 6218 } else if (name.equals("servicedDate")) { 6219 this.serviced = new DateType(); 6220 return this.serviced; 6221 } else if (name.equals("servicedPeriod")) { 6222 this.serviced = new Period(); 6223 return this.serviced; 6224 } else if (name.equals("locationCodeableConcept")) { 6225 this.location = new CodeableConcept(); 6226 return this.location; 6227 } else if (name.equals("locationAddress")) { 6228 this.location = new Address(); 6229 return this.location; 6230 } else if (name.equals("locationReference")) { 6231 this.location = new Reference(); 6232 return this.location; 6233 } else if (name.equals("quantity")) { 6234 this.quantity = new Quantity(); 6235 return this.quantity; 6236 } else if (name.equals("unitPrice")) { 6237 this.unitPrice = new Money(); 6238 return this.unitPrice; 6239 } else if (name.equals("factor")) { 6240 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.factor"); 6241 } else if (name.equals("net")) { 6242 this.net = new Money(); 6243 return this.net; 6244 } else if (name.equals("udi")) { 6245 return addUdi(); 6246 } else if (name.equals("bodySite")) { 6247 this.bodySite = new CodeableConcept(); 6248 return this.bodySite; 6249 } else if (name.equals("subSite")) { 6250 return addSubSite(); 6251 } else if (name.equals("encounter")) { 6252 return addEncounter(); 6253 } else if (name.equals("noteNumber")) { 6254 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.noteNumber"); 6255 } else if (name.equals("adjudication")) { 6256 return addAdjudication(); 6257 } else if (name.equals("detail")) { 6258 return addDetail(); 6259 } else 6260 return super.addChild(name); 6261 } 6262 6263 public ItemComponent copy() { 6264 ItemComponent dst = new ItemComponent(); 6265 copyValues(dst); 6266 return dst; 6267 } 6268 6269 public void copyValues(ItemComponent dst) { 6270 super.copyValues(dst); 6271 dst.sequence = sequence == null ? null : sequence.copy(); 6272 if (careTeamSequence != null) { 6273 dst.careTeamSequence = new ArrayList<PositiveIntType>(); 6274 for (PositiveIntType i : careTeamSequence) 6275 dst.careTeamSequence.add(i.copy()); 6276 } 6277 ; 6278 if (diagnosisSequence != null) { 6279 dst.diagnosisSequence = new ArrayList<PositiveIntType>(); 6280 for (PositiveIntType i : diagnosisSequence) 6281 dst.diagnosisSequence.add(i.copy()); 6282 } 6283 ; 6284 if (procedureSequence != null) { 6285 dst.procedureSequence = new ArrayList<PositiveIntType>(); 6286 for (PositiveIntType i : procedureSequence) 6287 dst.procedureSequence.add(i.copy()); 6288 } 6289 ; 6290 if (informationSequence != null) { 6291 dst.informationSequence = new ArrayList<PositiveIntType>(); 6292 for (PositiveIntType i : informationSequence) 6293 dst.informationSequence.add(i.copy()); 6294 } 6295 ; 6296 dst.revenue = revenue == null ? null : revenue.copy(); 6297 dst.category = category == null ? null : category.copy(); 6298 dst.productOrService = productOrService == null ? null : productOrService.copy(); 6299 if (modifier != null) { 6300 dst.modifier = new ArrayList<CodeableConcept>(); 6301 for (CodeableConcept i : modifier) 6302 dst.modifier.add(i.copy()); 6303 } 6304 ; 6305 if (programCode != null) { 6306 dst.programCode = new ArrayList<CodeableConcept>(); 6307 for (CodeableConcept i : programCode) 6308 dst.programCode.add(i.copy()); 6309 } 6310 ; 6311 dst.serviced = serviced == null ? null : serviced.copy(); 6312 dst.location = location == null ? null : location.copy(); 6313 dst.quantity = quantity == null ? null : quantity.copy(); 6314 dst.unitPrice = unitPrice == null ? null : unitPrice.copy(); 6315 dst.factor = factor == null ? null : factor.copy(); 6316 dst.net = net == null ? null : net.copy(); 6317 if (udi != null) { 6318 dst.udi = new ArrayList<Reference>(); 6319 for (Reference i : udi) 6320 dst.udi.add(i.copy()); 6321 } 6322 ; 6323 dst.bodySite = bodySite == null ? null : bodySite.copy(); 6324 if (subSite != null) { 6325 dst.subSite = new ArrayList<CodeableConcept>(); 6326 for (CodeableConcept i : subSite) 6327 dst.subSite.add(i.copy()); 6328 } 6329 ; 6330 if (encounter != null) { 6331 dst.encounter = new ArrayList<Reference>(); 6332 for (Reference i : encounter) 6333 dst.encounter.add(i.copy()); 6334 } 6335 ; 6336 if (noteNumber != null) { 6337 dst.noteNumber = new ArrayList<PositiveIntType>(); 6338 for (PositiveIntType i : noteNumber) 6339 dst.noteNumber.add(i.copy()); 6340 } 6341 ; 6342 if (adjudication != null) { 6343 dst.adjudication = new ArrayList<AdjudicationComponent>(); 6344 for (AdjudicationComponent i : adjudication) 6345 dst.adjudication.add(i.copy()); 6346 } 6347 ; 6348 if (detail != null) { 6349 dst.detail = new ArrayList<DetailComponent>(); 6350 for (DetailComponent i : detail) 6351 dst.detail.add(i.copy()); 6352 } 6353 ; 6354 } 6355 6356 @Override 6357 public boolean equalsDeep(Base other_) { 6358 if (!super.equalsDeep(other_)) 6359 return false; 6360 if (!(other_ instanceof ItemComponent)) 6361 return false; 6362 ItemComponent o = (ItemComponent) other_; 6363 return compareDeep(sequence, o.sequence, true) && compareDeep(careTeamSequence, o.careTeamSequence, true) 6364 && compareDeep(diagnosisSequence, o.diagnosisSequence, true) 6365 && compareDeep(procedureSequence, o.procedureSequence, true) 6366 && compareDeep(informationSequence, o.informationSequence, true) && compareDeep(revenue, o.revenue, true) 6367 && compareDeep(category, o.category, true) && compareDeep(productOrService, o.productOrService, true) 6368 && compareDeep(modifier, o.modifier, true) && compareDeep(programCode, o.programCode, true) 6369 && compareDeep(serviced, o.serviced, true) && compareDeep(location, o.location, true) 6370 && compareDeep(quantity, o.quantity, true) && compareDeep(unitPrice, o.unitPrice, true) 6371 && compareDeep(factor, o.factor, true) && compareDeep(net, o.net, true) && compareDeep(udi, o.udi, true) 6372 && compareDeep(bodySite, o.bodySite, true) && compareDeep(subSite, o.subSite, true) 6373 && compareDeep(encounter, o.encounter, true) && compareDeep(noteNumber, o.noteNumber, true) 6374 && compareDeep(adjudication, o.adjudication, true) && compareDeep(detail, o.detail, true); 6375 } 6376 6377 @Override 6378 public boolean equalsShallow(Base other_) { 6379 if (!super.equalsShallow(other_)) 6380 return false; 6381 if (!(other_ instanceof ItemComponent)) 6382 return false; 6383 ItemComponent o = (ItemComponent) other_; 6384 return compareValues(sequence, o.sequence, true) && compareValues(careTeamSequence, o.careTeamSequence, true) 6385 && compareValues(diagnosisSequence, o.diagnosisSequence, true) 6386 && compareValues(procedureSequence, o.procedureSequence, true) 6387 && compareValues(informationSequence, o.informationSequence, true) && compareValues(factor, o.factor, true) 6388 && compareValues(noteNumber, o.noteNumber, true); 6389 } 6390 6391 public boolean isEmpty() { 6392 return super.isEmpty() 6393 && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, careTeamSequence, diagnosisSequence, procedureSequence, 6394 informationSequence, revenue, category, productOrService, modifier, programCode, serviced, location, 6395 quantity, unitPrice, factor, net, udi, bodySite, subSite, encounter, noteNumber, adjudication, detail); 6396 } 6397 6398 public String fhirType() { 6399 return "ExplanationOfBenefit.item"; 6400 6401 } 6402 6403 } 6404 6405 @Block() 6406 public static class AdjudicationComponent extends BackboneElement implements IBaseBackboneElement { 6407 /** 6408 * A code to indicate the information type of this adjudication record. 6409 * Information types may include: the value submitted, maximum values or 6410 * percentages allowed or payable under the plan, amounts that the patient is 6411 * responsible for in-aggregate or pertaining to this item, amounts paid by 6412 * other coverages, and the benefit payable for this item. 6413 */ 6414 @Child(name = "category", type = { 6415 CodeableConcept.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 6416 @Description(shortDefinition = "Type of adjudication information", formalDefinition = "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in-aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item.") 6417 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/adjudication") 6418 protected CodeableConcept category; 6419 6420 /** 6421 * A code supporting the understanding of the adjudication result and explaining 6422 * variance from expected amount. 6423 */ 6424 @Child(name = "reason", type = { 6425 CodeableConcept.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 6426 @Description(shortDefinition = "Explanation of adjudication outcome", formalDefinition = "A code supporting the understanding of the adjudication result and explaining variance from expected amount.") 6427 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/adjudication-reason") 6428 protected CodeableConcept reason; 6429 6430 /** 6431 * Monetary amount associated with the category. 6432 */ 6433 @Child(name = "amount", type = { Money.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 6434 @Description(shortDefinition = "Monetary amount", formalDefinition = "Monetary amount associated with the category.") 6435 protected Money amount; 6436 6437 /** 6438 * A non-monetary value associated with the category. Mutually exclusive to the 6439 * amount element above. 6440 */ 6441 @Child(name = "value", type = { DecimalType.class }, order = 4, min = 0, max = 1, modifier = false, summary = false) 6442 @Description(shortDefinition = "Non-monitary value", formalDefinition = "A non-monetary value associated with the category. Mutually exclusive to the amount element above.") 6443 protected DecimalType value; 6444 6445 private static final long serialVersionUID = 1559898786L; 6446 6447 /** 6448 * Constructor 6449 */ 6450 public AdjudicationComponent() { 6451 super(); 6452 } 6453 6454 /** 6455 * Constructor 6456 */ 6457 public AdjudicationComponent(CodeableConcept category) { 6458 super(); 6459 this.category = category; 6460 } 6461 6462 /** 6463 * @return {@link #category} (A code to indicate the information type of this 6464 * adjudication record. Information types may include: the value 6465 * submitted, maximum values or percentages allowed or payable under the 6466 * plan, amounts that the patient is responsible for in-aggregate or 6467 * pertaining to this item, amounts paid by other coverages, and the 6468 * benefit payable for this item.) 6469 */ 6470 public CodeableConcept getCategory() { 6471 if (this.category == null) 6472 if (Configuration.errorOnAutoCreate()) 6473 throw new Error("Attempt to auto-create AdjudicationComponent.category"); 6474 else if (Configuration.doAutoCreate()) 6475 this.category = new CodeableConcept(); // cc 6476 return this.category; 6477 } 6478 6479 public boolean hasCategory() { 6480 return this.category != null && !this.category.isEmpty(); 6481 } 6482 6483 /** 6484 * @param value {@link #category} (A code to indicate the information type of 6485 * this adjudication record. Information types may include: the 6486 * value submitted, maximum values or percentages allowed or 6487 * payable under the plan, amounts that the patient is responsible 6488 * for in-aggregate or pertaining to this item, amounts paid by 6489 * other coverages, and the benefit payable for this item.) 6490 */ 6491 public AdjudicationComponent setCategory(CodeableConcept value) { 6492 this.category = value; 6493 return this; 6494 } 6495 6496 /** 6497 * @return {@link #reason} (A code supporting the understanding of the 6498 * adjudication result and explaining variance from expected amount.) 6499 */ 6500 public CodeableConcept getReason() { 6501 if (this.reason == null) 6502 if (Configuration.errorOnAutoCreate()) 6503 throw new Error("Attempt to auto-create AdjudicationComponent.reason"); 6504 else if (Configuration.doAutoCreate()) 6505 this.reason = new CodeableConcept(); // cc 6506 return this.reason; 6507 } 6508 6509 public boolean hasReason() { 6510 return this.reason != null && !this.reason.isEmpty(); 6511 } 6512 6513 /** 6514 * @param value {@link #reason} (A code supporting the understanding of the 6515 * adjudication result and explaining variance from expected 6516 * amount.) 6517 */ 6518 public AdjudicationComponent setReason(CodeableConcept value) { 6519 this.reason = value; 6520 return this; 6521 } 6522 6523 /** 6524 * @return {@link #amount} (Monetary amount associated with the category.) 6525 */ 6526 public Money getAmount() { 6527 if (this.amount == null) 6528 if (Configuration.errorOnAutoCreate()) 6529 throw new Error("Attempt to auto-create AdjudicationComponent.amount"); 6530 else if (Configuration.doAutoCreate()) 6531 this.amount = new Money(); // cc 6532 return this.amount; 6533 } 6534 6535 public boolean hasAmount() { 6536 return this.amount != null && !this.amount.isEmpty(); 6537 } 6538 6539 /** 6540 * @param value {@link #amount} (Monetary amount associated with the category.) 6541 */ 6542 public AdjudicationComponent setAmount(Money value) { 6543 this.amount = value; 6544 return this; 6545 } 6546 6547 /** 6548 * @return {@link #value} (A non-monetary value associated with the category. 6549 * Mutually exclusive to the amount element above.). This is the 6550 * underlying object with id, value and extensions. The accessor 6551 * "getValue" gives direct access to the value 6552 */ 6553 public DecimalType getValueElement() { 6554 if (this.value == null) 6555 if (Configuration.errorOnAutoCreate()) 6556 throw new Error("Attempt to auto-create AdjudicationComponent.value"); 6557 else if (Configuration.doAutoCreate()) 6558 this.value = new DecimalType(); // bb 6559 return this.value; 6560 } 6561 6562 public boolean hasValueElement() { 6563 return this.value != null && !this.value.isEmpty(); 6564 } 6565 6566 public boolean hasValue() { 6567 return this.value != null && !this.value.isEmpty(); 6568 } 6569 6570 /** 6571 * @param value {@link #value} (A non-monetary value associated with the 6572 * category. Mutually exclusive to the amount element above.). This 6573 * is the underlying object with id, value and extensions. The 6574 * accessor "getValue" gives direct access to the value 6575 */ 6576 public AdjudicationComponent setValueElement(DecimalType value) { 6577 this.value = value; 6578 return this; 6579 } 6580 6581 /** 6582 * @return A non-monetary value associated with the category. Mutually exclusive 6583 * to the amount element above. 6584 */ 6585 public BigDecimal getValue() { 6586 return this.value == null ? null : this.value.getValue(); 6587 } 6588 6589 /** 6590 * @param value A non-monetary value associated with the category. Mutually 6591 * exclusive to the amount element above. 6592 */ 6593 public AdjudicationComponent setValue(BigDecimal value) { 6594 if (value == null) 6595 this.value = null; 6596 else { 6597 if (this.value == null) 6598 this.value = new DecimalType(); 6599 this.value.setValue(value); 6600 } 6601 return this; 6602 } 6603 6604 /** 6605 * @param value A non-monetary value associated with the category. Mutually 6606 * exclusive to the amount element above. 6607 */ 6608 public AdjudicationComponent setValue(long value) { 6609 this.value = new DecimalType(); 6610 this.value.setValue(value); 6611 return this; 6612 } 6613 6614 /** 6615 * @param value A non-monetary value associated with the category. Mutually 6616 * exclusive to the amount element above. 6617 */ 6618 public AdjudicationComponent setValue(double value) { 6619 this.value = new DecimalType(); 6620 this.value.setValue(value); 6621 return this; 6622 } 6623 6624 protected void listChildren(List<Property> children) { 6625 super.listChildren(children); 6626 children.add(new Property("category", "CodeableConcept", 6627 "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in-aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item.", 6628 0, 1, category)); 6629 children.add(new Property("reason", "CodeableConcept", 6630 "A code supporting the understanding of the adjudication result and explaining variance from expected amount.", 6631 0, 1, reason)); 6632 children.add(new Property("amount", "Money", "Monetary amount associated with the category.", 0, 1, amount)); 6633 children.add(new Property("value", "decimal", 6634 "A non-monetary value associated with the category. Mutually exclusive to the amount element above.", 0, 1, 6635 value)); 6636 } 6637 6638 @Override 6639 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 6640 switch (_hash) { 6641 case 50511102: 6642 /* category */ return new Property("category", "CodeableConcept", 6643 "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in-aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item.", 6644 0, 1, category); 6645 case -934964668: 6646 /* reason */ return new Property("reason", "CodeableConcept", 6647 "A code supporting the understanding of the adjudication result and explaining variance from expected amount.", 6648 0, 1, reason); 6649 case -1413853096: 6650 /* amount */ return new Property("amount", "Money", "Monetary amount associated with the category.", 0, 1, 6651 amount); 6652 case 111972721: 6653 /* value */ return new Property("value", "decimal", 6654 "A non-monetary value associated with the category. Mutually exclusive to the amount element above.", 0, 1, 6655 value); 6656 default: 6657 return super.getNamedProperty(_hash, _name, _checkValid); 6658 } 6659 6660 } 6661 6662 @Override 6663 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 6664 switch (hash) { 6665 case 50511102: 6666 /* category */ return this.category == null ? new Base[0] : new Base[] { this.category }; // CodeableConcept 6667 case -934964668: 6668 /* reason */ return this.reason == null ? new Base[0] : new Base[] { this.reason }; // CodeableConcept 6669 case -1413853096: 6670 /* amount */ return this.amount == null ? new Base[0] : new Base[] { this.amount }; // Money 6671 case 111972721: 6672 /* value */ return this.value == null ? new Base[0] : new Base[] { this.value }; // DecimalType 6673 default: 6674 return super.getProperty(hash, name, checkValid); 6675 } 6676 6677 } 6678 6679 @Override 6680 public Base setProperty(int hash, String name, Base value) throws FHIRException { 6681 switch (hash) { 6682 case 50511102: // category 6683 this.category = castToCodeableConcept(value); // CodeableConcept 6684 return value; 6685 case -934964668: // reason 6686 this.reason = castToCodeableConcept(value); // CodeableConcept 6687 return value; 6688 case -1413853096: // amount 6689 this.amount = castToMoney(value); // Money 6690 return value; 6691 case 111972721: // value 6692 this.value = castToDecimal(value); // DecimalType 6693 return value; 6694 default: 6695 return super.setProperty(hash, name, value); 6696 } 6697 6698 } 6699 6700 @Override 6701 public Base setProperty(String name, Base value) throws FHIRException { 6702 if (name.equals("category")) { 6703 this.category = castToCodeableConcept(value); // CodeableConcept 6704 } else if (name.equals("reason")) { 6705 this.reason = castToCodeableConcept(value); // CodeableConcept 6706 } else if (name.equals("amount")) { 6707 this.amount = castToMoney(value); // Money 6708 } else if (name.equals("value")) { 6709 this.value = castToDecimal(value); // DecimalType 6710 } else 6711 return super.setProperty(name, value); 6712 return value; 6713 } 6714 6715 @Override 6716 public void removeChild(String name, Base value) throws FHIRException { 6717 if (name.equals("category")) { 6718 this.category = null; 6719 } else if (name.equals("reason")) { 6720 this.reason = null; 6721 } else if (name.equals("amount")) { 6722 this.amount = null; 6723 } else if (name.equals("value")) { 6724 this.value = null; 6725 } else 6726 super.removeChild(name, value); 6727 6728 } 6729 6730 @Override 6731 public Base makeProperty(int hash, String name) throws FHIRException { 6732 switch (hash) { 6733 case 50511102: 6734 return getCategory(); 6735 case -934964668: 6736 return getReason(); 6737 case -1413853096: 6738 return getAmount(); 6739 case 111972721: 6740 return getValueElement(); 6741 default: 6742 return super.makeProperty(hash, name); 6743 } 6744 6745 } 6746 6747 @Override 6748 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 6749 switch (hash) { 6750 case 50511102: 6751 /* category */ return new String[] { "CodeableConcept" }; 6752 case -934964668: 6753 /* reason */ return new String[] { "CodeableConcept" }; 6754 case -1413853096: 6755 /* amount */ return new String[] { "Money" }; 6756 case 111972721: 6757 /* value */ return new String[] { "decimal" }; 6758 default: 6759 return super.getTypesForProperty(hash, name); 6760 } 6761 6762 } 6763 6764 @Override 6765 public Base addChild(String name) throws FHIRException { 6766 if (name.equals("category")) { 6767 this.category = new CodeableConcept(); 6768 return this.category; 6769 } else if (name.equals("reason")) { 6770 this.reason = new CodeableConcept(); 6771 return this.reason; 6772 } else if (name.equals("amount")) { 6773 this.amount = new Money(); 6774 return this.amount; 6775 } else if (name.equals("value")) { 6776 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.value"); 6777 } else 6778 return super.addChild(name); 6779 } 6780 6781 public AdjudicationComponent copy() { 6782 AdjudicationComponent dst = new AdjudicationComponent(); 6783 copyValues(dst); 6784 return dst; 6785 } 6786 6787 public void copyValues(AdjudicationComponent dst) { 6788 super.copyValues(dst); 6789 dst.category = category == null ? null : category.copy(); 6790 dst.reason = reason == null ? null : reason.copy(); 6791 dst.amount = amount == null ? null : amount.copy(); 6792 dst.value = value == null ? null : value.copy(); 6793 } 6794 6795 @Override 6796 public boolean equalsDeep(Base other_) { 6797 if (!super.equalsDeep(other_)) 6798 return false; 6799 if (!(other_ instanceof AdjudicationComponent)) 6800 return false; 6801 AdjudicationComponent o = (AdjudicationComponent) other_; 6802 return compareDeep(category, o.category, true) && compareDeep(reason, o.reason, true) 6803 && compareDeep(amount, o.amount, true) && compareDeep(value, o.value, true); 6804 } 6805 6806 @Override 6807 public boolean equalsShallow(Base other_) { 6808 if (!super.equalsShallow(other_)) 6809 return false; 6810 if (!(other_ instanceof AdjudicationComponent)) 6811 return false; 6812 AdjudicationComponent o = (AdjudicationComponent) other_; 6813 return compareValues(value, o.value, true); 6814 } 6815 6816 public boolean isEmpty() { 6817 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(category, reason, amount, value); 6818 } 6819 6820 public String fhirType() { 6821 return "ExplanationOfBenefit.item.adjudication"; 6822 6823 } 6824 6825 } 6826 6827 @Block() 6828 public static class DetailComponent extends BackboneElement implements IBaseBackboneElement { 6829 /** 6830 * A claim detail line. Either a simple (a product or service) or a 'group' of 6831 * sub-details which are simple items. 6832 */ 6833 @Child(name = "sequence", type = { 6834 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 6835 @Description(shortDefinition = "Product or service provided", formalDefinition = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items.") 6836 protected PositiveIntType sequence; 6837 6838 /** 6839 * The type of revenue or cost center providing the product and/or service. 6840 */ 6841 @Child(name = "revenue", type = { 6842 CodeableConcept.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 6843 @Description(shortDefinition = "Revenue or cost center code", formalDefinition = "The type of revenue or cost center providing the product and/or service.") 6844 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-revenue-center") 6845 protected CodeableConcept revenue; 6846 6847 /** 6848 * Code to identify the general type of benefits under which products and 6849 * services are provided. 6850 */ 6851 @Child(name = "category", type = { 6852 CodeableConcept.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 6853 @Description(shortDefinition = "Benefit classification", formalDefinition = "Code to identify the general type of benefits under which products and services are provided.") 6854 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-benefitcategory") 6855 protected CodeableConcept category; 6856 6857 /** 6858 * When the value is a group code then this item collects a set of related claim 6859 * details, otherwise this contains the product, service, drug or other billing 6860 * code for the item. 6861 */ 6862 @Child(name = "productOrService", type = { 6863 CodeableConcept.class }, order = 4, min = 1, max = 1, modifier = false, summary = false) 6864 @Description(shortDefinition = "Billing, service, product, or drug code", formalDefinition = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.") 6865 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/service-uscls") 6866 protected CodeableConcept productOrService; 6867 6868 /** 6869 * Item typification or modifiers codes to convey additional context for the 6870 * product or service. 6871 */ 6872 @Child(name = "modifier", type = { 6873 CodeableConcept.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 6874 @Description(shortDefinition = "Service/Product billing modifiers", formalDefinition = "Item typification or modifiers codes to convey additional context for the product or service.") 6875 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-modifiers") 6876 protected List<CodeableConcept> modifier; 6877 6878 /** 6879 * Identifies the program under which this may be recovered. 6880 */ 6881 @Child(name = "programCode", type = { 6882 CodeableConcept.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 6883 @Description(shortDefinition = "Program the product or service is provided under", formalDefinition = "Identifies the program under which this may be recovered.") 6884 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-program-code") 6885 protected List<CodeableConcept> programCode; 6886 6887 /** 6888 * The number of repetitions of a service or product. 6889 */ 6890 @Child(name = "quantity", type = { Quantity.class }, order = 7, min = 0, max = 1, modifier = false, summary = false) 6891 @Description(shortDefinition = "Count of products or services", formalDefinition = "The number of repetitions of a service or product.") 6892 protected Quantity quantity; 6893 6894 /** 6895 * If the item is not a group then this is the fee for the product or service, 6896 * otherwise this is the total of the fees for the details of the group. 6897 */ 6898 @Child(name = "unitPrice", type = { Money.class }, order = 8, min = 0, max = 1, modifier = false, summary = false) 6899 @Description(shortDefinition = "Fee, charge or cost per item", formalDefinition = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.") 6900 protected Money unitPrice; 6901 6902 /** 6903 * A real number that represents a multiplier used in determining the overall 6904 * value of services delivered and/or goods received. The concept of a Factor 6905 * allows for a discount or surcharge multiplier to be applied to a monetary 6906 * amount. 6907 */ 6908 @Child(name = "factor", type = { 6909 DecimalType.class }, order = 9, min = 0, max = 1, modifier = false, summary = false) 6910 @Description(shortDefinition = "Price scaling factor", formalDefinition = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.") 6911 protected DecimalType factor; 6912 6913 /** 6914 * The quantity times the unit price for an additional service or product or 6915 * charge. 6916 */ 6917 @Child(name = "net", type = { Money.class }, order = 10, min = 0, max = 1, modifier = false, summary = false) 6918 @Description(shortDefinition = "Total item cost", formalDefinition = "The quantity times the unit price for an additional service or product or charge.") 6919 protected Money net; 6920 6921 /** 6922 * Unique Device Identifiers associated with this line item. 6923 */ 6924 @Child(name = "udi", type = { 6925 Device.class }, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 6926 @Description(shortDefinition = "Unique device identifier", formalDefinition = "Unique Device Identifiers associated with this line item.") 6927 protected List<Reference> udi; 6928 /** 6929 * The actual objects that are the target of the reference (Unique Device 6930 * Identifiers associated with this line item.) 6931 */ 6932 protected List<Device> udiTarget; 6933 6934 /** 6935 * The numbers associated with notes below which apply to the adjudication of 6936 * this item. 6937 */ 6938 @Child(name = "noteNumber", type = { 6939 PositiveIntType.class }, order = 12, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 6940 @Description(shortDefinition = "Applicable note numbers", formalDefinition = "The numbers associated with notes below which apply to the adjudication of this item.") 6941 protected List<PositiveIntType> noteNumber; 6942 6943 /** 6944 * The adjudication results. 6945 */ 6946 @Child(name = "adjudication", type = { 6947 AdjudicationComponent.class }, order = 13, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 6948 @Description(shortDefinition = "Detail level adjudication details", formalDefinition = "The adjudication results.") 6949 protected List<AdjudicationComponent> adjudication; 6950 6951 /** 6952 * Third-tier of goods and services. 6953 */ 6954 @Child(name = "subDetail", type = {}, order = 14, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 6955 @Description(shortDefinition = "Additional items", formalDefinition = "Third-tier of goods and services.") 6956 protected List<SubDetailComponent> subDetail; 6957 6958 private static final long serialVersionUID = 225639798L; 6959 6960 /** 6961 * Constructor 6962 */ 6963 public DetailComponent() { 6964 super(); 6965 } 6966 6967 /** 6968 * Constructor 6969 */ 6970 public DetailComponent(PositiveIntType sequence, CodeableConcept productOrService) { 6971 super(); 6972 this.sequence = sequence; 6973 this.productOrService = productOrService; 6974 } 6975 6976 /** 6977 * @return {@link #sequence} (A claim detail line. Either a simple (a product or 6978 * service) or a 'group' of sub-details which are simple items.). This 6979 * is the underlying object with id, value and extensions. The accessor 6980 * "getSequence" gives direct access to the value 6981 */ 6982 public PositiveIntType getSequenceElement() { 6983 if (this.sequence == null) 6984 if (Configuration.errorOnAutoCreate()) 6985 throw new Error("Attempt to auto-create DetailComponent.sequence"); 6986 else if (Configuration.doAutoCreate()) 6987 this.sequence = new PositiveIntType(); // bb 6988 return this.sequence; 6989 } 6990 6991 public boolean hasSequenceElement() { 6992 return this.sequence != null && !this.sequence.isEmpty(); 6993 } 6994 6995 public boolean hasSequence() { 6996 return this.sequence != null && !this.sequence.isEmpty(); 6997 } 6998 6999 /** 7000 * @param value {@link #sequence} (A claim detail line. Either a simple (a 7001 * product or service) or a 'group' of sub-details which are simple 7002 * items.). This is the underlying object with id, value and 7003 * extensions. The accessor "getSequence" gives direct access to 7004 * the value 7005 */ 7006 public DetailComponent setSequenceElement(PositiveIntType value) { 7007 this.sequence = value; 7008 return this; 7009 } 7010 7011 /** 7012 * @return A claim detail line. Either a simple (a product or service) or a 7013 * 'group' of sub-details which are simple items. 7014 */ 7015 public int getSequence() { 7016 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 7017 } 7018 7019 /** 7020 * @param value A claim detail line. Either a simple (a product or service) or a 7021 * 'group' of sub-details which are simple items. 7022 */ 7023 public DetailComponent setSequence(int value) { 7024 if (this.sequence == null) 7025 this.sequence = new PositiveIntType(); 7026 this.sequence.setValue(value); 7027 return this; 7028 } 7029 7030 /** 7031 * @return {@link #revenue} (The type of revenue or cost center providing the 7032 * product and/or service.) 7033 */ 7034 public CodeableConcept getRevenue() { 7035 if (this.revenue == null) 7036 if (Configuration.errorOnAutoCreate()) 7037 throw new Error("Attempt to auto-create DetailComponent.revenue"); 7038 else if (Configuration.doAutoCreate()) 7039 this.revenue = new CodeableConcept(); // cc 7040 return this.revenue; 7041 } 7042 7043 public boolean hasRevenue() { 7044 return this.revenue != null && !this.revenue.isEmpty(); 7045 } 7046 7047 /** 7048 * @param value {@link #revenue} (The type of revenue or cost center providing 7049 * the product and/or service.) 7050 */ 7051 public DetailComponent setRevenue(CodeableConcept value) { 7052 this.revenue = value; 7053 return this; 7054 } 7055 7056 /** 7057 * @return {@link #category} (Code to identify the general type of benefits 7058 * under which products and services are provided.) 7059 */ 7060 public CodeableConcept getCategory() { 7061 if (this.category == null) 7062 if (Configuration.errorOnAutoCreate()) 7063 throw new Error("Attempt to auto-create DetailComponent.category"); 7064 else if (Configuration.doAutoCreate()) 7065 this.category = new CodeableConcept(); // cc 7066 return this.category; 7067 } 7068 7069 public boolean hasCategory() { 7070 return this.category != null && !this.category.isEmpty(); 7071 } 7072 7073 /** 7074 * @param value {@link #category} (Code to identify the general type of benefits 7075 * under which products and services are provided.) 7076 */ 7077 public DetailComponent setCategory(CodeableConcept value) { 7078 this.category = value; 7079 return this; 7080 } 7081 7082 /** 7083 * @return {@link #productOrService} (When the value is a group code then this 7084 * item collects a set of related claim details, otherwise this contains 7085 * the product, service, drug or other billing code for the item.) 7086 */ 7087 public CodeableConcept getProductOrService() { 7088 if (this.productOrService == null) 7089 if (Configuration.errorOnAutoCreate()) 7090 throw new Error("Attempt to auto-create DetailComponent.productOrService"); 7091 else if (Configuration.doAutoCreate()) 7092 this.productOrService = new CodeableConcept(); // cc 7093 return this.productOrService; 7094 } 7095 7096 public boolean hasProductOrService() { 7097 return this.productOrService != null && !this.productOrService.isEmpty(); 7098 } 7099 7100 /** 7101 * @param value {@link #productOrService} (When the value is a group code then 7102 * this item collects a set of related claim details, otherwise 7103 * this contains the product, service, drug or other billing code 7104 * for the item.) 7105 */ 7106 public DetailComponent setProductOrService(CodeableConcept value) { 7107 this.productOrService = value; 7108 return this; 7109 } 7110 7111 /** 7112 * @return {@link #modifier} (Item typification or modifiers codes to convey 7113 * additional context for the product or service.) 7114 */ 7115 public List<CodeableConcept> getModifier() { 7116 if (this.modifier == null) 7117 this.modifier = new ArrayList<CodeableConcept>(); 7118 return this.modifier; 7119 } 7120 7121 /** 7122 * @return Returns a reference to <code>this</code> for easy method chaining 7123 */ 7124 public DetailComponent setModifier(List<CodeableConcept> theModifier) { 7125 this.modifier = theModifier; 7126 return this; 7127 } 7128 7129 public boolean hasModifier() { 7130 if (this.modifier == null) 7131 return false; 7132 for (CodeableConcept item : this.modifier) 7133 if (!item.isEmpty()) 7134 return true; 7135 return false; 7136 } 7137 7138 public CodeableConcept addModifier() { // 3 7139 CodeableConcept t = new CodeableConcept(); 7140 if (this.modifier == null) 7141 this.modifier = new ArrayList<CodeableConcept>(); 7142 this.modifier.add(t); 7143 return t; 7144 } 7145 7146 public DetailComponent addModifier(CodeableConcept t) { // 3 7147 if (t == null) 7148 return this; 7149 if (this.modifier == null) 7150 this.modifier = new ArrayList<CodeableConcept>(); 7151 this.modifier.add(t); 7152 return this; 7153 } 7154 7155 /** 7156 * @return The first repetition of repeating field {@link #modifier}, creating 7157 * it if it does not already exist 7158 */ 7159 public CodeableConcept getModifierFirstRep() { 7160 if (getModifier().isEmpty()) { 7161 addModifier(); 7162 } 7163 return getModifier().get(0); 7164 } 7165 7166 /** 7167 * @return {@link #programCode} (Identifies the program under which this may be 7168 * recovered.) 7169 */ 7170 public List<CodeableConcept> getProgramCode() { 7171 if (this.programCode == null) 7172 this.programCode = new ArrayList<CodeableConcept>(); 7173 return this.programCode; 7174 } 7175 7176 /** 7177 * @return Returns a reference to <code>this</code> for easy method chaining 7178 */ 7179 public DetailComponent setProgramCode(List<CodeableConcept> theProgramCode) { 7180 this.programCode = theProgramCode; 7181 return this; 7182 } 7183 7184 public boolean hasProgramCode() { 7185 if (this.programCode == null) 7186 return false; 7187 for (CodeableConcept item : this.programCode) 7188 if (!item.isEmpty()) 7189 return true; 7190 return false; 7191 } 7192 7193 public CodeableConcept addProgramCode() { // 3 7194 CodeableConcept t = new CodeableConcept(); 7195 if (this.programCode == null) 7196 this.programCode = new ArrayList<CodeableConcept>(); 7197 this.programCode.add(t); 7198 return t; 7199 } 7200 7201 public DetailComponent addProgramCode(CodeableConcept t) { // 3 7202 if (t == null) 7203 return this; 7204 if (this.programCode == null) 7205 this.programCode = new ArrayList<CodeableConcept>(); 7206 this.programCode.add(t); 7207 return this; 7208 } 7209 7210 /** 7211 * @return The first repetition of repeating field {@link #programCode}, 7212 * creating it if it does not already exist 7213 */ 7214 public CodeableConcept getProgramCodeFirstRep() { 7215 if (getProgramCode().isEmpty()) { 7216 addProgramCode(); 7217 } 7218 return getProgramCode().get(0); 7219 } 7220 7221 /** 7222 * @return {@link #quantity} (The number of repetitions of a service or 7223 * product.) 7224 */ 7225 public Quantity getQuantity() { 7226 if (this.quantity == null) 7227 if (Configuration.errorOnAutoCreate()) 7228 throw new Error("Attempt to auto-create DetailComponent.quantity"); 7229 else if (Configuration.doAutoCreate()) 7230 this.quantity = new Quantity(); // cc 7231 return this.quantity; 7232 } 7233 7234 public boolean hasQuantity() { 7235 return this.quantity != null && !this.quantity.isEmpty(); 7236 } 7237 7238 /** 7239 * @param value {@link #quantity} (The number of repetitions of a service or 7240 * product.) 7241 */ 7242 public DetailComponent setQuantity(Quantity value) { 7243 this.quantity = value; 7244 return this; 7245 } 7246 7247 /** 7248 * @return {@link #unitPrice} (If the item is not a group then this is the fee 7249 * for the product or service, otherwise this is the total of the fees 7250 * for the details of the group.) 7251 */ 7252 public Money getUnitPrice() { 7253 if (this.unitPrice == null) 7254 if (Configuration.errorOnAutoCreate()) 7255 throw new Error("Attempt to auto-create DetailComponent.unitPrice"); 7256 else if (Configuration.doAutoCreate()) 7257 this.unitPrice = new Money(); // cc 7258 return this.unitPrice; 7259 } 7260 7261 public boolean hasUnitPrice() { 7262 return this.unitPrice != null && !this.unitPrice.isEmpty(); 7263 } 7264 7265 /** 7266 * @param value {@link #unitPrice} (If the item is not a group then this is the 7267 * fee for the product or service, otherwise this is the total of 7268 * the fees for the details of the group.) 7269 */ 7270 public DetailComponent setUnitPrice(Money value) { 7271 this.unitPrice = value; 7272 return this; 7273 } 7274 7275 /** 7276 * @return {@link #factor} (A real number that represents a multiplier used in 7277 * determining the overall value of services delivered and/or goods 7278 * received. The concept of a Factor allows for a discount or surcharge 7279 * multiplier to be applied to a monetary amount.). This is the 7280 * underlying object with id, value and extensions. The accessor 7281 * "getFactor" gives direct access to the value 7282 */ 7283 public DecimalType getFactorElement() { 7284 if (this.factor == null) 7285 if (Configuration.errorOnAutoCreate()) 7286 throw new Error("Attempt to auto-create DetailComponent.factor"); 7287 else if (Configuration.doAutoCreate()) 7288 this.factor = new DecimalType(); // bb 7289 return this.factor; 7290 } 7291 7292 public boolean hasFactorElement() { 7293 return this.factor != null && !this.factor.isEmpty(); 7294 } 7295 7296 public boolean hasFactor() { 7297 return this.factor != null && !this.factor.isEmpty(); 7298 } 7299 7300 /** 7301 * @param value {@link #factor} (A real number that represents a multiplier used 7302 * in determining the overall value of services delivered and/or 7303 * goods received. The concept of a Factor allows for a discount or 7304 * surcharge multiplier to be applied to a monetary amount.). This 7305 * is the underlying object with id, value and extensions. The 7306 * accessor "getFactor" gives direct access to the value 7307 */ 7308 public DetailComponent setFactorElement(DecimalType value) { 7309 this.factor = value; 7310 return this; 7311 } 7312 7313 /** 7314 * @return A real number that represents a multiplier used in determining the 7315 * overall value of services delivered and/or goods received. The 7316 * concept of a Factor allows for a discount or surcharge multiplier to 7317 * be applied to a monetary amount. 7318 */ 7319 public BigDecimal getFactor() { 7320 return this.factor == null ? null : this.factor.getValue(); 7321 } 7322 7323 /** 7324 * @param value A real number that represents a multiplier used in determining 7325 * the overall value of services delivered and/or goods received. 7326 * The concept of a Factor allows for a discount or surcharge 7327 * multiplier to be applied to a monetary amount. 7328 */ 7329 public DetailComponent setFactor(BigDecimal value) { 7330 if (value == null) 7331 this.factor = null; 7332 else { 7333 if (this.factor == null) 7334 this.factor = new DecimalType(); 7335 this.factor.setValue(value); 7336 } 7337 return this; 7338 } 7339 7340 /** 7341 * @param value A real number that represents a multiplier used in determining 7342 * the overall value of services delivered and/or goods received. 7343 * The concept of a Factor allows for a discount or surcharge 7344 * multiplier to be applied to a monetary amount. 7345 */ 7346 public DetailComponent setFactor(long value) { 7347 this.factor = new DecimalType(); 7348 this.factor.setValue(value); 7349 return this; 7350 } 7351 7352 /** 7353 * @param value A real number that represents a multiplier used in determining 7354 * the overall value of services delivered and/or goods received. 7355 * The concept of a Factor allows for a discount or surcharge 7356 * multiplier to be applied to a monetary amount. 7357 */ 7358 public DetailComponent setFactor(double value) { 7359 this.factor = new DecimalType(); 7360 this.factor.setValue(value); 7361 return this; 7362 } 7363 7364 /** 7365 * @return {@link #net} (The quantity times the unit price for an additional 7366 * service or product or charge.) 7367 */ 7368 public Money getNet() { 7369 if (this.net == null) 7370 if (Configuration.errorOnAutoCreate()) 7371 throw new Error("Attempt to auto-create DetailComponent.net"); 7372 else if (Configuration.doAutoCreate()) 7373 this.net = new Money(); // cc 7374 return this.net; 7375 } 7376 7377 public boolean hasNet() { 7378 return this.net != null && !this.net.isEmpty(); 7379 } 7380 7381 /** 7382 * @param value {@link #net} (The quantity times the unit price for an 7383 * additional service or product or charge.) 7384 */ 7385 public DetailComponent setNet(Money value) { 7386 this.net = value; 7387 return this; 7388 } 7389 7390 /** 7391 * @return {@link #udi} (Unique Device Identifiers associated with this line 7392 * item.) 7393 */ 7394 public List<Reference> getUdi() { 7395 if (this.udi == null) 7396 this.udi = new ArrayList<Reference>(); 7397 return this.udi; 7398 } 7399 7400 /** 7401 * @return Returns a reference to <code>this</code> for easy method chaining 7402 */ 7403 public DetailComponent setUdi(List<Reference> theUdi) { 7404 this.udi = theUdi; 7405 return this; 7406 } 7407 7408 public boolean hasUdi() { 7409 if (this.udi == null) 7410 return false; 7411 for (Reference item : this.udi) 7412 if (!item.isEmpty()) 7413 return true; 7414 return false; 7415 } 7416 7417 public Reference addUdi() { // 3 7418 Reference t = new Reference(); 7419 if (this.udi == null) 7420 this.udi = new ArrayList<Reference>(); 7421 this.udi.add(t); 7422 return t; 7423 } 7424 7425 public DetailComponent addUdi(Reference t) { // 3 7426 if (t == null) 7427 return this; 7428 if (this.udi == null) 7429 this.udi = new ArrayList<Reference>(); 7430 this.udi.add(t); 7431 return this; 7432 } 7433 7434 /** 7435 * @return The first repetition of repeating field {@link #udi}, creating it if 7436 * it does not already exist 7437 */ 7438 public Reference getUdiFirstRep() { 7439 if (getUdi().isEmpty()) { 7440 addUdi(); 7441 } 7442 return getUdi().get(0); 7443 } 7444 7445 /** 7446 * @deprecated Use Reference#setResource(IBaseResource) instead 7447 */ 7448 @Deprecated 7449 public List<Device> getUdiTarget() { 7450 if (this.udiTarget == null) 7451 this.udiTarget = new ArrayList<Device>(); 7452 return this.udiTarget; 7453 } 7454 7455 /** 7456 * @deprecated Use Reference#setResource(IBaseResource) instead 7457 */ 7458 @Deprecated 7459 public Device addUdiTarget() { 7460 Device r = new Device(); 7461 if (this.udiTarget == null) 7462 this.udiTarget = new ArrayList<Device>(); 7463 this.udiTarget.add(r); 7464 return r; 7465 } 7466 7467 /** 7468 * @return {@link #noteNumber} (The numbers associated with notes below which 7469 * apply to the adjudication of this item.) 7470 */ 7471 public List<PositiveIntType> getNoteNumber() { 7472 if (this.noteNumber == null) 7473 this.noteNumber = new ArrayList<PositiveIntType>(); 7474 return this.noteNumber; 7475 } 7476 7477 /** 7478 * @return Returns a reference to <code>this</code> for easy method chaining 7479 */ 7480 public DetailComponent setNoteNumber(List<PositiveIntType> theNoteNumber) { 7481 this.noteNumber = theNoteNumber; 7482 return this; 7483 } 7484 7485 public boolean hasNoteNumber() { 7486 if (this.noteNumber == null) 7487 return false; 7488 for (PositiveIntType item : this.noteNumber) 7489 if (!item.isEmpty()) 7490 return true; 7491 return false; 7492 } 7493 7494 /** 7495 * @return {@link #noteNumber} (The numbers associated with notes below which 7496 * apply to the adjudication of this item.) 7497 */ 7498 public PositiveIntType addNoteNumberElement() {// 2 7499 PositiveIntType t = new PositiveIntType(); 7500 if (this.noteNumber == null) 7501 this.noteNumber = new ArrayList<PositiveIntType>(); 7502 this.noteNumber.add(t); 7503 return t; 7504 } 7505 7506 /** 7507 * @param value {@link #noteNumber} (The numbers associated with notes below 7508 * which apply to the adjudication of this item.) 7509 */ 7510 public DetailComponent addNoteNumber(int value) { // 1 7511 PositiveIntType t = new PositiveIntType(); 7512 t.setValue(value); 7513 if (this.noteNumber == null) 7514 this.noteNumber = new ArrayList<PositiveIntType>(); 7515 this.noteNumber.add(t); 7516 return this; 7517 } 7518 7519 /** 7520 * @param value {@link #noteNumber} (The numbers associated with notes below 7521 * which apply to the adjudication of this item.) 7522 */ 7523 public boolean hasNoteNumber(int value) { 7524 if (this.noteNumber == null) 7525 return false; 7526 for (PositiveIntType v : this.noteNumber) 7527 if (v.getValue().equals(value)) // positiveInt 7528 return true; 7529 return false; 7530 } 7531 7532 /** 7533 * @return {@link #adjudication} (The adjudication results.) 7534 */ 7535 public List<AdjudicationComponent> getAdjudication() { 7536 if (this.adjudication == null) 7537 this.adjudication = new ArrayList<AdjudicationComponent>(); 7538 return this.adjudication; 7539 } 7540 7541 /** 7542 * @return Returns a reference to <code>this</code> for easy method chaining 7543 */ 7544 public DetailComponent setAdjudication(List<AdjudicationComponent> theAdjudication) { 7545 this.adjudication = theAdjudication; 7546 return this; 7547 } 7548 7549 public boolean hasAdjudication() { 7550 if (this.adjudication == null) 7551 return false; 7552 for (AdjudicationComponent item : this.adjudication) 7553 if (!item.isEmpty()) 7554 return true; 7555 return false; 7556 } 7557 7558 public AdjudicationComponent addAdjudication() { // 3 7559 AdjudicationComponent t = new AdjudicationComponent(); 7560 if (this.adjudication == null) 7561 this.adjudication = new ArrayList<AdjudicationComponent>(); 7562 this.adjudication.add(t); 7563 return t; 7564 } 7565 7566 public DetailComponent addAdjudication(AdjudicationComponent t) { // 3 7567 if (t == null) 7568 return this; 7569 if (this.adjudication == null) 7570 this.adjudication = new ArrayList<AdjudicationComponent>(); 7571 this.adjudication.add(t); 7572 return this; 7573 } 7574 7575 /** 7576 * @return The first repetition of repeating field {@link #adjudication}, 7577 * creating it if it does not already exist 7578 */ 7579 public AdjudicationComponent getAdjudicationFirstRep() { 7580 if (getAdjudication().isEmpty()) { 7581 addAdjudication(); 7582 } 7583 return getAdjudication().get(0); 7584 } 7585 7586 /** 7587 * @return {@link #subDetail} (Third-tier of goods and services.) 7588 */ 7589 public List<SubDetailComponent> getSubDetail() { 7590 if (this.subDetail == null) 7591 this.subDetail = new ArrayList<SubDetailComponent>(); 7592 return this.subDetail; 7593 } 7594 7595 /** 7596 * @return Returns a reference to <code>this</code> for easy method chaining 7597 */ 7598 public DetailComponent setSubDetail(List<SubDetailComponent> theSubDetail) { 7599 this.subDetail = theSubDetail; 7600 return this; 7601 } 7602 7603 public boolean hasSubDetail() { 7604 if (this.subDetail == null) 7605 return false; 7606 for (SubDetailComponent item : this.subDetail) 7607 if (!item.isEmpty()) 7608 return true; 7609 return false; 7610 } 7611 7612 public SubDetailComponent addSubDetail() { // 3 7613 SubDetailComponent t = new SubDetailComponent(); 7614 if (this.subDetail == null) 7615 this.subDetail = new ArrayList<SubDetailComponent>(); 7616 this.subDetail.add(t); 7617 return t; 7618 } 7619 7620 public DetailComponent addSubDetail(SubDetailComponent t) { // 3 7621 if (t == null) 7622 return this; 7623 if (this.subDetail == null) 7624 this.subDetail = new ArrayList<SubDetailComponent>(); 7625 this.subDetail.add(t); 7626 return this; 7627 } 7628 7629 /** 7630 * @return The first repetition of repeating field {@link #subDetail}, creating 7631 * it if it does not already exist 7632 */ 7633 public SubDetailComponent getSubDetailFirstRep() { 7634 if (getSubDetail().isEmpty()) { 7635 addSubDetail(); 7636 } 7637 return getSubDetail().get(0); 7638 } 7639 7640 protected void listChildren(List<Property> children) { 7641 super.listChildren(children); 7642 children.add(new Property("sequence", "positiveInt", 7643 "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items.", 7644 0, 1, sequence)); 7645 children.add(new Property("revenue", "CodeableConcept", 7646 "The type of revenue or cost center providing the product and/or service.", 0, 1, revenue)); 7647 children.add(new Property("category", "CodeableConcept", 7648 "Code to identify the general type of benefits under which products and services are provided.", 0, 1, 7649 category)); 7650 children.add(new Property("productOrService", "CodeableConcept", 7651 "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", 7652 0, 1, productOrService)); 7653 children.add(new Property("modifier", "CodeableConcept", 7654 "Item typification or modifiers codes to convey additional context for the product or service.", 0, 7655 java.lang.Integer.MAX_VALUE, modifier)); 7656 children.add(new Property("programCode", "CodeableConcept", 7657 "Identifies the program under which this may be recovered.", 0, java.lang.Integer.MAX_VALUE, programCode)); 7658 children.add(new Property("quantity", "SimpleQuantity", "The number of repetitions of a service or product.", 0, 7659 1, quantity)); 7660 children.add(new Property("unitPrice", "Money", 7661 "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", 7662 0, 1, unitPrice)); 7663 children.add(new Property("factor", "decimal", 7664 "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 7665 0, 1, factor)); 7666 children.add(new Property("net", "Money", 7667 "The quantity times the unit price for an additional service or product or charge.", 0, 1, net)); 7668 children.add(new Property("udi", "Reference(Device)", "Unique Device Identifiers associated with this line item.", 7669 0, java.lang.Integer.MAX_VALUE, udi)); 7670 children.add(new Property("noteNumber", "positiveInt", 7671 "The numbers associated with notes below which apply to the adjudication of this item.", 0, 7672 java.lang.Integer.MAX_VALUE, noteNumber)); 7673 children.add(new Property("adjudication", "@ExplanationOfBenefit.item.adjudication", "The adjudication results.", 7674 0, java.lang.Integer.MAX_VALUE, adjudication)); 7675 children.add(new Property("subDetail", "", "Third-tier of goods and services.", 0, java.lang.Integer.MAX_VALUE, 7676 subDetail)); 7677 } 7678 7679 @Override 7680 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 7681 switch (_hash) { 7682 case 1349547969: 7683 /* sequence */ return new Property("sequence", "positiveInt", 7684 "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items.", 7685 0, 1, sequence); 7686 case 1099842588: 7687 /* revenue */ return new Property("revenue", "CodeableConcept", 7688 "The type of revenue or cost center providing the product and/or service.", 0, 1, revenue); 7689 case 50511102: 7690 /* category */ return new Property("category", "CodeableConcept", 7691 "Code to identify the general type of benefits under which products and services are provided.", 0, 1, 7692 category); 7693 case 1957227299: 7694 /* productOrService */ return new Property("productOrService", "CodeableConcept", 7695 "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", 7696 0, 1, productOrService); 7697 case -615513385: 7698 /* modifier */ return new Property("modifier", "CodeableConcept", 7699 "Item typification or modifiers codes to convey additional context for the product or service.", 0, 7700 java.lang.Integer.MAX_VALUE, modifier); 7701 case 1010065041: 7702 /* programCode */ return new Property("programCode", "CodeableConcept", 7703 "Identifies the program under which this may be recovered.", 0, java.lang.Integer.MAX_VALUE, programCode); 7704 case -1285004149: 7705 /* quantity */ return new Property("quantity", "SimpleQuantity", 7706 "The number of repetitions of a service or product.", 0, 1, quantity); 7707 case -486196699: 7708 /* unitPrice */ return new Property("unitPrice", "Money", 7709 "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", 7710 0, 1, unitPrice); 7711 case -1282148017: 7712 /* factor */ return new Property("factor", "decimal", 7713 "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 7714 0, 1, factor); 7715 case 108957: 7716 /* net */ return new Property("net", "Money", 7717 "The quantity times the unit price for an additional service or product or charge.", 0, 1, net); 7718 case 115642: 7719 /* udi */ return new Property("udi", "Reference(Device)", 7720 "Unique Device Identifiers associated with this line item.", 0, java.lang.Integer.MAX_VALUE, udi); 7721 case -1110033957: 7722 /* noteNumber */ return new Property("noteNumber", "positiveInt", 7723 "The numbers associated with notes below which apply to the adjudication of this item.", 0, 7724 java.lang.Integer.MAX_VALUE, noteNumber); 7725 case -231349275: 7726 /* adjudication */ return new Property("adjudication", "@ExplanationOfBenefit.item.adjudication", 7727 "The adjudication results.", 0, java.lang.Integer.MAX_VALUE, adjudication); 7728 case -828829007: 7729 /* subDetail */ return new Property("subDetail", "", "Third-tier of goods and services.", 0, 7730 java.lang.Integer.MAX_VALUE, subDetail); 7731 default: 7732 return super.getNamedProperty(_hash, _name, _checkValid); 7733 } 7734 7735 } 7736 7737 @Override 7738 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 7739 switch (hash) { 7740 case 1349547969: 7741 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 7742 case 1099842588: 7743 /* revenue */ return this.revenue == null ? new Base[0] : new Base[] { this.revenue }; // CodeableConcept 7744 case 50511102: 7745 /* category */ return this.category == null ? new Base[0] : new Base[] { this.category }; // CodeableConcept 7746 case 1957227299: 7747 /* productOrService */ return this.productOrService == null ? new Base[0] 7748 : new Base[] { this.productOrService }; // CodeableConcept 7749 case -615513385: 7750 /* modifier */ return this.modifier == null ? new Base[0] 7751 : this.modifier.toArray(new Base[this.modifier.size()]); // CodeableConcept 7752 case 1010065041: 7753 /* programCode */ return this.programCode == null ? new Base[0] 7754 : this.programCode.toArray(new Base[this.programCode.size()]); // CodeableConcept 7755 case -1285004149: 7756 /* quantity */ return this.quantity == null ? new Base[0] : new Base[] { this.quantity }; // Quantity 7757 case -486196699: 7758 /* unitPrice */ return this.unitPrice == null ? new Base[0] : new Base[] { this.unitPrice }; // Money 7759 case -1282148017: 7760 /* factor */ return this.factor == null ? new Base[0] : new Base[] { this.factor }; // DecimalType 7761 case 108957: 7762 /* net */ return this.net == null ? new Base[0] : new Base[] { this.net }; // Money 7763 case 115642: 7764 /* udi */ return this.udi == null ? new Base[0] : this.udi.toArray(new Base[this.udi.size()]); // Reference 7765 case -1110033957: 7766 /* noteNumber */ return this.noteNumber == null ? new Base[0] 7767 : this.noteNumber.toArray(new Base[this.noteNumber.size()]); // PositiveIntType 7768 case -231349275: 7769 /* adjudication */ return this.adjudication == null ? new Base[0] 7770 : this.adjudication.toArray(new Base[this.adjudication.size()]); // AdjudicationComponent 7771 case -828829007: 7772 /* subDetail */ return this.subDetail == null ? new Base[0] 7773 : this.subDetail.toArray(new Base[this.subDetail.size()]); // SubDetailComponent 7774 default: 7775 return super.getProperty(hash, name, checkValid); 7776 } 7777 7778 } 7779 7780 @Override 7781 public Base setProperty(int hash, String name, Base value) throws FHIRException { 7782 switch (hash) { 7783 case 1349547969: // sequence 7784 this.sequence = castToPositiveInt(value); // PositiveIntType 7785 return value; 7786 case 1099842588: // revenue 7787 this.revenue = castToCodeableConcept(value); // CodeableConcept 7788 return value; 7789 case 50511102: // category 7790 this.category = castToCodeableConcept(value); // CodeableConcept 7791 return value; 7792 case 1957227299: // productOrService 7793 this.productOrService = castToCodeableConcept(value); // CodeableConcept 7794 return value; 7795 case -615513385: // modifier 7796 this.getModifier().add(castToCodeableConcept(value)); // CodeableConcept 7797 return value; 7798 case 1010065041: // programCode 7799 this.getProgramCode().add(castToCodeableConcept(value)); // CodeableConcept 7800 return value; 7801 case -1285004149: // quantity 7802 this.quantity = castToQuantity(value); // Quantity 7803 return value; 7804 case -486196699: // unitPrice 7805 this.unitPrice = castToMoney(value); // Money 7806 return value; 7807 case -1282148017: // factor 7808 this.factor = castToDecimal(value); // DecimalType 7809 return value; 7810 case 108957: // net 7811 this.net = castToMoney(value); // Money 7812 return value; 7813 case 115642: // udi 7814 this.getUdi().add(castToReference(value)); // Reference 7815 return value; 7816 case -1110033957: // noteNumber 7817 this.getNoteNumber().add(castToPositiveInt(value)); // PositiveIntType 7818 return value; 7819 case -231349275: // adjudication 7820 this.getAdjudication().add((AdjudicationComponent) value); // AdjudicationComponent 7821 return value; 7822 case -828829007: // subDetail 7823 this.getSubDetail().add((SubDetailComponent) value); // SubDetailComponent 7824 return value; 7825 default: 7826 return super.setProperty(hash, name, value); 7827 } 7828 7829 } 7830 7831 @Override 7832 public Base setProperty(String name, Base value) throws FHIRException { 7833 if (name.equals("sequence")) { 7834 this.sequence = castToPositiveInt(value); // PositiveIntType 7835 } else if (name.equals("revenue")) { 7836 this.revenue = castToCodeableConcept(value); // CodeableConcept 7837 } else if (name.equals("category")) { 7838 this.category = castToCodeableConcept(value); // CodeableConcept 7839 } else if (name.equals("productOrService")) { 7840 this.productOrService = castToCodeableConcept(value); // CodeableConcept 7841 } else if (name.equals("modifier")) { 7842 this.getModifier().add(castToCodeableConcept(value)); 7843 } else if (name.equals("programCode")) { 7844 this.getProgramCode().add(castToCodeableConcept(value)); 7845 } else if (name.equals("quantity")) { 7846 this.quantity = castToQuantity(value); // Quantity 7847 } else if (name.equals("unitPrice")) { 7848 this.unitPrice = castToMoney(value); // Money 7849 } else if (name.equals("factor")) { 7850 this.factor = castToDecimal(value); // DecimalType 7851 } else if (name.equals("net")) { 7852 this.net = castToMoney(value); // Money 7853 } else if (name.equals("udi")) { 7854 this.getUdi().add(castToReference(value)); 7855 } else if (name.equals("noteNumber")) { 7856 this.getNoteNumber().add(castToPositiveInt(value)); 7857 } else if (name.equals("adjudication")) { 7858 this.getAdjudication().add((AdjudicationComponent) value); 7859 } else if (name.equals("subDetail")) { 7860 this.getSubDetail().add((SubDetailComponent) value); 7861 } else 7862 return super.setProperty(name, value); 7863 return value; 7864 } 7865 7866 @Override 7867 public void removeChild(String name, Base value) throws FHIRException { 7868 if (name.equals("sequence")) { 7869 this.sequence = null; 7870 } else if (name.equals("revenue")) { 7871 this.revenue = null; 7872 } else if (name.equals("category")) { 7873 this.category = null; 7874 } else if (name.equals("productOrService")) { 7875 this.productOrService = null; 7876 } else if (name.equals("modifier")) { 7877 this.getModifier().remove(castToCodeableConcept(value)); 7878 } else if (name.equals("programCode")) { 7879 this.getProgramCode().remove(castToCodeableConcept(value)); 7880 } else if (name.equals("quantity")) { 7881 this.quantity = null; 7882 } else if (name.equals("unitPrice")) { 7883 this.unitPrice = null; 7884 } else if (name.equals("factor")) { 7885 this.factor = null; 7886 } else if (name.equals("net")) { 7887 this.net = null; 7888 } else if (name.equals("udi")) { 7889 this.getUdi().remove(castToReference(value)); 7890 } else if (name.equals("noteNumber")) { 7891 this.getNoteNumber().remove(castToPositiveInt(value)); 7892 } else if (name.equals("adjudication")) { 7893 this.getAdjudication().remove((AdjudicationComponent) value); 7894 } else if (name.equals("subDetail")) { 7895 this.getSubDetail().remove((SubDetailComponent) value); 7896 } else 7897 super.removeChild(name, value); 7898 7899 } 7900 7901 @Override 7902 public Base makeProperty(int hash, String name) throws FHIRException { 7903 switch (hash) { 7904 case 1349547969: 7905 return getSequenceElement(); 7906 case 1099842588: 7907 return getRevenue(); 7908 case 50511102: 7909 return getCategory(); 7910 case 1957227299: 7911 return getProductOrService(); 7912 case -615513385: 7913 return addModifier(); 7914 case 1010065041: 7915 return addProgramCode(); 7916 case -1285004149: 7917 return getQuantity(); 7918 case -486196699: 7919 return getUnitPrice(); 7920 case -1282148017: 7921 return getFactorElement(); 7922 case 108957: 7923 return getNet(); 7924 case 115642: 7925 return addUdi(); 7926 case -1110033957: 7927 return addNoteNumberElement(); 7928 case -231349275: 7929 return addAdjudication(); 7930 case -828829007: 7931 return addSubDetail(); 7932 default: 7933 return super.makeProperty(hash, name); 7934 } 7935 7936 } 7937 7938 @Override 7939 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 7940 switch (hash) { 7941 case 1349547969: 7942 /* sequence */ return new String[] { "positiveInt" }; 7943 case 1099842588: 7944 /* revenue */ return new String[] { "CodeableConcept" }; 7945 case 50511102: 7946 /* category */ return new String[] { "CodeableConcept" }; 7947 case 1957227299: 7948 /* productOrService */ return new String[] { "CodeableConcept" }; 7949 case -615513385: 7950 /* modifier */ return new String[] { "CodeableConcept" }; 7951 case 1010065041: 7952 /* programCode */ return new String[] { "CodeableConcept" }; 7953 case -1285004149: 7954 /* quantity */ return new String[] { "SimpleQuantity" }; 7955 case -486196699: 7956 /* unitPrice */ return new String[] { "Money" }; 7957 case -1282148017: 7958 /* factor */ return new String[] { "decimal" }; 7959 case 108957: 7960 /* net */ return new String[] { "Money" }; 7961 case 115642: 7962 /* udi */ return new String[] { "Reference" }; 7963 case -1110033957: 7964 /* noteNumber */ return new String[] { "positiveInt" }; 7965 case -231349275: 7966 /* adjudication */ return new String[] { "@ExplanationOfBenefit.item.adjudication" }; 7967 case -828829007: 7968 /* subDetail */ return new String[] {}; 7969 default: 7970 return super.getTypesForProperty(hash, name); 7971 } 7972 7973 } 7974 7975 @Override 7976 public Base addChild(String name) throws FHIRException { 7977 if (name.equals("sequence")) { 7978 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 7979 } else if (name.equals("revenue")) { 7980 this.revenue = new CodeableConcept(); 7981 return this.revenue; 7982 } else if (name.equals("category")) { 7983 this.category = new CodeableConcept(); 7984 return this.category; 7985 } else if (name.equals("productOrService")) { 7986 this.productOrService = new CodeableConcept(); 7987 return this.productOrService; 7988 } else if (name.equals("modifier")) { 7989 return addModifier(); 7990 } else if (name.equals("programCode")) { 7991 return addProgramCode(); 7992 } else if (name.equals("quantity")) { 7993 this.quantity = new Quantity(); 7994 return this.quantity; 7995 } else if (name.equals("unitPrice")) { 7996 this.unitPrice = new Money(); 7997 return this.unitPrice; 7998 } else if (name.equals("factor")) { 7999 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.factor"); 8000 } else if (name.equals("net")) { 8001 this.net = new Money(); 8002 return this.net; 8003 } else if (name.equals("udi")) { 8004 return addUdi(); 8005 } else if (name.equals("noteNumber")) { 8006 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.noteNumber"); 8007 } else if (name.equals("adjudication")) { 8008 return addAdjudication(); 8009 } else if (name.equals("subDetail")) { 8010 return addSubDetail(); 8011 } else 8012 return super.addChild(name); 8013 } 8014 8015 public DetailComponent copy() { 8016 DetailComponent dst = new DetailComponent(); 8017 copyValues(dst); 8018 return dst; 8019 } 8020 8021 public void copyValues(DetailComponent dst) { 8022 super.copyValues(dst); 8023 dst.sequence = sequence == null ? null : sequence.copy(); 8024 dst.revenue = revenue == null ? null : revenue.copy(); 8025 dst.category = category == null ? null : category.copy(); 8026 dst.productOrService = productOrService == null ? null : productOrService.copy(); 8027 if (modifier != null) { 8028 dst.modifier = new ArrayList<CodeableConcept>(); 8029 for (CodeableConcept i : modifier) 8030 dst.modifier.add(i.copy()); 8031 } 8032 ; 8033 if (programCode != null) { 8034 dst.programCode = new ArrayList<CodeableConcept>(); 8035 for (CodeableConcept i : programCode) 8036 dst.programCode.add(i.copy()); 8037 } 8038 ; 8039 dst.quantity = quantity == null ? null : quantity.copy(); 8040 dst.unitPrice = unitPrice == null ? null : unitPrice.copy(); 8041 dst.factor = factor == null ? null : factor.copy(); 8042 dst.net = net == null ? null : net.copy(); 8043 if (udi != null) { 8044 dst.udi = new ArrayList<Reference>(); 8045 for (Reference i : udi) 8046 dst.udi.add(i.copy()); 8047 } 8048 ; 8049 if (noteNumber != null) { 8050 dst.noteNumber = new ArrayList<PositiveIntType>(); 8051 for (PositiveIntType i : noteNumber) 8052 dst.noteNumber.add(i.copy()); 8053 } 8054 ; 8055 if (adjudication != null) { 8056 dst.adjudication = new ArrayList<AdjudicationComponent>(); 8057 for (AdjudicationComponent i : adjudication) 8058 dst.adjudication.add(i.copy()); 8059 } 8060 ; 8061 if (subDetail != null) { 8062 dst.subDetail = new ArrayList<SubDetailComponent>(); 8063 for (SubDetailComponent i : subDetail) 8064 dst.subDetail.add(i.copy()); 8065 } 8066 ; 8067 } 8068 8069 @Override 8070 public boolean equalsDeep(Base other_) { 8071 if (!super.equalsDeep(other_)) 8072 return false; 8073 if (!(other_ instanceof DetailComponent)) 8074 return false; 8075 DetailComponent o = (DetailComponent) other_; 8076 return compareDeep(sequence, o.sequence, true) && compareDeep(revenue, o.revenue, true) 8077 && compareDeep(category, o.category, true) && compareDeep(productOrService, o.productOrService, true) 8078 && compareDeep(modifier, o.modifier, true) && compareDeep(programCode, o.programCode, true) 8079 && compareDeep(quantity, o.quantity, true) && compareDeep(unitPrice, o.unitPrice, true) 8080 && compareDeep(factor, o.factor, true) && compareDeep(net, o.net, true) && compareDeep(udi, o.udi, true) 8081 && compareDeep(noteNumber, o.noteNumber, true) && compareDeep(adjudication, o.adjudication, true) 8082 && compareDeep(subDetail, o.subDetail, true); 8083 } 8084 8085 @Override 8086 public boolean equalsShallow(Base other_) { 8087 if (!super.equalsShallow(other_)) 8088 return false; 8089 if (!(other_ instanceof DetailComponent)) 8090 return false; 8091 DetailComponent o = (DetailComponent) other_; 8092 return compareValues(sequence, o.sequence, true) && compareValues(factor, o.factor, true) 8093 && compareValues(noteNumber, o.noteNumber, true); 8094 } 8095 8096 public boolean isEmpty() { 8097 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, revenue, category, productOrService, 8098 modifier, programCode, quantity, unitPrice, factor, net, udi, noteNumber, adjudication, subDetail); 8099 } 8100 8101 public String fhirType() { 8102 return "ExplanationOfBenefit.item.detail"; 8103 8104 } 8105 8106 } 8107 8108 @Block() 8109 public static class SubDetailComponent extends BackboneElement implements IBaseBackboneElement { 8110 /** 8111 * A claim detail line. Either a simple (a product or service) or a 'group' of 8112 * sub-details which are simple items. 8113 */ 8114 @Child(name = "sequence", type = { 8115 PositiveIntType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 8116 @Description(shortDefinition = "Product or service provided", formalDefinition = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items.") 8117 protected PositiveIntType sequence; 8118 8119 /** 8120 * The type of revenue or cost center providing the product and/or service. 8121 */ 8122 @Child(name = "revenue", type = { 8123 CodeableConcept.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 8124 @Description(shortDefinition = "Revenue or cost center code", formalDefinition = "The type of revenue or cost center providing the product and/or service.") 8125 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-revenue-center") 8126 protected CodeableConcept revenue; 8127 8128 /** 8129 * Code to identify the general type of benefits under which products and 8130 * services are provided. 8131 */ 8132 @Child(name = "category", type = { 8133 CodeableConcept.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 8134 @Description(shortDefinition = "Benefit classification", formalDefinition = "Code to identify the general type of benefits under which products and services are provided.") 8135 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-benefitcategory") 8136 protected CodeableConcept category; 8137 8138 /** 8139 * When the value is a group code then this item collects a set of related claim 8140 * details, otherwise this contains the product, service, drug or other billing 8141 * code for the item. 8142 */ 8143 @Child(name = "productOrService", type = { 8144 CodeableConcept.class }, order = 4, min = 1, max = 1, modifier = false, summary = false) 8145 @Description(shortDefinition = "Billing, service, product, or drug code", formalDefinition = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.") 8146 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/service-uscls") 8147 protected CodeableConcept productOrService; 8148 8149 /** 8150 * Item typification or modifiers codes to convey additional context for the 8151 * product or service. 8152 */ 8153 @Child(name = "modifier", type = { 8154 CodeableConcept.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 8155 @Description(shortDefinition = "Service/Product billing modifiers", formalDefinition = "Item typification or modifiers codes to convey additional context for the product or service.") 8156 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-modifiers") 8157 protected List<CodeableConcept> modifier; 8158 8159 /** 8160 * Identifies the program under which this may be recovered. 8161 */ 8162 @Child(name = "programCode", type = { 8163 CodeableConcept.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 8164 @Description(shortDefinition = "Program the product or service is provided under", formalDefinition = "Identifies the program under which this may be recovered.") 8165 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-program-code") 8166 protected List<CodeableConcept> programCode; 8167 8168 /** 8169 * The number of repetitions of a service or product. 8170 */ 8171 @Child(name = "quantity", type = { Quantity.class }, order = 7, min = 0, max = 1, modifier = false, summary = false) 8172 @Description(shortDefinition = "Count of products or services", formalDefinition = "The number of repetitions of a service or product.") 8173 protected Quantity quantity; 8174 8175 /** 8176 * If the item is not a group then this is the fee for the product or service, 8177 * otherwise this is the total of the fees for the details of the group. 8178 */ 8179 @Child(name = "unitPrice", type = { Money.class }, order = 8, min = 0, max = 1, modifier = false, summary = false) 8180 @Description(shortDefinition = "Fee, charge or cost per item", formalDefinition = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.") 8181 protected Money unitPrice; 8182 8183 /** 8184 * A real number that represents a multiplier used in determining the overall 8185 * value of services delivered and/or goods received. The concept of a Factor 8186 * allows for a discount or surcharge multiplier to be applied to a monetary 8187 * amount. 8188 */ 8189 @Child(name = "factor", type = { 8190 DecimalType.class }, order = 9, min = 0, max = 1, modifier = false, summary = false) 8191 @Description(shortDefinition = "Price scaling factor", formalDefinition = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.") 8192 protected DecimalType factor; 8193 8194 /** 8195 * The quantity times the unit price for an additional service or product or 8196 * charge. 8197 */ 8198 @Child(name = "net", type = { Money.class }, order = 10, min = 0, max = 1, modifier = false, summary = false) 8199 @Description(shortDefinition = "Total item cost", formalDefinition = "The quantity times the unit price for an additional service or product or charge.") 8200 protected Money net; 8201 8202 /** 8203 * Unique Device Identifiers associated with this line item. 8204 */ 8205 @Child(name = "udi", type = { 8206 Device.class }, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 8207 @Description(shortDefinition = "Unique device identifier", formalDefinition = "Unique Device Identifiers associated with this line item.") 8208 protected List<Reference> udi; 8209 /** 8210 * The actual objects that are the target of the reference (Unique Device 8211 * Identifiers associated with this line item.) 8212 */ 8213 protected List<Device> udiTarget; 8214 8215 /** 8216 * The numbers associated with notes below which apply to the adjudication of 8217 * this item. 8218 */ 8219 @Child(name = "noteNumber", type = { 8220 PositiveIntType.class }, order = 12, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 8221 @Description(shortDefinition = "Applicable note numbers", formalDefinition = "The numbers associated with notes below which apply to the adjudication of this item.") 8222 protected List<PositiveIntType> noteNumber; 8223 8224 /** 8225 * The adjudication results. 8226 */ 8227 @Child(name = "adjudication", type = { 8228 AdjudicationComponent.class }, order = 13, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 8229 @Description(shortDefinition = "Subdetail level adjudication details", formalDefinition = "The adjudication results.") 8230 protected List<AdjudicationComponent> adjudication; 8231 8232 private static final long serialVersionUID = -996156853L; 8233 8234 /** 8235 * Constructor 8236 */ 8237 public SubDetailComponent() { 8238 super(); 8239 } 8240 8241 /** 8242 * Constructor 8243 */ 8244 public SubDetailComponent(PositiveIntType sequence, CodeableConcept productOrService) { 8245 super(); 8246 this.sequence = sequence; 8247 this.productOrService = productOrService; 8248 } 8249 8250 /** 8251 * @return {@link #sequence} (A claim detail line. Either a simple (a product or 8252 * service) or a 'group' of sub-details which are simple items.). This 8253 * is the underlying object with id, value and extensions. The accessor 8254 * "getSequence" gives direct access to the value 8255 */ 8256 public PositiveIntType getSequenceElement() { 8257 if (this.sequence == null) 8258 if (Configuration.errorOnAutoCreate()) 8259 throw new Error("Attempt to auto-create SubDetailComponent.sequence"); 8260 else if (Configuration.doAutoCreate()) 8261 this.sequence = new PositiveIntType(); // bb 8262 return this.sequence; 8263 } 8264 8265 public boolean hasSequenceElement() { 8266 return this.sequence != null && !this.sequence.isEmpty(); 8267 } 8268 8269 public boolean hasSequence() { 8270 return this.sequence != null && !this.sequence.isEmpty(); 8271 } 8272 8273 /** 8274 * @param value {@link #sequence} (A claim detail line. Either a simple (a 8275 * product or service) or a 'group' of sub-details which are simple 8276 * items.). This is the underlying object with id, value and 8277 * extensions. The accessor "getSequence" gives direct access to 8278 * the value 8279 */ 8280 public SubDetailComponent setSequenceElement(PositiveIntType value) { 8281 this.sequence = value; 8282 return this; 8283 } 8284 8285 /** 8286 * @return A claim detail line. Either a simple (a product or service) or a 8287 * 'group' of sub-details which are simple items. 8288 */ 8289 public int getSequence() { 8290 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 8291 } 8292 8293 /** 8294 * @param value A claim detail line. Either a simple (a product or service) or a 8295 * 'group' of sub-details which are simple items. 8296 */ 8297 public SubDetailComponent setSequence(int value) { 8298 if (this.sequence == null) 8299 this.sequence = new PositiveIntType(); 8300 this.sequence.setValue(value); 8301 return this; 8302 } 8303 8304 /** 8305 * @return {@link #revenue} (The type of revenue or cost center providing the 8306 * product and/or service.) 8307 */ 8308 public CodeableConcept getRevenue() { 8309 if (this.revenue == null) 8310 if (Configuration.errorOnAutoCreate()) 8311 throw new Error("Attempt to auto-create SubDetailComponent.revenue"); 8312 else if (Configuration.doAutoCreate()) 8313 this.revenue = new CodeableConcept(); // cc 8314 return this.revenue; 8315 } 8316 8317 public boolean hasRevenue() { 8318 return this.revenue != null && !this.revenue.isEmpty(); 8319 } 8320 8321 /** 8322 * @param value {@link #revenue} (The type of revenue or cost center providing 8323 * the product and/or service.) 8324 */ 8325 public SubDetailComponent setRevenue(CodeableConcept value) { 8326 this.revenue = value; 8327 return this; 8328 } 8329 8330 /** 8331 * @return {@link #category} (Code to identify the general type of benefits 8332 * under which products and services are provided.) 8333 */ 8334 public CodeableConcept getCategory() { 8335 if (this.category == null) 8336 if (Configuration.errorOnAutoCreate()) 8337 throw new Error("Attempt to auto-create SubDetailComponent.category"); 8338 else if (Configuration.doAutoCreate()) 8339 this.category = new CodeableConcept(); // cc 8340 return this.category; 8341 } 8342 8343 public boolean hasCategory() { 8344 return this.category != null && !this.category.isEmpty(); 8345 } 8346 8347 /** 8348 * @param value {@link #category} (Code to identify the general type of benefits 8349 * under which products and services are provided.) 8350 */ 8351 public SubDetailComponent setCategory(CodeableConcept value) { 8352 this.category = value; 8353 return this; 8354 } 8355 8356 /** 8357 * @return {@link #productOrService} (When the value is a group code then this 8358 * item collects a set of related claim details, otherwise this contains 8359 * the product, service, drug or other billing code for the item.) 8360 */ 8361 public CodeableConcept getProductOrService() { 8362 if (this.productOrService == null) 8363 if (Configuration.errorOnAutoCreate()) 8364 throw new Error("Attempt to auto-create SubDetailComponent.productOrService"); 8365 else if (Configuration.doAutoCreate()) 8366 this.productOrService = new CodeableConcept(); // cc 8367 return this.productOrService; 8368 } 8369 8370 public boolean hasProductOrService() { 8371 return this.productOrService != null && !this.productOrService.isEmpty(); 8372 } 8373 8374 /** 8375 * @param value {@link #productOrService} (When the value is a group code then 8376 * this item collects a set of related claim details, otherwise 8377 * this contains the product, service, drug or other billing code 8378 * for the item.) 8379 */ 8380 public SubDetailComponent setProductOrService(CodeableConcept value) { 8381 this.productOrService = value; 8382 return this; 8383 } 8384 8385 /** 8386 * @return {@link #modifier} (Item typification or modifiers codes to convey 8387 * additional context for the product or service.) 8388 */ 8389 public List<CodeableConcept> getModifier() { 8390 if (this.modifier == null) 8391 this.modifier = new ArrayList<CodeableConcept>(); 8392 return this.modifier; 8393 } 8394 8395 /** 8396 * @return Returns a reference to <code>this</code> for easy method chaining 8397 */ 8398 public SubDetailComponent setModifier(List<CodeableConcept> theModifier) { 8399 this.modifier = theModifier; 8400 return this; 8401 } 8402 8403 public boolean hasModifier() { 8404 if (this.modifier == null) 8405 return false; 8406 for (CodeableConcept item : this.modifier) 8407 if (!item.isEmpty()) 8408 return true; 8409 return false; 8410 } 8411 8412 public CodeableConcept addModifier() { // 3 8413 CodeableConcept t = new CodeableConcept(); 8414 if (this.modifier == null) 8415 this.modifier = new ArrayList<CodeableConcept>(); 8416 this.modifier.add(t); 8417 return t; 8418 } 8419 8420 public SubDetailComponent addModifier(CodeableConcept t) { // 3 8421 if (t == null) 8422 return this; 8423 if (this.modifier == null) 8424 this.modifier = new ArrayList<CodeableConcept>(); 8425 this.modifier.add(t); 8426 return this; 8427 } 8428 8429 /** 8430 * @return The first repetition of repeating field {@link #modifier}, creating 8431 * it if it does not already exist 8432 */ 8433 public CodeableConcept getModifierFirstRep() { 8434 if (getModifier().isEmpty()) { 8435 addModifier(); 8436 } 8437 return getModifier().get(0); 8438 } 8439 8440 /** 8441 * @return {@link #programCode} (Identifies the program under which this may be 8442 * recovered.) 8443 */ 8444 public List<CodeableConcept> getProgramCode() { 8445 if (this.programCode == null) 8446 this.programCode = new ArrayList<CodeableConcept>(); 8447 return this.programCode; 8448 } 8449 8450 /** 8451 * @return Returns a reference to <code>this</code> for easy method chaining 8452 */ 8453 public SubDetailComponent setProgramCode(List<CodeableConcept> theProgramCode) { 8454 this.programCode = theProgramCode; 8455 return this; 8456 } 8457 8458 public boolean hasProgramCode() { 8459 if (this.programCode == null) 8460 return false; 8461 for (CodeableConcept item : this.programCode) 8462 if (!item.isEmpty()) 8463 return true; 8464 return false; 8465 } 8466 8467 public CodeableConcept addProgramCode() { // 3 8468 CodeableConcept t = new CodeableConcept(); 8469 if (this.programCode == null) 8470 this.programCode = new ArrayList<CodeableConcept>(); 8471 this.programCode.add(t); 8472 return t; 8473 } 8474 8475 public SubDetailComponent addProgramCode(CodeableConcept t) { // 3 8476 if (t == null) 8477 return this; 8478 if (this.programCode == null) 8479 this.programCode = new ArrayList<CodeableConcept>(); 8480 this.programCode.add(t); 8481 return this; 8482 } 8483 8484 /** 8485 * @return The first repetition of repeating field {@link #programCode}, 8486 * creating it if it does not already exist 8487 */ 8488 public CodeableConcept getProgramCodeFirstRep() { 8489 if (getProgramCode().isEmpty()) { 8490 addProgramCode(); 8491 } 8492 return getProgramCode().get(0); 8493 } 8494 8495 /** 8496 * @return {@link #quantity} (The number of repetitions of a service or 8497 * product.) 8498 */ 8499 public Quantity getQuantity() { 8500 if (this.quantity == null) 8501 if (Configuration.errorOnAutoCreate()) 8502 throw new Error("Attempt to auto-create SubDetailComponent.quantity"); 8503 else if (Configuration.doAutoCreate()) 8504 this.quantity = new Quantity(); // cc 8505 return this.quantity; 8506 } 8507 8508 public boolean hasQuantity() { 8509 return this.quantity != null && !this.quantity.isEmpty(); 8510 } 8511 8512 /** 8513 * @param value {@link #quantity} (The number of repetitions of a service or 8514 * product.) 8515 */ 8516 public SubDetailComponent setQuantity(Quantity value) { 8517 this.quantity = value; 8518 return this; 8519 } 8520 8521 /** 8522 * @return {@link #unitPrice} (If the item is not a group then this is the fee 8523 * for the product or service, otherwise this is the total of the fees 8524 * for the details of the group.) 8525 */ 8526 public Money getUnitPrice() { 8527 if (this.unitPrice == null) 8528 if (Configuration.errorOnAutoCreate()) 8529 throw new Error("Attempt to auto-create SubDetailComponent.unitPrice"); 8530 else if (Configuration.doAutoCreate()) 8531 this.unitPrice = new Money(); // cc 8532 return this.unitPrice; 8533 } 8534 8535 public boolean hasUnitPrice() { 8536 return this.unitPrice != null && !this.unitPrice.isEmpty(); 8537 } 8538 8539 /** 8540 * @param value {@link #unitPrice} (If the item is not a group then this is the 8541 * fee for the product or service, otherwise this is the total of 8542 * the fees for the details of the group.) 8543 */ 8544 public SubDetailComponent setUnitPrice(Money value) { 8545 this.unitPrice = value; 8546 return this; 8547 } 8548 8549 /** 8550 * @return {@link #factor} (A real number that represents a multiplier used in 8551 * determining the overall value of services delivered and/or goods 8552 * received. The concept of a Factor allows for a discount or surcharge 8553 * multiplier to be applied to a monetary amount.). This is the 8554 * underlying object with id, value and extensions. The accessor 8555 * "getFactor" gives direct access to the value 8556 */ 8557 public DecimalType getFactorElement() { 8558 if (this.factor == null) 8559 if (Configuration.errorOnAutoCreate()) 8560 throw new Error("Attempt to auto-create SubDetailComponent.factor"); 8561 else if (Configuration.doAutoCreate()) 8562 this.factor = new DecimalType(); // bb 8563 return this.factor; 8564 } 8565 8566 public boolean hasFactorElement() { 8567 return this.factor != null && !this.factor.isEmpty(); 8568 } 8569 8570 public boolean hasFactor() { 8571 return this.factor != null && !this.factor.isEmpty(); 8572 } 8573 8574 /** 8575 * @param value {@link #factor} (A real number that represents a multiplier used 8576 * in determining the overall value of services delivered and/or 8577 * goods received. The concept of a Factor allows for a discount or 8578 * surcharge multiplier to be applied to a monetary amount.). This 8579 * is the underlying object with id, value and extensions. The 8580 * accessor "getFactor" gives direct access to the value 8581 */ 8582 public SubDetailComponent setFactorElement(DecimalType value) { 8583 this.factor = value; 8584 return this; 8585 } 8586 8587 /** 8588 * @return A real number that represents a multiplier used in determining the 8589 * overall value of services delivered and/or goods received. The 8590 * concept of a Factor allows for a discount or surcharge multiplier to 8591 * be applied to a monetary amount. 8592 */ 8593 public BigDecimal getFactor() { 8594 return this.factor == null ? null : this.factor.getValue(); 8595 } 8596 8597 /** 8598 * @param value A real number that represents a multiplier used in determining 8599 * the overall value of services delivered and/or goods received. 8600 * The concept of a Factor allows for a discount or surcharge 8601 * multiplier to be applied to a monetary amount. 8602 */ 8603 public SubDetailComponent setFactor(BigDecimal value) { 8604 if (value == null) 8605 this.factor = null; 8606 else { 8607 if (this.factor == null) 8608 this.factor = new DecimalType(); 8609 this.factor.setValue(value); 8610 } 8611 return this; 8612 } 8613 8614 /** 8615 * @param value A real number that represents a multiplier used in determining 8616 * the overall value of services delivered and/or goods received. 8617 * The concept of a Factor allows for a discount or surcharge 8618 * multiplier to be applied to a monetary amount. 8619 */ 8620 public SubDetailComponent setFactor(long value) { 8621 this.factor = new DecimalType(); 8622 this.factor.setValue(value); 8623 return this; 8624 } 8625 8626 /** 8627 * @param value A real number that represents a multiplier used in determining 8628 * the overall value of services delivered and/or goods received. 8629 * The concept of a Factor allows for a discount or surcharge 8630 * multiplier to be applied to a monetary amount. 8631 */ 8632 public SubDetailComponent setFactor(double value) { 8633 this.factor = new DecimalType(); 8634 this.factor.setValue(value); 8635 return this; 8636 } 8637 8638 /** 8639 * @return {@link #net} (The quantity times the unit price for an additional 8640 * service or product or charge.) 8641 */ 8642 public Money getNet() { 8643 if (this.net == null) 8644 if (Configuration.errorOnAutoCreate()) 8645 throw new Error("Attempt to auto-create SubDetailComponent.net"); 8646 else if (Configuration.doAutoCreate()) 8647 this.net = new Money(); // cc 8648 return this.net; 8649 } 8650 8651 public boolean hasNet() { 8652 return this.net != null && !this.net.isEmpty(); 8653 } 8654 8655 /** 8656 * @param value {@link #net} (The quantity times the unit price for an 8657 * additional service or product or charge.) 8658 */ 8659 public SubDetailComponent setNet(Money value) { 8660 this.net = value; 8661 return this; 8662 } 8663 8664 /** 8665 * @return {@link #udi} (Unique Device Identifiers associated with this line 8666 * item.) 8667 */ 8668 public List<Reference> getUdi() { 8669 if (this.udi == null) 8670 this.udi = new ArrayList<Reference>(); 8671 return this.udi; 8672 } 8673 8674 /** 8675 * @return Returns a reference to <code>this</code> for easy method chaining 8676 */ 8677 public SubDetailComponent setUdi(List<Reference> theUdi) { 8678 this.udi = theUdi; 8679 return this; 8680 } 8681 8682 public boolean hasUdi() { 8683 if (this.udi == null) 8684 return false; 8685 for (Reference item : this.udi) 8686 if (!item.isEmpty()) 8687 return true; 8688 return false; 8689 } 8690 8691 public Reference addUdi() { // 3 8692 Reference t = new Reference(); 8693 if (this.udi == null) 8694 this.udi = new ArrayList<Reference>(); 8695 this.udi.add(t); 8696 return t; 8697 } 8698 8699 public SubDetailComponent addUdi(Reference t) { // 3 8700 if (t == null) 8701 return this; 8702 if (this.udi == null) 8703 this.udi = new ArrayList<Reference>(); 8704 this.udi.add(t); 8705 return this; 8706 } 8707 8708 /** 8709 * @return The first repetition of repeating field {@link #udi}, creating it if 8710 * it does not already exist 8711 */ 8712 public Reference getUdiFirstRep() { 8713 if (getUdi().isEmpty()) { 8714 addUdi(); 8715 } 8716 return getUdi().get(0); 8717 } 8718 8719 /** 8720 * @deprecated Use Reference#setResource(IBaseResource) instead 8721 */ 8722 @Deprecated 8723 public List<Device> getUdiTarget() { 8724 if (this.udiTarget == null) 8725 this.udiTarget = new ArrayList<Device>(); 8726 return this.udiTarget; 8727 } 8728 8729 /** 8730 * @deprecated Use Reference#setResource(IBaseResource) instead 8731 */ 8732 @Deprecated 8733 public Device addUdiTarget() { 8734 Device r = new Device(); 8735 if (this.udiTarget == null) 8736 this.udiTarget = new ArrayList<Device>(); 8737 this.udiTarget.add(r); 8738 return r; 8739 } 8740 8741 /** 8742 * @return {@link #noteNumber} (The numbers associated with notes below which 8743 * apply to the adjudication of this item.) 8744 */ 8745 public List<PositiveIntType> getNoteNumber() { 8746 if (this.noteNumber == null) 8747 this.noteNumber = new ArrayList<PositiveIntType>(); 8748 return this.noteNumber; 8749 } 8750 8751 /** 8752 * @return Returns a reference to <code>this</code> for easy method chaining 8753 */ 8754 public SubDetailComponent setNoteNumber(List<PositiveIntType> theNoteNumber) { 8755 this.noteNumber = theNoteNumber; 8756 return this; 8757 } 8758 8759 public boolean hasNoteNumber() { 8760 if (this.noteNumber == null) 8761 return false; 8762 for (PositiveIntType item : this.noteNumber) 8763 if (!item.isEmpty()) 8764 return true; 8765 return false; 8766 } 8767 8768 /** 8769 * @return {@link #noteNumber} (The numbers associated with notes below which 8770 * apply to the adjudication of this item.) 8771 */ 8772 public PositiveIntType addNoteNumberElement() {// 2 8773 PositiveIntType t = new PositiveIntType(); 8774 if (this.noteNumber == null) 8775 this.noteNumber = new ArrayList<PositiveIntType>(); 8776 this.noteNumber.add(t); 8777 return t; 8778 } 8779 8780 /** 8781 * @param value {@link #noteNumber} (The numbers associated with notes below 8782 * which apply to the adjudication of this item.) 8783 */ 8784 public SubDetailComponent addNoteNumber(int value) { // 1 8785 PositiveIntType t = new PositiveIntType(); 8786 t.setValue(value); 8787 if (this.noteNumber == null) 8788 this.noteNumber = new ArrayList<PositiveIntType>(); 8789 this.noteNumber.add(t); 8790 return this; 8791 } 8792 8793 /** 8794 * @param value {@link #noteNumber} (The numbers associated with notes below 8795 * which apply to the adjudication of this item.) 8796 */ 8797 public boolean hasNoteNumber(int value) { 8798 if (this.noteNumber == null) 8799 return false; 8800 for (PositiveIntType v : this.noteNumber) 8801 if (v.getValue().equals(value)) // positiveInt 8802 return true; 8803 return false; 8804 } 8805 8806 /** 8807 * @return {@link #adjudication} (The adjudication results.) 8808 */ 8809 public List<AdjudicationComponent> getAdjudication() { 8810 if (this.adjudication == null) 8811 this.adjudication = new ArrayList<AdjudicationComponent>(); 8812 return this.adjudication; 8813 } 8814 8815 /** 8816 * @return Returns a reference to <code>this</code> for easy method chaining 8817 */ 8818 public SubDetailComponent setAdjudication(List<AdjudicationComponent> theAdjudication) { 8819 this.adjudication = theAdjudication; 8820 return this; 8821 } 8822 8823 public boolean hasAdjudication() { 8824 if (this.adjudication == null) 8825 return false; 8826 for (AdjudicationComponent item : this.adjudication) 8827 if (!item.isEmpty()) 8828 return true; 8829 return false; 8830 } 8831 8832 public AdjudicationComponent addAdjudication() { // 3 8833 AdjudicationComponent t = new AdjudicationComponent(); 8834 if (this.adjudication == null) 8835 this.adjudication = new ArrayList<AdjudicationComponent>(); 8836 this.adjudication.add(t); 8837 return t; 8838 } 8839 8840 public SubDetailComponent addAdjudication(AdjudicationComponent t) { // 3 8841 if (t == null) 8842 return this; 8843 if (this.adjudication == null) 8844 this.adjudication = new ArrayList<AdjudicationComponent>(); 8845 this.adjudication.add(t); 8846 return this; 8847 } 8848 8849 /** 8850 * @return The first repetition of repeating field {@link #adjudication}, 8851 * creating it if it does not already exist 8852 */ 8853 public AdjudicationComponent getAdjudicationFirstRep() { 8854 if (getAdjudication().isEmpty()) { 8855 addAdjudication(); 8856 } 8857 return getAdjudication().get(0); 8858 } 8859 8860 protected void listChildren(List<Property> children) { 8861 super.listChildren(children); 8862 children.add(new Property("sequence", "positiveInt", 8863 "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items.", 8864 0, 1, sequence)); 8865 children.add(new Property("revenue", "CodeableConcept", 8866 "The type of revenue or cost center providing the product and/or service.", 0, 1, revenue)); 8867 children.add(new Property("category", "CodeableConcept", 8868 "Code to identify the general type of benefits under which products and services are provided.", 0, 1, 8869 category)); 8870 children.add(new Property("productOrService", "CodeableConcept", 8871 "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", 8872 0, 1, productOrService)); 8873 children.add(new Property("modifier", "CodeableConcept", 8874 "Item typification or modifiers codes to convey additional context for the product or service.", 0, 8875 java.lang.Integer.MAX_VALUE, modifier)); 8876 children.add(new Property("programCode", "CodeableConcept", 8877 "Identifies the program under which this may be recovered.", 0, java.lang.Integer.MAX_VALUE, programCode)); 8878 children.add(new Property("quantity", "SimpleQuantity", "The number of repetitions of a service or product.", 0, 8879 1, quantity)); 8880 children.add(new Property("unitPrice", "Money", 8881 "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", 8882 0, 1, unitPrice)); 8883 children.add(new Property("factor", "decimal", 8884 "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 8885 0, 1, factor)); 8886 children.add(new Property("net", "Money", 8887 "The quantity times the unit price for an additional service or product or charge.", 0, 1, net)); 8888 children.add(new Property("udi", "Reference(Device)", "Unique Device Identifiers associated with this line item.", 8889 0, java.lang.Integer.MAX_VALUE, udi)); 8890 children.add(new Property("noteNumber", "positiveInt", 8891 "The numbers associated with notes below which apply to the adjudication of this item.", 0, 8892 java.lang.Integer.MAX_VALUE, noteNumber)); 8893 children.add(new Property("adjudication", "@ExplanationOfBenefit.item.adjudication", "The adjudication results.", 8894 0, java.lang.Integer.MAX_VALUE, adjudication)); 8895 } 8896 8897 @Override 8898 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 8899 switch (_hash) { 8900 case 1349547969: 8901 /* sequence */ return new Property("sequence", "positiveInt", 8902 "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items.", 8903 0, 1, sequence); 8904 case 1099842588: 8905 /* revenue */ return new Property("revenue", "CodeableConcept", 8906 "The type of revenue or cost center providing the product and/or service.", 0, 1, revenue); 8907 case 50511102: 8908 /* category */ return new Property("category", "CodeableConcept", 8909 "Code to identify the general type of benefits under which products and services are provided.", 0, 1, 8910 category); 8911 case 1957227299: 8912 /* productOrService */ return new Property("productOrService", "CodeableConcept", 8913 "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", 8914 0, 1, productOrService); 8915 case -615513385: 8916 /* modifier */ return new Property("modifier", "CodeableConcept", 8917 "Item typification or modifiers codes to convey additional context for the product or service.", 0, 8918 java.lang.Integer.MAX_VALUE, modifier); 8919 case 1010065041: 8920 /* programCode */ return new Property("programCode", "CodeableConcept", 8921 "Identifies the program under which this may be recovered.", 0, java.lang.Integer.MAX_VALUE, programCode); 8922 case -1285004149: 8923 /* quantity */ return new Property("quantity", "SimpleQuantity", 8924 "The number of repetitions of a service or product.", 0, 1, quantity); 8925 case -486196699: 8926 /* unitPrice */ return new Property("unitPrice", "Money", 8927 "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", 8928 0, 1, unitPrice); 8929 case -1282148017: 8930 /* factor */ return new Property("factor", "decimal", 8931 "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 8932 0, 1, factor); 8933 case 108957: 8934 /* net */ return new Property("net", "Money", 8935 "The quantity times the unit price for an additional service or product or charge.", 0, 1, net); 8936 case 115642: 8937 /* udi */ return new Property("udi", "Reference(Device)", 8938 "Unique Device Identifiers associated with this line item.", 0, java.lang.Integer.MAX_VALUE, udi); 8939 case -1110033957: 8940 /* noteNumber */ return new Property("noteNumber", "positiveInt", 8941 "The numbers associated with notes below which apply to the adjudication of this item.", 0, 8942 java.lang.Integer.MAX_VALUE, noteNumber); 8943 case -231349275: 8944 /* adjudication */ return new Property("adjudication", "@ExplanationOfBenefit.item.adjudication", 8945 "The adjudication results.", 0, java.lang.Integer.MAX_VALUE, adjudication); 8946 default: 8947 return super.getNamedProperty(_hash, _name, _checkValid); 8948 } 8949 8950 } 8951 8952 @Override 8953 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 8954 switch (hash) { 8955 case 1349547969: 8956 /* sequence */ return this.sequence == null ? new Base[0] : new Base[] { this.sequence }; // PositiveIntType 8957 case 1099842588: 8958 /* revenue */ return this.revenue == null ? new Base[0] : new Base[] { this.revenue }; // CodeableConcept 8959 case 50511102: 8960 /* category */ return this.category == null ? new Base[0] : new Base[] { this.category }; // CodeableConcept 8961 case 1957227299: 8962 /* productOrService */ return this.productOrService == null ? new Base[0] 8963 : new Base[] { this.productOrService }; // CodeableConcept 8964 case -615513385: 8965 /* modifier */ return this.modifier == null ? new Base[0] 8966 : this.modifier.toArray(new Base[this.modifier.size()]); // CodeableConcept 8967 case 1010065041: 8968 /* programCode */ return this.programCode == null ? new Base[0] 8969 : this.programCode.toArray(new Base[this.programCode.size()]); // CodeableConcept 8970 case -1285004149: 8971 /* quantity */ return this.quantity == null ? new Base[0] : new Base[] { this.quantity }; // Quantity 8972 case -486196699: 8973 /* unitPrice */ return this.unitPrice == null ? new Base[0] : new Base[] { this.unitPrice }; // Money 8974 case -1282148017: 8975 /* factor */ return this.factor == null ? new Base[0] : new Base[] { this.factor }; // DecimalType 8976 case 108957: 8977 /* net */ return this.net == null ? new Base[0] : new Base[] { this.net }; // Money 8978 case 115642: 8979 /* udi */ return this.udi == null ? new Base[0] : this.udi.toArray(new Base[this.udi.size()]); // Reference 8980 case -1110033957: 8981 /* noteNumber */ return this.noteNumber == null ? new Base[0] 8982 : this.noteNumber.toArray(new Base[this.noteNumber.size()]); // PositiveIntType 8983 case -231349275: 8984 /* adjudication */ return this.adjudication == null ? new Base[0] 8985 : this.adjudication.toArray(new Base[this.adjudication.size()]); // AdjudicationComponent 8986 default: 8987 return super.getProperty(hash, name, checkValid); 8988 } 8989 8990 } 8991 8992 @Override 8993 public Base setProperty(int hash, String name, Base value) throws FHIRException { 8994 switch (hash) { 8995 case 1349547969: // sequence 8996 this.sequence = castToPositiveInt(value); // PositiveIntType 8997 return value; 8998 case 1099842588: // revenue 8999 this.revenue = castToCodeableConcept(value); // CodeableConcept 9000 return value; 9001 case 50511102: // category 9002 this.category = castToCodeableConcept(value); // CodeableConcept 9003 return value; 9004 case 1957227299: // productOrService 9005 this.productOrService = castToCodeableConcept(value); // CodeableConcept 9006 return value; 9007 case -615513385: // modifier 9008 this.getModifier().add(castToCodeableConcept(value)); // CodeableConcept 9009 return value; 9010 case 1010065041: // programCode 9011 this.getProgramCode().add(castToCodeableConcept(value)); // CodeableConcept 9012 return value; 9013 case -1285004149: // quantity 9014 this.quantity = castToQuantity(value); // Quantity 9015 return value; 9016 case -486196699: // unitPrice 9017 this.unitPrice = castToMoney(value); // Money 9018 return value; 9019 case -1282148017: // factor 9020 this.factor = castToDecimal(value); // DecimalType 9021 return value; 9022 case 108957: // net 9023 this.net = castToMoney(value); // Money 9024 return value; 9025 case 115642: // udi 9026 this.getUdi().add(castToReference(value)); // Reference 9027 return value; 9028 case -1110033957: // noteNumber 9029 this.getNoteNumber().add(castToPositiveInt(value)); // PositiveIntType 9030 return value; 9031 case -231349275: // adjudication 9032 this.getAdjudication().add((AdjudicationComponent) value); // AdjudicationComponent 9033 return value; 9034 default: 9035 return super.setProperty(hash, name, value); 9036 } 9037 9038 } 9039 9040 @Override 9041 public Base setProperty(String name, Base value) throws FHIRException { 9042 if (name.equals("sequence")) { 9043 this.sequence = castToPositiveInt(value); // PositiveIntType 9044 } else if (name.equals("revenue")) { 9045 this.revenue = castToCodeableConcept(value); // CodeableConcept 9046 } else if (name.equals("category")) { 9047 this.category = castToCodeableConcept(value); // CodeableConcept 9048 } else if (name.equals("productOrService")) { 9049 this.productOrService = castToCodeableConcept(value); // CodeableConcept 9050 } else if (name.equals("modifier")) { 9051 this.getModifier().add(castToCodeableConcept(value)); 9052 } else if (name.equals("programCode")) { 9053 this.getProgramCode().add(castToCodeableConcept(value)); 9054 } else if (name.equals("quantity")) { 9055 this.quantity = castToQuantity(value); // Quantity 9056 } else if (name.equals("unitPrice")) { 9057 this.unitPrice = castToMoney(value); // Money 9058 } else if (name.equals("factor")) { 9059 this.factor = castToDecimal(value); // DecimalType 9060 } else if (name.equals("net")) { 9061 this.net = castToMoney(value); // Money 9062 } else if (name.equals("udi")) { 9063 this.getUdi().add(castToReference(value)); 9064 } else if (name.equals("noteNumber")) { 9065 this.getNoteNumber().add(castToPositiveInt(value)); 9066 } else if (name.equals("adjudication")) { 9067 this.getAdjudication().add((AdjudicationComponent) value); 9068 } else 9069 return super.setProperty(name, value); 9070 return value; 9071 } 9072 9073 @Override 9074 public void removeChild(String name, Base value) throws FHIRException { 9075 if (name.equals("sequence")) { 9076 this.sequence = null; 9077 } else if (name.equals("revenue")) { 9078 this.revenue = null; 9079 } else if (name.equals("category")) { 9080 this.category = null; 9081 } else if (name.equals("productOrService")) { 9082 this.productOrService = null; 9083 } else if (name.equals("modifier")) { 9084 this.getModifier().remove(castToCodeableConcept(value)); 9085 } else if (name.equals("programCode")) { 9086 this.getProgramCode().remove(castToCodeableConcept(value)); 9087 } else if (name.equals("quantity")) { 9088 this.quantity = null; 9089 } else if (name.equals("unitPrice")) { 9090 this.unitPrice = null; 9091 } else if (name.equals("factor")) { 9092 this.factor = null; 9093 } else if (name.equals("net")) { 9094 this.net = null; 9095 } else if (name.equals("udi")) { 9096 this.getUdi().remove(castToReference(value)); 9097 } else if (name.equals("noteNumber")) { 9098 this.getNoteNumber().remove(castToPositiveInt(value)); 9099 } else if (name.equals("adjudication")) { 9100 this.getAdjudication().remove((AdjudicationComponent) value); 9101 } else 9102 super.removeChild(name, value); 9103 9104 } 9105 9106 @Override 9107 public Base makeProperty(int hash, String name) throws FHIRException { 9108 switch (hash) { 9109 case 1349547969: 9110 return getSequenceElement(); 9111 case 1099842588: 9112 return getRevenue(); 9113 case 50511102: 9114 return getCategory(); 9115 case 1957227299: 9116 return getProductOrService(); 9117 case -615513385: 9118 return addModifier(); 9119 case 1010065041: 9120 return addProgramCode(); 9121 case -1285004149: 9122 return getQuantity(); 9123 case -486196699: 9124 return getUnitPrice(); 9125 case -1282148017: 9126 return getFactorElement(); 9127 case 108957: 9128 return getNet(); 9129 case 115642: 9130 return addUdi(); 9131 case -1110033957: 9132 return addNoteNumberElement(); 9133 case -231349275: 9134 return addAdjudication(); 9135 default: 9136 return super.makeProperty(hash, name); 9137 } 9138 9139 } 9140 9141 @Override 9142 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 9143 switch (hash) { 9144 case 1349547969: 9145 /* sequence */ return new String[] { "positiveInt" }; 9146 case 1099842588: 9147 /* revenue */ return new String[] { "CodeableConcept" }; 9148 case 50511102: 9149 /* category */ return new String[] { "CodeableConcept" }; 9150 case 1957227299: 9151 /* productOrService */ return new String[] { "CodeableConcept" }; 9152 case -615513385: 9153 /* modifier */ return new String[] { "CodeableConcept" }; 9154 case 1010065041: 9155 /* programCode */ return new String[] { "CodeableConcept" }; 9156 case -1285004149: 9157 /* quantity */ return new String[] { "SimpleQuantity" }; 9158 case -486196699: 9159 /* unitPrice */ return new String[] { "Money" }; 9160 case -1282148017: 9161 /* factor */ return new String[] { "decimal" }; 9162 case 108957: 9163 /* net */ return new String[] { "Money" }; 9164 case 115642: 9165 /* udi */ return new String[] { "Reference" }; 9166 case -1110033957: 9167 /* noteNumber */ return new String[] { "positiveInt" }; 9168 case -231349275: 9169 /* adjudication */ return new String[] { "@ExplanationOfBenefit.item.adjudication" }; 9170 default: 9171 return super.getTypesForProperty(hash, name); 9172 } 9173 9174 } 9175 9176 @Override 9177 public Base addChild(String name) throws FHIRException { 9178 if (name.equals("sequence")) { 9179 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.sequence"); 9180 } else if (name.equals("revenue")) { 9181 this.revenue = new CodeableConcept(); 9182 return this.revenue; 9183 } else if (name.equals("category")) { 9184 this.category = new CodeableConcept(); 9185 return this.category; 9186 } else if (name.equals("productOrService")) { 9187 this.productOrService = new CodeableConcept(); 9188 return this.productOrService; 9189 } else if (name.equals("modifier")) { 9190 return addModifier(); 9191 } else if (name.equals("programCode")) { 9192 return addProgramCode(); 9193 } else if (name.equals("quantity")) { 9194 this.quantity = new Quantity(); 9195 return this.quantity; 9196 } else if (name.equals("unitPrice")) { 9197 this.unitPrice = new Money(); 9198 return this.unitPrice; 9199 } else if (name.equals("factor")) { 9200 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.factor"); 9201 } else if (name.equals("net")) { 9202 this.net = new Money(); 9203 return this.net; 9204 } else if (name.equals("udi")) { 9205 return addUdi(); 9206 } else if (name.equals("noteNumber")) { 9207 throw new FHIRException("Cannot call addChild on a singleton property ExplanationOfBenefit.noteNumber"); 9208 } else if (name.equals("adjudication")) { 9209 return addAdjudication(); 9210 } else 9211 return super.addChild(name); 9212 } 9213 9214 public SubDetailComponent copy() { 9215 SubDetailComponent dst = new SubDetailComponent(); 9216 copyValues(dst); 9217 return dst; 9218 } 9219 9220 public void copyValues(SubDetailComponent dst) { 9221 super.copyValues(dst); 9222 dst.sequence = sequence == null ? null : sequence.copy(); 9223 dst.revenue = revenue == null ? null : revenue.copy(); 9224 dst.category = category == null ? null : category.copy(); 9225 dst.productOrService = productOrService == null ? null : productOrService.copy(); 9226 if (modifier != null) { 9227 dst.modifier = new ArrayList<CodeableConcept>(); 9228 for (CodeableConcept i : modifier) 9229 dst.modifier.add(i.copy()); 9230 } 9231 ; 9232 if (programCode != null) { 9233 dst.programCode = new ArrayList<CodeableConcept>(); 9234 for (CodeableConcept i : programCode) 9235 dst.programCode.add(i.copy()); 9236 } 9237 ; 9238 dst.quantity = quantity == null ? null : quantity.copy(); 9239 dst.unitPrice = unitPrice == null ? null : unitPrice.copy(); 9240 dst.factor = factor == null ? null : factor.copy(); 9241 dst.net = net == null ? null : net.copy(); 9242 if (udi != null) { 9243 dst.udi = new ArrayList<Reference>(); 9244 for (Reference i : udi) 9245 dst.udi.add(i.copy()); 9246 } 9247 ; 9248 if (noteNumber != null) { 9249 dst.noteNumber = new ArrayList<PositiveIntType>(); 9250 for (PositiveIntType i : noteNumber) 9251 dst.noteNumber.add(i.copy()); 9252 } 9253 ; 9254 if (adjudication != null) { 9255 dst.adjudication = new ArrayList<AdjudicationComponent>(); 9256 for (AdjudicationComponent i : adjudication) 9257 dst.adjudication.add(i.copy()); 9258 } 9259 ; 9260 } 9261 9262 @Override 9263 public boolean equalsDeep(Base other_) { 9264 if (!super.equalsDeep(other_)) 9265 return false; 9266 if (!(other_ instanceof SubDetailComponent)) 9267 return false; 9268 SubDetailComponent o = (SubDetailComponent) other_; 9269 return compareDeep(sequence, o.sequence, true) && compareDeep(revenue, o.revenue, true) 9270 && compareDeep(category, o.category, true) && compareDeep(productOrService, o.productOrService, true) 9271 && compareDeep(modifier, o.modifier, true) && compareDeep(programCode, o.programCode, true) 9272 && compareDeep(quantity, o.quantity, true) && compareDeep(unitPrice, o.unitPrice, true) 9273 && compareDeep(factor, o.factor, true) && compareDeep(net, o.net, true) && compareDeep(udi, o.udi, true) 9274 && compareDeep(noteNumber, o.noteNumber, true) && compareDeep(adjudication, o.adjudication, true); 9275 } 9276 9277 @Override 9278 public boolean equalsShallow(Base other_) { 9279 if (!super.equalsShallow(other_)) 9280 return false; 9281 if (!(other_ instanceof SubDetailComponent)) 9282 return false; 9283 SubDetailComponent o = (SubDetailComponent) other_; 9284 return compareValues(sequence, o.sequence, true) && compareValues(factor, o.factor, true) 9285 && compareValues(noteNumber, o.noteNumber, true); 9286 } 9287 9288 public boolean isEmpty() { 9289 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, revenue, category, productOrService, 9290 modifier, programCode, quantity, unitPrice, factor, net, udi, noteNumber, adjudication); 9291 } 9292 9293 public String fhirType() { 9294 return "ExplanationOfBenefit.item.detail.subDetail"; 9295 9296 } 9297 9298 } 9299 9300 @Block() 9301 public static class AddedItemComponent extends BackboneElement implements IBaseBackboneElement { 9302 /** 9303 * Claim items which this service line is intended to replace. 9304 */ 9305 @Child(name = "itemSequence", type = { 9306 PositiveIntType.class }, order = 1, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9307 @Description(shortDefinition = "Item sequence number", formalDefinition = "Claim items which this service line is intended to replace.") 9308 protected List<PositiveIntType> itemSequence; 9309 9310 /** 9311 * The sequence number of the details within the claim item which this line is 9312 * intended to replace. 9313 */ 9314 @Child(name = "detailSequence", type = { 9315 PositiveIntType.class }, order = 2, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9316 @Description(shortDefinition = "Detail sequence number", formalDefinition = "The sequence number of the details within the claim item which this line is intended to replace.") 9317 protected List<PositiveIntType> detailSequence; 9318 9319 /** 9320 * The sequence number of the sub-details woithin the details within the claim 9321 * item which this line is intended to replace. 9322 */ 9323 @Child(name = "subDetailSequence", type = { 9324 PositiveIntType.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9325 @Description(shortDefinition = "Subdetail sequence number", formalDefinition = "The sequence number of the sub-details woithin the details within the claim item which this line is intended to replace.") 9326 protected List<PositiveIntType> subDetailSequence; 9327 9328 /** 9329 * The providers who are authorized for the services rendered to the patient. 9330 */ 9331 @Child(name = "provider", type = { Practitioner.class, PractitionerRole.class, 9332 Organization.class }, order = 4, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9333 @Description(shortDefinition = "Authorized providers", formalDefinition = "The providers who are authorized for the services rendered to the patient.") 9334 protected List<Reference> provider; 9335 /** 9336 * The actual objects that are the target of the reference (The providers who 9337 * are authorized for the services rendered to the patient.) 9338 */ 9339 protected List<Resource> providerTarget; 9340 9341 /** 9342 * When the value is a group code then this item collects a set of related claim 9343 * details, otherwise this contains the product, service, drug or other billing 9344 * code for the item. 9345 */ 9346 @Child(name = "productOrService", type = { 9347 CodeableConcept.class }, order = 5, min = 1, max = 1, modifier = false, summary = false) 9348 @Description(shortDefinition = "Billing, service, product, or drug code", formalDefinition = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.") 9349 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/service-uscls") 9350 protected CodeableConcept productOrService; 9351 9352 /** 9353 * Item typification or modifiers codes to convey additional context for the 9354 * product or service. 9355 */ 9356 @Child(name = "modifier", type = { 9357 CodeableConcept.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9358 @Description(shortDefinition = "Service/Product billing modifiers", formalDefinition = "Item typification or modifiers codes to convey additional context for the product or service.") 9359 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-modifiers") 9360 protected List<CodeableConcept> modifier; 9361 9362 /** 9363 * Identifies the program under which this may be recovered. 9364 */ 9365 @Child(name = "programCode", type = { 9366 CodeableConcept.class }, order = 7, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9367 @Description(shortDefinition = "Program the product or service is provided under", formalDefinition = "Identifies the program under which this may be recovered.") 9368 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/ex-program-code") 9369 protected List<CodeableConcept> programCode; 9370 9371 /** 9372 * The date or dates when the service or product was supplied, performed or 9373 * completed. 9374 */ 9375 @Child(name = "serviced", type = { DateType.class, 9376 Period.class }, order = 8, min = 0, max = 1, modifier = false, summary = false) 9377 @Description(shortDefinition = "Date or dates of service or product delivery", formalDefinition = "The date or dates when the service or product was supplied, performed or completed.") 9378 protected Type serviced; 9379 9380 /** 9381 * Where the product or service was provided. 9382 */ 9383 @Child(name = "location", type = { CodeableConcept.class, Address.class, 9384 Location.class }, order = 9, min = 0, max = 1, modifier = false, summary = false) 9385 @Description(shortDefinition = "Place of service or where product was supplied", formalDefinition = "Where the product or service was provided.") 9386 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/service-place") 9387 protected Type location; 9388 9389 /** 9390 * The number of repetitions of a service or product. 9391 */ 9392 @Child(name = "quantity", type = { 9393 Quantity.class }, order = 10, min = 0, max = 1, modifier = false, summary = false) 9394 @Description(shortDefinition = "Count of products or services", formalDefinition = "The number of repetitions of a service or product.") 9395 protected Quantity quantity; 9396 9397 /** 9398 * If the item is not a group then this is the fee for the product or service, 9399 * otherwise this is the total of the fees for the details of the group. 9400 */ 9401 @Child(name = "unitPrice", type = { Money.class }, order = 11, min = 0, max = 1, modifier = false, summary = false) 9402 @Description(shortDefinition = "Fee, charge or cost per item", formalDefinition = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.") 9403 protected Money unitPrice; 9404 9405 /** 9406 * A real number that represents a multiplier used in determining the overall 9407 * value of services delivered and/or goods received. The concept of a Factor 9408 * allows for a discount or surcharge multiplier to be applied to a monetary 9409 * amount. 9410 */ 9411 @Child(name = "factor", type = { 9412 DecimalType.class }, order = 12, min = 0, max = 1, modifier = false, summary = false) 9413 @Description(shortDefinition = "Price scaling factor", formalDefinition = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.") 9414 protected DecimalType factor; 9415 9416 /** 9417 * The quantity times the unit price for an additional service or product or 9418 * charge. 9419 */ 9420 @Child(name = "net", type = { Money.class }, order = 13, min = 0, max = 1, modifier = false, summary = false) 9421 @Description(shortDefinition = "Total item cost", formalDefinition = "The quantity times the unit price for an additional service or product or charge.") 9422 protected Money net; 9423 9424 /** 9425 * Physical service site on the patient (limb, tooth, etc.). 9426 */ 9427 @Child(name = "bodySite", type = { 9428 CodeableConcept.class }, order = 14, min = 0, max = 1, modifier = false, summary = false) 9429 @Description(shortDefinition = "Anatomical location", formalDefinition = "Physical service site on the patient (limb, tooth, etc.).") 9430 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/tooth") 9431 protected CodeableConcept bodySite; 9432 9433 /** 9434 * A region or surface of the bodySite, e.g. limb region or tooth surface(s). 9435 */ 9436 @Child(name = "subSite", type = { 9437 CodeableConcept.class }, order = 15, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9438 @Description(shortDefinition = "Anatomical sub-location", formalDefinition = "A region or surface of the bodySite, e.g. limb region or tooth surface(s).") 9439 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/surface") 9440 protected List<CodeableConcept> subSite; 9441 9442 /** 9443 * The numbers associated with notes below which apply to the adjudication of 9444 * this item. 9445 */ 9446 @Child(name = "noteNumber", type = { 9447 PositiveIntType.class }, order = 16, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9448 @Description(shortDefinition = "Applicable note numbers", formalDefinition = "The numbers associated with notes below which apply to the adjudication of this item.") 9449 protected List<PositiveIntType> noteNumber; 9450 9451 /** 9452 * The adjudication results. 9453 */ 9454 @Child(name = "adjudication", type = { 9455 AdjudicationComponent.class }, order = 17, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9456 @Description(shortDefinition = "Added items adjudication", formalDefinition = "The adjudication results.") 9457 protected List<AdjudicationComponent> adjudication; 9458 9459 /** 9460 * The second-tier service adjudications for payor added services. 9461 */ 9462 @Child(name = "detail", type = {}, order = 18, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 9463 @Description(shortDefinition = "Insurer added line items", formalDefinition = "The second-tier service adjudications for payor added services.") 9464 protected List<AddedItemDetailComponent> detail; 9465 9466 private static final long serialVersionUID = -206524210L; 9467 9468 /** 9469 * Constructor 9470 */ 9471 public AddedItemComponent() { 9472 super(); 9473 } 9474 9475 /** 9476 * Constructor 9477 */ 9478 public AddedItemComponent(CodeableConcept productOrService) { 9479 super(); 9480 this.productOrService = productOrService; 9481 } 9482 9483 /** 9484 * @return {@link #itemSequence} (Claim items which this service line is 9485 * intended to replace.) 9486 */ 9487 public List<PositiveIntType> getItemSequence() { 9488 if (this.itemSequence == null) 9489 this.itemSequence = new ArrayList<PositiveIntType>(); 9490 return this.itemSequence; 9491 } 9492 9493 /** 9494 * @return Returns a reference to <code>this</code> for easy method chaining 9495 */ 9496 public AddedItemComponent setItemSequence(List<PositiveIntType> theItemSequence) { 9497 this.itemSequence = theItemSequence; 9498 return this; 9499 } 9500 9501 public boolean hasItemSequence() { 9502 if (this.itemSequence == null) 9503 return false; 9504 for (PositiveIntType item : this.itemSequence) 9505 if (!item.isEmpty()) 9506 return true; 9507 return false; 9508 } 9509 9510 /** 9511 * @return {@link #itemSequence} (Claim items which this service line is 9512 * intended to replace.) 9513 */ 9514 public PositiveIntType addItemSequenceElement() {// 2 9515 PositiveIntType t = new PositiveIntType(); 9516 if (this.itemSequence == null) 9517 this.itemSequence = new ArrayList<PositiveIntType>(); 9518 this.itemSequence.add(t); 9519 return t; 9520 } 9521 9522 /** 9523 * @param value {@link #itemSequence} (Claim items which this service line is 9524 * intended to replace.) 9525 */ 9526 public AddedItemComponent addItemSequence(int value) { // 1 9527 PositiveIntType t = new PositiveIntType(); 9528 t.setValue(value); 9529 if (this.itemSequence == null) 9530 this.itemSequence = new ArrayList<PositiveIntType>(); 9531 this.itemSequence.add(t); 9532 return this; 9533 } 9534 9535 /** 9536 * @param value {@link #itemSequence} (Claim items which this service line is 9537 * intended to replace.) 9538 */ 9539 public boolean hasItemSequence(int value) { 9540 if (this.itemSequence == null) 9541 return false; 9542 for (PositiveIntType v : this.itemSequence) 9543 if (v.getValue().equals(value)) // positiveInt 9544 return true; 9545 return false; 9546 } 9547 9548 /** 9549 * @return {@link #detailSequence} (The sequence number of the details within 9550 * the claim item which this line is intended to replace.) 9551 */ 9552 public List<PositiveIntType> getDetailSequence() { 9553 if (this.detailSequence == null) 9554 this.detailSequence = new ArrayList<PositiveIntType>(); 9555 return this.detailSequence; 9556 } 9557 9558 /** 9559 * @return Returns a reference to <code>this</code> for easy method chaining 9560 */ 9561 public AddedItemComponent setDetailSequence(List<PositiveIntType> theDetailSequence) { 9562 this.detailSequence = theDetailSequence; 9563 return this; 9564 } 9565 9566 public boolean hasDetailSequence() { 9567 if (this.detailSequence == null) 9568 return false; 9569 for (PositiveIntType item : this.detailSequence) 9570 if (!item.isEmpty()) 9571 return true; 9572 return false; 9573 } 9574 9575 /** 9576 * @return {@link #detailSequence} (The sequence number of the details within 9577 * the claim item which this line is intended to replace.) 9578 */ 9579 public PositiveIntType addDetailSequenceElement() {// 2 9580 PositiveIntType t = new PositiveIntType(); 9581 if (this.detailSequence == null) 9582 this.detailSequence = new ArrayList<PositiveIntType>(); 9583 this.detailSequence.add(t); 9584 return t; 9585 } 9586 9587 /** 9588 * @param value {@link #detailSequence} (The sequence number of the details 9589 * within the claim item which this line is intended to replace.) 9590 */ 9591 public AddedItemComponent addDetailSequence(int value) { // 1 9592 PositiveIntType t = new PositiveIntType(); 9593 t.setValue(value); 9594 if (this.detailSequence == null) 9595 this.detailSequence = new ArrayList<PositiveIntType>(); 9596 this.detailSequence.add(t); 9597 return this; 9598 } 9599 9600 /** 9601 * @param value {@link #detailSequence} (The sequence number of the details 9602 * within the claim item which this line is intended to replace.) 9603 */ 9604 public boolean hasDetailSequence(int value) { 9605 if (this.detailSequence == null) 9606 return false; 9607 for (PositiveIntType v : this.detailSequence) 9608 if (v.getValue().equals(value)) // positiveInt 9609 return true; 9610 return false; 9611 } 9612 9613 /** 9614 * @return {@link #subDetailSequence} (The sequence number of the sub-details 9615 * woithin the details within the claim item which this line is intended 9616 * to replace.) 9617 */ 9618 public List<PositiveIntType> getSubDetailSequence() { 9619 if (this.subDetailSequence == null) 9620 this.subDetailSequence = new ArrayList<PositiveIntType>(); 9621 return this.subDetailSequence; 9622 } 9623 9624 /** 9625 * @return Returns a reference to <code>this</code> for easy method chaining 9626 */ 9627 public AddedItemComponent setSubDetailSequence(List<PositiveIntType> theSubDetailSequence) { 9628 this.subDetailSequence = theSubDetailSequence; 9629 return this; 9630 } 9631 9632 public boolean hasSubDetailSequence() { 9633 if (this.subDetailSequence == null) 9634 return false; 9635 for (PositiveIntType item : this.subDetailSequence) 9636 if (!item.isEmpty()) 9637 return true; 9638 return false; 9639 } 9640 9641 /** 9642 * @return {@link #subDetailSequence} (The sequence number of the sub-details 9643 * woithin the details within the claim item which this line is intended 9644 * to replace.) 9645 */ 9646 public PositiveIntType addSubDetailSequenceElement() {// 2 9647 PositiveIntType t = new PositiveIntType(); 9648 if (this.subDetailSequence == null) 9649 this.subDetailSequence = new ArrayList<PositiveIntType>(); 9650 this.subDetailSequence.add(t); 9651 return t; 9652 } 9653 9654 /** 9655 * @param value {@link #subDetailSequence} (The sequence number of the 9656 * sub-details woithin the details within the claim item which this 9657 * line is intended to replace.) 9658 */ 9659 public AddedItemComponent addSubDetailSequence(int value) { // 1 9660 PositiveIntType t = new PositiveIntType(); 9661 t.setValue(value); 9662 if (this.subDetailSequence == null) 9663 this.subDetailSequence = new ArrayList<PositiveIntType>(); 9664 this.subDetailSequence.add(t); 9665 return this; 9666 } 9667 9668 /** 9669 * @param value {@link #subDetailSequence} (The sequence number of the 9670 * sub-details woithin the details within the claim item which this 9671 * line is intended to replace.) 9672 */ 9673 public boolean hasSubDetailSequence(int value) { 9674 if (this.subDetailSequence == null) 9675 return false; 9676 for (PositiveIntType v : this.subDetailSequence) 9677 if (v.getValue().equals(value)) // positiveInt 9678 return true; 9679 return false; 9680 } 9681 9682 /** 9683 * @return {@link #provider} (The providers who are authorized for the services 9684 * rendered to the patient.) 9685 */ 9686 public List<Reference> getProvider() { 9687 if (this.provider == null) 9688 this.provider = new ArrayList<Reference>(); 9689 return this.provider; 9690 } 9691 9692 /** 9693 * @return Returns a reference to <code>this</code> for easy method chaining 9694 */ 9695 public AddedItemComponent setProvider(List<Reference> theProvider) { 9696 this.provider = theProvider; 9697 return this; 9698 } 9699 9700 public boolean hasProvider() { 9701 if (this.provider == null) 9702 return false; 9703 for (Reference item : this.provider) 9704 if (!item.isEmpty()) 9705 return true; 9706 return false; 9707 } 9708 9709 public Reference addProvider() { // 3 9710 Reference t = new Reference(); 9711 if (this.provider == null) 9712 this.provider = new ArrayList<Reference>(); 9713 this.provider.add(t); 9714 return t; 9715 } 9716 9717 public AddedItemComponent addProvider(Reference t) { // 3 9718 if (t == null) 9719 return this; 9720 if (this.provider == null) 9721 this.provider = new ArrayList<Reference>(); 9722 this.provider.add(t); 9723 return this; 9724 } 9725 9726 /** 9727 * @return The first repetition of repeating field {@link #provider}, creating 9728 * it if it does not already exist 9729 */ 9730 public Reference getProviderFirstRep() { 9731 if (getProvider().isEmpty()) { 9732 addProvider(); 9733 } 9734 return getProvider().get(0); 9735 } 9736 9737 /** 9738 * @deprecated Use Reference#setResource(IBaseResource) instead 9739 */ 9740 @Deprecated 9741 public List<Resource> getProviderTarget() { 9742 if (this.providerTarget == null) 9743 this.providerTarget = new ArrayList<Resource>(); 9744 return this.providerTarget; 9745 } 9746 9747 /** 9748 * @return {@link #productOrService} (When the value is a group code then this 9749 * item collects a set of related claim details, otherwise this contains 9750 * the product, service, drug or other billing code for the item.) 9751 */ 9752 public CodeableConcept getProductOrService() { 9753 if (this.productOrService == null) 9754 if (Configuration.errorOnAutoCreate()) 9755 throw new Error("Attempt to auto-create AddedItemComponent.productOrService"); 9756 else if (Configuration.doAutoCreate()) 9757 this.productOrService = new CodeableConcept(); // cc 9758 return this.productOrService; 9759 } 9760 9761 public boolean hasProductOrService() { 9762 return this.productOrService != null && !this.productOrService.isEmpty(); 9763 } 9764<