001package org.hl7.fhir.dstu3.model; 002 003 004 005/* 006 Copyright (c) 2011+, HL7, Inc. 007 All rights reserved. 008 009 Redistribution and use in source and binary forms, with or without modification, 010 are permitted provided that the following conditions are met: 011 012 * Redistributions of source code must retain the above copyright notice, this 013 list of conditions and the following disclaimer. 014 * Redistributions in binary form must reproduce the above copyright notice, 015 this list of conditions and the following disclaimer in the documentation 016 and/or other materials provided with the distribution. 017 * Neither the name of HL7 nor the names of its contributors may be used to 018 endorse or promote products derived from this software without specific 019 prior written permission. 020 021 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 022 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 023 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 024 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 025 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 026 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 027 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 028 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 029 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 030 POSSIBILITY OF SUCH DAMAGE. 031 032*/ 033 034// Generated on Fri, Mar 16, 2018 15:21+1100 for FHIR v3.0.x 035import java.util.ArrayList; 036import java.util.Date; 037import java.util.List; 038 039import org.hl7.fhir.exceptions.FHIRException; 040import org.hl7.fhir.exceptions.FHIRFormatError; 041import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 042import org.hl7.fhir.utilities.Utilities; 043 044import ca.uhn.fhir.model.api.annotation.Block; 045import ca.uhn.fhir.model.api.annotation.Child; 046import ca.uhn.fhir.model.api.annotation.Description; 047import ca.uhn.fhir.model.api.annotation.ResourceDef; 048import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; 049/** 050 * Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc. 051 */ 052@ResourceDef(name="Goal", profile="http://hl7.org/fhir/Profile/Goal") 053public class Goal extends DomainResource { 054 055 public enum GoalStatus { 056 /** 057 * A goal is proposed for this patient 058 */ 059 PROPOSED, 060 /** 061 * A proposed goal was accepted or acknowledged 062 */ 063 ACCEPTED, 064 /** 065 * A goal is planned for this patient 066 */ 067 PLANNED, 068 /** 069 * The goal is being sought but has not yet been reached. (Also applies if goal was reached in the past but there has been regression and goal is being sought again) 070 */ 071 INPROGRESS, 072 /** 073 * The goal is on schedule for the planned timelines 074 */ 075 ONTARGET, 076 /** 077 * The goal is ahead of the planned timelines 078 */ 079 AHEADOFTARGET, 080 /** 081 * The goal is behind the planned timelines 082 */ 083 BEHINDTARGET, 084 /** 085 * The goal has been met, but ongoing activity is needed to sustain the goal objective 086 */ 087 SUSTAINING, 088 /** 089 * The goal has been met and no further action is needed 090 */ 091 ACHIEVED, 092 /** 093 * The goal remains a long term objective but is no longer being actively pursued for a temporary period of time. 094 */ 095 ONHOLD, 096 /** 097 * The previously accepted goal is no longer being sought 098 */ 099 CANCELLED, 100 /** 101 * The goal was entered in error and voided. 102 */ 103 ENTEREDINERROR, 104 /** 105 * A proposed goal was rejected 106 */ 107 REJECTED, 108 /** 109 * added to help the parsers with the generic types 110 */ 111 NULL; 112 public static GoalStatus fromCode(String codeString) throws FHIRException { 113 if (codeString == null || "".equals(codeString)) 114 return null; 115 if ("proposed".equals(codeString)) 116 return PROPOSED; 117 if ("accepted".equals(codeString)) 118 return ACCEPTED; 119 if ("planned".equals(codeString)) 120 return PLANNED; 121 if ("in-progress".equals(codeString)) 122 return INPROGRESS; 123 if ("on-target".equals(codeString)) 124 return ONTARGET; 125 if ("ahead-of-target".equals(codeString)) 126 return AHEADOFTARGET; 127 if ("behind-target".equals(codeString)) 128 return BEHINDTARGET; 129 if ("sustaining".equals(codeString)) 130 return SUSTAINING; 131 if ("achieved".equals(codeString)) 132 return ACHIEVED; 133 if ("on-hold".equals(codeString)) 134 return ONHOLD; 135 if ("cancelled".equals(codeString)) 136 return CANCELLED; 137 if ("entered-in-error".equals(codeString)) 138 return ENTEREDINERROR; 139 if ("rejected".equals(codeString)) 140 return REJECTED; 141 if (Configuration.isAcceptInvalidEnums()) 142 return null; 143 else 144 throw new FHIRException("Unknown GoalStatus code '"+codeString+"'"); 145 } 146 public String toCode() { 147 switch (this) { 148 case PROPOSED: return "proposed"; 149 case ACCEPTED: return "accepted"; 150 case PLANNED: return "planned"; 151 case INPROGRESS: return "in-progress"; 152 case ONTARGET: return "on-target"; 153 case AHEADOFTARGET: return "ahead-of-target"; 154 case BEHINDTARGET: return "behind-target"; 155 case SUSTAINING: return "sustaining"; 156 case ACHIEVED: return "achieved"; 157 case ONHOLD: return "on-hold"; 158 case CANCELLED: return "cancelled"; 159 case ENTEREDINERROR: return "entered-in-error"; 160 case REJECTED: return "rejected"; 161 case NULL: return null; 162 default: return "?"; 163 } 164 } 165 public String getSystem() { 166 switch (this) { 167 case PROPOSED: return "http://hl7.org/fhir/goal-status"; 168 case ACCEPTED: return "http://hl7.org/fhir/goal-status"; 169 case PLANNED: return "http://hl7.org/fhir/goal-status"; 170 case INPROGRESS: return "http://hl7.org/fhir/goal-status"; 171 case ONTARGET: return "http://hl7.org/fhir/goal-status"; 172 case AHEADOFTARGET: return "http://hl7.org/fhir/goal-status"; 173 case BEHINDTARGET: return "http://hl7.org/fhir/goal-status"; 174 case SUSTAINING: return "http://hl7.org/fhir/goal-status"; 175 case ACHIEVED: return "http://hl7.org/fhir/goal-status"; 176 case ONHOLD: return "http://hl7.org/fhir/goal-status"; 177 case CANCELLED: return "http://hl7.org/fhir/goal-status"; 178 case ENTEREDINERROR: return "http://hl7.org/fhir/goal-status"; 179 case REJECTED: return "http://hl7.org/fhir/goal-status"; 180 case NULL: return null; 181 default: return "?"; 182 } 183 } 184 public String getDefinition() { 185 switch (this) { 186 case PROPOSED: return "A goal is proposed for this patient"; 187 case ACCEPTED: return "A proposed goal was accepted or acknowledged"; 188 case PLANNED: return "A goal is planned for this patient"; 189 case INPROGRESS: return "The goal is being sought but has not yet been reached. (Also applies if goal was reached in the past but there has been regression and goal is being sought again)"; 190 case ONTARGET: return "The goal is on schedule for the planned timelines"; 191 case AHEADOFTARGET: return "The goal is ahead of the planned timelines"; 192 case BEHINDTARGET: return "The goal is behind the planned timelines"; 193 case SUSTAINING: return "The goal has been met, but ongoing activity is needed to sustain the goal objective"; 194 case ACHIEVED: return "The goal has been met and no further action is needed"; 195 case ONHOLD: return "The goal remains a long term objective but is no longer being actively pursued for a temporary period of time."; 196 case CANCELLED: return "The previously accepted goal is no longer being sought"; 197 case ENTEREDINERROR: return "The goal was entered in error and voided."; 198 case REJECTED: return "A proposed goal was rejected"; 199 case NULL: return null; 200 default: return "?"; 201 } 202 } 203 public String getDisplay() { 204 switch (this) { 205 case PROPOSED: return "Proposed"; 206 case ACCEPTED: return "Accepted"; 207 case PLANNED: return "Planned"; 208 case INPROGRESS: return "In Progress"; 209 case ONTARGET: return "On Target"; 210 case AHEADOFTARGET: return "Ahead of Target"; 211 case BEHINDTARGET: return "Behind Target"; 212 case SUSTAINING: return "Sustaining"; 213 case ACHIEVED: return "Achieved"; 214 case ONHOLD: return "On Hold"; 215 case CANCELLED: return "Cancelled"; 216 case ENTEREDINERROR: return "Entered In Error"; 217 case REJECTED: return "Rejected"; 218 case NULL: return null; 219 default: return "?"; 220 } 221 } 222 } 223 224 public static class GoalStatusEnumFactory implements EnumFactory<GoalStatus> { 225 public GoalStatus fromCode(String codeString) throws IllegalArgumentException { 226 if (codeString == null || "".equals(codeString)) 227 if (codeString == null || "".equals(codeString)) 228 return null; 229 if ("proposed".equals(codeString)) 230 return GoalStatus.PROPOSED; 231 if ("accepted".equals(codeString)) 232 return GoalStatus.ACCEPTED; 233 if ("planned".equals(codeString)) 234 return GoalStatus.PLANNED; 235 if ("in-progress".equals(codeString)) 236 return GoalStatus.INPROGRESS; 237 if ("on-target".equals(codeString)) 238 return GoalStatus.ONTARGET; 239 if ("ahead-of-target".equals(codeString)) 240 return GoalStatus.AHEADOFTARGET; 241 if ("behind-target".equals(codeString)) 242 return GoalStatus.BEHINDTARGET; 243 if ("sustaining".equals(codeString)) 244 return GoalStatus.SUSTAINING; 245 if ("achieved".equals(codeString)) 246 return GoalStatus.ACHIEVED; 247 if ("on-hold".equals(codeString)) 248 return GoalStatus.ONHOLD; 249 if ("cancelled".equals(codeString)) 250 return GoalStatus.CANCELLED; 251 if ("entered-in-error".equals(codeString)) 252 return GoalStatus.ENTEREDINERROR; 253 if ("rejected".equals(codeString)) 254 return GoalStatus.REJECTED; 255 throw new IllegalArgumentException("Unknown GoalStatus code '"+codeString+"'"); 256 } 257 public Enumeration<GoalStatus> fromType(PrimitiveType<?> code) throws FHIRException { 258 if (code == null) 259 return null; 260 if (code.isEmpty()) 261 return new Enumeration<GoalStatus>(this); 262 String codeString = code.asStringValue(); 263 if (codeString == null || "".equals(codeString)) 264 return null; 265 if ("proposed".equals(codeString)) 266 return new Enumeration<GoalStatus>(this, GoalStatus.PROPOSED); 267 if ("accepted".equals(codeString)) 268 return new Enumeration<GoalStatus>(this, GoalStatus.ACCEPTED); 269 if ("planned".equals(codeString)) 270 return new Enumeration<GoalStatus>(this, GoalStatus.PLANNED); 271 if ("in-progress".equals(codeString)) 272 return new Enumeration<GoalStatus>(this, GoalStatus.INPROGRESS); 273 if ("on-target".equals(codeString)) 274 return new Enumeration<GoalStatus>(this, GoalStatus.ONTARGET); 275 if ("ahead-of-target".equals(codeString)) 276 return new Enumeration<GoalStatus>(this, GoalStatus.AHEADOFTARGET); 277 if ("behind-target".equals(codeString)) 278 return new Enumeration<GoalStatus>(this, GoalStatus.BEHINDTARGET); 279 if ("sustaining".equals(codeString)) 280 return new Enumeration<GoalStatus>(this, GoalStatus.SUSTAINING); 281 if ("achieved".equals(codeString)) 282 return new Enumeration<GoalStatus>(this, GoalStatus.ACHIEVED); 283 if ("on-hold".equals(codeString)) 284 return new Enumeration<GoalStatus>(this, GoalStatus.ONHOLD); 285 if ("cancelled".equals(codeString)) 286 return new Enumeration<GoalStatus>(this, GoalStatus.CANCELLED); 287 if ("entered-in-error".equals(codeString)) 288 return new Enumeration<GoalStatus>(this, GoalStatus.ENTEREDINERROR); 289 if ("rejected".equals(codeString)) 290 return new Enumeration<GoalStatus>(this, GoalStatus.REJECTED); 291 throw new FHIRException("Unknown GoalStatus code '"+codeString+"'"); 292 } 293 public String toCode(GoalStatus code) { 294 if (code == GoalStatus.PROPOSED) 295 return "proposed"; 296 if (code == GoalStatus.ACCEPTED) 297 return "accepted"; 298 if (code == GoalStatus.PLANNED) 299 return "planned"; 300 if (code == GoalStatus.INPROGRESS) 301 return "in-progress"; 302 if (code == GoalStatus.ONTARGET) 303 return "on-target"; 304 if (code == GoalStatus.AHEADOFTARGET) 305 return "ahead-of-target"; 306 if (code == GoalStatus.BEHINDTARGET) 307 return "behind-target"; 308 if (code == GoalStatus.SUSTAINING) 309 return "sustaining"; 310 if (code == GoalStatus.ACHIEVED) 311 return "achieved"; 312 if (code == GoalStatus.ONHOLD) 313 return "on-hold"; 314 if (code == GoalStatus.CANCELLED) 315 return "cancelled"; 316 if (code == GoalStatus.ENTEREDINERROR) 317 return "entered-in-error"; 318 if (code == GoalStatus.REJECTED) 319 return "rejected"; 320 return "?"; 321 } 322 public String toSystem(GoalStatus code) { 323 return code.getSystem(); 324 } 325 } 326 327 @Block() 328 public static class GoalTargetComponent extends BackboneElement implements IBaseBackboneElement { 329 /** 330 * The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level. 331 */ 332 @Child(name = "measure", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true) 333 @Description(shortDefinition="The parameter whose value is being tracked", formalDefinition="The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level." ) 334 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/observation-codes") 335 protected CodeableConcept measure; 336 337 /** 338 * The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value. 339 */ 340 @Child(name = "detail", type = {Quantity.class, Range.class, CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true) 341 @Description(shortDefinition="The target value to be achieved", formalDefinition="The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value." ) 342 protected Type detail; 343 344 /** 345 * Indicates either the date or the duration after start by which the goal should be met. 346 */ 347 @Child(name = "due", type = {DateType.class, Duration.class}, order=3, min=0, max=1, modifier=false, summary=true) 348 @Description(shortDefinition="Reach goal on or before", formalDefinition="Indicates either the date or the duration after start by which the goal should be met." ) 349 protected Type due; 350 351 private static final long serialVersionUID = -585108934L; 352 353 /** 354 * Constructor 355 */ 356 public GoalTargetComponent() { 357 super(); 358 } 359 360 /** 361 * @return {@link #measure} (The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level.) 362 */ 363 public CodeableConcept getMeasure() { 364 if (this.measure == null) 365 if (Configuration.errorOnAutoCreate()) 366 throw new Error("Attempt to auto-create GoalTargetComponent.measure"); 367 else if (Configuration.doAutoCreate()) 368 this.measure = new CodeableConcept(); // cc 369 return this.measure; 370 } 371 372 public boolean hasMeasure() { 373 return this.measure != null && !this.measure.isEmpty(); 374 } 375 376 /** 377 * @param value {@link #measure} (The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level.) 378 */ 379 public GoalTargetComponent setMeasure(CodeableConcept value) { 380 this.measure = value; 381 return this; 382 } 383 384 /** 385 * @return {@link #detail} (The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.) 386 */ 387 public Type getDetail() { 388 return this.detail; 389 } 390 391 /** 392 * @return {@link #detail} (The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.) 393 */ 394 public Quantity getDetailQuantity() throws FHIRException { 395 if (this.detail == null) 396 return null; 397 if (!(this.detail instanceof Quantity)) 398 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.detail.getClass().getName()+" was encountered"); 399 return (Quantity) this.detail; 400 } 401 402 public boolean hasDetailQuantity() { 403 return this != null && this.detail instanceof Quantity; 404 } 405 406 /** 407 * @return {@link #detail} (The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.) 408 */ 409 public Range getDetailRange() throws FHIRException { 410 if (this.detail == null) 411 return null; 412 if (!(this.detail instanceof Range)) 413 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.detail.getClass().getName()+" was encountered"); 414 return (Range) this.detail; 415 } 416 417 public boolean hasDetailRange() { 418 return this != null && this.detail instanceof Range; 419 } 420 421 /** 422 * @return {@link #detail} (The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.) 423 */ 424 public CodeableConcept getDetailCodeableConcept() throws FHIRException { 425 if (this.detail == null) 426 return null; 427 if (!(this.detail instanceof CodeableConcept)) 428 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.detail.getClass().getName()+" was encountered"); 429 return (CodeableConcept) this.detail; 430 } 431 432 public boolean hasDetailCodeableConcept() { 433 return this != null && this.detail instanceof CodeableConcept; 434 } 435 436 public boolean hasDetail() { 437 return this.detail != null && !this.detail.isEmpty(); 438 } 439 440 /** 441 * @param value {@link #detail} (The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.) 442 */ 443 public GoalTargetComponent setDetail(Type value) throws FHIRFormatError { 444 if (value != null && !(value instanceof Quantity || value instanceof Range || value instanceof CodeableConcept)) 445 throw new FHIRFormatError("Not the right type for Goal.target.detail[x]: "+value.fhirType()); 446 this.detail = value; 447 return this; 448 } 449 450 /** 451 * @return {@link #due} (Indicates either the date or the duration after start by which the goal should be met.) 452 */ 453 public Type getDue() { 454 return this.due; 455 } 456 457 /** 458 * @return {@link #due} (Indicates either the date or the duration after start by which the goal should be met.) 459 */ 460 public DateType getDueDateType() throws FHIRException { 461 if (this.due == null) 462 return null; 463 if (!(this.due instanceof DateType)) 464 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.due.getClass().getName()+" was encountered"); 465 return (DateType) this.due; 466 } 467 468 public boolean hasDueDateType() { 469 return this != null && this.due instanceof DateType; 470 } 471 472 /** 473 * @return {@link #due} (Indicates either the date or the duration after start by which the goal should be met.) 474 */ 475 public Duration getDueDuration() throws FHIRException { 476 if (this.due == null) 477 return null; 478 if (!(this.due instanceof Duration)) 479 throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.due.getClass().getName()+" was encountered"); 480 return (Duration) this.due; 481 } 482 483 public boolean hasDueDuration() { 484 return this != null && this.due instanceof Duration; 485 } 486 487 public boolean hasDue() { 488 return this.due != null && !this.due.isEmpty(); 489 } 490 491 /** 492 * @param value {@link #due} (Indicates either the date or the duration after start by which the goal should be met.) 493 */ 494 public GoalTargetComponent setDue(Type value) throws FHIRFormatError { 495 if (value != null && !(value instanceof DateType || value instanceof Duration)) 496 throw new FHIRFormatError("Not the right type for Goal.target.due[x]: "+value.fhirType()); 497 this.due = value; 498 return this; 499 } 500 501 protected void listChildren(List<Property> children) { 502 super.listChildren(children); 503 children.add(new Property("measure", "CodeableConcept", "The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level.", 0, 1, measure)); 504 children.add(new Property("detail[x]", "Quantity|Range|CodeableConcept", "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.", 0, 1, detail)); 505 children.add(new Property("due[x]", "date|Duration", "Indicates either the date or the duration after start by which the goal should be met.", 0, 1, due)); 506 } 507 508 @Override 509 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 510 switch (_hash) { 511 case 938321246: /*measure*/ return new Property("measure", "CodeableConcept", "The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level.", 0, 1, measure); 512 case -1973084529: /*detail[x]*/ return new Property("detail[x]", "Quantity|Range|CodeableConcept", "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.", 0, 1, detail); 513 case -1335224239: /*detail*/ return new Property("detail[x]", "Quantity|Range|CodeableConcept", "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.", 0, 1, detail); 514 case -1313079300: /*detailQuantity*/ return new Property("detail[x]", "Quantity|Range|CodeableConcept", "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.", 0, 1, detail); 515 case -2062632084: /*detailRange*/ return new Property("detail[x]", "Quantity|Range|CodeableConcept", "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.", 0, 1, detail); 516 case -175586544: /*detailCodeableConcept*/ return new Property("detail[x]", "Quantity|Range|CodeableConcept", "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value.", 0, 1, detail); 517 case -1320900084: /*due[x]*/ return new Property("due[x]", "date|Duration", "Indicates either the date or the duration after start by which the goal should be met.", 0, 1, due); 518 case 99828: /*due*/ return new Property("due[x]", "date|Duration", "Indicates either the date or the duration after start by which the goal should be met.", 0, 1, due); 519 case 2001063874: /*dueDate*/ return new Property("due[x]", "date|Duration", "Indicates either the date or the duration after start by which the goal should be met.", 0, 1, due); 520 case -620428376: /*dueDuration*/ return new Property("due[x]", "date|Duration", "Indicates either the date or the duration after start by which the goal should be met.", 0, 1, due); 521 default: return super.getNamedProperty(_hash, _name, _checkValid); 522 } 523 524 } 525 526 @Override 527 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 528 switch (hash) { 529 case 938321246: /*measure*/ return this.measure == null ? new Base[0] : new Base[] {this.measure}; // CodeableConcept 530 case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : new Base[] {this.detail}; // Type 531 case 99828: /*due*/ return this.due == null ? new Base[0] : new Base[] {this.due}; // Type 532 default: return super.getProperty(hash, name, checkValid); 533 } 534 535 } 536 537 @Override 538 public Base setProperty(int hash, String name, Base value) throws FHIRException { 539 switch (hash) { 540 case 938321246: // measure 541 this.measure = castToCodeableConcept(value); // CodeableConcept 542 return value; 543 case -1335224239: // detail 544 this.detail = castToType(value); // Type 545 return value; 546 case 99828: // due 547 this.due = castToType(value); // Type 548 return value; 549 default: return super.setProperty(hash, name, value); 550 } 551 552 } 553 554 @Override 555 public Base setProperty(String name, Base value) throws FHIRException { 556 if (name.equals("measure")) { 557 this.measure = castToCodeableConcept(value); // CodeableConcept 558 } else if (name.equals("detail[x]")) { 559 this.detail = castToType(value); // Type 560 } else if (name.equals("due[x]")) { 561 this.due = castToType(value); // Type 562 } else 563 return super.setProperty(name, value); 564 return value; 565 } 566 567 @Override 568 public Base makeProperty(int hash, String name) throws FHIRException { 569 switch (hash) { 570 case 938321246: return getMeasure(); 571 case -1973084529: return getDetail(); 572 case -1335224239: return getDetail(); 573 case -1320900084: return getDue(); 574 case 99828: return getDue(); 575 default: return super.makeProperty(hash, name); 576 } 577 578 } 579 580 @Override 581 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 582 switch (hash) { 583 case 938321246: /*measure*/ return new String[] {"CodeableConcept"}; 584 case -1335224239: /*detail*/ return new String[] {"Quantity", "Range", "CodeableConcept"}; 585 case 99828: /*due*/ return new String[] {"date", "Duration"}; 586 default: return super.getTypesForProperty(hash, name); 587 } 588 589 } 590 591 @Override 592 public Base addChild(String name) throws FHIRException { 593 if (name.equals("measure")) { 594 this.measure = new CodeableConcept(); 595 return this.measure; 596 } 597 else if (name.equals("detailQuantity")) { 598 this.detail = new Quantity(); 599 return this.detail; 600 } 601 else if (name.equals("detailRange")) { 602 this.detail = new Range(); 603 return this.detail; 604 } 605 else if (name.equals("detailCodeableConcept")) { 606 this.detail = new CodeableConcept(); 607 return this.detail; 608 } 609 else if (name.equals("dueDate")) { 610 this.due = new DateType(); 611 return this.due; 612 } 613 else if (name.equals("dueDuration")) { 614 this.due = new Duration(); 615 return this.due; 616 } 617 else 618 return super.addChild(name); 619 } 620 621 public GoalTargetComponent copy() { 622 GoalTargetComponent dst = new GoalTargetComponent(); 623 copyValues(dst); 624 dst.measure = measure == null ? null : measure.copy(); 625 dst.detail = detail == null ? null : detail.copy(); 626 dst.due = due == null ? null : due.copy(); 627 return dst; 628 } 629 630 @Override 631 public boolean equalsDeep(Base other_) { 632 if (!super.equalsDeep(other_)) 633 return false; 634 if (!(other_ instanceof GoalTargetComponent)) 635 return false; 636 GoalTargetComponent o = (GoalTargetComponent) other_; 637 return compareDeep(measure, o.measure, true) && compareDeep(detail, o.detail, true) && compareDeep(due, o.due, true) 638 ; 639 } 640 641 @Override 642 public boolean equalsShallow(Base other_) { 643 if (!super.equalsShallow(other_)) 644 return false; 645 if (!(other_ instanceof GoalTargetComponent)) 646 return false; 647 GoalTargetComponent o = (GoalTargetComponent) other_; 648 return true; 649 } 650 651 public boolean isEmpty() { 652 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(measure, detail, due); 653 } 654 655 public String fhirType() { 656 return "Goal.target"; 657 658 } 659 660 } 661 662 /** 663 * This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation). 664 */ 665 @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 666 @Description(shortDefinition="External Ids for this goal", formalDefinition="This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." ) 667 protected List<Identifier> identifier; 668 669 /** 670 * Indicates whether the goal has been reached and is still considered relevant. 671 */ 672 @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true) 673 @Description(shortDefinition="proposed | accepted | planned | in-progress | on-target | ahead-of-target | behind-target | sustaining | achieved | on-hold | cancelled | entered-in-error | rejected", formalDefinition="Indicates whether the goal has been reached and is still considered relevant." ) 674 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/goal-status") 675 protected Enumeration<GoalStatus> status; 676 677 /** 678 * Indicates a category the goal falls within. 679 */ 680 @Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 681 @Description(shortDefinition="E.g. Treatment, dietary, behavioral, etc.", formalDefinition="Indicates a category the goal falls within." ) 682 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/goal-category") 683 protected List<CodeableConcept> category; 684 685 /** 686 * Identifies the mutually agreed level of importance associated with reaching/sustaining the goal. 687 */ 688 @Child(name = "priority", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true) 689 @Description(shortDefinition="high-priority | medium-priority | low-priority", formalDefinition="Identifies the mutually agreed level of importance associated with reaching/sustaining the goal." ) 690 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/goal-priority") 691 protected CodeableConcept priority; 692 693 /** 694 * Human-readable and/or coded description of a specific desired objective of care, such as "control blood pressure" or "negotiate an obstacle course" or "dance with child at wedding". 695 */ 696 @Child(name = "description", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=false, summary=true) 697 @Description(shortDefinition="Code or text describing goal", formalDefinition="Human-readable and/or coded description of a specific desired objective of care, such as \"control blood pressure\" or \"negotiate an obstacle course\" or \"dance with child at wedding\"." ) 698 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings") 699 protected CodeableConcept description; 700 701 /** 702 * Identifies the patient, group or organization for whom the goal is being established. 703 */ 704 @Child(name = "subject", type = {Patient.class, Group.class, Organization.class}, order=5, min=0, max=1, modifier=false, summary=true) 705 @Description(shortDefinition="Who this goal is intended for", formalDefinition="Identifies the patient, group or organization for whom the goal is being established." ) 706 protected Reference subject; 707 708 /** 709 * The actual object that is the target of the reference (Identifies the patient, group or organization for whom the goal is being established.) 710 */ 711 protected Resource subjectTarget; 712 713 /** 714 * The date or event after which the goal should begin being pursued. 715 */ 716 @Child(name = "start", type = {DateType.class, CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true) 717 @Description(shortDefinition="When goal pursuit begins", formalDefinition="The date or event after which the goal should begin being pursued." ) 718 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/goal-start-event") 719 protected Type start; 720 721 /** 722 * Indicates what should be done by when. 723 */ 724 @Child(name = "target", type = {}, order=7, min=0, max=1, modifier=false, summary=false) 725 @Description(shortDefinition="Target outcome for the goal", formalDefinition="Indicates what should be done by when." ) 726 protected GoalTargetComponent target; 727 728 /** 729 * Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc. 730 */ 731 @Child(name = "statusDate", type = {DateType.class}, order=8, min=0, max=1, modifier=false, summary=true) 732 @Description(shortDefinition="When goal status took effect", formalDefinition="Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc." ) 733 protected DateType statusDate; 734 735 /** 736 * Captures the reason for the current status. 737 */ 738 @Child(name = "statusReason", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false) 739 @Description(shortDefinition="Reason for current status", formalDefinition="Captures the reason for the current status." ) 740 protected StringType statusReason; 741 742 /** 743 * Indicates whose goal this is - patient goal, practitioner goal, etc. 744 */ 745 @Child(name = "expressedBy", type = {Patient.class, Practitioner.class, RelatedPerson.class}, order=10, min=0, max=1, modifier=false, summary=true) 746 @Description(shortDefinition="Who's responsible for creating Goal?", formalDefinition="Indicates whose goal this is - patient goal, practitioner goal, etc." ) 747 protected Reference expressedBy; 748 749 /** 750 * The actual object that is the target of the reference (Indicates whose goal this is - patient goal, practitioner goal, etc.) 751 */ 752 protected Resource expressedByTarget; 753 754 /** 755 * The identified conditions and other health record elements that are intended to be addressed by the goal. 756 */ 757 @Child(name = "addresses", type = {Condition.class, Observation.class, MedicationStatement.class, NutritionOrder.class, ProcedureRequest.class, RiskAssessment.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 758 @Description(shortDefinition="Issues addressed by this goal", formalDefinition="The identified conditions and other health record elements that are intended to be addressed by the goal." ) 759 protected List<Reference> addresses; 760 /** 761 * The actual objects that are the target of the reference (The identified conditions and other health record elements that are intended to be addressed by the goal.) 762 */ 763 protected List<Resource> addressesTarget; 764 765 766 /** 767 * Any comments related to the goal. 768 */ 769 @Child(name = "note", type = {Annotation.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 770 @Description(shortDefinition="Comments about the goal", formalDefinition="Any comments related to the goal." ) 771 protected List<Annotation> note; 772 773 /** 774 * Identifies the change (or lack of change) at the point when the status of the goal is assessed. 775 */ 776 @Child(name = "outcomeCode", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 777 @Description(shortDefinition="What result was achieved regarding the goal?", formalDefinition="Identifies the change (or lack of change) at the point when the status of the goal is assessed." ) 778 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings") 779 protected List<CodeableConcept> outcomeCode; 780 781 /** 782 * Details of what's changed (or not changed). 783 */ 784 @Child(name = "outcomeReference", type = {Observation.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 785 @Description(shortDefinition="Observation that resulted from goal", formalDefinition="Details of what's changed (or not changed)." ) 786 protected List<Reference> outcomeReference; 787 /** 788 * The actual objects that are the target of the reference (Details of what's changed (or not changed).) 789 */ 790 protected List<Observation> outcomeReferenceTarget; 791 792 793 private static final long serialVersionUID = -1045412647L; 794 795 /** 796 * Constructor 797 */ 798 public Goal() { 799 super(); 800 } 801 802 /** 803 * Constructor 804 */ 805 public Goal(Enumeration<GoalStatus> status, CodeableConcept description) { 806 super(); 807 this.status = status; 808 this.description = description; 809 } 810 811 /** 812 * @return {@link #identifier} (This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).) 813 */ 814 public List<Identifier> getIdentifier() { 815 if (this.identifier == null) 816 this.identifier = new ArrayList<Identifier>(); 817 return this.identifier; 818 } 819 820 /** 821 * @return Returns a reference to <code>this</code> for easy method chaining 822 */ 823 public Goal setIdentifier(List<Identifier> theIdentifier) { 824 this.identifier = theIdentifier; 825 return this; 826 } 827 828 public boolean hasIdentifier() { 829 if (this.identifier == null) 830 return false; 831 for (Identifier item : this.identifier) 832 if (!item.isEmpty()) 833 return true; 834 return false; 835 } 836 837 public Identifier addIdentifier() { //3 838 Identifier t = new Identifier(); 839 if (this.identifier == null) 840 this.identifier = new ArrayList<Identifier>(); 841 this.identifier.add(t); 842 return t; 843 } 844 845 public Goal addIdentifier(Identifier t) { //3 846 if (t == null) 847 return this; 848 if (this.identifier == null) 849 this.identifier = new ArrayList<Identifier>(); 850 this.identifier.add(t); 851 return this; 852 } 853 854 /** 855 * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist 856 */ 857 public Identifier getIdentifierFirstRep() { 858 if (getIdentifier().isEmpty()) { 859 addIdentifier(); 860 } 861 return getIdentifier().get(0); 862 } 863 864 /** 865 * @return {@link #status} (Indicates whether the goal has been reached and is still considered relevant.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value 866 */ 867 public Enumeration<GoalStatus> getStatusElement() { 868 if (this.status == null) 869 if (Configuration.errorOnAutoCreate()) 870 throw new Error("Attempt to auto-create Goal.status"); 871 else if (Configuration.doAutoCreate()) 872 this.status = new Enumeration<GoalStatus>(new GoalStatusEnumFactory()); // bb 873 return this.status; 874 } 875 876 public boolean hasStatusElement() { 877 return this.status != null && !this.status.isEmpty(); 878 } 879 880 public boolean hasStatus() { 881 return this.status != null && !this.status.isEmpty(); 882 } 883 884 /** 885 * @param value {@link #status} (Indicates whether the goal has been reached and is still considered relevant.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value 886 */ 887 public Goal setStatusElement(Enumeration<GoalStatus> value) { 888 this.status = value; 889 return this; 890 } 891 892 /** 893 * @return Indicates whether the goal has been reached and is still considered relevant. 894 */ 895 public GoalStatus getStatus() { 896 return this.status == null ? null : this.status.getValue(); 897 } 898 899 /** 900 * @param value Indicates whether the goal has been reached and is still considered relevant. 901 */ 902 public Goal setStatus(GoalStatus value) { 903 if (this.status == null) 904 this.status = new Enumeration<GoalStatus>(new GoalStatusEnumFactory()); 905 this.status.setValue(value); 906 return this; 907 } 908 909 /** 910 * @return {@link #category} (Indicates a category the goal falls within.) 911 */ 912 public List<CodeableConcept> getCategory() { 913 if (this.category == null) 914 this.category = new ArrayList<CodeableConcept>(); 915 return this.category; 916 } 917 918 /** 919 * @return Returns a reference to <code>this</code> for easy method chaining 920 */ 921 public Goal setCategory(List<CodeableConcept> theCategory) { 922 this.category = theCategory; 923 return this; 924 } 925 926 public boolean hasCategory() { 927 if (this.category == null) 928 return false; 929 for (CodeableConcept item : this.category) 930 if (!item.isEmpty()) 931 return true; 932 return false; 933 } 934 935 public CodeableConcept addCategory() { //3 936 CodeableConcept t = new CodeableConcept(); 937 if (this.category == null) 938 this.category = new ArrayList<CodeableConcept>(); 939 this.category.add(t); 940 return t; 941 } 942 943 public Goal addCategory(CodeableConcept t) { //3 944 if (t == null) 945 return this; 946 if (this.category == null) 947 this.category = new ArrayList<CodeableConcept>(); 948 this.category.add(t); 949 return this; 950 } 951 952 /** 953 * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist 954 */ 955 public CodeableConcept getCategoryFirstRep() { 956 if (getCategory().isEmpty()) { 957 addCategory(); 958 } 959 return getCategory().get(0); 960 } 961 962 /** 963 * @return {@link #priority} (Identifies the mutually agreed level of importance associated with reaching/sustaining the goal.) 964 */ 965 public CodeableConcept getPriority() { 966 if (this.priority == null) 967 if (Configuration.errorOnAutoCreate()) 968 throw new Error("Attempt to auto-create Goal.priority"); 969 else if (Configuration.doAutoCreate()) 970 this.priority = new CodeableConcept(); // cc 971 return this.priority; 972 } 973 974 public boolean hasPriority() { 975 return this.priority != null && !this.priority.isEmpty(); 976 } 977 978 /** 979 * @param value {@link #priority} (Identifies the mutually agreed level of importance associated with reaching/sustaining the goal.) 980 */ 981 public Goal setPriority(CodeableConcept value) { 982 this.priority = value; 983 return this; 984 } 985 986 /** 987 * @return {@link #description} (Human-readable and/or coded description of a specific desired objective of care, such as "control blood pressure" or "negotiate an obstacle course" or "dance with child at wedding".) 988 */ 989 public CodeableConcept getDescription() { 990 if (this.description == null) 991 if (Configuration.errorOnAutoCreate()) 992 throw new Error("Attempt to auto-create Goal.description"); 993 else if (Configuration.doAutoCreate()) 994 this.description = new CodeableConcept(); // cc 995 return this.description; 996 } 997 998 public boolean hasDescription() { 999 return this.description != null && !this.description.isEmpty(); 1000 } 1001 1002 /** 1003 * @param value {@link #description} (Human-readable and/or coded description of a specific desired objective of care, such as "control blood pressure" or "negotiate an obstacle course" or "dance with child at wedding".) 1004 */ 1005 public Goal setDescription(CodeableConcept value) { 1006 this.description = value; 1007 return this; 1008 } 1009 1010 /** 1011 * @return {@link #subject} (Identifies the patient, group or organization for whom the goal is being established.) 1012 */ 1013 public Reference getSubject() { 1014 if (this.subject == null) 1015 if (Configuration.errorOnAutoCreate()) 1016 throw new Error("Attempt to auto-create Goal.subject"); 1017 else if (Configuration.doAutoCreate()) 1018 this.subject = new Reference(); // cc 1019 return this.subject; 1020 } 1021 1022 public boolean hasSubject() { 1023 return this.subject != null && !this.subject.isEmpty(); 1024 } 1025 1026 /** 1027 * @param value {@link #subject} (Identifies the patient, group or organization for whom the goal is being established.) 1028 */ 1029 public Goal setSubject(Reference value) { 1030 this.subject = value; 1031 return this; 1032 } 1033 1034 /** 1035 * @return {@link #subject} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Identifies the patient, group or organization for whom the goal is being established.) 1036 */ 1037 public Resource getSubjectTarget() { 1038 return this.subjectTarget; 1039 } 1040 1041 /** 1042 * @param value {@link #subject} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Identifies the patient, group or organization for whom the goal is being established.) 1043 */ 1044 public Goal setSubjectTarget(Resource value) { 1045 this.subjectTarget = value; 1046 return this; 1047 } 1048 1049 /** 1050 * @return {@link #start} (The date or event after which the goal should begin being pursued.) 1051 */ 1052 public Type getStart() { 1053 return this.start; 1054 } 1055 1056 /** 1057 * @return {@link #start} (The date or event after which the goal should begin being pursued.) 1058 */ 1059 public DateType getStartDateType() throws FHIRException { 1060 if (this.start == null) 1061 return null; 1062 if (!(this.start instanceof DateType)) 1063 throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.start.getClass().getName()+" was encountered"); 1064 return (DateType) this.start; 1065 } 1066 1067 public boolean hasStartDateType() { 1068 return this != null && this.start instanceof DateType; 1069 } 1070 1071 /** 1072 * @return {@link #start} (The date or event after which the goal should begin being pursued.) 1073 */ 1074 public CodeableConcept getStartCodeableConcept() throws FHIRException { 1075 if (this.start == null) 1076 return null; 1077 if (!(this.start instanceof CodeableConcept)) 1078 throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.start.getClass().getName()+" was encountered"); 1079 return (CodeableConcept) this.start; 1080 } 1081 1082 public boolean hasStartCodeableConcept() { 1083 return this != null && this.start instanceof CodeableConcept; 1084 } 1085 1086 public boolean hasStart() { 1087 return this.start != null && !this.start.isEmpty(); 1088 } 1089 1090 /** 1091 * @param value {@link #start} (The date or event after which the goal should begin being pursued.) 1092 */ 1093 public Goal setStart(Type value) throws FHIRFormatError { 1094 if (value != null && !(value instanceof DateType || value instanceof CodeableConcept)) 1095 throw new FHIRFormatError("Not the right type for Goal.start[x]: "+value.fhirType()); 1096 this.start = value; 1097 return this; 1098 } 1099 1100 /** 1101 * @return {@link #target} (Indicates what should be done by when.) 1102 */ 1103 public GoalTargetComponent getTarget() { 1104 if (this.target == null) 1105 if (Configuration.errorOnAutoCreate()) 1106 throw new Error("Attempt to auto-create Goal.target"); 1107 else if (Configuration.doAutoCreate()) 1108 this.target = new GoalTargetComponent(); // cc 1109 return this.target; 1110 } 1111 1112 public boolean hasTarget() { 1113 return this.target != null && !this.target.isEmpty(); 1114 } 1115 1116 /** 1117 * @param value {@link #target} (Indicates what should be done by when.) 1118 */ 1119 public Goal setTarget(GoalTargetComponent value) { 1120 this.target = value; 1121 return this; 1122 } 1123 1124 /** 1125 * @return {@link #statusDate} (Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc.). This is the underlying object with id, value and extensions. The accessor "getStatusDate" gives direct access to the value 1126 */ 1127 public DateType getStatusDateElement() { 1128 if (this.statusDate == null) 1129 if (Configuration.errorOnAutoCreate()) 1130 throw new Error("Attempt to auto-create Goal.statusDate"); 1131 else if (Configuration.doAutoCreate()) 1132 this.statusDate = new DateType(); // bb 1133 return this.statusDate; 1134 } 1135 1136 public boolean hasStatusDateElement() { 1137 return this.statusDate != null && !this.statusDate.isEmpty(); 1138 } 1139 1140 public boolean hasStatusDate() { 1141 return this.statusDate != null && !this.statusDate.isEmpty(); 1142 } 1143 1144 /** 1145 * @param value {@link #statusDate} (Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc.). This is the underlying object with id, value and extensions. The accessor "getStatusDate" gives direct access to the value 1146 */ 1147 public Goal setStatusDateElement(DateType value) { 1148 this.statusDate = value; 1149 return this; 1150 } 1151 1152 /** 1153 * @return Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc. 1154 */ 1155 public Date getStatusDate() { 1156 return this.statusDate == null ? null : this.statusDate.getValue(); 1157 } 1158 1159 /** 1160 * @param value Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc. 1161 */ 1162 public Goal setStatusDate(Date value) { 1163 if (value == null) 1164 this.statusDate = null; 1165 else { 1166 if (this.statusDate == null) 1167 this.statusDate = new DateType(); 1168 this.statusDate.setValue(value); 1169 } 1170 return this; 1171 } 1172 1173 /** 1174 * @return {@link #statusReason} (Captures the reason for the current status.). This is the underlying object with id, value and extensions. The accessor "getStatusReason" gives direct access to the value 1175 */ 1176 public StringType getStatusReasonElement() { 1177 if (this.statusReason == null) 1178 if (Configuration.errorOnAutoCreate()) 1179 throw new Error("Attempt to auto-create Goal.statusReason"); 1180 else if (Configuration.doAutoCreate()) 1181 this.statusReason = new StringType(); // bb 1182 return this.statusReason; 1183 } 1184 1185 public boolean hasStatusReasonElement() { 1186 return this.statusReason != null && !this.statusReason.isEmpty(); 1187 } 1188 1189 public boolean hasStatusReason() { 1190 return this.statusReason != null && !this.statusReason.isEmpty(); 1191 } 1192 1193 /** 1194 * @param value {@link #statusReason} (Captures the reason for the current status.). This is the underlying object with id, value and extensions. The accessor "getStatusReason" gives direct access to the value 1195 */ 1196 public Goal setStatusReasonElement(StringType value) { 1197 this.statusReason = value; 1198 return this; 1199 } 1200 1201 /** 1202 * @return Captures the reason for the current status. 1203 */ 1204 public String getStatusReason() { 1205 return this.statusReason == null ? null : this.statusReason.getValue(); 1206 } 1207 1208 /** 1209 * @param value Captures the reason for the current status. 1210 */ 1211 public Goal setStatusReason(String value) { 1212 if (Utilities.noString(value)) 1213 this.statusReason = null; 1214 else { 1215 if (this.statusReason == null) 1216 this.statusReason = new StringType(); 1217 this.statusReason.setValue(value); 1218 } 1219 return this; 1220 } 1221 1222 /** 1223 * @return {@link #expressedBy} (Indicates whose goal this is - patient goal, practitioner goal, etc.) 1224 */ 1225 public Reference getExpressedBy() { 1226 if (this.expressedBy == null) 1227 if (Configuration.errorOnAutoCreate()) 1228 throw new Error("Attempt to auto-create Goal.expressedBy"); 1229 else if (Configuration.doAutoCreate()) 1230 this.expressedBy = new Reference(); // cc 1231 return this.expressedBy; 1232 } 1233 1234 public boolean hasExpressedBy() { 1235 return this.expressedBy != null && !this.expressedBy.isEmpty(); 1236 } 1237 1238 /** 1239 * @param value {@link #expressedBy} (Indicates whose goal this is - patient goal, practitioner goal, etc.) 1240 */ 1241 public Goal setExpressedBy(Reference value) { 1242 this.expressedBy = value; 1243 return this; 1244 } 1245 1246 /** 1247 * @return {@link #expressedBy} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Indicates whose goal this is - patient goal, practitioner goal, etc.) 1248 */ 1249 public Resource getExpressedByTarget() { 1250 return this.expressedByTarget; 1251 } 1252 1253 /** 1254 * @param value {@link #expressedBy} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Indicates whose goal this is - patient goal, practitioner goal, etc.) 1255 */ 1256 public Goal setExpressedByTarget(Resource value) { 1257 this.expressedByTarget = value; 1258 return this; 1259 } 1260 1261 /** 1262 * @return {@link #addresses} (The identified conditions and other health record elements that are intended to be addressed by the goal.) 1263 */ 1264 public List<Reference> getAddresses() { 1265 if (this.addresses == null) 1266 this.addresses = new ArrayList<Reference>(); 1267 return this.addresses; 1268 } 1269 1270 /** 1271 * @return Returns a reference to <code>this</code> for easy method chaining 1272 */ 1273 public Goal setAddresses(List<Reference> theAddresses) { 1274 this.addresses = theAddresses; 1275 return this; 1276 } 1277 1278 public boolean hasAddresses() { 1279 if (this.addresses == null) 1280 return false; 1281 for (Reference item : this.addresses) 1282 if (!item.isEmpty()) 1283 return true; 1284 return false; 1285 } 1286 1287 public Reference addAddresses() { //3 1288 Reference t = new Reference(); 1289 if (this.addresses == null) 1290 this.addresses = new ArrayList<Reference>(); 1291 this.addresses.add(t); 1292 return t; 1293 } 1294 1295 public Goal addAddresses(Reference t) { //3 1296 if (t == null) 1297 return this; 1298 if (this.addresses == null) 1299 this.addresses = new ArrayList<Reference>(); 1300 this.addresses.add(t); 1301 return this; 1302 } 1303 1304 /** 1305 * @return The first repetition of repeating field {@link #addresses}, creating it if it does not already exist 1306 */ 1307 public Reference getAddressesFirstRep() { 1308 if (getAddresses().isEmpty()) { 1309 addAddresses(); 1310 } 1311 return getAddresses().get(0); 1312 } 1313 1314 /** 1315 * @deprecated Use Reference#setResource(IBaseResource) instead 1316 */ 1317 @Deprecated 1318 public List<Resource> getAddressesTarget() { 1319 if (this.addressesTarget == null) 1320 this.addressesTarget = new ArrayList<Resource>(); 1321 return this.addressesTarget; 1322 } 1323 1324 /** 1325 * @return {@link #note} (Any comments related to the goal.) 1326 */ 1327 public List<Annotation> getNote() { 1328 if (this.note == null) 1329 this.note = new ArrayList<Annotation>(); 1330 return this.note; 1331 } 1332 1333 /** 1334 * @return Returns a reference to <code>this</code> for easy method chaining 1335 */ 1336 public Goal setNote(List<Annotation> theNote) { 1337 this.note = theNote; 1338 return this; 1339 } 1340 1341 public boolean hasNote() { 1342 if (this.note == null) 1343 return false; 1344 for (Annotation item : this.note) 1345 if (!item.isEmpty()) 1346 return true; 1347 return false; 1348 } 1349 1350 public Annotation addNote() { //3 1351 Annotation t = new Annotation(); 1352 if (this.note == null) 1353 this.note = new ArrayList<Annotation>(); 1354 this.note.add(t); 1355 return t; 1356 } 1357 1358 public Goal addNote(Annotation t) { //3 1359 if (t == null) 1360 return this; 1361 if (this.note == null) 1362 this.note = new ArrayList<Annotation>(); 1363 this.note.add(t); 1364 return this; 1365 } 1366 1367 /** 1368 * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist 1369 */ 1370 public Annotation getNoteFirstRep() { 1371 if (getNote().isEmpty()) { 1372 addNote(); 1373 } 1374 return getNote().get(0); 1375 } 1376 1377 /** 1378 * @return {@link #outcomeCode} (Identifies the change (or lack of change) at the point when the status of the goal is assessed.) 1379 */ 1380 public List<CodeableConcept> getOutcomeCode() { 1381 if (this.outcomeCode == null) 1382 this.outcomeCode = new ArrayList<CodeableConcept>(); 1383 return this.outcomeCode; 1384 } 1385 1386 /** 1387 * @return Returns a reference to <code>this</code> for easy method chaining 1388 */ 1389 public Goal setOutcomeCode(List<CodeableConcept> theOutcomeCode) { 1390 this.outcomeCode = theOutcomeCode; 1391 return this; 1392 } 1393 1394 public boolean hasOutcomeCode() { 1395 if (this.outcomeCode == null) 1396 return false; 1397 for (CodeableConcept item : this.outcomeCode) 1398 if (!item.isEmpty()) 1399 return true; 1400 return false; 1401 } 1402 1403 public CodeableConcept addOutcomeCode() { //3 1404 CodeableConcept t = new CodeableConcept(); 1405 if (this.outcomeCode == null) 1406 this.outcomeCode = new ArrayList<CodeableConcept>(); 1407 this.outcomeCode.add(t); 1408 return t; 1409 } 1410 1411 public Goal addOutcomeCode(CodeableConcept t) { //3 1412 if (t == null) 1413 return this; 1414 if (this.outcomeCode == null) 1415 this.outcomeCode = new ArrayList<CodeableConcept>(); 1416 this.outcomeCode.add(t); 1417 return this; 1418 } 1419 1420 /** 1421 * @return The first repetition of repeating field {@link #outcomeCode}, creating it if it does not already exist 1422 */ 1423 public CodeableConcept getOutcomeCodeFirstRep() { 1424 if (getOutcomeCode().isEmpty()) { 1425 addOutcomeCode(); 1426 } 1427 return getOutcomeCode().get(0); 1428 } 1429 1430 /** 1431 * @return {@link #outcomeReference} (Details of what's changed (or not changed).) 1432 */ 1433 public List<Reference> getOutcomeReference() { 1434 if (this.outcomeReference == null) 1435 this.outcomeReference = new ArrayList<Reference>(); 1436 return this.outcomeReference; 1437 } 1438 1439 /** 1440 * @return Returns a reference to <code>this</code> for easy method chaining 1441 */ 1442 public Goal setOutcomeReference(List<Reference> theOutcomeReference) { 1443 this.outcomeReference = theOutcomeReference; 1444 return this; 1445 } 1446 1447 public boolean hasOutcomeReference() { 1448 if (this.outcomeReference == null) 1449 return false; 1450 for (Reference item : this.outcomeReference) 1451 if (!item.isEmpty()) 1452 return true; 1453 return false; 1454 } 1455 1456 public Reference addOutcomeReference() { //3 1457 Reference t = new Reference(); 1458 if (this.outcomeReference == null) 1459 this.outcomeReference = new ArrayList<Reference>(); 1460 this.outcomeReference.add(t); 1461 return t; 1462 } 1463 1464 public Goal addOutcomeReference(Reference t) { //3 1465 if (t == null) 1466 return this; 1467 if (this.outcomeReference == null) 1468 this.outcomeReference = new ArrayList<Reference>(); 1469 this.outcomeReference.add(t); 1470 return this; 1471 } 1472 1473 /** 1474 * @return The first repetition of repeating field {@link #outcomeReference}, creating it if it does not already exist 1475 */ 1476 public Reference getOutcomeReferenceFirstRep() { 1477 if (getOutcomeReference().isEmpty()) { 1478 addOutcomeReference(); 1479 } 1480 return getOutcomeReference().get(0); 1481 } 1482 1483 /** 1484 * @deprecated Use Reference#setResource(IBaseResource) instead 1485 */ 1486 @Deprecated 1487 public List<Observation> getOutcomeReferenceTarget() { 1488 if (this.outcomeReferenceTarget == null) 1489 this.outcomeReferenceTarget = new ArrayList<Observation>(); 1490 return this.outcomeReferenceTarget; 1491 } 1492 1493 /** 1494 * @deprecated Use Reference#setResource(IBaseResource) instead 1495 */ 1496 @Deprecated 1497 public Observation addOutcomeReferenceTarget() { 1498 Observation r = new Observation(); 1499 if (this.outcomeReferenceTarget == null) 1500 this.outcomeReferenceTarget = new ArrayList<Observation>(); 1501 this.outcomeReferenceTarget.add(r); 1502 return r; 1503 } 1504 1505 protected void listChildren(List<Property> children) { 1506 super.listChildren(children); 1507 children.add(new Property("identifier", "Identifier", "This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).", 0, java.lang.Integer.MAX_VALUE, identifier)); 1508 children.add(new Property("status", "code", "Indicates whether the goal has been reached and is still considered relevant.", 0, 1, status)); 1509 children.add(new Property("category", "CodeableConcept", "Indicates a category the goal falls within.", 0, java.lang.Integer.MAX_VALUE, category)); 1510 children.add(new Property("priority", "CodeableConcept", "Identifies the mutually agreed level of importance associated with reaching/sustaining the goal.", 0, 1, priority)); 1511 children.add(new Property("description", "CodeableConcept", "Human-readable and/or coded description of a specific desired objective of care, such as \"control blood pressure\" or \"negotiate an obstacle course\" or \"dance with child at wedding\".", 0, 1, description)); 1512 children.add(new Property("subject", "Reference(Patient|Group|Organization)", "Identifies the patient, group or organization for whom the goal is being established.", 0, 1, subject)); 1513 children.add(new Property("start[x]", "date|CodeableConcept", "The date or event after which the goal should begin being pursued.", 0, 1, start)); 1514 children.add(new Property("target", "", "Indicates what should be done by when.", 0, 1, target)); 1515 children.add(new Property("statusDate", "date", "Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc.", 0, 1, statusDate)); 1516 children.add(new Property("statusReason", "string", "Captures the reason for the current status.", 0, 1, statusReason)); 1517 children.add(new Property("expressedBy", "Reference(Patient|Practitioner|RelatedPerson)", "Indicates whose goal this is - patient goal, practitioner goal, etc.", 0, 1, expressedBy)); 1518 children.add(new Property("addresses", "Reference(Condition|Observation|MedicationStatement|NutritionOrder|ProcedureRequest|RiskAssessment)", "The identified conditions and other health record elements that are intended to be addressed by the goal.", 0, java.lang.Integer.MAX_VALUE, addresses)); 1519 children.add(new Property("note", "Annotation", "Any comments related to the goal.", 0, java.lang.Integer.MAX_VALUE, note)); 1520 children.add(new Property("outcomeCode", "CodeableConcept", "Identifies the change (or lack of change) at the point when the status of the goal is assessed.", 0, java.lang.Integer.MAX_VALUE, outcomeCode)); 1521 children.add(new Property("outcomeReference", "Reference(Observation)", "Details of what's changed (or not changed).", 0, java.lang.Integer.MAX_VALUE, outcomeReference)); 1522 } 1523 1524 @Override 1525 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1526 switch (_hash) { 1527 case -1618432855: /*identifier*/ return new Property("identifier", "Identifier", "This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).", 0, java.lang.Integer.MAX_VALUE, identifier); 1528 case -892481550: /*status*/ return new Property("status", "code", "Indicates whether the goal has been reached and is still considered relevant.", 0, 1, status); 1529 case 50511102: /*category*/ return new Property("category", "CodeableConcept", "Indicates a category the goal falls within.", 0, java.lang.Integer.MAX_VALUE, category); 1530 case -1165461084: /*priority*/ return new Property("priority", "CodeableConcept", "Identifies the mutually agreed level of importance associated with reaching/sustaining the goal.", 0, 1, priority); 1531 case -1724546052: /*description*/ return new Property("description", "CodeableConcept", "Human-readable and/or coded description of a specific desired objective of care, such as \"control blood pressure\" or \"negotiate an obstacle course\" or \"dance with child at wedding\".", 0, 1, description); 1532 case -1867885268: /*subject*/ return new Property("subject", "Reference(Patient|Group|Organization)", "Identifies the patient, group or organization for whom the goal is being established.", 0, 1, subject); 1533 case 1316793566: /*start[x]*/ return new Property("start[x]", "date|CodeableConcept", "The date or event after which the goal should begin being pursued.", 0, 1, start); 1534 case 109757538: /*start*/ return new Property("start[x]", "date|CodeableConcept", "The date or event after which the goal should begin being pursued.", 0, 1, start); 1535 case -2129778896: /*startDate*/ return new Property("start[x]", "date|CodeableConcept", "The date or event after which the goal should begin being pursued.", 0, 1, start); 1536 case -1758833953: /*startCodeableConcept*/ return new Property("start[x]", "date|CodeableConcept", "The date or event after which the goal should begin being pursued.", 0, 1, start); 1537 case -880905839: /*target*/ return new Property("target", "", "Indicates what should be done by when.", 0, 1, target); 1538 case 247524032: /*statusDate*/ return new Property("statusDate", "date", "Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc.", 0, 1, statusDate); 1539 case 2051346646: /*statusReason*/ return new Property("statusReason", "string", "Captures the reason for the current status.", 0, 1, statusReason); 1540 case 175423686: /*expressedBy*/ return new Property("expressedBy", "Reference(Patient|Practitioner|RelatedPerson)", "Indicates whose goal this is - patient goal, practitioner goal, etc.", 0, 1, expressedBy); 1541 case 874544034: /*addresses*/ return new Property("addresses", "Reference(Condition|Observation|MedicationStatement|NutritionOrder|ProcedureRequest|RiskAssessment)", "The identified conditions and other health record elements that are intended to be addressed by the goal.", 0, java.lang.Integer.MAX_VALUE, addresses); 1542 case 3387378: /*note*/ return new Property("note", "Annotation", "Any comments related to the goal.", 0, java.lang.Integer.MAX_VALUE, note); 1543 case 1062482015: /*outcomeCode*/ return new Property("outcomeCode", "CodeableConcept", "Identifies the change (or lack of change) at the point when the status of the goal is assessed.", 0, java.lang.Integer.MAX_VALUE, outcomeCode); 1544 case -782273511: /*outcomeReference*/ return new Property("outcomeReference", "Reference(Observation)", "Details of what's changed (or not changed).", 0, java.lang.Integer.MAX_VALUE, outcomeReference); 1545 default: return super.getNamedProperty(_hash, _name, _checkValid); 1546 } 1547 1548 } 1549 1550 @Override 1551 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1552 switch (hash) { 1553 case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier 1554 case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<GoalStatus> 1555 case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept 1556 case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // CodeableConcept 1557 case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // CodeableConcept 1558 case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference 1559 case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // Type 1560 case -880905839: /*target*/ return this.target == null ? new Base[0] : new Base[] {this.target}; // GoalTargetComponent 1561 case 247524032: /*statusDate*/ return this.statusDate == null ? new Base[0] : new Base[] {this.statusDate}; // DateType 1562 case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // StringType 1563 case 175423686: /*expressedBy*/ return this.expressedBy == null ? new Base[0] : new Base[] {this.expressedBy}; // Reference 1564 case 874544034: /*addresses*/ return this.addresses == null ? new Base[0] : this.addresses.toArray(new Base[this.addresses.size()]); // Reference 1565 case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation 1566 case 1062482015: /*outcomeCode*/ return this.outcomeCode == null ? new Base[0] : this.outcomeCode.toArray(new Base[this.outcomeCode.size()]); // CodeableConcept 1567 case -782273511: /*outcomeReference*/ return this.outcomeReference == null ? new Base[0] : this.outcomeReference.toArray(new Base[this.outcomeReference.size()]); // Reference 1568 default: return super.getProperty(hash, name, checkValid); 1569 } 1570 1571 } 1572 1573 @Override 1574 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1575 switch (hash) { 1576 case -1618432855: // identifier 1577 this.getIdentifier().add(castToIdentifier(value)); // Identifier 1578 return value; 1579 case -892481550: // status 1580 value = new GoalStatusEnumFactory().fromType(castToCode(value)); 1581 this.status = (Enumeration) value; // Enumeration<GoalStatus> 1582 return value; 1583 case 50511102: // category 1584 this.getCategory().add(castToCodeableConcept(value)); // CodeableConcept 1585 return value; 1586 case -1165461084: // priority 1587 this.priority = castToCodeableConcept(value); // CodeableConcept 1588 return value; 1589 case -1724546052: // description 1590 this.description = castToCodeableConcept(value); // CodeableConcept 1591 return value; 1592 case -1867885268: // subject 1593 this.subject = castToReference(value); // Reference 1594 return value; 1595 case 109757538: // start 1596 this.start = castToType(value); // Type 1597 return value; 1598 case -880905839: // target 1599 this.target = (GoalTargetComponent) value; // GoalTargetComponent 1600 return value; 1601 case 247524032: // statusDate 1602 this.statusDate = castToDate(value); // DateType 1603 return value; 1604 case 2051346646: // statusReason 1605 this.statusReason = castToString(value); // StringType 1606 return value; 1607 case 175423686: // expressedBy 1608 this.expressedBy = castToReference(value); // Reference 1609 return value; 1610 case 874544034: // addresses 1611 this.getAddresses().add(castToReference(value)); // Reference 1612 return value; 1613 case 3387378: // note 1614 this.getNote().add(castToAnnotation(value)); // Annotation 1615 return value; 1616 case 1062482015: // outcomeCode 1617 this.getOutcomeCode().add(castToCodeableConcept(value)); // CodeableConcept 1618 return value; 1619 case -782273511: // outcomeReference 1620 this.getOutcomeReference().add(castToReference(value)); // Reference 1621 return value; 1622 default: return super.setProperty(hash, name, value); 1623 } 1624 1625 } 1626 1627 @Override 1628 public Base setProperty(String name, Base value) throws FHIRException { 1629 if (name.equals("identifier")) { 1630 this.getIdentifier().add(castToIdentifier(value)); 1631 } else if (name.equals("status")) { 1632 value = new GoalStatusEnumFactory().fromType(castToCode(value)); 1633 this.status = (Enumeration) value; // Enumeration<GoalStatus> 1634 } else if (name.equals("category")) { 1635 this.getCategory().add(castToCodeableConcept(value)); 1636 } else if (name.equals("priority")) { 1637 this.priority = castToCodeableConcept(value); // CodeableConcept 1638 } else if (name.equals("description")) { 1639 this.description = castToCodeableConcept(value); // CodeableConcept 1640 } else if (name.equals("subject")) { 1641 this.subject = castToReference(value); // Reference 1642 } else if (name.equals("start[x]")) { 1643 this.start = castToType(value); // Type 1644 } else if (name.equals("target")) { 1645 this.target = (GoalTargetComponent) value; // GoalTargetComponent 1646 } else if (name.equals("statusDate")) { 1647 this.statusDate = castToDate(value); // DateType 1648 } else if (name.equals("statusReason")) { 1649 this.statusReason = castToString(value); // StringType 1650 } else if (name.equals("expressedBy")) { 1651 this.expressedBy = castToReference(value); // Reference 1652 } else if (name.equals("addresses")) { 1653 this.getAddresses().add(castToReference(value)); 1654 } else if (name.equals("note")) { 1655 this.getNote().add(castToAnnotation(value)); 1656 } else if (name.equals("outcomeCode")) { 1657 this.getOutcomeCode().add(castToCodeableConcept(value)); 1658 } else if (name.equals("outcomeReference")) { 1659 this.getOutcomeReference().add(castToReference(value)); 1660 } else 1661 return super.setProperty(name, value); 1662 return value; 1663 } 1664 1665 @Override 1666 public Base makeProperty(int hash, String name) throws FHIRException { 1667 switch (hash) { 1668 case -1618432855: return addIdentifier(); 1669 case -892481550: return getStatusElement(); 1670 case 50511102: return addCategory(); 1671 case -1165461084: return getPriority(); 1672 case -1724546052: return getDescription(); 1673 case -1867885268: return getSubject(); 1674 case 1316793566: return getStart(); 1675 case 109757538: return getStart(); 1676 case -880905839: return getTarget(); 1677 case 247524032: return getStatusDateElement(); 1678 case 2051346646: return getStatusReasonElement(); 1679 case 175423686: return getExpressedBy(); 1680 case 874544034: return addAddresses(); 1681 case 3387378: return addNote(); 1682 case 1062482015: return addOutcomeCode(); 1683 case -782273511: return addOutcomeReference(); 1684 default: return super.makeProperty(hash, name); 1685 } 1686 1687 } 1688 1689 @Override 1690 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1691 switch (hash) { 1692 case -1618432855: /*identifier*/ return new String[] {"Identifier"}; 1693 case -892481550: /*status*/ return new String[] {"code"}; 1694 case 50511102: /*category*/ return new String[] {"CodeableConcept"}; 1695 case -1165461084: /*priority*/ return new String[] {"CodeableConcept"}; 1696 case -1724546052: /*description*/ return new String[] {"CodeableConcept"}; 1697 case -1867885268: /*subject*/ return new String[] {"Reference"}; 1698 case 109757538: /*start*/ return new String[] {"date", "CodeableConcept"}; 1699 case -880905839: /*target*/ return new String[] {}; 1700 case 247524032: /*statusDate*/ return new String[] {"date"}; 1701 case 2051346646: /*statusReason*/ return new String[] {"string"}; 1702 case 175423686: /*expressedBy*/ return new String[] {"Reference"}; 1703 case 874544034: /*addresses*/ return new String[] {"Reference"}; 1704 case 3387378: /*note*/ return new String[] {"Annotation"}; 1705 case 1062482015: /*outcomeCode*/ return new String[] {"CodeableConcept"}; 1706 case -782273511: /*outcomeReference*/ return new String[] {"Reference"}; 1707 default: return super.getTypesForProperty(hash, name); 1708 } 1709 1710 } 1711 1712 @Override 1713 public Base addChild(String name) throws FHIRException { 1714 if (name.equals("identifier")) { 1715 return addIdentifier(); 1716 } 1717 else if (name.equals("status")) { 1718 throw new FHIRException("Cannot call addChild on a singleton property Goal.status"); 1719 } 1720 else if (name.equals("category")) { 1721 return addCategory(); 1722 } 1723 else if (name.equals("priority")) { 1724 this.priority = new CodeableConcept(); 1725 return this.priority; 1726 } 1727 else if (name.equals("description")) { 1728 this.description = new CodeableConcept(); 1729 return this.description; 1730 } 1731 else if (name.equals("subject")) { 1732 this.subject = new Reference(); 1733 return this.subject; 1734 } 1735 else if (name.equals("startDate")) { 1736 this.start = new DateType(); 1737 return this.start; 1738 } 1739 else if (name.equals("startCodeableConcept")) { 1740 this.start = new CodeableConcept(); 1741 return this.start; 1742 } 1743 else if (name.equals("target")) { 1744 this.target = new GoalTargetComponent(); 1745 return this.target; 1746 } 1747 else if (name.equals("statusDate")) { 1748 throw new FHIRException("Cannot call addChild on a singleton property Goal.statusDate"); 1749 } 1750 else if (name.equals("statusReason")) { 1751 throw new FHIRException("Cannot call addChild on a singleton property Goal.statusReason"); 1752 } 1753 else if (name.equals("expressedBy")) { 1754 this.expressedBy = new Reference(); 1755 return this.expressedBy; 1756 } 1757 else if (name.equals("addresses")) { 1758 return addAddresses(); 1759 } 1760 else if (name.equals("note")) { 1761 return addNote(); 1762 } 1763 else if (name.equals("outcomeCode")) { 1764 return addOutcomeCode(); 1765 } 1766 else if (name.equals("outcomeReference")) { 1767 return addOutcomeReference(); 1768 } 1769 else 1770 return super.addChild(name); 1771 } 1772 1773 public String fhirType() { 1774 return "Goal"; 1775 1776 } 1777 1778 public Goal copy() { 1779 Goal dst = new Goal(); 1780 copyValues(dst); 1781 if (identifier != null) { 1782 dst.identifier = new ArrayList<Identifier>(); 1783 for (Identifier i : identifier) 1784 dst.identifier.add(i.copy()); 1785 }; 1786 dst.status = status == null ? null : status.copy(); 1787 if (category != null) { 1788 dst.category = new ArrayList<CodeableConcept>(); 1789 for (CodeableConcept i : category) 1790 dst.category.add(i.copy()); 1791 }; 1792 dst.priority = priority == null ? null : priority.copy(); 1793 dst.description = description == null ? null : description.copy(); 1794 dst.subject = subject == null ? null : subject.copy(); 1795 dst.start = start == null ? null : start.copy(); 1796 dst.target = target == null ? null : target.copy(); 1797 dst.statusDate = statusDate == null ? null : statusDate.copy(); 1798 dst.statusReason = statusReason == null ? null : statusReason.copy(); 1799 dst.expressedBy = expressedBy == null ? null : expressedBy.copy(); 1800 if (addresses != null) { 1801 dst.addresses = new ArrayList<Reference>(); 1802 for (Reference i : addresses) 1803 dst.addresses.add(i.copy()); 1804 }; 1805 if (note != null) { 1806 dst.note = new ArrayList<Annotation>(); 1807 for (Annotation i : note) 1808 dst.note.add(i.copy()); 1809 }; 1810 if (outcomeCode != null) { 1811 dst.outcomeCode = new ArrayList<CodeableConcept>(); 1812 for (CodeableConcept i : outcomeCode) 1813 dst.outcomeCode.add(i.copy()); 1814 }; 1815 if (outcomeReference != null) { 1816 dst.outcomeReference = new ArrayList<Reference>(); 1817 for (Reference i : outcomeReference) 1818 dst.outcomeReference.add(i.copy()); 1819 }; 1820 return dst; 1821 } 1822 1823 protected Goal typedCopy() { 1824 return copy(); 1825 } 1826 1827 @Override 1828 public boolean equalsDeep(Base other_) { 1829 if (!super.equalsDeep(other_)) 1830 return false; 1831 if (!(other_ instanceof Goal)) 1832 return false; 1833 Goal o = (Goal) other_; 1834 return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(category, o.category, true) 1835 && compareDeep(priority, o.priority, true) && compareDeep(description, o.description, true) && compareDeep(subject, o.subject, true) 1836 && compareDeep(start, o.start, true) && compareDeep(target, o.target, true) && compareDeep(statusDate, o.statusDate, true) 1837 && compareDeep(statusReason, o.statusReason, true) && compareDeep(expressedBy, o.expressedBy, true) 1838 && compareDeep(addresses, o.addresses, true) && compareDeep(note, o.note, true) && compareDeep(outcomeCode, o.outcomeCode, true) 1839 && compareDeep(outcomeReference, o.outcomeReference, true); 1840 } 1841 1842 @Override 1843 public boolean equalsShallow(Base other_) { 1844 if (!super.equalsShallow(other_)) 1845 return false; 1846 if (!(other_ instanceof Goal)) 1847 return false; 1848 Goal o = (Goal) other_; 1849 return compareValues(status, o.status, true) && compareValues(statusDate, o.statusDate, true) && compareValues(statusReason, o.statusReason, true) 1850 ; 1851 } 1852 1853 public boolean isEmpty() { 1854 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, category 1855 , priority, description, subject, start, target, statusDate, statusReason, expressedBy 1856 , addresses, note, outcomeCode, outcomeReference); 1857 } 1858 1859 @Override 1860 public ResourceType getResourceType() { 1861 return ResourceType.Goal; 1862 } 1863 1864 /** 1865 * Search parameter: <b>identifier</b> 1866 * <p> 1867 * Description: <b>External Ids for this goal</b><br> 1868 * Type: <b>token</b><br> 1869 * Path: <b>Goal.identifier</b><br> 1870 * </p> 1871 */ 1872 @SearchParamDefinition(name="identifier", path="Goal.identifier", description="External Ids for this goal", type="token" ) 1873 public static final String SP_IDENTIFIER = "identifier"; 1874 /** 1875 * <b>Fluent Client</b> search parameter constant for <b>identifier</b> 1876 * <p> 1877 * Description: <b>External Ids for this goal</b><br> 1878 * Type: <b>token</b><br> 1879 * Path: <b>Goal.identifier</b><br> 1880 * </p> 1881 */ 1882 public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER); 1883 1884 /** 1885 * Search parameter: <b>patient</b> 1886 * <p> 1887 * Description: <b>Who this goal is intended for</b><br> 1888 * Type: <b>reference</b><br> 1889 * Path: <b>Goal.subject</b><br> 1890 * </p> 1891 */ 1892 @SearchParamDefinition(name="patient", path="Goal.subject", description="Who this goal is intended for", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Patient.class } ) 1893 public static final String SP_PATIENT = "patient"; 1894 /** 1895 * <b>Fluent Client</b> search parameter constant for <b>patient</b> 1896 * <p> 1897 * Description: <b>Who this goal is intended for</b><br> 1898 * Type: <b>reference</b><br> 1899 * Path: <b>Goal.subject</b><br> 1900 * </p> 1901 */ 1902 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT); 1903 1904/** 1905 * Constant for fluent queries to be used to add include statements. Specifies 1906 * the path value of "<b>Goal:patient</b>". 1907 */ 1908 public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Goal:patient").toLocked(); 1909 1910 /** 1911 * Search parameter: <b>subject</b> 1912 * <p> 1913 * Description: <b>Who this goal is intended for</b><br> 1914 * Type: <b>reference</b><br> 1915 * Path: <b>Goal.subject</b><br> 1916 * </p> 1917 */ 1918 @SearchParamDefinition(name="subject", path="Goal.subject", description="Who this goal is intended for", type="reference", target={Group.class, Organization.class, Patient.class } ) 1919 public static final String SP_SUBJECT = "subject"; 1920 /** 1921 * <b>Fluent Client</b> search parameter constant for <b>subject</b> 1922 * <p> 1923 * Description: <b>Who this goal is intended for</b><br> 1924 * Type: <b>reference</b><br> 1925 * Path: <b>Goal.subject</b><br> 1926 * </p> 1927 */ 1928 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT); 1929 1930/** 1931 * Constant for fluent queries to be used to add include statements. Specifies 1932 * the path value of "<b>Goal:subject</b>". 1933 */ 1934 public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Goal:subject").toLocked(); 1935 1936 /** 1937 * Search parameter: <b>start-date</b> 1938 * <p> 1939 * Description: <b>When goal pursuit begins</b><br> 1940 * Type: <b>date</b><br> 1941 * Path: <b>Goal.startDate</b><br> 1942 * </p> 1943 */ 1944 @SearchParamDefinition(name="start-date", path="Goal.start.as(Date)", description="When goal pursuit begins", type="date" ) 1945 public static final String SP_START_DATE = "start-date"; 1946 /** 1947 * <b>Fluent Client</b> search parameter constant for <b>start-date</b> 1948 * <p> 1949 * Description: <b>When goal pursuit begins</b><br> 1950 * Type: <b>date</b><br> 1951 * Path: <b>Goal.startDate</b><br> 1952 * </p> 1953 */ 1954 public static final ca.uhn.fhir.rest.gclient.DateClientParam START_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_START_DATE); 1955 1956 /** 1957 * Search parameter: <b>category</b> 1958 * <p> 1959 * Description: <b>E.g. Treatment, dietary, behavioral, etc.</b><br> 1960 * Type: <b>token</b><br> 1961 * Path: <b>Goal.category</b><br> 1962 * </p> 1963 */ 1964 @SearchParamDefinition(name="category", path="Goal.category", description="E.g. Treatment, dietary, behavioral, etc.", type="token" ) 1965 public static final String SP_CATEGORY = "category"; 1966 /** 1967 * <b>Fluent Client</b> search parameter constant for <b>category</b> 1968 * <p> 1969 * Description: <b>E.g. Treatment, dietary, behavioral, etc.</b><br> 1970 * Type: <b>token</b><br> 1971 * Path: <b>Goal.category</b><br> 1972 * </p> 1973 */ 1974 public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY); 1975 1976 /** 1977 * Search parameter: <b>target-date</b> 1978 * <p> 1979 * Description: <b>Reach goal on or before</b><br> 1980 * Type: <b>date</b><br> 1981 * Path: <b>Goal.target.dueDate</b><br> 1982 * </p> 1983 */ 1984 @SearchParamDefinition(name="target-date", path="Goal.target.due.as(Date)", description="Reach goal on or before", type="date" ) 1985 public static final String SP_TARGET_DATE = "target-date"; 1986 /** 1987 * <b>Fluent Client</b> search parameter constant for <b>target-date</b> 1988 * <p> 1989 * Description: <b>Reach goal on or before</b><br> 1990 * Type: <b>date</b><br> 1991 * Path: <b>Goal.target.dueDate</b><br> 1992 * </p> 1993 */ 1994 public static final ca.uhn.fhir.rest.gclient.DateClientParam TARGET_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_TARGET_DATE); 1995 1996 /** 1997 * Search parameter: <b>status</b> 1998 * <p> 1999 * Description: <b>proposed | accepted | planned | in-progress | on-target | ahead-of-target | behind-target | sustaining | achieved | on-hold | cancelled | entered-in-error | rejected</b><br> 2000 * Type: <b>token</b><br> 2001 * Path: <b>Goal.status</b><br> 2002 * </p> 2003 */ 2004 @SearchParamDefinition(name="status", path="Goal.status", description="proposed | accepted | planned | in-progress | on-target | ahead-of-target | behind-target | sustaining | achieved | on-hold | cancelled | entered-in-error | rejected", type="token" ) 2005 public static final String SP_STATUS = "status"; 2006 /** 2007 * <b>Fluent Client</b> search parameter constant for <b>status</b> 2008 * <p> 2009 * Description: <b>proposed | accepted | planned | in-progress | on-target | ahead-of-target | behind-target | sustaining | achieved | on-hold | cancelled | entered-in-error | rejected</b><br> 2010 * Type: <b>token</b><br> 2011 * Path: <b>Goal.status</b><br> 2012 * </p> 2013 */ 2014 public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS); 2015 2016 2017}