001package org.hl7.fhir.instance.model; 002 003/* 004 Copyright (c) 2011+, HL7, Inc. 005 All rights reserved. 006 007 Redistribution and use in source and binary forms, with or without modification, 008 are permitted provided that the following conditions are met: 009 010 * Redistributions of source code must retain the above copyright notice, this 011 list of conditions and the following disclaimer. 012 * Redistributions in binary form must reproduce the above copyright notice, 013 this list of conditions and the following disclaimer in the documentation 014 and/or other materials provided with the distribution. 015 * Neither the name of HL7 nor the names of its contributors may be used to 016 endorse or promote products derived from this software without specific 017 prior written permission. 018 019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 022 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 023 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 024 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 025 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 027 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 028 POSSIBILITY OF SUCH DAMAGE. 029 030*/ 031 032// Generated on Wed, Jul 13, 2016 05:32+1000 for FHIR v1.0.2 033import java.util.ArrayList; 034import java.util.List; 035 036import org.hl7.fhir.exceptions.FHIRException; 037import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 038import org.hl7.fhir.utilities.Utilities; 039 040import ca.uhn.fhir.model.api.annotation.*; 041/** 042 * Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization. 043 */ 044@ResourceDef(name="Group", profile="http://hl7.org/fhir/Profile/Group") 045public class Group extends DomainResource { 046 047 public enum GroupType { 048 /** 049 * Group contains "person" Patient resources 050 */ 051 PERSON, 052 /** 053 * Group contains "animal" Patient resources 054 */ 055 ANIMAL, 056 /** 057 * Group contains healthcare practitioner resources 058 */ 059 PRACTITIONER, 060 /** 061 * Group contains Device resources 062 */ 063 DEVICE, 064 /** 065 * Group contains Medication resources 066 */ 067 MEDICATION, 068 /** 069 * Group contains Substance resources 070 */ 071 SUBSTANCE, 072 /** 073 * added to help the parsers 074 */ 075 NULL; 076 public static GroupType fromCode(String codeString) throws FHIRException { 077 if (codeString == null || "".equals(codeString)) 078 return null; 079 if ("person".equals(codeString)) 080 return PERSON; 081 if ("animal".equals(codeString)) 082 return ANIMAL; 083 if ("practitioner".equals(codeString)) 084 return PRACTITIONER; 085 if ("device".equals(codeString)) 086 return DEVICE; 087 if ("medication".equals(codeString)) 088 return MEDICATION; 089 if ("substance".equals(codeString)) 090 return SUBSTANCE; 091 throw new FHIRException("Unknown GroupType code '"+codeString+"'"); 092 } 093 public String toCode() { 094 switch (this) { 095 case PERSON: return "person"; 096 case ANIMAL: return "animal"; 097 case PRACTITIONER: return "practitioner"; 098 case DEVICE: return "device"; 099 case MEDICATION: return "medication"; 100 case SUBSTANCE: return "substance"; 101 default: return "?"; 102 } 103 } 104 public String getSystem() { 105 switch (this) { 106 case PERSON: return "http://hl7.org/fhir/group-type"; 107 case ANIMAL: return "http://hl7.org/fhir/group-type"; 108 case PRACTITIONER: return "http://hl7.org/fhir/group-type"; 109 case DEVICE: return "http://hl7.org/fhir/group-type"; 110 case MEDICATION: return "http://hl7.org/fhir/group-type"; 111 case SUBSTANCE: return "http://hl7.org/fhir/group-type"; 112 default: return "?"; 113 } 114 } 115 public String getDefinition() { 116 switch (this) { 117 case PERSON: return "Group contains \"person\" Patient resources"; 118 case ANIMAL: return "Group contains \"animal\" Patient resources"; 119 case PRACTITIONER: return "Group contains healthcare practitioner resources"; 120 case DEVICE: return "Group contains Device resources"; 121 case MEDICATION: return "Group contains Medication resources"; 122 case SUBSTANCE: return "Group contains Substance resources"; 123 default: return "?"; 124 } 125 } 126 public String getDisplay() { 127 switch (this) { 128 case PERSON: return "Person"; 129 case ANIMAL: return "Animal"; 130 case PRACTITIONER: return "Practitioner"; 131 case DEVICE: return "Device"; 132 case MEDICATION: return "Medication"; 133 case SUBSTANCE: return "Substance"; 134 default: return "?"; 135 } 136 } 137 } 138 139 public static class GroupTypeEnumFactory implements EnumFactory<GroupType> { 140 public GroupType fromCode(String codeString) throws IllegalArgumentException { 141 if (codeString == null || "".equals(codeString)) 142 if (codeString == null || "".equals(codeString)) 143 return null; 144 if ("person".equals(codeString)) 145 return GroupType.PERSON; 146 if ("animal".equals(codeString)) 147 return GroupType.ANIMAL; 148 if ("practitioner".equals(codeString)) 149 return GroupType.PRACTITIONER; 150 if ("device".equals(codeString)) 151 return GroupType.DEVICE; 152 if ("medication".equals(codeString)) 153 return GroupType.MEDICATION; 154 if ("substance".equals(codeString)) 155 return GroupType.SUBSTANCE; 156 throw new IllegalArgumentException("Unknown GroupType code '"+codeString+"'"); 157 } 158 public Enumeration<GroupType> fromType(Base code) throws FHIRException { 159 if (code == null || code.isEmpty()) 160 return null; 161 String codeString = ((PrimitiveType) code).asStringValue(); 162 if (codeString == null || "".equals(codeString)) 163 return null; 164 if ("person".equals(codeString)) 165 return new Enumeration<GroupType>(this, GroupType.PERSON); 166 if ("animal".equals(codeString)) 167 return new Enumeration<GroupType>(this, GroupType.ANIMAL); 168 if ("practitioner".equals(codeString)) 169 return new Enumeration<GroupType>(this, GroupType.PRACTITIONER); 170 if ("device".equals(codeString)) 171 return new Enumeration<GroupType>(this, GroupType.DEVICE); 172 if ("medication".equals(codeString)) 173 return new Enumeration<GroupType>(this, GroupType.MEDICATION); 174 if ("substance".equals(codeString)) 175 return new Enumeration<GroupType>(this, GroupType.SUBSTANCE); 176 throw new FHIRException("Unknown GroupType code '"+codeString+"'"); 177 } 178 public String toCode(GroupType code) { 179 if (code == GroupType.PERSON) 180 return "person"; 181 if (code == GroupType.ANIMAL) 182 return "animal"; 183 if (code == GroupType.PRACTITIONER) 184 return "practitioner"; 185 if (code == GroupType.DEVICE) 186 return "device"; 187 if (code == GroupType.MEDICATION) 188 return "medication"; 189 if (code == GroupType.SUBSTANCE) 190 return "substance"; 191 return "?"; 192 } 193 } 194 195 @Block() 196 public static class GroupCharacteristicComponent extends BackboneElement implements IBaseBackboneElement { 197 /** 198 * A code that identifies the kind of trait being asserted. 199 */ 200 @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false) 201 @Description(shortDefinition="Kind of characteristic", formalDefinition="A code that identifies the kind of trait being asserted." ) 202 protected CodeableConcept code; 203 204 /** 205 * The value of the trait that holds (or does not hold - see 'exclude') for members of the group. 206 */ 207 @Child(name = "value", type = {CodeableConcept.class, BooleanType.class, Quantity.class, Range.class}, order=2, min=1, max=1, modifier=false, summary=false) 208 @Description(shortDefinition="Value held by characteristic", formalDefinition="The value of the trait that holds (or does not hold - see 'exclude') for members of the group." ) 209 protected Type value; 210 211 /** 212 * If true, indicates the characteristic is one that is NOT held by members of the group. 213 */ 214 @Child(name = "exclude", type = {BooleanType.class}, order=3, min=1, max=1, modifier=true, summary=false) 215 @Description(shortDefinition="Group includes or excludes", formalDefinition="If true, indicates the characteristic is one that is NOT held by members of the group." ) 216 protected BooleanType exclude; 217 218 /** 219 * The period over which the characteristic is tested; e.g. the patient had an operation during the month of June. 220 */ 221 @Child(name = "period", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=false) 222 @Description(shortDefinition="Period over which characteristic is tested", formalDefinition="The period over which the characteristic is tested; e.g. the patient had an operation during the month of June." ) 223 protected Period period; 224 225 private static final long serialVersionUID = -1000688967L; 226 227 /* 228 * Constructor 229 */ 230 public GroupCharacteristicComponent() { 231 super(); 232 } 233 234 /* 235 * Constructor 236 */ 237 public GroupCharacteristicComponent(CodeableConcept code, Type value, BooleanType exclude) { 238 super(); 239 this.code = code; 240 this.value = value; 241 this.exclude = exclude; 242 } 243 244 /** 245 * @return {@link #code} (A code that identifies the kind of trait being asserted.) 246 */ 247 public CodeableConcept getCode() { 248 if (this.code == null) 249 if (Configuration.errorOnAutoCreate()) 250 throw new Error("Attempt to auto-create GroupCharacteristicComponent.code"); 251 else if (Configuration.doAutoCreate()) 252 this.code = new CodeableConcept(); // cc 253 return this.code; 254 } 255 256 public boolean hasCode() { 257 return this.code != null && !this.code.isEmpty(); 258 } 259 260 /** 261 * @param value {@link #code} (A code that identifies the kind of trait being asserted.) 262 */ 263 public GroupCharacteristicComponent setCode(CodeableConcept value) { 264 this.code = value; 265 return this; 266 } 267 268 /** 269 * @return {@link #value} (The value of the trait that holds (or does not hold - see 'exclude') for members of the group.) 270 */ 271 public Type getValue() { 272 return this.value; 273 } 274 275 /** 276 * @return {@link #value} (The value of the trait that holds (or does not hold - see 'exclude') for members of the group.) 277 */ 278 public CodeableConcept getValueCodeableConcept() throws FHIRException { 279 if (!(this.value instanceof CodeableConcept)) 280 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered"); 281 return (CodeableConcept) this.value; 282 } 283 284 public boolean hasValueCodeableConcept() { 285 return this.value instanceof CodeableConcept; 286 } 287 288 /** 289 * @return {@link #value} (The value of the trait that holds (or does not hold - see 'exclude') for members of the group.) 290 */ 291 public BooleanType getValueBooleanType() throws FHIRException { 292 if (!(this.value instanceof BooleanType)) 293 throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered"); 294 return (BooleanType) this.value; 295 } 296 297 public boolean hasValueBooleanType() { 298 return this.value instanceof BooleanType; 299 } 300 301 /** 302 * @return {@link #value} (The value of the trait that holds (or does not hold - see 'exclude') for members of the group.) 303 */ 304 public Quantity getValueQuantity() throws FHIRException { 305 if (!(this.value instanceof Quantity)) 306 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered"); 307 return (Quantity) this.value; 308 } 309 310 public boolean hasValueQuantity() { 311 return this.value instanceof Quantity; 312 } 313 314 /** 315 * @return {@link #value} (The value of the trait that holds (or does not hold - see 'exclude') for members of the group.) 316 */ 317 public Range getValueRange() throws FHIRException { 318 if (!(this.value instanceof Range)) 319 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered"); 320 return (Range) this.value; 321 } 322 323 public boolean hasValueRange() { 324 return this.value instanceof Range; 325 } 326 327 public boolean hasValue() { 328 return this.value != null && !this.value.isEmpty(); 329 } 330 331 /** 332 * @param value {@link #value} (The value of the trait that holds (or does not hold - see 'exclude') for members of the group.) 333 */ 334 public GroupCharacteristicComponent setValue(Type value) { 335 this.value = value; 336 return this; 337 } 338 339 /** 340 * @return {@link #exclude} (If true, indicates the characteristic is one that is NOT held by members of the group.). This is the underlying object with id, value and extensions. The accessor "getExclude" gives direct access to the value 341 */ 342 public BooleanType getExcludeElement() { 343 if (this.exclude == null) 344 if (Configuration.errorOnAutoCreate()) 345 throw new Error("Attempt to auto-create GroupCharacteristicComponent.exclude"); 346 else if (Configuration.doAutoCreate()) 347 this.exclude = new BooleanType(); // bb 348 return this.exclude; 349 } 350 351 public boolean hasExcludeElement() { 352 return this.exclude != null && !this.exclude.isEmpty(); 353 } 354 355 public boolean hasExclude() { 356 return this.exclude != null && !this.exclude.isEmpty(); 357 } 358 359 /** 360 * @param value {@link #exclude} (If true, indicates the characteristic is one that is NOT held by members of the group.). This is the underlying object with id, value and extensions. The accessor "getExclude" gives direct access to the value 361 */ 362 public GroupCharacteristicComponent setExcludeElement(BooleanType value) { 363 this.exclude = value; 364 return this; 365 } 366 367 /** 368 * @return If true, indicates the characteristic is one that is NOT held by members of the group. 369 */ 370 public boolean getExclude() { 371 return this.exclude == null || this.exclude.isEmpty() ? false : this.exclude.getValue(); 372 } 373 374 /** 375 * @param value If true, indicates the characteristic is one that is NOT held by members of the group. 376 */ 377 public GroupCharacteristicComponent setExclude(boolean value) { 378 if (this.exclude == null) 379 this.exclude = new BooleanType(); 380 this.exclude.setValue(value); 381 return this; 382 } 383 384 /** 385 * @return {@link #period} (The period over which the characteristic is tested; e.g. the patient had an operation during the month of June.) 386 */ 387 public Period getPeriod() { 388 if (this.period == null) 389 if (Configuration.errorOnAutoCreate()) 390 throw new Error("Attempt to auto-create GroupCharacteristicComponent.period"); 391 else if (Configuration.doAutoCreate()) 392 this.period = new Period(); // cc 393 return this.period; 394 } 395 396 public boolean hasPeriod() { 397 return this.period != null && !this.period.isEmpty(); 398 } 399 400 /** 401 * @param value {@link #period} (The period over which the characteristic is tested; e.g. the patient had an operation during the month of June.) 402 */ 403 public GroupCharacteristicComponent setPeriod(Period value) { 404 this.period = value; 405 return this; 406 } 407 408 protected void listChildren(List<Property> childrenList) { 409 super.listChildren(childrenList); 410 childrenList.add(new Property("code", "CodeableConcept", "A code that identifies the kind of trait being asserted.", 0, java.lang.Integer.MAX_VALUE, code)); 411 childrenList.add(new Property("value[x]", "CodeableConcept|boolean|Quantity|Range", "The value of the trait that holds (or does not hold - see 'exclude') for members of the group.", 0, java.lang.Integer.MAX_VALUE, value)); 412 childrenList.add(new Property("exclude", "boolean", "If true, indicates the characteristic is one that is NOT held by members of the group.", 0, java.lang.Integer.MAX_VALUE, exclude)); 413 childrenList.add(new Property("period", "Period", "The period over which the characteristic is tested; e.g. the patient had an operation during the month of June.", 0, java.lang.Integer.MAX_VALUE, period)); 414 } 415 416 @Override 417 public void setProperty(String name, Base value) throws FHIRException { 418 if (name.equals("code")) 419 this.code = castToCodeableConcept(value); // CodeableConcept 420 else if (name.equals("value[x]")) 421 this.value = (Type) value; // Type 422 else if (name.equals("exclude")) 423 this.exclude = castToBoolean(value); // BooleanType 424 else if (name.equals("period")) 425 this.period = castToPeriod(value); // Period 426 else 427 super.setProperty(name, value); 428 } 429 430 @Override 431 public Base addChild(String name) throws FHIRException { 432 if (name.equals("code")) { 433 this.code = new CodeableConcept(); 434 return this.code; 435 } 436 else if (name.equals("valueCodeableConcept")) { 437 this.value = new CodeableConcept(); 438 return this.value; 439 } 440 else if (name.equals("valueBoolean")) { 441 this.value = new BooleanType(); 442 return this.value; 443 } 444 else if (name.equals("valueQuantity")) { 445 this.value = new Quantity(); 446 return this.value; 447 } 448 else if (name.equals("valueRange")) { 449 this.value = new Range(); 450 return this.value; 451 } 452 else if (name.equals("exclude")) { 453 throw new FHIRException("Cannot call addChild on a primitive type Group.exclude"); 454 } 455 else if (name.equals("period")) { 456 this.period = new Period(); 457 return this.period; 458 } 459 else 460 return super.addChild(name); 461 } 462 463 public GroupCharacteristicComponent copy() { 464 GroupCharacteristicComponent dst = new GroupCharacteristicComponent(); 465 copyValues(dst); 466 dst.code = code == null ? null : code.copy(); 467 dst.value = value == null ? null : value.copy(); 468 dst.exclude = exclude == null ? null : exclude.copy(); 469 dst.period = period == null ? null : period.copy(); 470 return dst; 471 } 472 473 @Override 474 public boolean equalsDeep(Base other) { 475 if (!super.equalsDeep(other)) 476 return false; 477 if (!(other instanceof GroupCharacteristicComponent)) 478 return false; 479 GroupCharacteristicComponent o = (GroupCharacteristicComponent) other; 480 return compareDeep(code, o.code, true) && compareDeep(value, o.value, true) && compareDeep(exclude, o.exclude, true) 481 && compareDeep(period, o.period, true); 482 } 483 484 @Override 485 public boolean equalsShallow(Base other) { 486 if (!super.equalsShallow(other)) 487 return false; 488 if (!(other instanceof GroupCharacteristicComponent)) 489 return false; 490 GroupCharacteristicComponent o = (GroupCharacteristicComponent) other; 491 return compareValues(exclude, o.exclude, true); 492 } 493 494 public boolean isEmpty() { 495 return super.isEmpty() && (code == null || code.isEmpty()) && (value == null || value.isEmpty()) 496 && (exclude == null || exclude.isEmpty()) && (period == null || period.isEmpty()); 497 } 498 499 public String fhirType() { 500 return "Group.characteristic"; 501 502 } 503 504 } 505 506 @Block() 507 public static class GroupMemberComponent extends BackboneElement implements IBaseBackboneElement { 508 /** 509 * A reference to the entity that is a member of the group. Must be consistent with Group.type. 510 */ 511 @Child(name = "entity", type = {Patient.class, Practitioner.class, Device.class, Medication.class, Substance.class}, order=1, min=1, max=1, modifier=false, summary=false) 512 @Description(shortDefinition="Reference to the group member", formalDefinition="A reference to the entity that is a member of the group. Must be consistent with Group.type." ) 513 protected Reference entity; 514 515 /** 516 * The actual object that is the target of the reference (A reference to the entity that is a member of the group. Must be consistent with Group.type.) 517 */ 518 protected Resource entityTarget; 519 520 /** 521 * The period that the member was in the group, if known. 522 */ 523 @Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=false) 524 @Description(shortDefinition="Period member belonged to the group", formalDefinition="The period that the member was in the group, if known." ) 525 protected Period period; 526 527 /** 528 * A flag to indicate that the member is no longer in the group, but previously may have been a member. 529 */ 530 @Child(name = "inactive", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false) 531 @Description(shortDefinition="If member is no longer in group", formalDefinition="A flag to indicate that the member is no longer in the group, but previously may have been a member." ) 532 protected BooleanType inactive; 533 534 private static final long serialVersionUID = -333869055L; 535 536 /* 537 * Constructor 538 */ 539 public GroupMemberComponent() { 540 super(); 541 } 542 543 /* 544 * Constructor 545 */ 546 public GroupMemberComponent(Reference entity) { 547 super(); 548 this.entity = entity; 549 } 550 551 /** 552 * @return {@link #entity} (A reference to the entity that is a member of the group. Must be consistent with Group.type.) 553 */ 554 public Reference getEntity() { 555 if (this.entity == null) 556 if (Configuration.errorOnAutoCreate()) 557 throw new Error("Attempt to auto-create GroupMemberComponent.entity"); 558 else if (Configuration.doAutoCreate()) 559 this.entity = new Reference(); // cc 560 return this.entity; 561 } 562 563 public boolean hasEntity() { 564 return this.entity != null && !this.entity.isEmpty(); 565 } 566 567 /** 568 * @param value {@link #entity} (A reference to the entity that is a member of the group. Must be consistent with Group.type.) 569 */ 570 public GroupMemberComponent setEntity(Reference value) { 571 this.entity = value; 572 return this; 573 } 574 575 /** 576 * @return {@link #entity} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A reference to the entity that is a member of the group. Must be consistent with Group.type.) 577 */ 578 public Resource getEntityTarget() { 579 return this.entityTarget; 580 } 581 582 /** 583 * @param value {@link #entity} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A reference to the entity that is a member of the group. Must be consistent with Group.type.) 584 */ 585 public GroupMemberComponent setEntityTarget(Resource value) { 586 this.entityTarget = value; 587 return this; 588 } 589 590 /** 591 * @return {@link #period} (The period that the member was in the group, if known.) 592 */ 593 public Period getPeriod() { 594 if (this.period == null) 595 if (Configuration.errorOnAutoCreate()) 596 throw new Error("Attempt to auto-create GroupMemberComponent.period"); 597 else if (Configuration.doAutoCreate()) 598 this.period = new Period(); // cc 599 return this.period; 600 } 601 602 public boolean hasPeriod() { 603 return this.period != null && !this.period.isEmpty(); 604 } 605 606 /** 607 * @param value {@link #period} (The period that the member was in the group, if known.) 608 */ 609 public GroupMemberComponent setPeriod(Period value) { 610 this.period = value; 611 return this; 612 } 613 614 /** 615 * @return {@link #inactive} (A flag to indicate that the member is no longer in the group, but previously may have been a member.). This is the underlying object with id, value and extensions. The accessor "getInactive" gives direct access to the value 616 */ 617 public BooleanType getInactiveElement() { 618 if (this.inactive == null) 619 if (Configuration.errorOnAutoCreate()) 620 throw new Error("Attempt to auto-create GroupMemberComponent.inactive"); 621 else if (Configuration.doAutoCreate()) 622 this.inactive = new BooleanType(); // bb 623 return this.inactive; 624 } 625 626 public boolean hasInactiveElement() { 627 return this.inactive != null && !this.inactive.isEmpty(); 628 } 629 630 public boolean hasInactive() { 631 return this.inactive != null && !this.inactive.isEmpty(); 632 } 633 634 /** 635 * @param value {@link #inactive} (A flag to indicate that the member is no longer in the group, but previously may have been a member.). This is the underlying object with id, value and extensions. The accessor "getInactive" gives direct access to the value 636 */ 637 public GroupMemberComponent setInactiveElement(BooleanType value) { 638 this.inactive = value; 639 return this; 640 } 641 642 /** 643 * @return A flag to indicate that the member is no longer in the group, but previously may have been a member. 644 */ 645 public boolean getInactive() { 646 return this.inactive == null || this.inactive.isEmpty() ? false : this.inactive.getValue(); 647 } 648 649 /** 650 * @param value A flag to indicate that the member is no longer in the group, but previously may have been a member. 651 */ 652 public GroupMemberComponent setInactive(boolean value) { 653 if (this.inactive == null) 654 this.inactive = new BooleanType(); 655 this.inactive.setValue(value); 656 return this; 657 } 658 659 protected void listChildren(List<Property> childrenList) { 660 super.listChildren(childrenList); 661 childrenList.add(new Property("entity", "Reference(Patient|Practitioner|Device|Medication|Substance)", "A reference to the entity that is a member of the group. Must be consistent with Group.type.", 0, java.lang.Integer.MAX_VALUE, entity)); 662 childrenList.add(new Property("period", "Period", "The period that the member was in the group, if known.", 0, java.lang.Integer.MAX_VALUE, period)); 663 childrenList.add(new Property("inactive", "boolean", "A flag to indicate that the member is no longer in the group, but previously may have been a member.", 0, java.lang.Integer.MAX_VALUE, inactive)); 664 } 665 666 @Override 667 public void setProperty(String name, Base value) throws FHIRException { 668 if (name.equals("entity")) 669 this.entity = castToReference(value); // Reference 670 else if (name.equals("period")) 671 this.period = castToPeriod(value); // Period 672 else if (name.equals("inactive")) 673 this.inactive = castToBoolean(value); // BooleanType 674 else 675 super.setProperty(name, value); 676 } 677 678 @Override 679 public Base addChild(String name) throws FHIRException { 680 if (name.equals("entity")) { 681 this.entity = new Reference(); 682 return this.entity; 683 } 684 else if (name.equals("period")) { 685 this.period = new Period(); 686 return this.period; 687 } 688 else if (name.equals("inactive")) { 689 throw new FHIRException("Cannot call addChild on a primitive type Group.inactive"); 690 } 691 else 692 return super.addChild(name); 693 } 694 695 public GroupMemberComponent copy() { 696 GroupMemberComponent dst = new GroupMemberComponent(); 697 copyValues(dst); 698 dst.entity = entity == null ? null : entity.copy(); 699 dst.period = period == null ? null : period.copy(); 700 dst.inactive = inactive == null ? null : inactive.copy(); 701 return dst; 702 } 703 704 @Override 705 public boolean equalsDeep(Base other) { 706 if (!super.equalsDeep(other)) 707 return false; 708 if (!(other instanceof GroupMemberComponent)) 709 return false; 710 GroupMemberComponent o = (GroupMemberComponent) other; 711 return compareDeep(entity, o.entity, true) && compareDeep(period, o.period, true) && compareDeep(inactive, o.inactive, true) 712 ; 713 } 714 715 @Override 716 public boolean equalsShallow(Base other) { 717 if (!super.equalsShallow(other)) 718 return false; 719 if (!(other instanceof GroupMemberComponent)) 720 return false; 721 GroupMemberComponent o = (GroupMemberComponent) other; 722 return compareValues(inactive, o.inactive, true); 723 } 724 725 public boolean isEmpty() { 726 return super.isEmpty() && (entity == null || entity.isEmpty()) && (period == null || period.isEmpty()) 727 && (inactive == null || inactive.isEmpty()); 728 } 729 730 public String fhirType() { 731 return "Group.member"; 732 733 } 734 735 } 736 737 /** 738 * A unique business identifier for this group. 739 */ 740 @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 741 @Description(shortDefinition="Unique id", formalDefinition="A unique business identifier for this group." ) 742 protected List<Identifier> identifier; 743 744 /** 745 * Identifies the broad classification of the kind of resources the group includes. 746 */ 747 @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true) 748 @Description(shortDefinition="person | animal | practitioner | device | medication | substance", formalDefinition="Identifies the broad classification of the kind of resources the group includes." ) 749 protected Enumeration<GroupType> type; 750 751 /** 752 * If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals. 753 */ 754 @Child(name = "actual", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=true) 755 @Description(shortDefinition="Descriptive or actual", formalDefinition="If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals." ) 756 protected BooleanType actual; 757 758 /** 759 * Provides a specific type of resource the group includes; e.g. "cow", "syringe", etc. 760 */ 761 @Child(name = "code", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true) 762 @Description(shortDefinition="Kind of Group members", formalDefinition="Provides a specific type of resource the group includes; e.g. \"cow\", \"syringe\", etc." ) 763 protected CodeableConcept code; 764 765 /** 766 * A label assigned to the group for human identification and communication. 767 */ 768 @Child(name = "name", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true) 769 @Description(shortDefinition="Label for Group", formalDefinition="A label assigned to the group for human identification and communication." ) 770 protected StringType name; 771 772 /** 773 * A count of the number of resource instances that are part of the group. 774 */ 775 @Child(name = "quantity", type = {UnsignedIntType.class}, order=5, min=0, max=1, modifier=false, summary=true) 776 @Description(shortDefinition="Number of members", formalDefinition="A count of the number of resource instances that are part of the group." ) 777 protected UnsignedIntType quantity; 778 779 /** 780 * Identifies the traits shared by members of the group. 781 */ 782 @Child(name = "characteristic", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 783 @Description(shortDefinition="Trait of group members", formalDefinition="Identifies the traits shared by members of the group." ) 784 protected List<GroupCharacteristicComponent> characteristic; 785 786 /** 787 * Identifies the resource instances that are members of the group. 788 */ 789 @Child(name = "member", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 790 @Description(shortDefinition="Who or what is in group", formalDefinition="Identifies the resource instances that are members of the group." ) 791 protected List<GroupMemberComponent> member; 792 793 private static final long serialVersionUID = 1401345819L; 794 795 /* 796 * Constructor 797 */ 798 public Group() { 799 super(); 800 } 801 802 /* 803 * Constructor 804 */ 805 public Group(Enumeration<GroupType> type, BooleanType actual) { 806 super(); 807 this.type = type; 808 this.actual = actual; 809 } 810 811 /** 812 * @return {@link #identifier} (A unique business identifier for this group.) 813 */ 814 public List<Identifier> getIdentifier() { 815 if (this.identifier == null) 816 this.identifier = new ArrayList<Identifier>(); 817 return this.identifier; 818 } 819 820 public boolean hasIdentifier() { 821 if (this.identifier == null) 822 return false; 823 for (Identifier item : this.identifier) 824 if (!item.isEmpty()) 825 return true; 826 return false; 827 } 828 829 /** 830 * @return {@link #identifier} (A unique business identifier for this group.) 831 */ 832 // syntactic sugar 833 public Identifier addIdentifier() { //3 834 Identifier t = new Identifier(); 835 if (this.identifier == null) 836 this.identifier = new ArrayList<Identifier>(); 837 this.identifier.add(t); 838 return t; 839 } 840 841 // syntactic sugar 842 public Group addIdentifier(Identifier t) { //3 843 if (t == null) 844 return this; 845 if (this.identifier == null) 846 this.identifier = new ArrayList<Identifier>(); 847 this.identifier.add(t); 848 return this; 849 } 850 851 /** 852 * @return {@link #type} (Identifies the broad classification of the kind of resources the group includes.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value 853 */ 854 public Enumeration<GroupType> getTypeElement() { 855 if (this.type == null) 856 if (Configuration.errorOnAutoCreate()) 857 throw new Error("Attempt to auto-create Group.type"); 858 else if (Configuration.doAutoCreate()) 859 this.type = new Enumeration<GroupType>(new GroupTypeEnumFactory()); // bb 860 return this.type; 861 } 862 863 public boolean hasTypeElement() { 864 return this.type != null && !this.type.isEmpty(); 865 } 866 867 public boolean hasType() { 868 return this.type != null && !this.type.isEmpty(); 869 } 870 871 /** 872 * @param value {@link #type} (Identifies the broad classification of the kind of resources the group includes.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value 873 */ 874 public Group setTypeElement(Enumeration<GroupType> value) { 875 this.type = value; 876 return this; 877 } 878 879 /** 880 * @return Identifies the broad classification of the kind of resources the group includes. 881 */ 882 public GroupType getType() { 883 return this.type == null ? null : this.type.getValue(); 884 } 885 886 /** 887 * @param value Identifies the broad classification of the kind of resources the group includes. 888 */ 889 public Group setType(GroupType value) { 890 if (this.type == null) 891 this.type = new Enumeration<GroupType>(new GroupTypeEnumFactory()); 892 this.type.setValue(value); 893 return this; 894 } 895 896 /** 897 * @return {@link #actual} (If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals.). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value 898 */ 899 public BooleanType getActualElement() { 900 if (this.actual == null) 901 if (Configuration.errorOnAutoCreate()) 902 throw new Error("Attempt to auto-create Group.actual"); 903 else if (Configuration.doAutoCreate()) 904 this.actual = new BooleanType(); // bb 905 return this.actual; 906 } 907 908 public boolean hasActualElement() { 909 return this.actual != null && !this.actual.isEmpty(); 910 } 911 912 public boolean hasActual() { 913 return this.actual != null && !this.actual.isEmpty(); 914 } 915 916 /** 917 * @param value {@link #actual} (If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals.). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value 918 */ 919 public Group setActualElement(BooleanType value) { 920 this.actual = value; 921 return this; 922 } 923 924 /** 925 * @return If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals. 926 */ 927 public boolean getActual() { 928 return this.actual == null || this.actual.isEmpty() ? false : this.actual.getValue(); 929 } 930 931 /** 932 * @param value If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals. 933 */ 934 public Group setActual(boolean value) { 935 if (this.actual == null) 936 this.actual = new BooleanType(); 937 this.actual.setValue(value); 938 return this; 939 } 940 941 /** 942 * @return {@link #code} (Provides a specific type of resource the group includes; e.g. "cow", "syringe", etc.) 943 */ 944 public CodeableConcept getCode() { 945 if (this.code == null) 946 if (Configuration.errorOnAutoCreate()) 947 throw new Error("Attempt to auto-create Group.code"); 948 else if (Configuration.doAutoCreate()) 949 this.code = new CodeableConcept(); // cc 950 return this.code; 951 } 952 953 public boolean hasCode() { 954 return this.code != null && !this.code.isEmpty(); 955 } 956 957 /** 958 * @param value {@link #code} (Provides a specific type of resource the group includes; e.g. "cow", "syringe", etc.) 959 */ 960 public Group setCode(CodeableConcept value) { 961 this.code = value; 962 return this; 963 } 964 965 /** 966 * @return {@link #name} (A label assigned to the group for human identification and communication.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value 967 */ 968 public StringType getNameElement() { 969 if (this.name == null) 970 if (Configuration.errorOnAutoCreate()) 971 throw new Error("Attempt to auto-create Group.name"); 972 else if (Configuration.doAutoCreate()) 973 this.name = new StringType(); // bb 974 return this.name; 975 } 976 977 public boolean hasNameElement() { 978 return this.name != null && !this.name.isEmpty(); 979 } 980 981 public boolean hasName() { 982 return this.name != null && !this.name.isEmpty(); 983 } 984 985 /** 986 * @param value {@link #name} (A label assigned to the group for human identification and communication.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value 987 */ 988 public Group setNameElement(StringType value) { 989 this.name = value; 990 return this; 991 } 992 993 /** 994 * @return A label assigned to the group for human identification and communication. 995 */ 996 public String getName() { 997 return this.name == null ? null : this.name.getValue(); 998 } 999 1000 /** 1001 * @param value A label assigned to the group for human identification and communication. 1002 */ 1003 public Group setName(String value) { 1004 if (Utilities.noString(value)) 1005 this.name = null; 1006 else { 1007 if (this.name == null) 1008 this.name = new StringType(); 1009 this.name.setValue(value); 1010 } 1011 return this; 1012 } 1013 1014 /** 1015 * @return {@link #quantity} (A count of the number of resource instances that are part of the group.). This is the underlying object with id, value and extensions. The accessor "getQuantity" gives direct access to the value 1016 */ 1017 public UnsignedIntType getQuantityElement() { 1018 if (this.quantity == null) 1019 if (Configuration.errorOnAutoCreate()) 1020 throw new Error("Attempt to auto-create Group.quantity"); 1021 else if (Configuration.doAutoCreate()) 1022 this.quantity = new UnsignedIntType(); // bb 1023 return this.quantity; 1024 } 1025 1026 public boolean hasQuantityElement() { 1027 return this.quantity != null && !this.quantity.isEmpty(); 1028 } 1029 1030 public boolean hasQuantity() { 1031 return this.quantity != null && !this.quantity.isEmpty(); 1032 } 1033 1034 /** 1035 * @param value {@link #quantity} (A count of the number of resource instances that are part of the group.). This is the underlying object with id, value and extensions. The accessor "getQuantity" gives direct access to the value 1036 */ 1037 public Group setQuantityElement(UnsignedIntType value) { 1038 this.quantity = value; 1039 return this; 1040 } 1041 1042 /** 1043 * @return A count of the number of resource instances that are part of the group. 1044 */ 1045 public int getQuantity() { 1046 return this.quantity == null || this.quantity.isEmpty() ? 0 : this.quantity.getValue(); 1047 } 1048 1049 /** 1050 * @param value A count of the number of resource instances that are part of the group. 1051 */ 1052 public Group setQuantity(int value) { 1053 if (this.quantity == null) 1054 this.quantity = new UnsignedIntType(); 1055 this.quantity.setValue(value); 1056 return this; 1057 } 1058 1059 /** 1060 * @return {@link #characteristic} (Identifies the traits shared by members of the group.) 1061 */ 1062 public List<GroupCharacteristicComponent> getCharacteristic() { 1063 if (this.characteristic == null) 1064 this.characteristic = new ArrayList<GroupCharacteristicComponent>(); 1065 return this.characteristic; 1066 } 1067 1068 public boolean hasCharacteristic() { 1069 if (this.characteristic == null) 1070 return false; 1071 for (GroupCharacteristicComponent item : this.characteristic) 1072 if (!item.isEmpty()) 1073 return true; 1074 return false; 1075 } 1076 1077 /** 1078 * @return {@link #characteristic} (Identifies the traits shared by members of the group.) 1079 */ 1080 // syntactic sugar 1081 public GroupCharacteristicComponent addCharacteristic() { //3 1082 GroupCharacteristicComponent t = new GroupCharacteristicComponent(); 1083 if (this.characteristic == null) 1084 this.characteristic = new ArrayList<GroupCharacteristicComponent>(); 1085 this.characteristic.add(t); 1086 return t; 1087 } 1088 1089 // syntactic sugar 1090 public Group addCharacteristic(GroupCharacteristicComponent t) { //3 1091 if (t == null) 1092 return this; 1093 if (this.characteristic == null) 1094 this.characteristic = new ArrayList<GroupCharacteristicComponent>(); 1095 this.characteristic.add(t); 1096 return this; 1097 } 1098 1099 /** 1100 * @return {@link #member} (Identifies the resource instances that are members of the group.) 1101 */ 1102 public List<GroupMemberComponent> getMember() { 1103 if (this.member == null) 1104 this.member = new ArrayList<GroupMemberComponent>(); 1105 return this.member; 1106 } 1107 1108 public boolean hasMember() { 1109 if (this.member == null) 1110 return false; 1111 for (GroupMemberComponent item : this.member) 1112 if (!item.isEmpty()) 1113 return true; 1114 return false; 1115 } 1116 1117 /** 1118 * @return {@link #member} (Identifies the resource instances that are members of the group.) 1119 */ 1120 // syntactic sugar 1121 public GroupMemberComponent addMember() { //3 1122 GroupMemberComponent t = new GroupMemberComponent(); 1123 if (this.member == null) 1124 this.member = new ArrayList<GroupMemberComponent>(); 1125 this.member.add(t); 1126 return t; 1127 } 1128 1129 // syntactic sugar 1130 public Group addMember(GroupMemberComponent t) { //3 1131 if (t == null) 1132 return this; 1133 if (this.member == null) 1134 this.member = new ArrayList<GroupMemberComponent>(); 1135 this.member.add(t); 1136 return this; 1137 } 1138 1139 protected void listChildren(List<Property> childrenList) { 1140 super.listChildren(childrenList); 1141 childrenList.add(new Property("identifier", "Identifier", "A unique business identifier for this group.", 0, java.lang.Integer.MAX_VALUE, identifier)); 1142 childrenList.add(new Property("type", "code", "Identifies the broad classification of the kind of resources the group includes.", 0, java.lang.Integer.MAX_VALUE, type)); 1143 childrenList.add(new Property("actual", "boolean", "If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals.", 0, java.lang.Integer.MAX_VALUE, actual)); 1144 childrenList.add(new Property("code", "CodeableConcept", "Provides a specific type of resource the group includes; e.g. \"cow\", \"syringe\", etc.", 0, java.lang.Integer.MAX_VALUE, code)); 1145 childrenList.add(new Property("name", "string", "A label assigned to the group for human identification and communication.", 0, java.lang.Integer.MAX_VALUE, name)); 1146 childrenList.add(new Property("quantity", "unsignedInt", "A count of the number of resource instances that are part of the group.", 0, java.lang.Integer.MAX_VALUE, quantity)); 1147 childrenList.add(new Property("characteristic", "", "Identifies the traits shared by members of the group.", 0, java.lang.Integer.MAX_VALUE, characteristic)); 1148 childrenList.add(new Property("member", "", "Identifies the resource instances that are members of the group.", 0, java.lang.Integer.MAX_VALUE, member)); 1149 } 1150 1151 @Override 1152 public void setProperty(String name, Base value) throws FHIRException { 1153 if (name.equals("identifier")) 1154 this.getIdentifier().add(castToIdentifier(value)); 1155 else if (name.equals("type")) 1156 this.type = new GroupTypeEnumFactory().fromType(value); // Enumeration<GroupType> 1157 else if (name.equals("actual")) 1158 this.actual = castToBoolean(value); // BooleanType 1159 else if (name.equals("code")) 1160 this.code = castToCodeableConcept(value); // CodeableConcept 1161 else if (name.equals("name")) 1162 this.name = castToString(value); // StringType 1163 else if (name.equals("quantity")) 1164 this.quantity = castToUnsignedInt(value); // UnsignedIntType 1165 else if (name.equals("characteristic")) 1166 this.getCharacteristic().add((GroupCharacteristicComponent) value); 1167 else if (name.equals("member")) 1168 this.getMember().add((GroupMemberComponent) value); 1169 else 1170 super.setProperty(name, value); 1171 } 1172 1173 @Override 1174 public Base addChild(String name) throws FHIRException { 1175 if (name.equals("identifier")) { 1176 return addIdentifier(); 1177 } 1178 else if (name.equals("type")) { 1179 throw new FHIRException("Cannot call addChild on a primitive type Group.type"); 1180 } 1181 else if (name.equals("actual")) { 1182 throw new FHIRException("Cannot call addChild on a primitive type Group.actual"); 1183 } 1184 else if (name.equals("code")) { 1185 this.code = new CodeableConcept(); 1186 return this.code; 1187 } 1188 else if (name.equals("name")) { 1189 throw new FHIRException("Cannot call addChild on a primitive type Group.name"); 1190 } 1191 else if (name.equals("quantity")) { 1192 throw new FHIRException("Cannot call addChild on a primitive type Group.quantity"); 1193 } 1194 else if (name.equals("characteristic")) { 1195 return addCharacteristic(); 1196 } 1197 else if (name.equals("member")) { 1198 return addMember(); 1199 } 1200 else 1201 return super.addChild(name); 1202 } 1203 1204 public String fhirType() { 1205 return "Group"; 1206 1207 } 1208 1209 public Group copy() { 1210 Group dst = new Group(); 1211 copyValues(dst); 1212 if (identifier != null) { 1213 dst.identifier = new ArrayList<Identifier>(); 1214 for (Identifier i : identifier) 1215 dst.identifier.add(i.copy()); 1216 }; 1217 dst.type = type == null ? null : type.copy(); 1218 dst.actual = actual == null ? null : actual.copy(); 1219 dst.code = code == null ? null : code.copy(); 1220 dst.name = name == null ? null : name.copy(); 1221 dst.quantity = quantity == null ? null : quantity.copy(); 1222 if (characteristic != null) { 1223 dst.characteristic = new ArrayList<GroupCharacteristicComponent>(); 1224 for (GroupCharacteristicComponent i : characteristic) 1225 dst.characteristic.add(i.copy()); 1226 }; 1227 if (member != null) { 1228 dst.member = new ArrayList<GroupMemberComponent>(); 1229 for (GroupMemberComponent i : member) 1230 dst.member.add(i.copy()); 1231 }; 1232 return dst; 1233 } 1234 1235 protected Group typedCopy() { 1236 return copy(); 1237 } 1238 1239 @Override 1240 public boolean equalsDeep(Base other) { 1241 if (!super.equalsDeep(other)) 1242 return false; 1243 if (!(other instanceof Group)) 1244 return false; 1245 Group o = (Group) other; 1246 return compareDeep(identifier, o.identifier, true) && compareDeep(type, o.type, true) && compareDeep(actual, o.actual, true) 1247 && compareDeep(code, o.code, true) && compareDeep(name, o.name, true) && compareDeep(quantity, o.quantity, true) 1248 && compareDeep(characteristic, o.characteristic, true) && compareDeep(member, o.member, true); 1249 } 1250 1251 @Override 1252 public boolean equalsShallow(Base other) { 1253 if (!super.equalsShallow(other)) 1254 return false; 1255 if (!(other instanceof Group)) 1256 return false; 1257 Group o = (Group) other; 1258 return compareValues(type, o.type, true) && compareValues(actual, o.actual, true) && compareValues(name, o.name, true) 1259 && compareValues(quantity, o.quantity, true); 1260 } 1261 1262 public boolean isEmpty() { 1263 return super.isEmpty() && (identifier == null || identifier.isEmpty()) && (type == null || type.isEmpty()) 1264 && (actual == null || actual.isEmpty()) && (code == null || code.isEmpty()) && (name == null || name.isEmpty()) 1265 && (quantity == null || quantity.isEmpty()) && (characteristic == null || characteristic.isEmpty()) 1266 && (member == null || member.isEmpty()); 1267 } 1268 1269 @Override 1270 public ResourceType getResourceType() { 1271 return ResourceType.Group; 1272 } 1273 1274 @SearchParamDefinition(name="actual", path="Group.actual", description="Descriptive or actual", type="token" ) 1275 public static final String SP_ACTUAL = "actual"; 1276 @SearchParamDefinition(name="identifier", path="Group.identifier", description="Unique id", type="token" ) 1277 public static final String SP_IDENTIFIER = "identifier"; 1278 @SearchParamDefinition(name="characteristic-value", path="null", description="A composite of both characteristic and value", type="composite" ) 1279 public static final String SP_CHARACTERISTICVALUE = "characteristic-value"; 1280 @SearchParamDefinition(name="code", path="Group.code", description="The kind of resources contained", type="token" ) 1281 public static final String SP_CODE = "code"; 1282 @SearchParamDefinition(name="member", path="Group.member.entity", description="Reference to the group member", type="reference" ) 1283 public static final String SP_MEMBER = "member"; 1284 @SearchParamDefinition(name="exclude", path="Group.characteristic.exclude", description="Group includes or excludes", type="token" ) 1285 public static final String SP_EXCLUDE = "exclude"; 1286 @SearchParamDefinition(name="type", path="Group.type", description="The type of resources the group contains", type="token" ) 1287 public static final String SP_TYPE = "type"; 1288 @SearchParamDefinition(name="value", path="Group.characteristic.value[x]", description="Value held by characteristic", type="token" ) 1289 public static final String SP_VALUE = "value"; 1290 @SearchParamDefinition(name="characteristic", path="Group.characteristic.code", description="Kind of characteristic", type="token" ) 1291 public static final String SP_CHARACTERISTIC = "characteristic"; 1292 1293} 1294