![](/hapi-fhir/images/logos/raccoon-forwards.png)
001package org.hl7.fhir.r4.model; 002 003/* 004 Copyright (c) 2011+, HL7, Inc. 005 All rights reserved. 006 007 Redistribution and use in source and binary forms, with or without modification, 008 are permitted provided that the following conditions are met: 009 010 * Redistributions of source code must retain the above copyright notice, this 011 list of conditions and the following disclaimer. 012 * Redistributions in binary form must reproduce the above copyright notice, 013 this list of conditions and the following disclaimer in the documentation 014 and/or other materials provided with the distribution. 015 * Neither the name of HL7 nor the names of its contributors may be used to 016 endorse or promote products derived from this software without specific 017 prior written permission. 018 019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 022 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 023 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 024 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 025 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 027 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 028 POSSIBILITY OF SUCH DAMAGE. 029 030*/ 031 032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1 033import java.util.ArrayList; 034import java.util.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.Block; 041import ca.uhn.fhir.model.api.annotation.Child; 042import ca.uhn.fhir.model.api.annotation.Description; 043import ca.uhn.fhir.model.api.annotation.ResourceDef; 044import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; 045 046/** 047 * A specific set of Roles/Locations/specialties/services that a practitioner 048 * may perform at an organization for a period of time. 049 */ 050@ResourceDef(name = "PractitionerRole", profile = "http://hl7.org/fhir/StructureDefinition/PractitionerRole") 051public class PractitionerRole extends DomainResource { 052 053 public enum DaysOfWeek { 054 /** 055 * Monday. 056 */ 057 MON, 058 /** 059 * Tuesday. 060 */ 061 TUE, 062 /** 063 * Wednesday. 064 */ 065 WED, 066 /** 067 * Thursday. 068 */ 069 THU, 070 /** 071 * Friday. 072 */ 073 FRI, 074 /** 075 * Saturday. 076 */ 077 SAT, 078 /** 079 * Sunday. 080 */ 081 SUN, 082 /** 083 * added to help the parsers with the generic types 084 */ 085 NULL; 086 087 public static DaysOfWeek fromCode(String codeString) throws FHIRException { 088 if (codeString == null || "".equals(codeString)) 089 return null; 090 if ("mon".equals(codeString)) 091 return MON; 092 if ("tue".equals(codeString)) 093 return TUE; 094 if ("wed".equals(codeString)) 095 return WED; 096 if ("thu".equals(codeString)) 097 return THU; 098 if ("fri".equals(codeString)) 099 return FRI; 100 if ("sat".equals(codeString)) 101 return SAT; 102 if ("sun".equals(codeString)) 103 return SUN; 104 if (Configuration.isAcceptInvalidEnums()) 105 return null; 106 else 107 throw new FHIRException("Unknown DaysOfWeek code '" + codeString + "'"); 108 } 109 110 public String toCode() { 111 switch (this) { 112 case MON: 113 return "mon"; 114 case TUE: 115 return "tue"; 116 case WED: 117 return "wed"; 118 case THU: 119 return "thu"; 120 case FRI: 121 return "fri"; 122 case SAT: 123 return "sat"; 124 case SUN: 125 return "sun"; 126 case NULL: 127 return null; 128 default: 129 return "?"; 130 } 131 } 132 133 public String getSystem() { 134 switch (this) { 135 case MON: 136 return "http://hl7.org/fhir/days-of-week"; 137 case TUE: 138 return "http://hl7.org/fhir/days-of-week"; 139 case WED: 140 return "http://hl7.org/fhir/days-of-week"; 141 case THU: 142 return "http://hl7.org/fhir/days-of-week"; 143 case FRI: 144 return "http://hl7.org/fhir/days-of-week"; 145 case SAT: 146 return "http://hl7.org/fhir/days-of-week"; 147 case SUN: 148 return "http://hl7.org/fhir/days-of-week"; 149 case NULL: 150 return null; 151 default: 152 return "?"; 153 } 154 } 155 156 public String getDefinition() { 157 switch (this) { 158 case MON: 159 return "Monday."; 160 case TUE: 161 return "Tuesday."; 162 case WED: 163 return "Wednesday."; 164 case THU: 165 return "Thursday."; 166 case FRI: 167 return "Friday."; 168 case SAT: 169 return "Saturday."; 170 case SUN: 171 return "Sunday."; 172 case NULL: 173 return null; 174 default: 175 return "?"; 176 } 177 } 178 179 public String getDisplay() { 180 switch (this) { 181 case MON: 182 return "Monday"; 183 case TUE: 184 return "Tuesday"; 185 case WED: 186 return "Wednesday"; 187 case THU: 188 return "Thursday"; 189 case FRI: 190 return "Friday"; 191 case SAT: 192 return "Saturday"; 193 case SUN: 194 return "Sunday"; 195 case NULL: 196 return null; 197 default: 198 return "?"; 199 } 200 } 201 } 202 203 public static class DaysOfWeekEnumFactory implements EnumFactory<DaysOfWeek> { 204 public DaysOfWeek fromCode(String codeString) throws IllegalArgumentException { 205 if (codeString == null || "".equals(codeString)) 206 if (codeString == null || "".equals(codeString)) 207 return null; 208 if ("mon".equals(codeString)) 209 return DaysOfWeek.MON; 210 if ("tue".equals(codeString)) 211 return DaysOfWeek.TUE; 212 if ("wed".equals(codeString)) 213 return DaysOfWeek.WED; 214 if ("thu".equals(codeString)) 215 return DaysOfWeek.THU; 216 if ("fri".equals(codeString)) 217 return DaysOfWeek.FRI; 218 if ("sat".equals(codeString)) 219 return DaysOfWeek.SAT; 220 if ("sun".equals(codeString)) 221 return DaysOfWeek.SUN; 222 throw new IllegalArgumentException("Unknown DaysOfWeek code '" + codeString + "'"); 223 } 224 225 public Enumeration<DaysOfWeek> fromType(PrimitiveType<?> code) throws FHIRException { 226 if (code == null) 227 return null; 228 if (code.isEmpty()) 229 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.NULL, code); 230 String codeString = code.asStringValue(); 231 if (codeString == null || "".equals(codeString)) 232 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.NULL, code); 233 if ("mon".equals(codeString)) 234 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.MON, code); 235 if ("tue".equals(codeString)) 236 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.TUE, code); 237 if ("wed".equals(codeString)) 238 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.WED, code); 239 if ("thu".equals(codeString)) 240 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.THU, code); 241 if ("fri".equals(codeString)) 242 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.FRI, code); 243 if ("sat".equals(codeString)) 244 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.SAT, code); 245 if ("sun".equals(codeString)) 246 return new Enumeration<DaysOfWeek>(this, DaysOfWeek.SUN, code); 247 throw new FHIRException("Unknown DaysOfWeek code '" + codeString + "'"); 248 } 249 250 public String toCode(DaysOfWeek code) { 251 if (code == DaysOfWeek.MON) 252 return "mon"; 253 if (code == DaysOfWeek.TUE) 254 return "tue"; 255 if (code == DaysOfWeek.WED) 256 return "wed"; 257 if (code == DaysOfWeek.THU) 258 return "thu"; 259 if (code == DaysOfWeek.FRI) 260 return "fri"; 261 if (code == DaysOfWeek.SAT) 262 return "sat"; 263 if (code == DaysOfWeek.SUN) 264 return "sun"; 265 return "?"; 266 } 267 268 public String toSystem(DaysOfWeek code) { 269 return code.getSystem(); 270 } 271 } 272 273 @Block() 274 public static class PractitionerRoleAvailableTimeComponent extends BackboneElement implements IBaseBackboneElement { 275 /** 276 * Indicates which days of the week are available between the start and end 277 * Times. 278 */ 279 @Child(name = "daysOfWeek", type = { 280 CodeType.class }, order = 1, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 281 @Description(shortDefinition = "mon | tue | wed | thu | fri | sat | sun", formalDefinition = "Indicates which days of the week are available between the start and end Times.") 282 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/days-of-week") 283 protected List<Enumeration<DaysOfWeek>> daysOfWeek; 284 285 /** 286 * Is this always available? (hence times are irrelevant) e.g. 24 hour service. 287 */ 288 @Child(name = "allDay", type = { 289 BooleanType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 290 @Description(shortDefinition = "Always available? e.g. 24 hour service", formalDefinition = "Is this always available? (hence times are irrelevant) e.g. 24 hour service.") 291 protected BooleanType allDay; 292 293 /** 294 * The opening time of day. Note: If the AllDay flag is set, then this time is 295 * ignored. 296 */ 297 @Child(name = "availableStartTime", type = { 298 TimeType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false) 299 @Description(shortDefinition = "Opening time of day (ignored if allDay = true)", formalDefinition = "The opening time of day. Note: If the AllDay flag is set, then this time is ignored.") 300 protected TimeType availableStartTime; 301 302 /** 303 * The closing time of day. Note: If the AllDay flag is set, then this time is 304 * ignored. 305 */ 306 @Child(name = "availableEndTime", type = { 307 TimeType.class }, order = 4, min = 0, max = 1, modifier = false, summary = false) 308 @Description(shortDefinition = "Closing time of day (ignored if allDay = true)", formalDefinition = "The closing time of day. Note: If the AllDay flag is set, then this time is ignored.") 309 protected TimeType availableEndTime; 310 311 private static final long serialVersionUID = -2139510127L; 312 313 /** 314 * Constructor 315 */ 316 public PractitionerRoleAvailableTimeComponent() { 317 super(); 318 } 319 320 /** 321 * @return {@link #daysOfWeek} (Indicates which days of the week are available 322 * between the start and end Times.) 323 */ 324 public List<Enumeration<DaysOfWeek>> getDaysOfWeek() { 325 if (this.daysOfWeek == null) 326 this.daysOfWeek = new ArrayList<Enumeration<DaysOfWeek>>(); 327 return this.daysOfWeek; 328 } 329 330 /** 331 * @return Returns a reference to <code>this</code> for easy method chaining 332 */ 333 public PractitionerRoleAvailableTimeComponent setDaysOfWeek(List<Enumeration<DaysOfWeek>> theDaysOfWeek) { 334 this.daysOfWeek = theDaysOfWeek; 335 return this; 336 } 337 338 public boolean hasDaysOfWeek() { 339 if (this.daysOfWeek == null) 340 return false; 341 for (Enumeration<DaysOfWeek> item : this.daysOfWeek) 342 if (!item.isEmpty()) 343 return true; 344 return false; 345 } 346 347 /** 348 * @return {@link #daysOfWeek} (Indicates which days of the week are available 349 * between the start and end Times.) 350 */ 351 public Enumeration<DaysOfWeek> addDaysOfWeekElement() {// 2 352 Enumeration<DaysOfWeek> t = new Enumeration<DaysOfWeek>(new DaysOfWeekEnumFactory()); 353 if (this.daysOfWeek == null) 354 this.daysOfWeek = new ArrayList<Enumeration<DaysOfWeek>>(); 355 this.daysOfWeek.add(t); 356 return t; 357 } 358 359 /** 360 * @param value {@link #daysOfWeek} (Indicates which days of the week are 361 * available between the start and end Times.) 362 */ 363 public PractitionerRoleAvailableTimeComponent addDaysOfWeek(DaysOfWeek value) { // 1 364 Enumeration<DaysOfWeek> t = new Enumeration<DaysOfWeek>(new DaysOfWeekEnumFactory()); 365 t.setValue(value); 366 if (this.daysOfWeek == null) 367 this.daysOfWeek = new ArrayList<Enumeration<DaysOfWeek>>(); 368 this.daysOfWeek.add(t); 369 return this; 370 } 371 372 /** 373 * @param value {@link #daysOfWeek} (Indicates which days of the week are 374 * available between the start and end Times.) 375 */ 376 public boolean hasDaysOfWeek(DaysOfWeek value) { 377 if (this.daysOfWeek == null) 378 return false; 379 for (Enumeration<DaysOfWeek> v : this.daysOfWeek) 380 if (v.getValue().equals(value)) // code 381 return true; 382 return false; 383 } 384 385 /** 386 * @return {@link #allDay} (Is this always available? (hence times are 387 * irrelevant) e.g. 24 hour service.). This is the underlying object 388 * with id, value and extensions. The accessor "getAllDay" gives direct 389 * access to the value 390 */ 391 public BooleanType getAllDayElement() { 392 if (this.allDay == null) 393 if (Configuration.errorOnAutoCreate()) 394 throw new Error("Attempt to auto-create PractitionerRoleAvailableTimeComponent.allDay"); 395 else if (Configuration.doAutoCreate()) 396 this.allDay = new BooleanType(); // bb 397 return this.allDay; 398 } 399 400 public boolean hasAllDayElement() { 401 return this.allDay != null && !this.allDay.isEmpty(); 402 } 403 404 public boolean hasAllDay() { 405 return this.allDay != null && !this.allDay.isEmpty(); 406 } 407 408 /** 409 * @param value {@link #allDay} (Is this always available? (hence times are 410 * irrelevant) e.g. 24 hour service.). This is the underlying 411 * object with id, value and extensions. The accessor "getAllDay" 412 * gives direct access to the value 413 */ 414 public PractitionerRoleAvailableTimeComponent setAllDayElement(BooleanType value) { 415 this.allDay = value; 416 return this; 417 } 418 419 /** 420 * @return Is this always available? (hence times are irrelevant) e.g. 24 hour 421 * service. 422 */ 423 public boolean getAllDay() { 424 return this.allDay == null || this.allDay.isEmpty() ? false : this.allDay.getValue(); 425 } 426 427 /** 428 * @param value Is this always available? (hence times are irrelevant) e.g. 24 429 * hour service. 430 */ 431 public PractitionerRoleAvailableTimeComponent setAllDay(boolean value) { 432 if (this.allDay == null) 433 this.allDay = new BooleanType(); 434 this.allDay.setValue(value); 435 return this; 436 } 437 438 /** 439 * @return {@link #availableStartTime} (The opening time of day. Note: If the 440 * AllDay flag is set, then this time is ignored.). This is the 441 * underlying object with id, value and extensions. The accessor 442 * "getAvailableStartTime" gives direct access to the value 443 */ 444 public TimeType getAvailableStartTimeElement() { 445 if (this.availableStartTime == null) 446 if (Configuration.errorOnAutoCreate()) 447 throw new Error("Attempt to auto-create PractitionerRoleAvailableTimeComponent.availableStartTime"); 448 else if (Configuration.doAutoCreate()) 449 this.availableStartTime = new TimeType(); // bb 450 return this.availableStartTime; 451 } 452 453 public boolean hasAvailableStartTimeElement() { 454 return this.availableStartTime != null && !this.availableStartTime.isEmpty(); 455 } 456 457 public boolean hasAvailableStartTime() { 458 return this.availableStartTime != null && !this.availableStartTime.isEmpty(); 459 } 460 461 /** 462 * @param value {@link #availableStartTime} (The opening time of day. Note: If 463 * the AllDay flag is set, then this time is ignored.). This is the 464 * underlying object with id, value and extensions. The accessor 465 * "getAvailableStartTime" gives direct access to the value 466 */ 467 public PractitionerRoleAvailableTimeComponent setAvailableStartTimeElement(TimeType value) { 468 this.availableStartTime = value; 469 return this; 470 } 471 472 /** 473 * @return The opening time of day. Note: If the AllDay flag is set, then this 474 * time is ignored. 475 */ 476 public String getAvailableStartTime() { 477 return this.availableStartTime == null ? null : this.availableStartTime.getValue(); 478 } 479 480 /** 481 * @param value The opening time of day. Note: If the AllDay flag is set, then 482 * this time is ignored. 483 */ 484 public PractitionerRoleAvailableTimeComponent setAvailableStartTime(String value) { 485 if (value == null) 486 this.availableStartTime = null; 487 else { 488 if (this.availableStartTime == null) 489 this.availableStartTime = new TimeType(); 490 this.availableStartTime.setValue(value); 491 } 492 return this; 493 } 494 495 /** 496 * @return {@link #availableEndTime} (The closing time of day. Note: If the 497 * AllDay flag is set, then this time is ignored.). This is the 498 * underlying object with id, value and extensions. The accessor 499 * "getAvailableEndTime" gives direct access to the value 500 */ 501 public TimeType getAvailableEndTimeElement() { 502 if (this.availableEndTime == null) 503 if (Configuration.errorOnAutoCreate()) 504 throw new Error("Attempt to auto-create PractitionerRoleAvailableTimeComponent.availableEndTime"); 505 else if (Configuration.doAutoCreate()) 506 this.availableEndTime = new TimeType(); // bb 507 return this.availableEndTime; 508 } 509 510 public boolean hasAvailableEndTimeElement() { 511 return this.availableEndTime != null && !this.availableEndTime.isEmpty(); 512 } 513 514 public boolean hasAvailableEndTime() { 515 return this.availableEndTime != null && !this.availableEndTime.isEmpty(); 516 } 517 518 /** 519 * @param value {@link #availableEndTime} (The closing time of day. Note: If the 520 * AllDay flag is set, then this time is ignored.). This is the 521 * underlying object with id, value and extensions. The accessor 522 * "getAvailableEndTime" gives direct access to the value 523 */ 524 public PractitionerRoleAvailableTimeComponent setAvailableEndTimeElement(TimeType value) { 525 this.availableEndTime = value; 526 return this; 527 } 528 529 /** 530 * @return The closing time of day. Note: If the AllDay flag is set, then this 531 * time is ignored. 532 */ 533 public String getAvailableEndTime() { 534 return this.availableEndTime == null ? null : this.availableEndTime.getValue(); 535 } 536 537 /** 538 * @param value The closing time of day. Note: If the AllDay flag is set, then 539 * this time is ignored. 540 */ 541 public PractitionerRoleAvailableTimeComponent setAvailableEndTime(String value) { 542 if (value == null) 543 this.availableEndTime = null; 544 else { 545 if (this.availableEndTime == null) 546 this.availableEndTime = new TimeType(); 547 this.availableEndTime.setValue(value); 548 } 549 return this; 550 } 551 552 protected void listChildren(List<Property> children) { 553 super.listChildren(children); 554 children.add(new Property("daysOfWeek", "code", 555 "Indicates which days of the week are available between the start and end Times.", 0, 556 java.lang.Integer.MAX_VALUE, daysOfWeek)); 557 children.add(new Property("allDay", "boolean", 558 "Is this always available? (hence times are irrelevant) e.g. 24 hour service.", 0, 1, allDay)); 559 children.add(new Property("availableStartTime", "time", 560 "The opening time of day. Note: If the AllDay flag is set, then this time is ignored.", 0, 1, 561 availableStartTime)); 562 children.add(new Property("availableEndTime", "time", 563 "The closing time of day. Note: If the AllDay flag is set, then this time is ignored.", 0, 1, 564 availableEndTime)); 565 } 566 567 @Override 568 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 569 switch (_hash) { 570 case 68050338: 571 /* daysOfWeek */ return new Property("daysOfWeek", "code", 572 "Indicates which days of the week are available between the start and end Times.", 0, 573 java.lang.Integer.MAX_VALUE, daysOfWeek); 574 case -1414913477: 575 /* allDay */ return new Property("allDay", "boolean", 576 "Is this always available? (hence times are irrelevant) e.g. 24 hour service.", 0, 1, allDay); 577 case -1039453818: 578 /* availableStartTime */ return new Property("availableStartTime", "time", 579 "The opening time of day. Note: If the AllDay flag is set, then this time is ignored.", 0, 1, 580 availableStartTime); 581 case 101151551: 582 /* availableEndTime */ return new Property("availableEndTime", "time", 583 "The closing time of day. Note: If the AllDay flag is set, then this time is ignored.", 0, 1, 584 availableEndTime); 585 default: 586 return super.getNamedProperty(_hash, _name, _checkValid); 587 } 588 589 } 590 591 @Override 592 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 593 switch (hash) { 594 case 68050338: 595 /* daysOfWeek */ return this.daysOfWeek == null ? new Base[0] 596 : this.daysOfWeek.toArray(new Base[this.daysOfWeek.size()]); // Enumeration<DaysOfWeek> 597 case -1414913477: 598 /* allDay */ return this.allDay == null ? new Base[0] : new Base[] { this.allDay }; // BooleanType 599 case -1039453818: 600 /* availableStartTime */ return this.availableStartTime == null ? new Base[0] 601 : new Base[] { this.availableStartTime }; // TimeType 602 case 101151551: 603 /* availableEndTime */ return this.availableEndTime == null ? new Base[0] 604 : new Base[] { this.availableEndTime }; // TimeType 605 default: 606 return super.getProperty(hash, name, checkValid); 607 } 608 609 } 610 611 @Override 612 public Base setProperty(int hash, String name, Base value) throws FHIRException { 613 switch (hash) { 614 case 68050338: // daysOfWeek 615 value = new DaysOfWeekEnumFactory().fromType(castToCode(value)); 616 this.getDaysOfWeek().add((Enumeration) value); // Enumeration<DaysOfWeek> 617 return value; 618 case -1414913477: // allDay 619 this.allDay = castToBoolean(value); // BooleanType 620 return value; 621 case -1039453818: // availableStartTime 622 this.availableStartTime = castToTime(value); // TimeType 623 return value; 624 case 101151551: // availableEndTime 625 this.availableEndTime = castToTime(value); // TimeType 626 return value; 627 default: 628 return super.setProperty(hash, name, value); 629 } 630 631 } 632 633 @Override 634 public Base setProperty(String name, Base value) throws FHIRException { 635 if (name.equals("daysOfWeek")) { 636 value = new DaysOfWeekEnumFactory().fromType(castToCode(value)); 637 this.getDaysOfWeek().add((Enumeration) value); 638 } else if (name.equals("allDay")) { 639 this.allDay = castToBoolean(value); // BooleanType 640 } else if (name.equals("availableStartTime")) { 641 this.availableStartTime = castToTime(value); // TimeType 642 } else if (name.equals("availableEndTime")) { 643 this.availableEndTime = castToTime(value); // TimeType 644 } else 645 return super.setProperty(name, value); 646 return value; 647 } 648 649 @Override 650 public void removeChild(String name, Base value) throws FHIRException { 651 if (name.equals("daysOfWeek")) { 652 this.getDaysOfWeek().remove((Enumeration) value); 653 } else if (name.equals("allDay")) { 654 this.allDay = null; 655 } else if (name.equals("availableStartTime")) { 656 this.availableStartTime = null; 657 } else if (name.equals("availableEndTime")) { 658 this.availableEndTime = null; 659 } else 660 super.removeChild(name, value); 661 662 } 663 664 @Override 665 public Base makeProperty(int hash, String name) throws FHIRException { 666 switch (hash) { 667 case 68050338: 668 return addDaysOfWeekElement(); 669 case -1414913477: 670 return getAllDayElement(); 671 case -1039453818: 672 return getAvailableStartTimeElement(); 673 case 101151551: 674 return getAvailableEndTimeElement(); 675 default: 676 return super.makeProperty(hash, name); 677 } 678 679 } 680 681 @Override 682 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 683 switch (hash) { 684 case 68050338: 685 /* daysOfWeek */ return new String[] { "code" }; 686 case -1414913477: 687 /* allDay */ return new String[] { "boolean" }; 688 case -1039453818: 689 /* availableStartTime */ return new String[] { "time" }; 690 case 101151551: 691 /* availableEndTime */ return new String[] { "time" }; 692 default: 693 return super.getTypesForProperty(hash, name); 694 } 695 696 } 697 698 @Override 699 public Base addChild(String name) throws FHIRException { 700 if (name.equals("daysOfWeek")) { 701 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.daysOfWeek"); 702 } else if (name.equals("allDay")) { 703 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.allDay"); 704 } else if (name.equals("availableStartTime")) { 705 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.availableStartTime"); 706 } else if (name.equals("availableEndTime")) { 707 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.availableEndTime"); 708 } else 709 return super.addChild(name); 710 } 711 712 public PractitionerRoleAvailableTimeComponent copy() { 713 PractitionerRoleAvailableTimeComponent dst = new PractitionerRoleAvailableTimeComponent(); 714 copyValues(dst); 715 return dst; 716 } 717 718 public void copyValues(PractitionerRoleAvailableTimeComponent dst) { 719 super.copyValues(dst); 720 if (daysOfWeek != null) { 721 dst.daysOfWeek = new ArrayList<Enumeration<DaysOfWeek>>(); 722 for (Enumeration<DaysOfWeek> i : daysOfWeek) 723 dst.daysOfWeek.add(i.copy()); 724 } 725 ; 726 dst.allDay = allDay == null ? null : allDay.copy(); 727 dst.availableStartTime = availableStartTime == null ? null : availableStartTime.copy(); 728 dst.availableEndTime = availableEndTime == null ? null : availableEndTime.copy(); 729 } 730 731 @Override 732 public boolean equalsDeep(Base other_) { 733 if (!super.equalsDeep(other_)) 734 return false; 735 if (!(other_ instanceof PractitionerRoleAvailableTimeComponent)) 736 return false; 737 PractitionerRoleAvailableTimeComponent o = (PractitionerRoleAvailableTimeComponent) other_; 738 return compareDeep(daysOfWeek, o.daysOfWeek, true) && compareDeep(allDay, o.allDay, true) 739 && compareDeep(availableStartTime, o.availableStartTime, true) 740 && compareDeep(availableEndTime, o.availableEndTime, true); 741 } 742 743 @Override 744 public boolean equalsShallow(Base other_) { 745 if (!super.equalsShallow(other_)) 746 return false; 747 if (!(other_ instanceof PractitionerRoleAvailableTimeComponent)) 748 return false; 749 PractitionerRoleAvailableTimeComponent o = (PractitionerRoleAvailableTimeComponent) other_; 750 return compareValues(daysOfWeek, o.daysOfWeek, true) && compareValues(allDay, o.allDay, true) 751 && compareValues(availableStartTime, o.availableStartTime, true) 752 && compareValues(availableEndTime, o.availableEndTime, true); 753 } 754 755 public boolean isEmpty() { 756 return super.isEmpty() 757 && ca.uhn.fhir.util.ElementUtil.isEmpty(daysOfWeek, allDay, availableStartTime, availableEndTime); 758 } 759 760 public String fhirType() { 761 return "PractitionerRole.availableTime"; 762 763 } 764 765 } 766 767 @Block() 768 public static class PractitionerRoleNotAvailableComponent extends BackboneElement implements IBaseBackboneElement { 769 /** 770 * The reason that can be presented to the user as to why this time is not 771 * available. 772 */ 773 @Child(name = "description", type = { 774 StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false) 775 @Description(shortDefinition = "Reason presented to the user explaining why time not available", formalDefinition = "The reason that can be presented to the user as to why this time is not available.") 776 protected StringType description; 777 778 /** 779 * Service is not available (seasonally or for a public holiday) from this date. 780 */ 781 @Child(name = "during", type = { Period.class }, order = 2, min = 0, max = 1, modifier = false, summary = false) 782 @Description(shortDefinition = "Service not available from this date", formalDefinition = "Service is not available (seasonally or for a public holiday) from this date.") 783 protected Period during; 784 785 private static final long serialVersionUID = 310849929L; 786 787 /** 788 * Constructor 789 */ 790 public PractitionerRoleNotAvailableComponent() { 791 super(); 792 } 793 794 /** 795 * Constructor 796 */ 797 public PractitionerRoleNotAvailableComponent(StringType description) { 798 super(); 799 this.description = description; 800 } 801 802 /** 803 * @return {@link #description} (The reason that can be presented to the user as 804 * to why this time is not available.). This is the underlying object 805 * with id, value and extensions. The accessor "getDescription" gives 806 * direct access to the value 807 */ 808 public StringType getDescriptionElement() { 809 if (this.description == null) 810 if (Configuration.errorOnAutoCreate()) 811 throw new Error("Attempt to auto-create PractitionerRoleNotAvailableComponent.description"); 812 else if (Configuration.doAutoCreate()) 813 this.description = new StringType(); // bb 814 return this.description; 815 } 816 817 public boolean hasDescriptionElement() { 818 return this.description != null && !this.description.isEmpty(); 819 } 820 821 public boolean hasDescription() { 822 return this.description != null && !this.description.isEmpty(); 823 } 824 825 /** 826 * @param value {@link #description} (The reason that can be presented to the 827 * user as to why this time is not available.). This is the 828 * underlying object with id, value and extensions. The accessor 829 * "getDescription" gives direct access to the value 830 */ 831 public PractitionerRoleNotAvailableComponent setDescriptionElement(StringType value) { 832 this.description = value; 833 return this; 834 } 835 836 /** 837 * @return The reason that can be presented to the user as to why this time is 838 * not available. 839 */ 840 public String getDescription() { 841 return this.description == null ? null : this.description.getValue(); 842 } 843 844 /** 845 * @param value The reason that can be presented to the user as to why this time 846 * is not available. 847 */ 848 public PractitionerRoleNotAvailableComponent setDescription(String value) { 849 if (this.description == null) 850 this.description = new StringType(); 851 this.description.setValue(value); 852 return this; 853 } 854 855 /** 856 * @return {@link #during} (Service is not available (seasonally or for a public 857 * holiday) from this date.) 858 */ 859 public Period getDuring() { 860 if (this.during == null) 861 if (Configuration.errorOnAutoCreate()) 862 throw new Error("Attempt to auto-create PractitionerRoleNotAvailableComponent.during"); 863 else if (Configuration.doAutoCreate()) 864 this.during = new Period(); // cc 865 return this.during; 866 } 867 868 public boolean hasDuring() { 869 return this.during != null && !this.during.isEmpty(); 870 } 871 872 /** 873 * @param value {@link #during} (Service is not available (seasonally or for a 874 * public holiday) from this date.) 875 */ 876 public PractitionerRoleNotAvailableComponent setDuring(Period value) { 877 this.during = value; 878 return this; 879 } 880 881 protected void listChildren(List<Property> children) { 882 super.listChildren(children); 883 children.add(new Property("description", "string", 884 "The reason that can be presented to the user as to why this time is not available.", 0, 1, description)); 885 children.add(new Property("during", "Period", 886 "Service is not available (seasonally or for a public holiday) from this date.", 0, 1, during)); 887 } 888 889 @Override 890 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 891 switch (_hash) { 892 case -1724546052: 893 /* description */ return new Property("description", "string", 894 "The reason that can be presented to the user as to why this time is not available.", 0, 1, description); 895 case -1320499647: 896 /* during */ return new Property("during", "Period", 897 "Service is not available (seasonally or for a public holiday) from this date.", 0, 1, during); 898 default: 899 return super.getNamedProperty(_hash, _name, _checkValid); 900 } 901 902 } 903 904 @Override 905 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 906 switch (hash) { 907 case -1724546052: 908 /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // StringType 909 case -1320499647: 910 /* during */ return this.during == null ? new Base[0] : new Base[] { this.during }; // Period 911 default: 912 return super.getProperty(hash, name, checkValid); 913 } 914 915 } 916 917 @Override 918 public Base setProperty(int hash, String name, Base value) throws FHIRException { 919 switch (hash) { 920 case -1724546052: // description 921 this.description = castToString(value); // StringType 922 return value; 923 case -1320499647: // during 924 this.during = castToPeriod(value); // Period 925 return value; 926 default: 927 return super.setProperty(hash, name, value); 928 } 929 930 } 931 932 @Override 933 public Base setProperty(String name, Base value) throws FHIRException { 934 if (name.equals("description")) { 935 this.description = castToString(value); // StringType 936 } else if (name.equals("during")) { 937 this.during = castToPeriod(value); // Period 938 } else 939 return super.setProperty(name, value); 940 return value; 941 } 942 943 @Override 944 public void removeChild(String name, Base value) throws FHIRException { 945 if (name.equals("description")) { 946 this.description = null; 947 } else if (name.equals("during")) { 948 this.during = null; 949 } else 950 super.removeChild(name, value); 951 952 } 953 954 @Override 955 public Base makeProperty(int hash, String name) throws FHIRException { 956 switch (hash) { 957 case -1724546052: 958 return getDescriptionElement(); 959 case -1320499647: 960 return getDuring(); 961 default: 962 return super.makeProperty(hash, name); 963 } 964 965 } 966 967 @Override 968 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 969 switch (hash) { 970 case -1724546052: 971 /* description */ return new String[] { "string" }; 972 case -1320499647: 973 /* during */ return new String[] { "Period" }; 974 default: 975 return super.getTypesForProperty(hash, name); 976 } 977 978 } 979 980 @Override 981 public Base addChild(String name) throws FHIRException { 982 if (name.equals("description")) { 983 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.description"); 984 } else if (name.equals("during")) { 985 this.during = new Period(); 986 return this.during; 987 } else 988 return super.addChild(name); 989 } 990 991 public PractitionerRoleNotAvailableComponent copy() { 992 PractitionerRoleNotAvailableComponent dst = new PractitionerRoleNotAvailableComponent(); 993 copyValues(dst); 994 return dst; 995 } 996 997 public void copyValues(PractitionerRoleNotAvailableComponent dst) { 998 super.copyValues(dst); 999 dst.description = description == null ? null : description.copy(); 1000 dst.during = during == null ? null : during.copy(); 1001 } 1002 1003 @Override 1004 public boolean equalsDeep(Base other_) { 1005 if (!super.equalsDeep(other_)) 1006 return false; 1007 if (!(other_ instanceof PractitionerRoleNotAvailableComponent)) 1008 return false; 1009 PractitionerRoleNotAvailableComponent o = (PractitionerRoleNotAvailableComponent) other_; 1010 return compareDeep(description, o.description, true) && compareDeep(during, o.during, true); 1011 } 1012 1013 @Override 1014 public boolean equalsShallow(Base other_) { 1015 if (!super.equalsShallow(other_)) 1016 return false; 1017 if (!(other_ instanceof PractitionerRoleNotAvailableComponent)) 1018 return false; 1019 PractitionerRoleNotAvailableComponent o = (PractitionerRoleNotAvailableComponent) other_; 1020 return compareValues(description, o.description, true); 1021 } 1022 1023 public boolean isEmpty() { 1024 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, during); 1025 } 1026 1027 public String fhirType() { 1028 return "PractitionerRole.notAvailable"; 1029 1030 } 1031 1032 } 1033 1034 /** 1035 * Business Identifiers that are specific to a role/location. 1036 */ 1037 @Child(name = "identifier", type = { 1038 Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1039 @Description(shortDefinition = "Business Identifiers that are specific to a role/location", formalDefinition = "Business Identifiers that are specific to a role/location.") 1040 protected List<Identifier> identifier; 1041 1042 /** 1043 * Whether this practitioner role record is in active use. 1044 */ 1045 @Child(name = "active", type = { BooleanType.class }, order = 1, min = 0, max = 1, modifier = false, summary = true) 1046 @Description(shortDefinition = "Whether this practitioner role record is in active use", formalDefinition = "Whether this practitioner role record is in active use.") 1047 protected BooleanType active; 1048 1049 /** 1050 * The period during which the person is authorized to act as a practitioner in 1051 * these role(s) for the organization. 1052 */ 1053 @Child(name = "period", type = { Period.class }, order = 2, min = 0, max = 1, modifier = false, summary = true) 1054 @Description(shortDefinition = "The period during which the practitioner is authorized to perform in these role(s)", formalDefinition = "The period during which the person is authorized to act as a practitioner in these role(s) for the organization.") 1055 protected Period period; 1056 1057 /** 1058 * Practitioner that is able to provide the defined services for the 1059 * organization. 1060 */ 1061 @Child(name = "practitioner", type = { 1062 Practitioner.class }, order = 3, min = 0, max = 1, modifier = false, summary = true) 1063 @Description(shortDefinition = "Practitioner that is able to provide the defined services for the organization", formalDefinition = "Practitioner that is able to provide the defined services for the organization.") 1064 protected Reference practitioner; 1065 1066 /** 1067 * The actual object that is the target of the reference (Practitioner that is 1068 * able to provide the defined services for the organization.) 1069 */ 1070 protected Practitioner practitionerTarget; 1071 1072 /** 1073 * The organization where the Practitioner performs the roles associated. 1074 */ 1075 @Child(name = "organization", type = { 1076 Organization.class }, order = 4, min = 0, max = 1, modifier = false, summary = true) 1077 @Description(shortDefinition = "Organization where the roles are available", formalDefinition = "The organization where the Practitioner performs the roles associated.") 1078 protected Reference organization; 1079 1080 /** 1081 * The actual object that is the target of the reference (The organization where 1082 * the Practitioner performs the roles associated.) 1083 */ 1084 protected Organization organizationTarget; 1085 1086 /** 1087 * Roles which this practitioner is authorized to perform for the organization. 1088 */ 1089 @Child(name = "code", type = { 1090 CodeableConcept.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1091 @Description(shortDefinition = "Roles which this practitioner may perform", formalDefinition = "Roles which this practitioner is authorized to perform for the organization.") 1092 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/practitioner-role") 1093 protected List<CodeableConcept> code; 1094 1095 /** 1096 * Specific specialty of the practitioner. 1097 */ 1098 @Child(name = "specialty", type = { 1099 CodeableConcept.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1100 @Description(shortDefinition = "Specific specialty of the practitioner", formalDefinition = "Specific specialty of the practitioner.") 1101 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/c80-practice-codes") 1102 protected List<CodeableConcept> specialty; 1103 1104 /** 1105 * The location(s) at which this practitioner provides care. 1106 */ 1107 @Child(name = "location", type = { 1108 Location.class }, order = 7, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1109 @Description(shortDefinition = "The location(s) at which this practitioner provides care", formalDefinition = "The location(s) at which this practitioner provides care.") 1110 protected List<Reference> location; 1111 /** 1112 * The actual objects that are the target of the reference (The location(s) at 1113 * which this practitioner provides care.) 1114 */ 1115 protected List<Location> locationTarget; 1116 1117 /** 1118 * The list of healthcare services that this worker provides for this role's 1119 * Organization/Location(s). 1120 */ 1121 @Child(name = "healthcareService", type = { 1122 HealthcareService.class }, order = 8, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 1123 @Description(shortDefinition = "The list of healthcare services that this worker provides for this role's Organization/Location(s)", formalDefinition = "The list of healthcare services that this worker provides for this role's Organization/Location(s).") 1124 protected List<Reference> healthcareService; 1125 /** 1126 * The actual objects that are the target of the reference (The list of 1127 * healthcare services that this worker provides for this role's 1128 * Organization/Location(s).) 1129 */ 1130 protected List<HealthcareService> healthcareServiceTarget; 1131 1132 /** 1133 * Contact details that are specific to the role/location/service. 1134 */ 1135 @Child(name = "telecom", type = { 1136 ContactPoint.class }, order = 9, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 1137 @Description(shortDefinition = "Contact details that are specific to the role/location/service", formalDefinition = "Contact details that are specific to the role/location/service.") 1138 protected List<ContactPoint> telecom; 1139 1140 /** 1141 * A collection of times the practitioner is available or performing this role 1142 * at the location and/or healthcareservice. 1143 */ 1144 @Child(name = "availableTime", type = {}, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 1145 @Description(shortDefinition = "Times the Service Site is available", formalDefinition = "A collection of times the practitioner is available or performing this role at the location and/or healthcareservice.") 1146 protected List<PractitionerRoleAvailableTimeComponent> availableTime; 1147 1148 /** 1149 * The practitioner is not available or performing this role during this period 1150 * of time due to the provided reason. 1151 */ 1152 @Child(name = "notAvailable", type = {}, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 1153 @Description(shortDefinition = "Not available during this time due to provided reason", formalDefinition = "The practitioner is not available or performing this role during this period of time due to the provided reason.") 1154 protected List<PractitionerRoleNotAvailableComponent> notAvailable; 1155 1156 /** 1157 * A description of site availability exceptions, e.g. public holiday 1158 * availability. Succinctly describing all possible exceptions to normal site 1159 * availability as details in the available Times and not available Times. 1160 */ 1161 @Child(name = "availabilityExceptions", type = { 1162 StringType.class }, order = 12, min = 0, max = 1, modifier = false, summary = false) 1163 @Description(shortDefinition = "Description of availability exceptions", formalDefinition = "A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times.") 1164 protected StringType availabilityExceptions; 1165 1166 /** 1167 * Technical endpoints providing access to services operated for the 1168 * practitioner with this role. 1169 */ 1170 @Child(name = "endpoint", type = { 1171 Endpoint.class }, order = 13, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false) 1172 @Description(shortDefinition = "Technical endpoints providing access to services operated for the practitioner with this role", formalDefinition = "Technical endpoints providing access to services operated for the practitioner with this role.") 1173 protected List<Reference> endpoint; 1174 /** 1175 * The actual objects that are the target of the reference (Technical endpoints 1176 * providing access to services operated for the practitioner with this role.) 1177 */ 1178 protected List<Endpoint> endpointTarget; 1179 1180 private static final long serialVersionUID = 423338051L; 1181 1182 /** 1183 * Constructor 1184 */ 1185 public PractitionerRole() { 1186 super(); 1187 } 1188 1189 /** 1190 * @return {@link #identifier} (Business Identifiers that are specific to a 1191 * role/location.) 1192 */ 1193 public List<Identifier> getIdentifier() { 1194 if (this.identifier == null) 1195 this.identifier = new ArrayList<Identifier>(); 1196 return this.identifier; 1197 } 1198 1199 /** 1200 * @return Returns a reference to <code>this</code> for easy method chaining 1201 */ 1202 public PractitionerRole setIdentifier(List<Identifier> theIdentifier) { 1203 this.identifier = theIdentifier; 1204 return this; 1205 } 1206 1207 public boolean hasIdentifier() { 1208 if (this.identifier == null) 1209 return false; 1210 for (Identifier item : this.identifier) 1211 if (!item.isEmpty()) 1212 return true; 1213 return false; 1214 } 1215 1216 public Identifier addIdentifier() { // 3 1217 Identifier t = new Identifier(); 1218 if (this.identifier == null) 1219 this.identifier = new ArrayList<Identifier>(); 1220 this.identifier.add(t); 1221 return t; 1222 } 1223 1224 public PractitionerRole addIdentifier(Identifier t) { // 3 1225 if (t == null) 1226 return this; 1227 if (this.identifier == null) 1228 this.identifier = new ArrayList<Identifier>(); 1229 this.identifier.add(t); 1230 return this; 1231 } 1232 1233 /** 1234 * @return The first repetition of repeating field {@link #identifier}, creating 1235 * it if it does not already exist 1236 */ 1237 public Identifier getIdentifierFirstRep() { 1238 if (getIdentifier().isEmpty()) { 1239 addIdentifier(); 1240 } 1241 return getIdentifier().get(0); 1242 } 1243 1244 /** 1245 * @return {@link #active} (Whether this practitioner role record is in active 1246 * use.). This is the underlying object with id, value and extensions. 1247 * The accessor "getActive" gives direct access to the value 1248 */ 1249 public BooleanType getActiveElement() { 1250 if (this.active == null) 1251 if (Configuration.errorOnAutoCreate()) 1252 throw new Error("Attempt to auto-create PractitionerRole.active"); 1253 else if (Configuration.doAutoCreate()) 1254 this.active = new BooleanType(); // bb 1255 return this.active; 1256 } 1257 1258 public boolean hasActiveElement() { 1259 return this.active != null && !this.active.isEmpty(); 1260 } 1261 1262 public boolean hasActive() { 1263 return this.active != null && !this.active.isEmpty(); 1264 } 1265 1266 /** 1267 * @param value {@link #active} (Whether this practitioner role record is in 1268 * active use.). This is the underlying object with id, value and 1269 * extensions. The accessor "getActive" gives direct access to the 1270 * value 1271 */ 1272 public PractitionerRole setActiveElement(BooleanType value) { 1273 this.active = value; 1274 return this; 1275 } 1276 1277 /** 1278 * @return Whether this practitioner role record is in active use. 1279 */ 1280 public boolean getActive() { 1281 return this.active == null || this.active.isEmpty() ? false : this.active.getValue(); 1282 } 1283 1284 /** 1285 * @param value Whether this practitioner role record is in active use. 1286 */ 1287 public PractitionerRole setActive(boolean value) { 1288 if (this.active == null) 1289 this.active = new BooleanType(); 1290 this.active.setValue(value); 1291 return this; 1292 } 1293 1294 /** 1295 * @return {@link #period} (The period during which the person is authorized to 1296 * act as a practitioner in these role(s) for the organization.) 1297 */ 1298 public Period getPeriod() { 1299 if (this.period == null) 1300 if (Configuration.errorOnAutoCreate()) 1301 throw new Error("Attempt to auto-create PractitionerRole.period"); 1302 else if (Configuration.doAutoCreate()) 1303 this.period = new Period(); // cc 1304 return this.period; 1305 } 1306 1307 public boolean hasPeriod() { 1308 return this.period != null && !this.period.isEmpty(); 1309 } 1310 1311 /** 1312 * @param value {@link #period} (The period during which the person is 1313 * authorized to act as a practitioner in these role(s) for the 1314 * organization.) 1315 */ 1316 public PractitionerRole setPeriod(Period value) { 1317 this.period = value; 1318 return this; 1319 } 1320 1321 /** 1322 * @return {@link #practitioner} (Practitioner that is able to provide the 1323 * defined services for the organization.) 1324 */ 1325 public Reference getPractitioner() { 1326 if (this.practitioner == null) 1327 if (Configuration.errorOnAutoCreate()) 1328 throw new Error("Attempt to auto-create PractitionerRole.practitioner"); 1329 else if (Configuration.doAutoCreate()) 1330 this.practitioner = new Reference(); // cc 1331 return this.practitioner; 1332 } 1333 1334 public boolean hasPractitioner() { 1335 return this.practitioner != null && !this.practitioner.isEmpty(); 1336 } 1337 1338 /** 1339 * @param value {@link #practitioner} (Practitioner that is able to provide the 1340 * defined services for the organization.) 1341 */ 1342 public PractitionerRole setPractitioner(Reference value) { 1343 this.practitioner = value; 1344 return this; 1345 } 1346 1347 /** 1348 * @return {@link #practitioner} The actual object that is the target of the 1349 * reference. The reference library doesn't populate this, but you can 1350 * use it to hold the resource if you resolve it. (Practitioner that is 1351 * able to provide the defined services for the organization.) 1352 */ 1353 public Practitioner getPractitionerTarget() { 1354 if (this.practitionerTarget == null) 1355 if (Configuration.errorOnAutoCreate()) 1356 throw new Error("Attempt to auto-create PractitionerRole.practitioner"); 1357 else if (Configuration.doAutoCreate()) 1358 this.practitionerTarget = new Practitioner(); // aa 1359 return this.practitionerTarget; 1360 } 1361 1362 /** 1363 * @param value {@link #practitioner} The actual object that is the target of 1364 * the reference. The reference library doesn't use these, but you 1365 * can use it to hold the resource if you resolve it. (Practitioner 1366 * that is able to provide the defined services for the 1367 * organization.) 1368 */ 1369 public PractitionerRole setPractitionerTarget(Practitioner value) { 1370 this.practitionerTarget = value; 1371 return this; 1372 } 1373 1374 /** 1375 * @return {@link #organization} (The organization where the Practitioner 1376 * performs the roles associated.) 1377 */ 1378 public Reference getOrganization() { 1379 if (this.organization == null) 1380 if (Configuration.errorOnAutoCreate()) 1381 throw new Error("Attempt to auto-create PractitionerRole.organization"); 1382 else if (Configuration.doAutoCreate()) 1383 this.organization = new Reference(); // cc 1384 return this.organization; 1385 } 1386 1387 public boolean hasOrganization() { 1388 return this.organization != null && !this.organization.isEmpty(); 1389 } 1390 1391 /** 1392 * @param value {@link #organization} (The organization where the Practitioner 1393 * performs the roles associated.) 1394 */ 1395 public PractitionerRole setOrganization(Reference value) { 1396 this.organization = value; 1397 return this; 1398 } 1399 1400 /** 1401 * @return {@link #organization} The actual object that is the target of the 1402 * reference. The reference library doesn't populate this, but you can 1403 * use it to hold the resource if you resolve it. (The organization 1404 * where the Practitioner performs the roles associated.) 1405 */ 1406 public Organization getOrganizationTarget() { 1407 if (this.organizationTarget == null) 1408 if (Configuration.errorOnAutoCreate()) 1409 throw new Error("Attempt to auto-create PractitionerRole.organization"); 1410 else if (Configuration.doAutoCreate()) 1411 this.organizationTarget = new Organization(); // aa 1412 return this.organizationTarget; 1413 } 1414 1415 /** 1416 * @param value {@link #organization} The actual object that is the target of 1417 * the reference. The reference library doesn't use these, but you 1418 * can use it to hold the resource if you resolve it. (The 1419 * organization where the Practitioner performs the roles 1420 * associated.) 1421 */ 1422 public PractitionerRole setOrganizationTarget(Organization value) { 1423 this.organizationTarget = value; 1424 return this; 1425 } 1426 1427 /** 1428 * @return {@link #code} (Roles which this practitioner is authorized to perform 1429 * for the organization.) 1430 */ 1431 public List<CodeableConcept> getCode() { 1432 if (this.code == null) 1433 this.code = new ArrayList<CodeableConcept>(); 1434 return this.code; 1435 } 1436 1437 /** 1438 * @return Returns a reference to <code>this</code> for easy method chaining 1439 */ 1440 public PractitionerRole setCode(List<CodeableConcept> theCode) { 1441 this.code = theCode; 1442 return this; 1443 } 1444 1445 public boolean hasCode() { 1446 if (this.code == null) 1447 return false; 1448 for (CodeableConcept item : this.code) 1449 if (!item.isEmpty()) 1450 return true; 1451 return false; 1452 } 1453 1454 public CodeableConcept addCode() { // 3 1455 CodeableConcept t = new CodeableConcept(); 1456 if (this.code == null) 1457 this.code = new ArrayList<CodeableConcept>(); 1458 this.code.add(t); 1459 return t; 1460 } 1461 1462 public PractitionerRole addCode(CodeableConcept t) { // 3 1463 if (t == null) 1464 return this; 1465 if (this.code == null) 1466 this.code = new ArrayList<CodeableConcept>(); 1467 this.code.add(t); 1468 return this; 1469 } 1470 1471 /** 1472 * @return The first repetition of repeating field {@link #code}, creating it if 1473 * it does not already exist 1474 */ 1475 public CodeableConcept getCodeFirstRep() { 1476 if (getCode().isEmpty()) { 1477 addCode(); 1478 } 1479 return getCode().get(0); 1480 } 1481 1482 /** 1483 * @return {@link #specialty} (Specific specialty of the practitioner.) 1484 */ 1485 public List<CodeableConcept> getSpecialty() { 1486 if (this.specialty == null) 1487 this.specialty = new ArrayList<CodeableConcept>(); 1488 return this.specialty; 1489 } 1490 1491 /** 1492 * @return Returns a reference to <code>this</code> for easy method chaining 1493 */ 1494 public PractitionerRole setSpecialty(List<CodeableConcept> theSpecialty) { 1495 this.specialty = theSpecialty; 1496 return this; 1497 } 1498 1499 public boolean hasSpecialty() { 1500 if (this.specialty == null) 1501 return false; 1502 for (CodeableConcept item : this.specialty) 1503 if (!item.isEmpty()) 1504 return true; 1505 return false; 1506 } 1507 1508 public CodeableConcept addSpecialty() { // 3 1509 CodeableConcept t = new CodeableConcept(); 1510 if (this.specialty == null) 1511 this.specialty = new ArrayList<CodeableConcept>(); 1512 this.specialty.add(t); 1513 return t; 1514 } 1515 1516 public PractitionerRole addSpecialty(CodeableConcept t) { // 3 1517 if (t == null) 1518 return this; 1519 if (this.specialty == null) 1520 this.specialty = new ArrayList<CodeableConcept>(); 1521 this.specialty.add(t); 1522 return this; 1523 } 1524 1525 /** 1526 * @return The first repetition of repeating field {@link #specialty}, creating 1527 * it if it does not already exist 1528 */ 1529 public CodeableConcept getSpecialtyFirstRep() { 1530 if (getSpecialty().isEmpty()) { 1531 addSpecialty(); 1532 } 1533 return getSpecialty().get(0); 1534 } 1535 1536 /** 1537 * @return {@link #location} (The location(s) at which this practitioner 1538 * provides care.) 1539 */ 1540 public List<Reference> getLocation() { 1541 if (this.location == null) 1542 this.location = new ArrayList<Reference>(); 1543 return this.location; 1544 } 1545 1546 /** 1547 * @return Returns a reference to <code>this</code> for easy method chaining 1548 */ 1549 public PractitionerRole setLocation(List<Reference> theLocation) { 1550 this.location = theLocation; 1551 return this; 1552 } 1553 1554 public boolean hasLocation() { 1555 if (this.location == null) 1556 return false; 1557 for (Reference item : this.location) 1558 if (!item.isEmpty()) 1559 return true; 1560 return false; 1561 } 1562 1563 public Reference addLocation() { // 3 1564 Reference t = new Reference(); 1565 if (this.location == null) 1566 this.location = new ArrayList<Reference>(); 1567 this.location.add(t); 1568 return t; 1569 } 1570 1571 public PractitionerRole addLocation(Reference t) { // 3 1572 if (t == null) 1573 return this; 1574 if (this.location == null) 1575 this.location = new ArrayList<Reference>(); 1576 this.location.add(t); 1577 return this; 1578 } 1579 1580 /** 1581 * @return The first repetition of repeating field {@link #location}, creating 1582 * it if it does not already exist 1583 */ 1584 public Reference getLocationFirstRep() { 1585 if (getLocation().isEmpty()) { 1586 addLocation(); 1587 } 1588 return getLocation().get(0); 1589 } 1590 1591 /** 1592 * @deprecated Use Reference#setResource(IBaseResource) instead 1593 */ 1594 @Deprecated 1595 public List<Location> getLocationTarget() { 1596 if (this.locationTarget == null) 1597 this.locationTarget = new ArrayList<Location>(); 1598 return this.locationTarget; 1599 } 1600 1601 /** 1602 * @deprecated Use Reference#setResource(IBaseResource) instead 1603 */ 1604 @Deprecated 1605 public Location addLocationTarget() { 1606 Location r = new Location(); 1607 if (this.locationTarget == null) 1608 this.locationTarget = new ArrayList<Location>(); 1609 this.locationTarget.add(r); 1610 return r; 1611 } 1612 1613 /** 1614 * @return {@link #healthcareService} (The list of healthcare services that this 1615 * worker provides for this role's Organization/Location(s).) 1616 */ 1617 public List<Reference> getHealthcareService() { 1618 if (this.healthcareService == null) 1619 this.healthcareService = new ArrayList<Reference>(); 1620 return this.healthcareService; 1621 } 1622 1623 /** 1624 * @return Returns a reference to <code>this</code> for easy method chaining 1625 */ 1626 public PractitionerRole setHealthcareService(List<Reference> theHealthcareService) { 1627 this.healthcareService = theHealthcareService; 1628 return this; 1629 } 1630 1631 public boolean hasHealthcareService() { 1632 if (this.healthcareService == null) 1633 return false; 1634 for (Reference item : this.healthcareService) 1635 if (!item.isEmpty()) 1636 return true; 1637 return false; 1638 } 1639 1640 public Reference addHealthcareService() { // 3 1641 Reference t = new Reference(); 1642 if (this.healthcareService == null) 1643 this.healthcareService = new ArrayList<Reference>(); 1644 this.healthcareService.add(t); 1645 return t; 1646 } 1647 1648 public PractitionerRole addHealthcareService(Reference t) { // 3 1649 if (t == null) 1650 return this; 1651 if (this.healthcareService == null) 1652 this.healthcareService = new ArrayList<Reference>(); 1653 this.healthcareService.add(t); 1654 return this; 1655 } 1656 1657 /** 1658 * @return The first repetition of repeating field {@link #healthcareService}, 1659 * creating it if it does not already exist 1660 */ 1661 public Reference getHealthcareServiceFirstRep() { 1662 if (getHealthcareService().isEmpty()) { 1663 addHealthcareService(); 1664 } 1665 return getHealthcareService().get(0); 1666 } 1667 1668 /** 1669 * @deprecated Use Reference#setResource(IBaseResource) instead 1670 */ 1671 @Deprecated 1672 public List<HealthcareService> getHealthcareServiceTarget() { 1673 if (this.healthcareServiceTarget == null) 1674 this.healthcareServiceTarget = new ArrayList<HealthcareService>(); 1675 return this.healthcareServiceTarget; 1676 } 1677 1678 /** 1679 * @deprecated Use Reference#setResource(IBaseResource) instead 1680 */ 1681 @Deprecated 1682 public HealthcareService addHealthcareServiceTarget() { 1683 HealthcareService r = new HealthcareService(); 1684 if (this.healthcareServiceTarget == null) 1685 this.healthcareServiceTarget = new ArrayList<HealthcareService>(); 1686 this.healthcareServiceTarget.add(r); 1687 return r; 1688 } 1689 1690 /** 1691 * @return {@link #telecom} (Contact details that are specific to the 1692 * role/location/service.) 1693 */ 1694 public List<ContactPoint> getTelecom() { 1695 if (this.telecom == null) 1696 this.telecom = new ArrayList<ContactPoint>(); 1697 return this.telecom; 1698 } 1699 1700 /** 1701 * @return Returns a reference to <code>this</code> for easy method chaining 1702 */ 1703 public PractitionerRole setTelecom(List<ContactPoint> theTelecom) { 1704 this.telecom = theTelecom; 1705 return this; 1706 } 1707 1708 public boolean hasTelecom() { 1709 if (this.telecom == null) 1710 return false; 1711 for (ContactPoint item : this.telecom) 1712 if (!item.isEmpty()) 1713 return true; 1714 return false; 1715 } 1716 1717 public ContactPoint addTelecom() { // 3 1718 ContactPoint t = new ContactPoint(); 1719 if (this.telecom == null) 1720 this.telecom = new ArrayList<ContactPoint>(); 1721 this.telecom.add(t); 1722 return t; 1723 } 1724 1725 public PractitionerRole addTelecom(ContactPoint t) { // 3 1726 if (t == null) 1727 return this; 1728 if (this.telecom == null) 1729 this.telecom = new ArrayList<ContactPoint>(); 1730 this.telecom.add(t); 1731 return this; 1732 } 1733 1734 /** 1735 * @return The first repetition of repeating field {@link #telecom}, creating it 1736 * if it does not already exist 1737 */ 1738 public ContactPoint getTelecomFirstRep() { 1739 if (getTelecom().isEmpty()) { 1740 addTelecom(); 1741 } 1742 return getTelecom().get(0); 1743 } 1744 1745 /** 1746 * @return {@link #availableTime} (A collection of times the practitioner is 1747 * available or performing this role at the location and/or 1748 * healthcareservice.) 1749 */ 1750 public List<PractitionerRoleAvailableTimeComponent> getAvailableTime() { 1751 if (this.availableTime == null) 1752 this.availableTime = new ArrayList<PractitionerRoleAvailableTimeComponent>(); 1753 return this.availableTime; 1754 } 1755 1756 /** 1757 * @return Returns a reference to <code>this</code> for easy method chaining 1758 */ 1759 public PractitionerRole setAvailableTime(List<PractitionerRoleAvailableTimeComponent> theAvailableTime) { 1760 this.availableTime = theAvailableTime; 1761 return this; 1762 } 1763 1764 public boolean hasAvailableTime() { 1765 if (this.availableTime == null) 1766 return false; 1767 for (PractitionerRoleAvailableTimeComponent item : this.availableTime) 1768 if (!item.isEmpty()) 1769 return true; 1770 return false; 1771 } 1772 1773 public PractitionerRoleAvailableTimeComponent addAvailableTime() { // 3 1774 PractitionerRoleAvailableTimeComponent t = new PractitionerRoleAvailableTimeComponent(); 1775 if (this.availableTime == null) 1776 this.availableTime = new ArrayList<PractitionerRoleAvailableTimeComponent>(); 1777 this.availableTime.add(t); 1778 return t; 1779 } 1780 1781 public PractitionerRole addAvailableTime(PractitionerRoleAvailableTimeComponent t) { // 3 1782 if (t == null) 1783 return this; 1784 if (this.availableTime == null) 1785 this.availableTime = new ArrayList<PractitionerRoleAvailableTimeComponent>(); 1786 this.availableTime.add(t); 1787 return this; 1788 } 1789 1790 /** 1791 * @return The first repetition of repeating field {@link #availableTime}, 1792 * creating it if it does not already exist 1793 */ 1794 public PractitionerRoleAvailableTimeComponent getAvailableTimeFirstRep() { 1795 if (getAvailableTime().isEmpty()) { 1796 addAvailableTime(); 1797 } 1798 return getAvailableTime().get(0); 1799 } 1800 1801 /** 1802 * @return {@link #notAvailable} (The practitioner is not available or 1803 * performing this role during this period of time due to the provided 1804 * reason.) 1805 */ 1806 public List<PractitionerRoleNotAvailableComponent> getNotAvailable() { 1807 if (this.notAvailable == null) 1808 this.notAvailable = new ArrayList<PractitionerRoleNotAvailableComponent>(); 1809 return this.notAvailable; 1810 } 1811 1812 /** 1813 * @return Returns a reference to <code>this</code> for easy method chaining 1814 */ 1815 public PractitionerRole setNotAvailable(List<PractitionerRoleNotAvailableComponent> theNotAvailable) { 1816 this.notAvailable = theNotAvailable; 1817 return this; 1818 } 1819 1820 public boolean hasNotAvailable() { 1821 if (this.notAvailable == null) 1822 return false; 1823 for (PractitionerRoleNotAvailableComponent item : this.notAvailable) 1824 if (!item.isEmpty()) 1825 return true; 1826 return false; 1827 } 1828 1829 public PractitionerRoleNotAvailableComponent addNotAvailable() { // 3 1830 PractitionerRoleNotAvailableComponent t = new PractitionerRoleNotAvailableComponent(); 1831 if (this.notAvailable == null) 1832 this.notAvailable = new ArrayList<PractitionerRoleNotAvailableComponent>(); 1833 this.notAvailable.add(t); 1834 return t; 1835 } 1836 1837 public PractitionerRole addNotAvailable(PractitionerRoleNotAvailableComponent t) { // 3 1838 if (t == null) 1839 return this; 1840 if (this.notAvailable == null) 1841 this.notAvailable = new ArrayList<PractitionerRoleNotAvailableComponent>(); 1842 this.notAvailable.add(t); 1843 return this; 1844 } 1845 1846 /** 1847 * @return The first repetition of repeating field {@link #notAvailable}, 1848 * creating it if it does not already exist 1849 */ 1850 public PractitionerRoleNotAvailableComponent getNotAvailableFirstRep() { 1851 if (getNotAvailable().isEmpty()) { 1852 addNotAvailable(); 1853 } 1854 return getNotAvailable().get(0); 1855 } 1856 1857 /** 1858 * @return {@link #availabilityExceptions} (A description of site availability 1859 * exceptions, e.g. public holiday availability. Succinctly describing 1860 * all possible exceptions to normal site availability as details in the 1861 * available Times and not available Times.). This is the underlying 1862 * object with id, value and extensions. The accessor 1863 * "getAvailabilityExceptions" gives direct access to the value 1864 */ 1865 public StringType getAvailabilityExceptionsElement() { 1866 if (this.availabilityExceptions == null) 1867 if (Configuration.errorOnAutoCreate()) 1868 throw new Error("Attempt to auto-create PractitionerRole.availabilityExceptions"); 1869 else if (Configuration.doAutoCreate()) 1870 this.availabilityExceptions = new StringType(); // bb 1871 return this.availabilityExceptions; 1872 } 1873 1874 public boolean hasAvailabilityExceptionsElement() { 1875 return this.availabilityExceptions != null && !this.availabilityExceptions.isEmpty(); 1876 } 1877 1878 public boolean hasAvailabilityExceptions() { 1879 return this.availabilityExceptions != null && !this.availabilityExceptions.isEmpty(); 1880 } 1881 1882 /** 1883 * @param value {@link #availabilityExceptions} (A description of site 1884 * availability exceptions, e.g. public holiday availability. 1885 * Succinctly describing all possible exceptions to normal site 1886 * availability as details in the available Times and not available 1887 * Times.). This is the underlying object with id, value and 1888 * extensions. The accessor "getAvailabilityExceptions" gives 1889 * direct access to the value 1890 */ 1891 public PractitionerRole setAvailabilityExceptionsElement(StringType value) { 1892 this.availabilityExceptions = value; 1893 return this; 1894 } 1895 1896 /** 1897 * @return A description of site availability exceptions, e.g. public holiday 1898 * availability. Succinctly describing all possible exceptions to normal 1899 * site availability as details in the available Times and not available 1900 * Times. 1901 */ 1902 public String getAvailabilityExceptions() { 1903 return this.availabilityExceptions == null ? null : this.availabilityExceptions.getValue(); 1904 } 1905 1906 /** 1907 * @param value A description of site availability exceptions, e.g. public 1908 * holiday availability. Succinctly describing all possible 1909 * exceptions to normal site availability as details in the 1910 * available Times and not available Times. 1911 */ 1912 public PractitionerRole setAvailabilityExceptions(String value) { 1913 if (Utilities.noString(value)) 1914 this.availabilityExceptions = null; 1915 else { 1916 if (this.availabilityExceptions == null) 1917 this.availabilityExceptions = new StringType(); 1918 this.availabilityExceptions.setValue(value); 1919 } 1920 return this; 1921 } 1922 1923 /** 1924 * @return {@link #endpoint} (Technical endpoints providing access to services 1925 * operated for the practitioner with this role.) 1926 */ 1927 public List<Reference> getEndpoint() { 1928 if (this.endpoint == null) 1929 this.endpoint = new ArrayList<Reference>(); 1930 return this.endpoint; 1931 } 1932 1933 /** 1934 * @return Returns a reference to <code>this</code> for easy method chaining 1935 */ 1936 public PractitionerRole setEndpoint(List<Reference> theEndpoint) { 1937 this.endpoint = theEndpoint; 1938 return this; 1939 } 1940 1941 public boolean hasEndpoint() { 1942 if (this.endpoint == null) 1943 return false; 1944 for (Reference item : this.endpoint) 1945 if (!item.isEmpty()) 1946 return true; 1947 return false; 1948 } 1949 1950 public Reference addEndpoint() { // 3 1951 Reference t = new Reference(); 1952 if (this.endpoint == null) 1953 this.endpoint = new ArrayList<Reference>(); 1954 this.endpoint.add(t); 1955 return t; 1956 } 1957 1958 public PractitionerRole addEndpoint(Reference t) { // 3 1959 if (t == null) 1960 return this; 1961 if (this.endpoint == null) 1962 this.endpoint = new ArrayList<Reference>(); 1963 this.endpoint.add(t); 1964 return this; 1965 } 1966 1967 /** 1968 * @return The first repetition of repeating field {@link #endpoint}, creating 1969 * it if it does not already exist 1970 */ 1971 public Reference getEndpointFirstRep() { 1972 if (getEndpoint().isEmpty()) { 1973 addEndpoint(); 1974 } 1975 return getEndpoint().get(0); 1976 } 1977 1978 /** 1979 * @deprecated Use Reference#setResource(IBaseResource) instead 1980 */ 1981 @Deprecated 1982 public List<Endpoint> getEndpointTarget() { 1983 if (this.endpointTarget == null) 1984 this.endpointTarget = new ArrayList<Endpoint>(); 1985 return this.endpointTarget; 1986 } 1987 1988 /** 1989 * @deprecated Use Reference#setResource(IBaseResource) instead 1990 */ 1991 @Deprecated 1992 public Endpoint addEndpointTarget() { 1993 Endpoint r = new Endpoint(); 1994 if (this.endpointTarget == null) 1995 this.endpointTarget = new ArrayList<Endpoint>(); 1996 this.endpointTarget.add(r); 1997 return r; 1998 } 1999 2000 protected void listChildren(List<Property> children) { 2001 super.listChildren(children); 2002 children.add(new Property("identifier", "Identifier", "Business Identifiers that are specific to a role/location.", 2003 0, java.lang.Integer.MAX_VALUE, identifier)); 2004 children.add( 2005 new Property("active", "boolean", "Whether this practitioner role record is in active use.", 0, 1, active)); 2006 children.add(new Property("period", "Period", 2007 "The period during which the person is authorized to act as a practitioner in these role(s) for the organization.", 2008 0, 1, period)); 2009 children.add(new Property("practitioner", "Reference(Practitioner)", 2010 "Practitioner that is able to provide the defined services for the organization.", 0, 1, practitioner)); 2011 children.add(new Property("organization", "Reference(Organization)", 2012 "The organization where the Practitioner performs the roles associated.", 0, 1, organization)); 2013 children.add(new Property("code", "CodeableConcept", 2014 "Roles which this practitioner is authorized to perform for the organization.", 0, java.lang.Integer.MAX_VALUE, 2015 code)); 2016 children.add(new Property("specialty", "CodeableConcept", "Specific specialty of the practitioner.", 0, 2017 java.lang.Integer.MAX_VALUE, specialty)); 2018 children.add(new Property("location", "Reference(Location)", 2019 "The location(s) at which this practitioner provides care.", 0, java.lang.Integer.MAX_VALUE, location)); 2020 children.add(new Property("healthcareService", "Reference(HealthcareService)", 2021 "The list of healthcare services that this worker provides for this role's Organization/Location(s).", 0, 2022 java.lang.Integer.MAX_VALUE, healthcareService)); 2023 children.add(new Property("telecom", "ContactPoint", 2024 "Contact details that are specific to the role/location/service.", 0, java.lang.Integer.MAX_VALUE, telecom)); 2025 children.add(new Property("availableTime", "", 2026 "A collection of times the practitioner is available or performing this role at the location and/or healthcareservice.", 2027 0, java.lang.Integer.MAX_VALUE, availableTime)); 2028 children.add(new Property("notAvailable", "", 2029 "The practitioner is not available or performing this role during this period of time due to the provided reason.", 2030 0, java.lang.Integer.MAX_VALUE, notAvailable)); 2031 children.add(new Property("availabilityExceptions", "string", 2032 "A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times.", 2033 0, 1, availabilityExceptions)); 2034 children.add(new Property("endpoint", "Reference(Endpoint)", 2035 "Technical endpoints providing access to services operated for the practitioner with this role.", 0, 2036 java.lang.Integer.MAX_VALUE, endpoint)); 2037 } 2038 2039 @Override 2040 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2041 switch (_hash) { 2042 case -1618432855: 2043 /* identifier */ return new Property("identifier", "Identifier", 2044 "Business Identifiers that are specific to a role/location.", 0, java.lang.Integer.MAX_VALUE, identifier); 2045 case -1422950650: 2046 /* active */ return new Property("active", "boolean", "Whether this practitioner role record is in active use.", 2047 0, 1, active); 2048 case -991726143: 2049 /* period */ return new Property("period", "Period", 2050 "The period during which the person is authorized to act as a practitioner in these role(s) for the organization.", 2051 0, 1, period); 2052 case 574573338: 2053 /* practitioner */ return new Property("practitioner", "Reference(Practitioner)", 2054 "Practitioner that is able to provide the defined services for the organization.", 0, 1, practitioner); 2055 case 1178922291: 2056 /* organization */ return new Property("organization", "Reference(Organization)", 2057 "The organization where the Practitioner performs the roles associated.", 0, 1, organization); 2058 case 3059181: 2059 /* code */ return new Property("code", "CodeableConcept", 2060 "Roles which this practitioner is authorized to perform for the organization.", 0, 2061 java.lang.Integer.MAX_VALUE, code); 2062 case -1694759682: 2063 /* specialty */ return new Property("specialty", "CodeableConcept", "Specific specialty of the practitioner.", 0, 2064 java.lang.Integer.MAX_VALUE, specialty); 2065 case 1901043637: 2066 /* location */ return new Property("location", "Reference(Location)", 2067 "The location(s) at which this practitioner provides care.", 0, java.lang.Integer.MAX_VALUE, location); 2068 case 1289661064: 2069 /* healthcareService */ return new Property("healthcareService", "Reference(HealthcareService)", 2070 "The list of healthcare services that this worker provides for this role's Organization/Location(s).", 0, 2071 java.lang.Integer.MAX_VALUE, healthcareService); 2072 case -1429363305: 2073 /* telecom */ return new Property("telecom", "ContactPoint", 2074 "Contact details that are specific to the role/location/service.", 0, java.lang.Integer.MAX_VALUE, telecom); 2075 case 1873069366: 2076 /* availableTime */ return new Property("availableTime", "", 2077 "A collection of times the practitioner is available or performing this role at the location and/or healthcareservice.", 2078 0, java.lang.Integer.MAX_VALUE, availableTime); 2079 case -629572298: 2080 /* notAvailable */ return new Property("notAvailable", "", 2081 "The practitioner is not available or performing this role during this period of time due to the provided reason.", 2082 0, java.lang.Integer.MAX_VALUE, notAvailable); 2083 case -1149143617: 2084 /* availabilityExceptions */ return new Property("availabilityExceptions", "string", 2085 "A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times.", 2086 0, 1, availabilityExceptions); 2087 case 1741102485: 2088 /* endpoint */ return new Property("endpoint", "Reference(Endpoint)", 2089 "Technical endpoints providing access to services operated for the practitioner with this role.", 0, 2090 java.lang.Integer.MAX_VALUE, endpoint); 2091 default: 2092 return super.getNamedProperty(_hash, _name, _checkValid); 2093 } 2094 2095 } 2096 2097 @Override 2098 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2099 switch (hash) { 2100 case -1618432855: 2101 /* identifier */ return this.identifier == null ? new Base[0] 2102 : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier 2103 case -1422950650: 2104 /* active */ return this.active == null ? new Base[0] : new Base[] { this.active }; // BooleanType 2105 case -991726143: 2106 /* period */ return this.period == null ? new Base[0] : new Base[] { this.period }; // Period 2107 case 574573338: 2108 /* practitioner */ return this.practitioner == null ? new Base[0] : new Base[] { this.practitioner }; // Reference 2109 case 1178922291: 2110 /* organization */ return this.organization == null ? new Base[0] : new Base[] { this.organization }; // Reference 2111 case 3059181: 2112 /* code */ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept 2113 case -1694759682: 2114 /* specialty */ return this.specialty == null ? new Base[0] 2115 : this.specialty.toArray(new Base[this.specialty.size()]); // CodeableConcept 2116 case 1901043637: 2117 /* location */ return this.location == null ? new Base[0] : this.location.toArray(new Base[this.location.size()]); // Reference 2118 case 1289661064: 2119 /* healthcareService */ return this.healthcareService == null ? new Base[0] 2120 : this.healthcareService.toArray(new Base[this.healthcareService.size()]); // Reference 2121 case -1429363305: 2122 /* telecom */ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint 2123 case 1873069366: 2124 /* availableTime */ return this.availableTime == null ? new Base[0] 2125 : this.availableTime.toArray(new Base[this.availableTime.size()]); // PractitionerRoleAvailableTimeComponent 2126 case -629572298: 2127 /* notAvailable */ return this.notAvailable == null ? new Base[0] 2128 : this.notAvailable.toArray(new Base[this.notAvailable.size()]); // PractitionerRoleNotAvailableComponent 2129 case -1149143617: 2130 /* availabilityExceptions */ return this.availabilityExceptions == null ? new Base[0] 2131 : new Base[] { this.availabilityExceptions }; // StringType 2132 case 1741102485: 2133 /* endpoint */ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference 2134 default: 2135 return super.getProperty(hash, name, checkValid); 2136 } 2137 2138 } 2139 2140 @Override 2141 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2142 switch (hash) { 2143 case -1618432855: // identifier 2144 this.getIdentifier().add(castToIdentifier(value)); // Identifier 2145 return value; 2146 case -1422950650: // active 2147 this.active = castToBoolean(value); // BooleanType 2148 return value; 2149 case -991726143: // period 2150 this.period = castToPeriod(value); // Period 2151 return value; 2152 case 574573338: // practitioner 2153 this.practitioner = castToReference(value); // Reference 2154 return value; 2155 case 1178922291: // organization 2156 this.organization = castToReference(value); // Reference 2157 return value; 2158 case 3059181: // code 2159 this.getCode().add(castToCodeableConcept(value)); // CodeableConcept 2160 return value; 2161 case -1694759682: // specialty 2162 this.getSpecialty().add(castToCodeableConcept(value)); // CodeableConcept 2163 return value; 2164 case 1901043637: // location 2165 this.getLocation().add(castToReference(value)); // Reference 2166 return value; 2167 case 1289661064: // healthcareService 2168 this.getHealthcareService().add(castToReference(value)); // Reference 2169 return value; 2170 case -1429363305: // telecom 2171 this.getTelecom().add(castToContactPoint(value)); // ContactPoint 2172 return value; 2173 case 1873069366: // availableTime 2174 this.getAvailableTime().add((PractitionerRoleAvailableTimeComponent) value); // PractitionerRoleAvailableTimeComponent 2175 return value; 2176 case -629572298: // notAvailable 2177 this.getNotAvailable().add((PractitionerRoleNotAvailableComponent) value); // PractitionerRoleNotAvailableComponent 2178 return value; 2179 case -1149143617: // availabilityExceptions 2180 this.availabilityExceptions = castToString(value); // StringType 2181 return value; 2182 case 1741102485: // endpoint 2183 this.getEndpoint().add(castToReference(value)); // Reference 2184 return value; 2185 default: 2186 return super.setProperty(hash, name, value); 2187 } 2188 2189 } 2190 2191 @Override 2192 public Base setProperty(String name, Base value) throws FHIRException { 2193 if (name.equals("identifier")) { 2194 this.getIdentifier().add(castToIdentifier(value)); 2195 } else if (name.equals("active")) { 2196 this.active = castToBoolean(value); // BooleanType 2197 } else if (name.equals("period")) { 2198 this.period = castToPeriod(value); // Period 2199 } else if (name.equals("practitioner")) { 2200 this.practitioner = castToReference(value); // Reference 2201 } else if (name.equals("organization")) { 2202 this.organization = castToReference(value); // Reference 2203 } else if (name.equals("code")) { 2204 this.getCode().add(castToCodeableConcept(value)); 2205 } else if (name.equals("specialty")) { 2206 this.getSpecialty().add(castToCodeableConcept(value)); 2207 } else if (name.equals("location")) { 2208 this.getLocation().add(castToReference(value)); 2209 } else if (name.equals("healthcareService")) { 2210 this.getHealthcareService().add(castToReference(value)); 2211 } else if (name.equals("telecom")) { 2212 this.getTelecom().add(castToContactPoint(value)); 2213 } else if (name.equals("availableTime")) { 2214 this.getAvailableTime().add((PractitionerRoleAvailableTimeComponent) value); 2215 } else if (name.equals("notAvailable")) { 2216 this.getNotAvailable().add((PractitionerRoleNotAvailableComponent) value); 2217 } else if (name.equals("availabilityExceptions")) { 2218 this.availabilityExceptions = castToString(value); // StringType 2219 } else if (name.equals("endpoint")) { 2220 this.getEndpoint().add(castToReference(value)); 2221 } else 2222 return super.setProperty(name, value); 2223 return value; 2224 } 2225 2226 @Override 2227 public void removeChild(String name, Base value) throws FHIRException { 2228 if (name.equals("identifier")) { 2229 this.getIdentifier().remove(castToIdentifier(value)); 2230 } else if (name.equals("active")) { 2231 this.active = null; 2232 } else if (name.equals("period")) { 2233 this.period = null; 2234 } else if (name.equals("practitioner")) { 2235 this.practitioner = null; 2236 } else if (name.equals("organization")) { 2237 this.organization = null; 2238 } else if (name.equals("code")) { 2239 this.getCode().remove(castToCodeableConcept(value)); 2240 } else if (name.equals("specialty")) { 2241 this.getSpecialty().remove(castToCodeableConcept(value)); 2242 } else if (name.equals("location")) { 2243 this.getLocation().remove(castToReference(value)); 2244 } else if (name.equals("healthcareService")) { 2245 this.getHealthcareService().remove(castToReference(value)); 2246 } else if (name.equals("telecom")) { 2247 this.getTelecom().remove(castToContactPoint(value)); 2248 } else if (name.equals("availableTime")) { 2249 this.getAvailableTime().remove((PractitionerRoleAvailableTimeComponent) value); 2250 } else if (name.equals("notAvailable")) { 2251 this.getNotAvailable().remove((PractitionerRoleNotAvailableComponent) value); 2252 } else if (name.equals("availabilityExceptions")) { 2253 this.availabilityExceptions = null; 2254 } else if (name.equals("endpoint")) { 2255 this.getEndpoint().remove(castToReference(value)); 2256 } else 2257 super.removeChild(name, value); 2258 2259 } 2260 2261 @Override 2262 public Base makeProperty(int hash, String name) throws FHIRException { 2263 switch (hash) { 2264 case -1618432855: 2265 return addIdentifier(); 2266 case -1422950650: 2267 return getActiveElement(); 2268 case -991726143: 2269 return getPeriod(); 2270 case 574573338: 2271 return getPractitioner(); 2272 case 1178922291: 2273 return getOrganization(); 2274 case 3059181: 2275 return addCode(); 2276 case -1694759682: 2277 return addSpecialty(); 2278 case 1901043637: 2279 return addLocation(); 2280 case 1289661064: 2281 return addHealthcareService(); 2282 case -1429363305: 2283 return addTelecom(); 2284 case 1873069366: 2285 return addAvailableTime(); 2286 case -629572298: 2287 return addNotAvailable(); 2288 case -1149143617: 2289 return getAvailabilityExceptionsElement(); 2290 case 1741102485: 2291 return addEndpoint(); 2292 default: 2293 return super.makeProperty(hash, name); 2294 } 2295 2296 } 2297 2298 @Override 2299 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2300 switch (hash) { 2301 case -1618432855: 2302 /* identifier */ return new String[] { "Identifier" }; 2303 case -1422950650: 2304 /* active */ return new String[] { "boolean" }; 2305 case -991726143: 2306 /* period */ return new String[] { "Period" }; 2307 case 574573338: 2308 /* practitioner */ return new String[] { "Reference" }; 2309 case 1178922291: 2310 /* organization */ return new String[] { "Reference" }; 2311 case 3059181: 2312 /* code */ return new String[] { "CodeableConcept" }; 2313 case -1694759682: 2314 /* specialty */ return new String[] { "CodeableConcept" }; 2315 case 1901043637: 2316 /* location */ return new String[] { "Reference" }; 2317 case 1289661064: 2318 /* healthcareService */ return new String[] { "Reference" }; 2319 case -1429363305: 2320 /* telecom */ return new String[] { "ContactPoint" }; 2321 case 1873069366: 2322 /* availableTime */ return new String[] {}; 2323 case -629572298: 2324 /* notAvailable */ return new String[] {}; 2325 case -1149143617: 2326 /* availabilityExceptions */ return new String[] { "string" }; 2327 case 1741102485: 2328 /* endpoint */ return new String[] { "Reference" }; 2329 default: 2330 return super.getTypesForProperty(hash, name); 2331 } 2332 2333 } 2334 2335 @Override 2336 public Base addChild(String name) throws FHIRException { 2337 if (name.equals("identifier")) { 2338 return addIdentifier(); 2339 } else if (name.equals("active")) { 2340 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.active"); 2341 } else if (name.equals("period")) { 2342 this.period = new Period(); 2343 return this.period; 2344 } else if (name.equals("practitioner")) { 2345 this.practitioner = new Reference(); 2346 return this.practitioner; 2347 } else if (name.equals("organization")) { 2348 this.organization = new Reference(); 2349 return this.organization; 2350 } else if (name.equals("code")) { 2351 return addCode(); 2352 } else if (name.equals("specialty")) { 2353 return addSpecialty(); 2354 } else if (name.equals("location")) { 2355 return addLocation(); 2356 } else if (name.equals("healthcareService")) { 2357 return addHealthcareService(); 2358 } else if (name.equals("telecom")) { 2359 return addTelecom(); 2360 } else if (name.equals("availableTime")) { 2361 return addAvailableTime(); 2362 } else if (name.equals("notAvailable")) { 2363 return addNotAvailable(); 2364 } else if (name.equals("availabilityExceptions")) { 2365 throw new FHIRException("Cannot call addChild on a singleton property PractitionerRole.availabilityExceptions"); 2366 } else if (name.equals("endpoint")) { 2367 return addEndpoint(); 2368 } else 2369 return super.addChild(name); 2370 } 2371 2372 public String fhirType() { 2373 return "PractitionerRole"; 2374 2375 } 2376 2377 public PractitionerRole copy() { 2378 PractitionerRole dst = new PractitionerRole(); 2379 copyValues(dst); 2380 return dst; 2381 } 2382 2383 public void copyValues(PractitionerRole dst) { 2384 super.copyValues(dst); 2385 if (identifier != null) { 2386 dst.identifier = new ArrayList<Identifier>(); 2387 for (Identifier i : identifier) 2388 dst.identifier.add(i.copy()); 2389 } 2390 ; 2391 dst.active = active == null ? null : active.copy(); 2392 dst.period = period == null ? null : period.copy(); 2393 dst.practitioner = practitioner == null ? null : practitioner.copy(); 2394 dst.organization = organization == null ? null : organization.copy(); 2395 if (code != null) { 2396 dst.code = new ArrayList<CodeableConcept>(); 2397 for (CodeableConcept i : code) 2398 dst.code.add(i.copy()); 2399 } 2400 ; 2401 if (specialty != null) { 2402 dst.specialty = new ArrayList<CodeableConcept>(); 2403 for (CodeableConcept i : specialty) 2404 dst.specialty.add(i.copy()); 2405 } 2406 ; 2407 if (location != null) { 2408 dst.location = new ArrayList<Reference>(); 2409 for (Reference i : location) 2410 dst.location.add(i.copy()); 2411 } 2412 ; 2413 if (healthcareService != null) { 2414 dst.healthcareService = new ArrayList<Reference>(); 2415 for (Reference i : healthcareService) 2416 dst.healthcareService.add(i.copy()); 2417 } 2418 ; 2419 if (telecom != null) { 2420 dst.telecom = new ArrayList<ContactPoint>(); 2421 for (ContactPoint i : telecom) 2422 dst.telecom.add(i.copy()); 2423 } 2424 ; 2425 if (availableTime != null) { 2426 dst.availableTime = new ArrayList<PractitionerRoleAvailableTimeComponent>(); 2427 for (PractitionerRoleAvailableTimeComponent i : availableTime) 2428 dst.availableTime.add(i.copy()); 2429 } 2430 ; 2431 if (notAvailable != null) { 2432 dst.notAvailable = new ArrayList<PractitionerRoleNotAvailableComponent>(); 2433 for (PractitionerRoleNotAvailableComponent i : notAvailable) 2434 dst.notAvailable.add(i.copy()); 2435 } 2436 ; 2437 dst.availabilityExceptions = availabilityExceptions == null ? null : availabilityExceptions.copy(); 2438 if (endpoint != null) { 2439 dst.endpoint = new ArrayList<Reference>(); 2440 for (Reference i : endpoint) 2441 dst.endpoint.add(i.copy()); 2442 } 2443 ; 2444 } 2445 2446 protected PractitionerRole typedCopy() { 2447 return copy(); 2448 } 2449 2450 @Override 2451 public boolean equalsDeep(Base other_) { 2452 if (!super.equalsDeep(other_)) 2453 return false; 2454 if (!(other_ instanceof PractitionerRole)) 2455 return false; 2456 PractitionerRole o = (PractitionerRole) other_; 2457 return compareDeep(identifier, o.identifier, true) && compareDeep(active, o.active, true) 2458 && compareDeep(period, o.period, true) && compareDeep(practitioner, o.practitioner, true) 2459 && compareDeep(organization, o.organization, true) && compareDeep(code, o.code, true) 2460 && compareDeep(specialty, o.specialty, true) && compareDeep(location, o.location, true) 2461 && compareDeep(healthcareService, o.healthcareService, true) && compareDeep(telecom, o.telecom, true) 2462 && compareDeep(availableTime, o.availableTime, true) && compareDeep(notAvailable, o.notAvailable, true) 2463 && compareDeep(availabilityExceptions, o.availabilityExceptions, true) 2464 && compareDeep(endpoint, o.endpoint, true); 2465 } 2466 2467 @Override 2468 public boolean equalsShallow(Base other_) { 2469 if (!super.equalsShallow(other_)) 2470 return false; 2471 if (!(other_ instanceof PractitionerRole)) 2472 return false; 2473 PractitionerRole o = (PractitionerRole) other_; 2474 return compareValues(active, o.active, true) 2475 && compareValues(availabilityExceptions, o.availabilityExceptions, true); 2476 } 2477 2478 public boolean isEmpty() { 2479 return super.isEmpty() 2480 && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, active, period, practitioner, organization, code, specialty, 2481 location, healthcareService, telecom, availableTime, notAvailable, availabilityExceptions, endpoint); 2482 } 2483 2484 @Override 2485 public ResourceType getResourceType() { 2486 return ResourceType.PractitionerRole; 2487 } 2488 2489 /** 2490 * Search parameter: <b>date</b> 2491 * <p> 2492 * Description: <b>The period during which the practitioner is authorized to 2493 * perform in these role(s)</b><br> 2494 * Type: <b>date</b><br> 2495 * Path: <b>PractitionerRole.period</b><br> 2496 * </p> 2497 */ 2498 @SearchParamDefinition(name = "date", path = "PractitionerRole.period", description = "The period during which the practitioner is authorized to perform in these role(s)", type = "date") 2499 public static final String SP_DATE = "date"; 2500 /** 2501 * <b>Fluent Client</b> search parameter constant for <b>date</b> 2502 * <p> 2503 * Description: <b>The period during which the practitioner is authorized to 2504 * perform in these role(s)</b><br> 2505 * Type: <b>date</b><br> 2506 * Path: <b>PractitionerRole.period</b><br> 2507 * </p> 2508 */ 2509 public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam( 2510 SP_DATE); 2511 2512 /** 2513 * Search parameter: <b>identifier</b> 2514 * <p> 2515 * Description: <b>A practitioner's Identifier</b><br> 2516 * Type: <b>token</b><br> 2517 * Path: <b>PractitionerRole.identifier</b><br> 2518 * </p> 2519 */ 2520 @SearchParamDefinition(name = "identifier", path = "PractitionerRole.identifier", description = "A practitioner's Identifier", type = "token") 2521 public static final String SP_IDENTIFIER = "identifier"; 2522 /** 2523 * <b>Fluent Client</b> search parameter constant for <b>identifier</b> 2524 * <p> 2525 * Description: <b>A practitioner's Identifier</b><br> 2526 * Type: <b>token</b><br> 2527 * Path: <b>PractitionerRole.identifier</b><br> 2528 * </p> 2529 */ 2530 public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2531 SP_IDENTIFIER); 2532 2533 /** 2534 * Search parameter: <b>specialty</b> 2535 * <p> 2536 * Description: <b>The practitioner has this specialty at an 2537 * organization</b><br> 2538 * Type: <b>token</b><br> 2539 * Path: <b>PractitionerRole.specialty</b><br> 2540 * </p> 2541 */ 2542 @SearchParamDefinition(name = "specialty", path = "PractitionerRole.specialty", description = "The practitioner has this specialty at an organization", type = "token") 2543 public static final String SP_SPECIALTY = "specialty"; 2544 /** 2545 * <b>Fluent Client</b> search parameter constant for <b>specialty</b> 2546 * <p> 2547 * Description: <b>The practitioner has this specialty at an 2548 * organization</b><br> 2549 * Type: <b>token</b><br> 2550 * Path: <b>PractitionerRole.specialty</b><br> 2551 * </p> 2552 */ 2553 public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2554 SP_SPECIALTY); 2555 2556 /** 2557 * Search parameter: <b>role</b> 2558 * <p> 2559 * Description: <b>The practitioner can perform this role at for the 2560 * organization</b><br> 2561 * Type: <b>token</b><br> 2562 * Path: <b>PractitionerRole.code</b><br> 2563 * </p> 2564 */ 2565 @SearchParamDefinition(name = "role", path = "PractitionerRole.code", description = "The practitioner can perform this role at for the organization", type = "token") 2566 public static final String SP_ROLE = "role"; 2567 /** 2568 * <b>Fluent Client</b> search parameter constant for <b>role</b> 2569 * <p> 2570 * Description: <b>The practitioner can perform this role at for the 2571 * organization</b><br> 2572 * Type: <b>token</b><br> 2573 * Path: <b>PractitionerRole.code</b><br> 2574 * </p> 2575 */ 2576 public static final ca.uhn.fhir.rest.gclient.TokenClientParam ROLE = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2577 SP_ROLE); 2578 2579 /** 2580 * Search parameter: <b>practitioner</b> 2581 * <p> 2582 * Description: <b>Practitioner that is able to provide the defined services for 2583 * the organization</b><br> 2584 * Type: <b>reference</b><br> 2585 * Path: <b>PractitionerRole.practitioner</b><br> 2586 * </p> 2587 */ 2588 @SearchParamDefinition(name = "practitioner", path = "PractitionerRole.practitioner", description = "Practitioner that is able to provide the defined services for the organization", type = "reference", providesMembershipIn = { 2589 @ca.uhn.fhir.model.api.annotation.Compartment(name = "Practitioner") }, target = { Practitioner.class }) 2590 public static final String SP_PRACTITIONER = "practitioner"; 2591 /** 2592 * <b>Fluent Client</b> search parameter constant for <b>practitioner</b> 2593 * <p> 2594 * Description: <b>Practitioner that is able to provide the defined services for 2595 * the organization</b><br> 2596 * Type: <b>reference</b><br> 2597 * Path: <b>PractitionerRole.practitioner</b><br> 2598 * </p> 2599 */ 2600 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRACTITIONER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 2601 SP_PRACTITIONER); 2602 2603 /** 2604 * Constant for fluent queries to be used to add include statements. Specifies 2605 * the path value of "<b>PractitionerRole:practitioner</b>". 2606 */ 2607 public static final ca.uhn.fhir.model.api.Include INCLUDE_PRACTITIONER = new ca.uhn.fhir.model.api.Include( 2608 "PractitionerRole:practitioner").toLocked(); 2609 2610 /** 2611 * Search parameter: <b>active</b> 2612 * <p> 2613 * Description: <b>Whether this practitioner role record is in active 2614 * use</b><br> 2615 * Type: <b>token</b><br> 2616 * Path: <b>PractitionerRole.active</b><br> 2617 * </p> 2618 */ 2619 @SearchParamDefinition(name = "active", path = "PractitionerRole.active", description = "Whether this practitioner role record is in active use", type = "token") 2620 public static final String SP_ACTIVE = "active"; 2621 /** 2622 * <b>Fluent Client</b> search parameter constant for <b>active</b> 2623 * <p> 2624 * Description: <b>Whether this practitioner role record is in active 2625 * use</b><br> 2626 * Type: <b>token</b><br> 2627 * Path: <b>PractitionerRole.active</b><br> 2628 * </p> 2629 */ 2630 public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTIVE = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2631 SP_ACTIVE); 2632 2633 /** 2634 * Search parameter: <b>endpoint</b> 2635 * <p> 2636 * Description: <b>Technical endpoints providing access to services operated for 2637 * the practitioner with this role</b><br> 2638 * Type: <b>reference</b><br> 2639 * Path: <b>PractitionerRole.endpoint</b><br> 2640 * </p> 2641 */ 2642 @SearchParamDefinition(name = "endpoint", path = "PractitionerRole.endpoint", description = "Technical endpoints providing access to services operated for the practitioner with this role", type = "reference", target = { 2643 Endpoint.class }) 2644 public static final String SP_ENDPOINT = "endpoint"; 2645 /** 2646 * <b>Fluent Client</b> search parameter constant for <b>endpoint</b> 2647 * <p> 2648 * Description: <b>Technical endpoints providing access to services operated for 2649 * the practitioner with this role</b><br> 2650 * Type: <b>reference</b><br> 2651 * Path: <b>PractitionerRole.endpoint</b><br> 2652 * </p> 2653 */ 2654 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENDPOINT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 2655 SP_ENDPOINT); 2656 2657 /** 2658 * Constant for fluent queries to be used to add include statements. Specifies 2659 * the path value of "<b>PractitionerRole:endpoint</b>". 2660 */ 2661 public static final ca.uhn.fhir.model.api.Include INCLUDE_ENDPOINT = new ca.uhn.fhir.model.api.Include( 2662 "PractitionerRole:endpoint").toLocked(); 2663 2664 /** 2665 * Search parameter: <b>phone</b> 2666 * <p> 2667 * Description: <b>A value in a phone contact</b><br> 2668 * Type: <b>token</b><br> 2669 * Path: <b>PractitionerRole.telecom(system=phone)</b><br> 2670 * </p> 2671 */ 2672 @SearchParamDefinition(name = "phone", path = "PractitionerRole.telecom.where(system='phone')", description = "A value in a phone contact", type = "token") 2673 public static final String SP_PHONE = "phone"; 2674 /** 2675 * <b>Fluent Client</b> search parameter constant for <b>phone</b> 2676 * <p> 2677 * Description: <b>A value in a phone contact</b><br> 2678 * Type: <b>token</b><br> 2679 * Path: <b>PractitionerRole.telecom(system=phone)</b><br> 2680 * </p> 2681 */ 2682 public static final ca.uhn.fhir.rest.gclient.TokenClientParam PHONE = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2683 SP_PHONE); 2684 2685 /** 2686 * Search parameter: <b>service</b> 2687 * <p> 2688 * Description: <b>The list of healthcare services that this worker provides for 2689 * this role's Organization/Location(s)</b><br> 2690 * Type: <b>reference</b><br> 2691 * Path: <b>PractitionerRole.healthcareService</b><br> 2692 * </p> 2693 */ 2694 @SearchParamDefinition(name = "service", path = "PractitionerRole.healthcareService", description = "The list of healthcare services that this worker provides for this role's Organization/Location(s)", type = "reference", target = { 2695 HealthcareService.class }) 2696 public static final String SP_SERVICE = "service"; 2697 /** 2698 * <b>Fluent Client</b> search parameter constant for <b>service</b> 2699 * <p> 2700 * Description: <b>The list of healthcare services that this worker provides for 2701 * this role's Organization/Location(s)</b><br> 2702 * Type: <b>reference</b><br> 2703 * Path: <b>PractitionerRole.healthcareService</b><br> 2704 * </p> 2705 */ 2706 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SERVICE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 2707 SP_SERVICE); 2708 2709 /** 2710 * Constant for fluent queries to be used to add include statements. Specifies 2711 * the path value of "<b>PractitionerRole:service</b>". 2712 */ 2713 public static final ca.uhn.fhir.model.api.Include INCLUDE_SERVICE = new ca.uhn.fhir.model.api.Include( 2714 "PractitionerRole:service").toLocked(); 2715 2716 /** 2717 * Search parameter: <b>organization</b> 2718 * <p> 2719 * Description: <b>The identity of the organization the practitioner represents 2720 * / acts on behalf of</b><br> 2721 * Type: <b>reference</b><br> 2722 * Path: <b>PractitionerRole.organization</b><br> 2723 * </p> 2724 */ 2725 @SearchParamDefinition(name = "organization", path = "PractitionerRole.organization", description = "The identity of the organization the practitioner represents / acts on behalf of", type = "reference", target = { 2726 Organization.class }) 2727 public static final String SP_ORGANIZATION = "organization"; 2728 /** 2729 * <b>Fluent Client</b> search parameter constant for <b>organization</b> 2730 * <p> 2731 * Description: <b>The identity of the organization the practitioner represents 2732 * / acts on behalf of</b><br> 2733 * Type: <b>reference</b><br> 2734 * Path: <b>PractitionerRole.organization</b><br> 2735 * </p> 2736 */ 2737 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 2738 SP_ORGANIZATION); 2739 2740 /** 2741 * Constant for fluent queries to be used to add include statements. Specifies 2742 * the path value of "<b>PractitionerRole:organization</b>". 2743 */ 2744 public static final ca.uhn.fhir.model.api.Include INCLUDE_ORGANIZATION = new ca.uhn.fhir.model.api.Include( 2745 "PractitionerRole:organization").toLocked(); 2746 2747 /** 2748 * Search parameter: <b>telecom</b> 2749 * <p> 2750 * Description: <b>The value in any kind of contact</b><br> 2751 * Type: <b>token</b><br> 2752 * Path: <b>PractitionerRole.telecom</b><br> 2753 * </p> 2754 */ 2755 @SearchParamDefinition(name = "telecom", path = "PractitionerRole.telecom", description = "The value in any kind of contact", type = "token") 2756 public static final String SP_TELECOM = "telecom"; 2757 /** 2758 * <b>Fluent Client</b> search parameter constant for <b>telecom</b> 2759 * <p> 2760 * Description: <b>The value in any kind of contact</b><br> 2761 * Type: <b>token</b><br> 2762 * Path: <b>PractitionerRole.telecom</b><br> 2763 * </p> 2764 */ 2765 public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2766 SP_TELECOM); 2767 2768 /** 2769 * Search parameter: <b>location</b> 2770 * <p> 2771 * Description: <b>One of the locations at which this practitioner provides 2772 * care</b><br> 2773 * Type: <b>reference</b><br> 2774 * Path: <b>PractitionerRole.location</b><br> 2775 * </p> 2776 */ 2777 @SearchParamDefinition(name = "location", path = "PractitionerRole.location", description = "One of the locations at which this practitioner provides care", type = "reference", target = { 2778 Location.class }) 2779 public static final String SP_LOCATION = "location"; 2780 /** 2781 * <b>Fluent Client</b> search parameter constant for <b>location</b> 2782 * <p> 2783 * Description: <b>One of the locations at which this practitioner provides 2784 * care</b><br> 2785 * Type: <b>reference</b><br> 2786 * Path: <b>PractitionerRole.location</b><br> 2787 * </p> 2788 */ 2789 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam( 2790 SP_LOCATION); 2791 2792 /** 2793 * Constant for fluent queries to be used to add include statements. Specifies 2794 * the path value of "<b>PractitionerRole:location</b>". 2795 */ 2796 public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include( 2797 "PractitionerRole:location").toLocked(); 2798 2799 /** 2800 * Search parameter: <b>email</b> 2801 * <p> 2802 * Description: <b>A value in an email contact</b><br> 2803 * Type: <b>token</b><br> 2804 * Path: <b>PractitionerRole.telecom(system=email)</b><br> 2805 * </p> 2806 */ 2807 @SearchParamDefinition(name = "email", path = "PractitionerRole.telecom.where(system='email')", description = "A value in an email contact", type = "token") 2808 public static final String SP_EMAIL = "email"; 2809 /** 2810 * <b>Fluent Client</b> search parameter constant for <b>email</b> 2811 * <p> 2812 * Description: <b>A value in an email contact</b><br> 2813 * Type: <b>token</b><br> 2814 * Path: <b>PractitionerRole.telecom(system=email)</b><br> 2815 * </p> 2816 */ 2817 public static final ca.uhn.fhir.rest.gclient.TokenClientParam EMAIL = new ca.uhn.fhir.rest.gclient.TokenClientParam( 2818 SP_EMAIL); 2819 2820}