001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.
052 */
053@ResourceDef(name="CarePlan", profile="http://hl7.org/fhir/StructureDefinition/CarePlan")
054public class CarePlan extends DomainResource {
055
056    public enum CarePlanActivityKind {
057        /**
058         * A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).
059         */
060        APPOINTMENT, 
061        /**
062         * A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.
063         */
064        COMMUNICATIONREQUEST, 
065        /**
066         * Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.
067         */
068        DEVICEREQUEST, 
069        /**
070         * An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationRequest\" rather than \"MedicationPrescription\" or \"MedicationOrder\" to generalize the use across inpatient and outpatient settings, including care plans, etc., and to harmonize with workflow patterns.
071         */
072        MEDICATIONREQUEST, 
073        /**
074         * A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.
075         */
076        NUTRITIONORDER, 
077        /**
078         * A task to be performed.
079         */
080        TASK, 
081        /**
082         * A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.
083         */
084        SERVICEREQUEST, 
085        /**
086         * An authorization for the provision of glasses and/or contact lenses to a patient.
087         */
088        VISIONPRESCRIPTION, 
089        /**
090         * added to help the parsers with the generic types
091         */
092        NULL;
093        public static CarePlanActivityKind fromCode(String codeString) throws FHIRException {
094            if (codeString == null || "".equals(codeString))
095                return null;
096        if ("Appointment".equals(codeString))
097          return APPOINTMENT;
098        if ("CommunicationRequest".equals(codeString))
099          return COMMUNICATIONREQUEST;
100        if ("DeviceRequest".equals(codeString))
101          return DEVICEREQUEST;
102        if ("MedicationRequest".equals(codeString))
103          return MEDICATIONREQUEST;
104        if ("NutritionOrder".equals(codeString))
105          return NUTRITIONORDER;
106        if ("Task".equals(codeString))
107          return TASK;
108        if ("ServiceRequest".equals(codeString))
109          return SERVICEREQUEST;
110        if ("VisionPrescription".equals(codeString))
111          return VISIONPRESCRIPTION;
112        if (Configuration.isAcceptInvalidEnums())
113          return null;
114        else
115          throw new FHIRException("Unknown CarePlanActivityKind code '"+codeString+"'");
116        }
117        public String toCode() {
118          switch (this) {
119            case APPOINTMENT: return "Appointment";
120            case COMMUNICATIONREQUEST: return "CommunicationRequest";
121            case DEVICEREQUEST: return "DeviceRequest";
122            case MEDICATIONREQUEST: return "MedicationRequest";
123            case NUTRITIONORDER: return "NutritionOrder";
124            case TASK: return "Task";
125            case SERVICEREQUEST: return "ServiceRequest";
126            case VISIONPRESCRIPTION: return "VisionPrescription";
127            case NULL: return null;
128            default: return "?";
129          }
130        }
131        public String getSystem() {
132          switch (this) {
133            case APPOINTMENT: return "http://hl7.org/fhir/resource-types";
134            case COMMUNICATIONREQUEST: return "http://hl7.org/fhir/resource-types";
135            case DEVICEREQUEST: return "http://hl7.org/fhir/resource-types";
136            case MEDICATIONREQUEST: return "http://hl7.org/fhir/resource-types";
137            case NUTRITIONORDER: return "http://hl7.org/fhir/resource-types";
138            case TASK: return "http://hl7.org/fhir/resource-types";
139            case SERVICEREQUEST: return "http://hl7.org/fhir/resource-types";
140            case VISIONPRESCRIPTION: return "http://hl7.org/fhir/resource-types";
141            case NULL: return null;
142            default: return "?";
143          }
144        }
145        public String getDefinition() {
146          switch (this) {
147            case APPOINTMENT: return "A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).";
148            case COMMUNICATIONREQUEST: return "A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.";
149            case DEVICEREQUEST: return "Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.";
150            case MEDICATIONREQUEST: return "An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationRequest\" rather than \"MedicationPrescription\" or \"MedicationOrder\" to generalize the use across inpatient and outpatient settings, including care plans, etc., and to harmonize with workflow patterns.";
151            case NUTRITIONORDER: return "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.";
152            case TASK: return "A task to be performed.";
153            case SERVICEREQUEST: return "A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.";
154            case VISIONPRESCRIPTION: return "An authorization for the provision of glasses and/or contact lenses to a patient.";
155            case NULL: return null;
156            default: return "?";
157          }
158        }
159        public String getDisplay() {
160          switch (this) {
161            case APPOINTMENT: return "Appointment";
162            case COMMUNICATIONREQUEST: return "CommunicationRequest";
163            case DEVICEREQUEST: return "DeviceRequest";
164            case MEDICATIONREQUEST: return "MedicationRequest";
165            case NUTRITIONORDER: return "NutritionOrder";
166            case TASK: return "Task";
167            case SERVICEREQUEST: return "ServiceRequest";
168            case VISIONPRESCRIPTION: return "VisionPrescription";
169            case NULL: return null;
170            default: return "?";
171          }
172        }
173    }
174
175  public static class CarePlanActivityKindEnumFactory implements EnumFactory<CarePlanActivityKind> {
176    public CarePlanActivityKind fromCode(String codeString) throws IllegalArgumentException {
177      if (codeString == null || "".equals(codeString))
178            if (codeString == null || "".equals(codeString))
179                return null;
180        if ("Appointment".equals(codeString))
181          return CarePlanActivityKind.APPOINTMENT;
182        if ("CommunicationRequest".equals(codeString))
183          return CarePlanActivityKind.COMMUNICATIONREQUEST;
184        if ("DeviceRequest".equals(codeString))
185          return CarePlanActivityKind.DEVICEREQUEST;
186        if ("MedicationRequest".equals(codeString))
187          return CarePlanActivityKind.MEDICATIONREQUEST;
188        if ("NutritionOrder".equals(codeString))
189          return CarePlanActivityKind.NUTRITIONORDER;
190        if ("Task".equals(codeString))
191          return CarePlanActivityKind.TASK;
192        if ("ServiceRequest".equals(codeString))
193          return CarePlanActivityKind.SERVICEREQUEST;
194        if ("VisionPrescription".equals(codeString))
195          return CarePlanActivityKind.VISIONPRESCRIPTION;
196        throw new IllegalArgumentException("Unknown CarePlanActivityKind code '"+codeString+"'");
197        }
198        public Enumeration<CarePlanActivityKind> fromType(Base code) throws FHIRException {
199          if (code == null)
200            return null;
201          if (code.isEmpty())
202            return new Enumeration<CarePlanActivityKind>(this);
203          String codeString = ((PrimitiveType) code).asStringValue();
204          if (codeString == null || "".equals(codeString))
205            return null;
206        if ("Appointment".equals(codeString))
207          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.APPOINTMENT);
208        if ("CommunicationRequest".equals(codeString))
209          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.COMMUNICATIONREQUEST);
210        if ("DeviceRequest".equals(codeString))
211          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.DEVICEREQUEST);
212        if ("MedicationRequest".equals(codeString))
213          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.MEDICATIONREQUEST);
214        if ("NutritionOrder".equals(codeString))
215          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.NUTRITIONORDER);
216        if ("Task".equals(codeString))
217          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.TASK);
218        if ("ServiceRequest".equals(codeString))
219          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.SERVICEREQUEST);
220        if ("VisionPrescription".equals(codeString))
221          return new Enumeration<CarePlanActivityKind>(this, CarePlanActivityKind.VISIONPRESCRIPTION);
222        throw new FHIRException("Unknown CarePlanActivityKind code '"+codeString+"'");
223        }
224    public String toCode(CarePlanActivityKind code) {
225      if (code == CarePlanActivityKind.APPOINTMENT)
226        return "Appointment";
227      if (code == CarePlanActivityKind.COMMUNICATIONREQUEST)
228        return "CommunicationRequest";
229      if (code == CarePlanActivityKind.DEVICEREQUEST)
230        return "DeviceRequest";
231      if (code == CarePlanActivityKind.MEDICATIONREQUEST)
232        return "MedicationRequest";
233      if (code == CarePlanActivityKind.NUTRITIONORDER)
234        return "NutritionOrder";
235      if (code == CarePlanActivityKind.TASK)
236        return "Task";
237      if (code == CarePlanActivityKind.SERVICEREQUEST)
238        return "ServiceRequest";
239      if (code == CarePlanActivityKind.VISIONPRESCRIPTION)
240        return "VisionPrescription";
241      return "?";
242      }
243    public String toSystem(CarePlanActivityKind code) {
244      return code.getSystem();
245      }
246    }
247
248    public enum CarePlanActivityStatus {
249        /**
250         * Care plan activity is planned but no action has yet been taken.
251         */
252        NOTSTARTED, 
253        /**
254         * Appointment or other booking has occurred but activity has not yet begun.
255         */
256        SCHEDULED, 
257        /**
258         * Care plan activity has been started but is not yet complete.
259         */
260        INPROGRESS, 
261        /**
262         * Care plan activity was started but has temporarily ceased with an expectation of resumption at a future time.
263         */
264        ONHOLD, 
265        /**
266         * Care plan activity has been completed (more or less) as planned.
267         */
268        COMPLETED, 
269        /**
270         * The planned care plan activity has been withdrawn.
271         */
272        CANCELLED, 
273        /**
274         * The planned care plan activity has been ended prior to completion after the activity was started.
275         */
276        STOPPED, 
277        /**
278         * The current state of the care plan activity is not known.  Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, but the authoring/source system does not know which one.
279         */
280        UNKNOWN, 
281        /**
282         * Care plan activity was entered in error and voided.
283         */
284        ENTEREDINERROR, 
285        /**
286         * added to help the parsers with the generic types
287         */
288        NULL;
289        public static CarePlanActivityStatus fromCode(String codeString) throws FHIRException {
290            if (codeString == null || "".equals(codeString))
291                return null;
292        if ("not-started".equals(codeString))
293          return NOTSTARTED;
294        if ("scheduled".equals(codeString))
295          return SCHEDULED;
296        if ("in-progress".equals(codeString))
297          return INPROGRESS;
298        if ("on-hold".equals(codeString))
299          return ONHOLD;
300        if ("completed".equals(codeString))
301          return COMPLETED;
302        if ("cancelled".equals(codeString))
303          return CANCELLED;
304        if ("stopped".equals(codeString))
305          return STOPPED;
306        if ("unknown".equals(codeString))
307          return UNKNOWN;
308        if ("entered-in-error".equals(codeString))
309          return ENTEREDINERROR;
310        if (Configuration.isAcceptInvalidEnums())
311          return null;
312        else
313          throw new FHIRException("Unknown CarePlanActivityStatus code '"+codeString+"'");
314        }
315        public String toCode() {
316          switch (this) {
317            case NOTSTARTED: return "not-started";
318            case SCHEDULED: return "scheduled";
319            case INPROGRESS: return "in-progress";
320            case ONHOLD: return "on-hold";
321            case COMPLETED: return "completed";
322            case CANCELLED: return "cancelled";
323            case STOPPED: return "stopped";
324            case UNKNOWN: return "unknown";
325            case ENTEREDINERROR: return "entered-in-error";
326            case NULL: return null;
327            default: return "?";
328          }
329        }
330        public String getSystem() {
331          switch (this) {
332            case NOTSTARTED: return "http://hl7.org/fhir/care-plan-activity-status";
333            case SCHEDULED: return "http://hl7.org/fhir/care-plan-activity-status";
334            case INPROGRESS: return "http://hl7.org/fhir/care-plan-activity-status";
335            case ONHOLD: return "http://hl7.org/fhir/care-plan-activity-status";
336            case COMPLETED: return "http://hl7.org/fhir/care-plan-activity-status";
337            case CANCELLED: return "http://hl7.org/fhir/care-plan-activity-status";
338            case STOPPED: return "http://hl7.org/fhir/care-plan-activity-status";
339            case UNKNOWN: return "http://hl7.org/fhir/care-plan-activity-status";
340            case ENTEREDINERROR: return "http://hl7.org/fhir/care-plan-activity-status";
341            case NULL: return null;
342            default: return "?";
343          }
344        }
345        public String getDefinition() {
346          switch (this) {
347            case NOTSTARTED: return "Care plan activity is planned but no action has yet been taken.";
348            case SCHEDULED: return "Appointment or other booking has occurred but activity has not yet begun.";
349            case INPROGRESS: return "Care plan activity has been started but is not yet complete.";
350            case ONHOLD: return "Care plan activity was started but has temporarily ceased with an expectation of resumption at a future time.";
351            case COMPLETED: return "Care plan activity has been completed (more or less) as planned.";
352            case CANCELLED: return "The planned care plan activity has been withdrawn.";
353            case STOPPED: return "The planned care plan activity has been ended prior to completion after the activity was started.";
354            case UNKNOWN: return "The current state of the care plan activity is not known.  Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, but the authoring/source system does not know which one.";
355            case ENTEREDINERROR: return "Care plan activity was entered in error and voided.";
356            case NULL: return null;
357            default: return "?";
358          }
359        }
360        public String getDisplay() {
361          switch (this) {
362            case NOTSTARTED: return "Not Started";
363            case SCHEDULED: return "Scheduled";
364            case INPROGRESS: return "In Progress";
365            case ONHOLD: return "On Hold";
366            case COMPLETED: return "Completed";
367            case CANCELLED: return "Cancelled";
368            case STOPPED: return "Stopped";
369            case UNKNOWN: return "Unknown";
370            case ENTEREDINERROR: return "Entered in Error";
371            case NULL: return null;
372            default: return "?";
373          }
374        }
375    }
376
377  public static class CarePlanActivityStatusEnumFactory implements EnumFactory<CarePlanActivityStatus> {
378    public CarePlanActivityStatus fromCode(String codeString) throws IllegalArgumentException {
379      if (codeString == null || "".equals(codeString))
380            if (codeString == null || "".equals(codeString))
381                return null;
382        if ("not-started".equals(codeString))
383          return CarePlanActivityStatus.NOTSTARTED;
384        if ("scheduled".equals(codeString))
385          return CarePlanActivityStatus.SCHEDULED;
386        if ("in-progress".equals(codeString))
387          return CarePlanActivityStatus.INPROGRESS;
388        if ("on-hold".equals(codeString))
389          return CarePlanActivityStatus.ONHOLD;
390        if ("completed".equals(codeString))
391          return CarePlanActivityStatus.COMPLETED;
392        if ("cancelled".equals(codeString))
393          return CarePlanActivityStatus.CANCELLED;
394        if ("stopped".equals(codeString))
395          return CarePlanActivityStatus.STOPPED;
396        if ("unknown".equals(codeString))
397          return CarePlanActivityStatus.UNKNOWN;
398        if ("entered-in-error".equals(codeString))
399          return CarePlanActivityStatus.ENTEREDINERROR;
400        throw new IllegalArgumentException("Unknown CarePlanActivityStatus code '"+codeString+"'");
401        }
402        public Enumeration<CarePlanActivityStatus> fromType(Base code) throws FHIRException {
403          if (code == null)
404            return null;
405          if (code.isEmpty())
406            return new Enumeration<CarePlanActivityStatus>(this);
407          String codeString = ((PrimitiveType) code).asStringValue();
408          if (codeString == null || "".equals(codeString))
409            return null;
410        if ("not-started".equals(codeString))
411          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.NOTSTARTED);
412        if ("scheduled".equals(codeString))
413          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.SCHEDULED);
414        if ("in-progress".equals(codeString))
415          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.INPROGRESS);
416        if ("on-hold".equals(codeString))
417          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.ONHOLD);
418        if ("completed".equals(codeString))
419          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.COMPLETED);
420        if ("cancelled".equals(codeString))
421          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.CANCELLED);
422        if ("stopped".equals(codeString))
423          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.STOPPED);
424        if ("unknown".equals(codeString))
425          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.UNKNOWN);
426        if ("entered-in-error".equals(codeString))
427          return new Enumeration<CarePlanActivityStatus>(this, CarePlanActivityStatus.ENTEREDINERROR);
428        throw new FHIRException("Unknown CarePlanActivityStatus code '"+codeString+"'");
429        }
430    public String toCode(CarePlanActivityStatus code) {
431      if (code == CarePlanActivityStatus.NOTSTARTED)
432        return "not-started";
433      if (code == CarePlanActivityStatus.SCHEDULED)
434        return "scheduled";
435      if (code == CarePlanActivityStatus.INPROGRESS)
436        return "in-progress";
437      if (code == CarePlanActivityStatus.ONHOLD)
438        return "on-hold";
439      if (code == CarePlanActivityStatus.COMPLETED)
440        return "completed";
441      if (code == CarePlanActivityStatus.CANCELLED)
442        return "cancelled";
443      if (code == CarePlanActivityStatus.STOPPED)
444        return "stopped";
445      if (code == CarePlanActivityStatus.UNKNOWN)
446        return "unknown";
447      if (code == CarePlanActivityStatus.ENTEREDINERROR)
448        return "entered-in-error";
449      return "?";
450      }
451    public String toSystem(CarePlanActivityStatus code) {
452      return code.getSystem();
453      }
454    }
455
456    public enum CarePlanIntent {
457        /**
458         * The request is a suggestion made by someone/something that does not have an intention to ensure it occurs and without providing an authorization to act.
459         */
460        PROPOSAL, 
461        /**
462         * The request represents an intention to ensure something occurs without providing an authorization for others to act.
463         */
464        PLAN, 
465        /**
466         * The request represents a request/demand and authorization for action by a Practitioner.
467         */
468        ORDER, 
469        /**
470         * The request represents a component or option for a RequestGroup that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestGroup]]] for additional information on how this status is used.
471         */
472        OPTION, 
473        /**
474         * added to help the parsers with the generic types
475         */
476        NULL;
477        public static CarePlanIntent fromCode(String codeString) throws FHIRException {
478            if (codeString == null || "".equals(codeString))
479                return null;
480        if ("proposal".equals(codeString))
481          return PROPOSAL;
482        if ("plan".equals(codeString))
483          return PLAN;
484        if ("order".equals(codeString))
485          return ORDER;
486        if ("option".equals(codeString))
487          return OPTION;
488        if (Configuration.isAcceptInvalidEnums())
489          return null;
490        else
491          throw new FHIRException("Unknown CarePlanIntent code '"+codeString+"'");
492        }
493        public String toCode() {
494          switch (this) {
495            case PROPOSAL: return "proposal";
496            case PLAN: return "plan";
497            case ORDER: return "order";
498            case OPTION: return "option";
499            case NULL: return null;
500            default: return "?";
501          }
502        }
503        public String getSystem() {
504          switch (this) {
505            case PROPOSAL: return "http://hl7.org/fhir/request-intent";
506            case PLAN: return "http://hl7.org/fhir/request-intent";
507            case ORDER: return "http://hl7.org/fhir/request-intent";
508            case OPTION: return "http://hl7.org/fhir/request-intent";
509            case NULL: return null;
510            default: return "?";
511          }
512        }
513        public String getDefinition() {
514          switch (this) {
515            case PROPOSAL: return "The request is a suggestion made by someone/something that does not have an intention to ensure it occurs and without providing an authorization to act.";
516            case PLAN: return "The request represents an intention to ensure something occurs without providing an authorization for others to act.";
517            case ORDER: return "The request represents a request/demand and authorization for action by a Practitioner.";
518            case OPTION: return "The request represents a component or option for a RequestGroup that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestGroup]]] for additional information on how this status is used.";
519            case NULL: return null;
520            default: return "?";
521          }
522        }
523        public String getDisplay() {
524          switch (this) {
525            case PROPOSAL: return "Proposal";
526            case PLAN: return "Plan";
527            case ORDER: return "Order";
528            case OPTION: return "Option";
529            case NULL: return null;
530            default: return "?";
531          }
532        }
533    }
534
535  public static class CarePlanIntentEnumFactory implements EnumFactory<CarePlanIntent> {
536    public CarePlanIntent fromCode(String codeString) throws IllegalArgumentException {
537      if (codeString == null || "".equals(codeString))
538            if (codeString == null || "".equals(codeString))
539                return null;
540        if ("proposal".equals(codeString))
541          return CarePlanIntent.PROPOSAL;
542        if ("plan".equals(codeString))
543          return CarePlanIntent.PLAN;
544        if ("order".equals(codeString))
545          return CarePlanIntent.ORDER;
546        if ("option".equals(codeString))
547          return CarePlanIntent.OPTION;
548        throw new IllegalArgumentException("Unknown CarePlanIntent code '"+codeString+"'");
549        }
550        public Enumeration<CarePlanIntent> fromType(Base code) throws FHIRException {
551          if (code == null)
552            return null;
553          if (code.isEmpty())
554            return new Enumeration<CarePlanIntent>(this);
555          String codeString = ((PrimitiveType) code).asStringValue();
556          if (codeString == null || "".equals(codeString))
557            return null;
558        if ("proposal".equals(codeString))
559          return new Enumeration<CarePlanIntent>(this, CarePlanIntent.PROPOSAL);
560        if ("plan".equals(codeString))
561          return new Enumeration<CarePlanIntent>(this, CarePlanIntent.PLAN);
562        if ("order".equals(codeString))
563          return new Enumeration<CarePlanIntent>(this, CarePlanIntent.ORDER);
564        if ("option".equals(codeString))
565          return new Enumeration<CarePlanIntent>(this, CarePlanIntent.OPTION);
566        throw new FHIRException("Unknown CarePlanIntent code '"+codeString+"'");
567        }
568    public String toCode(CarePlanIntent code) {
569      if (code == CarePlanIntent.PROPOSAL)
570        return "proposal";
571      if (code == CarePlanIntent.PLAN)
572        return "plan";
573      if (code == CarePlanIntent.ORDER)
574        return "order";
575      if (code == CarePlanIntent.OPTION)
576        return "option";
577      return "?";
578      }
579    public String toSystem(CarePlanIntent code) {
580      return code.getSystem();
581      }
582    }
583
584    @Block()
585    public static class CarePlanActivityComponent extends BackboneElement implements IBaseBackboneElement {
586        /**
587         * Identifies the outcome at the point when the status of the activity is assessed.  For example, the outcome of an education activity could be patient understands (or not).
588         */
589        @Child(name = "outcomeCodeableConcept", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
590        @Description(shortDefinition="Results of the activity", formalDefinition="Identifies the outcome at the point when the status of the activity is assessed.  For example, the outcome of an education activity could be patient understands (or not)." )
591        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-plan-activity-outcome")
592        protected List<CodeableConcept> outcomeCodeableConcept;
593
594        /**
595         * Details of the outcome or action resulting from the activity.  The reference to an "event" resource, such as Procedure or Encounter or Observation, is the result/outcome of the activity itself.  The activity can be conveyed using CarePlan.activity.detail OR using the CarePlan.activity.reference (a reference to a “request” resource).
596         */
597        @Child(name = "outcomeReference", type = {Reference.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
598        @Description(shortDefinition="Appointment, Encounter, Procedure, etc.", formalDefinition="Details of the outcome or action resulting from the activity.  The reference to an \"event\" resource, such as Procedure or Encounter or Observation, is the result/outcome of the activity itself.  The activity can be conveyed using CarePlan.activity.detail OR using the CarePlan.activity.reference (a reference to a “request” resource)." )
599        protected List<Reference> outcomeReference;
600
601        /**
602         * Notes about the adherence/status/progress of the activity.
603         */
604        @Child(name = "progress", type = {Annotation.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
605        @Description(shortDefinition="Comments about the activity status/progress", formalDefinition="Notes about the adherence/status/progress of the activity." )
606        protected List<Annotation> progress;
607
608        /**
609         * The details of the proposed activity represented in a specific resource.
610         */
611        @Child(name = "reference", type = {Appointment.class, CommunicationRequest.class, DeviceRequest.class, MedicationRequest.class, NutritionOrder.class, Task.class, ServiceRequest.class, VisionPrescription.class, RequestGroup.class}, order=4, min=0, max=1, modifier=false, summary=false)
612        @Description(shortDefinition="Activity details defined in specific resource", formalDefinition="The details of the proposed activity represented in a specific resource." )
613        protected Reference reference;
614
615        /**
616         * A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.
617         */
618        @Child(name = "detail", type = {}, order=5, min=0, max=1, modifier=false, summary=false)
619        @Description(shortDefinition="In-line definition of activity", formalDefinition="A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc." )
620        protected CarePlanActivityDetailComponent detail;
621
622        private static final long serialVersionUID = -1499292662L;
623
624    /**
625     * Constructor
626     */
627      public CarePlanActivityComponent() {
628        super();
629      }
630
631        /**
632         * @return {@link #outcomeCodeableConcept} (Identifies the outcome at the point when the status of the activity is assessed.  For example, the outcome of an education activity could be patient understands (or not).)
633         */
634        public List<CodeableConcept> getOutcomeCodeableConcept() { 
635          if (this.outcomeCodeableConcept == null)
636            this.outcomeCodeableConcept = new ArrayList<CodeableConcept>();
637          return this.outcomeCodeableConcept;
638        }
639
640        /**
641         * @return Returns a reference to <code>this</code> for easy method chaining
642         */
643        public CarePlanActivityComponent setOutcomeCodeableConcept(List<CodeableConcept> theOutcomeCodeableConcept) { 
644          this.outcomeCodeableConcept = theOutcomeCodeableConcept;
645          return this;
646        }
647
648        public boolean hasOutcomeCodeableConcept() { 
649          if (this.outcomeCodeableConcept == null)
650            return false;
651          for (CodeableConcept item : this.outcomeCodeableConcept)
652            if (!item.isEmpty())
653              return true;
654          return false;
655        }
656
657        public CodeableConcept addOutcomeCodeableConcept() { //3
658          CodeableConcept t = new CodeableConcept();
659          if (this.outcomeCodeableConcept == null)
660            this.outcomeCodeableConcept = new ArrayList<CodeableConcept>();
661          this.outcomeCodeableConcept.add(t);
662          return t;
663        }
664
665        public CarePlanActivityComponent addOutcomeCodeableConcept(CodeableConcept t) { //3
666          if (t == null)
667            return this;
668          if (this.outcomeCodeableConcept == null)
669            this.outcomeCodeableConcept = new ArrayList<CodeableConcept>();
670          this.outcomeCodeableConcept.add(t);
671          return this;
672        }
673
674        /**
675         * @return The first repetition of repeating field {@link #outcomeCodeableConcept}, creating it if it does not already exist {3}
676         */
677        public CodeableConcept getOutcomeCodeableConceptFirstRep() { 
678          if (getOutcomeCodeableConcept().isEmpty()) {
679            addOutcomeCodeableConcept();
680          }
681          return getOutcomeCodeableConcept().get(0);
682        }
683
684        /**
685         * @return {@link #outcomeReference} (Details of the outcome or action resulting from the activity.  The reference to an "event" resource, such as Procedure or Encounter or Observation, is the result/outcome of the activity itself.  The activity can be conveyed using CarePlan.activity.detail OR using the CarePlan.activity.reference (a reference to a “request” resource).)
686         */
687        public List<Reference> getOutcomeReference() { 
688          if (this.outcomeReference == null)
689            this.outcomeReference = new ArrayList<Reference>();
690          return this.outcomeReference;
691        }
692
693        /**
694         * @return Returns a reference to <code>this</code> for easy method chaining
695         */
696        public CarePlanActivityComponent setOutcomeReference(List<Reference> theOutcomeReference) { 
697          this.outcomeReference = theOutcomeReference;
698          return this;
699        }
700
701        public boolean hasOutcomeReference() { 
702          if (this.outcomeReference == null)
703            return false;
704          for (Reference item : this.outcomeReference)
705            if (!item.isEmpty())
706              return true;
707          return false;
708        }
709
710        public Reference addOutcomeReference() { //3
711          Reference t = new Reference();
712          if (this.outcomeReference == null)
713            this.outcomeReference = new ArrayList<Reference>();
714          this.outcomeReference.add(t);
715          return t;
716        }
717
718        public CarePlanActivityComponent addOutcomeReference(Reference t) { //3
719          if (t == null)
720            return this;
721          if (this.outcomeReference == null)
722            this.outcomeReference = new ArrayList<Reference>();
723          this.outcomeReference.add(t);
724          return this;
725        }
726
727        /**
728         * @return The first repetition of repeating field {@link #outcomeReference}, creating it if it does not already exist {3}
729         */
730        public Reference getOutcomeReferenceFirstRep() { 
731          if (getOutcomeReference().isEmpty()) {
732            addOutcomeReference();
733          }
734          return getOutcomeReference().get(0);
735        }
736
737        /**
738         * @return {@link #progress} (Notes about the adherence/status/progress of the activity.)
739         */
740        public List<Annotation> getProgress() { 
741          if (this.progress == null)
742            this.progress = new ArrayList<Annotation>();
743          return this.progress;
744        }
745
746        /**
747         * @return Returns a reference to <code>this</code> for easy method chaining
748         */
749        public CarePlanActivityComponent setProgress(List<Annotation> theProgress) { 
750          this.progress = theProgress;
751          return this;
752        }
753
754        public boolean hasProgress() { 
755          if (this.progress == null)
756            return false;
757          for (Annotation item : this.progress)
758            if (!item.isEmpty())
759              return true;
760          return false;
761        }
762
763        public Annotation addProgress() { //3
764          Annotation t = new Annotation();
765          if (this.progress == null)
766            this.progress = new ArrayList<Annotation>();
767          this.progress.add(t);
768          return t;
769        }
770
771        public CarePlanActivityComponent addProgress(Annotation t) { //3
772          if (t == null)
773            return this;
774          if (this.progress == null)
775            this.progress = new ArrayList<Annotation>();
776          this.progress.add(t);
777          return this;
778        }
779
780        /**
781         * @return The first repetition of repeating field {@link #progress}, creating it if it does not already exist {3}
782         */
783        public Annotation getProgressFirstRep() { 
784          if (getProgress().isEmpty()) {
785            addProgress();
786          }
787          return getProgress().get(0);
788        }
789
790        /**
791         * @return {@link #reference} (The details of the proposed activity represented in a specific resource.)
792         */
793        public Reference getReference() { 
794          if (this.reference == null)
795            if (Configuration.errorOnAutoCreate())
796              throw new Error("Attempt to auto-create CarePlanActivityComponent.reference");
797            else if (Configuration.doAutoCreate())
798              this.reference = new Reference(); // cc
799          return this.reference;
800        }
801
802        public boolean hasReference() { 
803          return this.reference != null && !this.reference.isEmpty();
804        }
805
806        /**
807         * @param value {@link #reference} (The details of the proposed activity represented in a specific resource.)
808         */
809        public CarePlanActivityComponent setReference(Reference value) { 
810          this.reference = value;
811          return this;
812        }
813
814        /**
815         * @return {@link #detail} (A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.)
816         */
817        public CarePlanActivityDetailComponent getDetail() { 
818          if (this.detail == null)
819            if (Configuration.errorOnAutoCreate())
820              throw new Error("Attempt to auto-create CarePlanActivityComponent.detail");
821            else if (Configuration.doAutoCreate())
822              this.detail = new CarePlanActivityDetailComponent(); // cc
823          return this.detail;
824        }
825
826        public boolean hasDetail() { 
827          return this.detail != null && !this.detail.isEmpty();
828        }
829
830        /**
831         * @param value {@link #detail} (A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.)
832         */
833        public CarePlanActivityComponent setDetail(CarePlanActivityDetailComponent value) { 
834          this.detail = value;
835          return this;
836        }
837
838        protected void listChildren(List<Property> children) {
839          super.listChildren(children);
840          children.add(new Property("outcomeCodeableConcept", "CodeableConcept", "Identifies the outcome at the point when the status of the activity is assessed.  For example, the outcome of an education activity could be patient understands (or not).", 0, java.lang.Integer.MAX_VALUE, outcomeCodeableConcept));
841          children.add(new Property("outcomeReference", "Reference(Any)", "Details of the outcome or action resulting from the activity.  The reference to an \"event\" resource, such as Procedure or Encounter or Observation, is the result/outcome of the activity itself.  The activity can be conveyed using CarePlan.activity.detail OR using the CarePlan.activity.reference (a reference to a “request” resource).", 0, java.lang.Integer.MAX_VALUE, outcomeReference));
842          children.add(new Property("progress", "Annotation", "Notes about the adherence/status/progress of the activity.", 0, java.lang.Integer.MAX_VALUE, progress));
843          children.add(new Property("reference", "Reference(Appointment|CommunicationRequest|DeviceRequest|MedicationRequest|NutritionOrder|Task|ServiceRequest|VisionPrescription|RequestGroup)", "The details of the proposed activity represented in a specific resource.", 0, 1, reference));
844          children.add(new Property("detail", "", "A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.", 0, 1, detail));
845        }
846
847        @Override
848        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
849          switch (_hash) {
850          case -511913489: /*outcomeCodeableConcept*/  return new Property("outcomeCodeableConcept", "CodeableConcept", "Identifies the outcome at the point when the status of the activity is assessed.  For example, the outcome of an education activity could be patient understands (or not).", 0, java.lang.Integer.MAX_VALUE, outcomeCodeableConcept);
851          case -782273511: /*outcomeReference*/  return new Property("outcomeReference", "Reference(Any)", "Details of the outcome or action resulting from the activity.  The reference to an \"event\" resource, such as Procedure or Encounter or Observation, is the result/outcome of the activity itself.  The activity can be conveyed using CarePlan.activity.detail OR using the CarePlan.activity.reference (a reference to a “request” resource).", 0, java.lang.Integer.MAX_VALUE, outcomeReference);
852          case -1001078227: /*progress*/  return new Property("progress", "Annotation", "Notes about the adherence/status/progress of the activity.", 0, java.lang.Integer.MAX_VALUE, progress);
853          case -925155509: /*reference*/  return new Property("reference", "Reference(Appointment|CommunicationRequest|DeviceRequest|MedicationRequest|NutritionOrder|Task|ServiceRequest|VisionPrescription|RequestGroup)", "The details of the proposed activity represented in a specific resource.", 0, 1, reference);
854          case -1335224239: /*detail*/  return new Property("detail", "", "A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.", 0, 1, detail);
855          default: return super.getNamedProperty(_hash, _name, _checkValid);
856          }
857
858        }
859
860      @Override
861      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
862        switch (hash) {
863        case -511913489: /*outcomeCodeableConcept*/ return this.outcomeCodeableConcept == null ? new Base[0] : this.outcomeCodeableConcept.toArray(new Base[this.outcomeCodeableConcept.size()]); // CodeableConcept
864        case -782273511: /*outcomeReference*/ return this.outcomeReference == null ? new Base[0] : this.outcomeReference.toArray(new Base[this.outcomeReference.size()]); // Reference
865        case -1001078227: /*progress*/ return this.progress == null ? new Base[0] : this.progress.toArray(new Base[this.progress.size()]); // Annotation
866        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
867        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : new Base[] {this.detail}; // CarePlanActivityDetailComponent
868        default: return super.getProperty(hash, name, checkValid);
869        }
870
871      }
872
873      @Override
874      public Base setProperty(int hash, String name, Base value) throws FHIRException {
875        switch (hash) {
876        case -511913489: // outcomeCodeableConcept
877          this.getOutcomeCodeableConcept().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
878          return value;
879        case -782273511: // outcomeReference
880          this.getOutcomeReference().add(TypeConvertor.castToReference(value)); // Reference
881          return value;
882        case -1001078227: // progress
883          this.getProgress().add(TypeConvertor.castToAnnotation(value)); // Annotation
884          return value;
885        case -925155509: // reference
886          this.reference = TypeConvertor.castToReference(value); // Reference
887          return value;
888        case -1335224239: // detail
889          this.detail = (CarePlanActivityDetailComponent) value; // CarePlanActivityDetailComponent
890          return value;
891        default: return super.setProperty(hash, name, value);
892        }
893
894      }
895
896      @Override
897      public Base setProperty(String name, Base value) throws FHIRException {
898        if (name.equals("outcomeCodeableConcept")) {
899          this.getOutcomeCodeableConcept().add(TypeConvertor.castToCodeableConcept(value));
900        } else if (name.equals("outcomeReference")) {
901          this.getOutcomeReference().add(TypeConvertor.castToReference(value));
902        } else if (name.equals("progress")) {
903          this.getProgress().add(TypeConvertor.castToAnnotation(value));
904        } else if (name.equals("reference")) {
905          this.reference = TypeConvertor.castToReference(value); // Reference
906        } else if (name.equals("detail")) {
907          this.detail = (CarePlanActivityDetailComponent) value; // CarePlanActivityDetailComponent
908        } else
909          return super.setProperty(name, value);
910        return value;
911      }
912
913      @Override
914      public Base makeProperty(int hash, String name) throws FHIRException {
915        switch (hash) {
916        case -511913489:  return addOutcomeCodeableConcept(); 
917        case -782273511:  return addOutcomeReference(); 
918        case -1001078227:  return addProgress(); 
919        case -925155509:  return getReference();
920        case -1335224239:  return getDetail();
921        default: return super.makeProperty(hash, name);
922        }
923
924      }
925
926      @Override
927      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
928        switch (hash) {
929        case -511913489: /*outcomeCodeableConcept*/ return new String[] {"CodeableConcept"};
930        case -782273511: /*outcomeReference*/ return new String[] {"Reference"};
931        case -1001078227: /*progress*/ return new String[] {"Annotation"};
932        case -925155509: /*reference*/ return new String[] {"Reference"};
933        case -1335224239: /*detail*/ return new String[] {};
934        default: return super.getTypesForProperty(hash, name);
935        }
936
937      }
938
939      @Override
940      public Base addChild(String name) throws FHIRException {
941        if (name.equals("outcomeCodeableConcept")) {
942          return addOutcomeCodeableConcept();
943        }
944        else if (name.equals("outcomeReference")) {
945          return addOutcomeReference();
946        }
947        else if (name.equals("progress")) {
948          return addProgress();
949        }
950        else if (name.equals("reference")) {
951          this.reference = new Reference();
952          return this.reference;
953        }
954        else if (name.equals("detail")) {
955          this.detail = new CarePlanActivityDetailComponent();
956          return this.detail;
957        }
958        else
959          return super.addChild(name);
960      }
961
962      public CarePlanActivityComponent copy() {
963        CarePlanActivityComponent dst = new CarePlanActivityComponent();
964        copyValues(dst);
965        return dst;
966      }
967
968      public void copyValues(CarePlanActivityComponent dst) {
969        super.copyValues(dst);
970        if (outcomeCodeableConcept != null) {
971          dst.outcomeCodeableConcept = new ArrayList<CodeableConcept>();
972          for (CodeableConcept i : outcomeCodeableConcept)
973            dst.outcomeCodeableConcept.add(i.copy());
974        };
975        if (outcomeReference != null) {
976          dst.outcomeReference = new ArrayList<Reference>();
977          for (Reference i : outcomeReference)
978            dst.outcomeReference.add(i.copy());
979        };
980        if (progress != null) {
981          dst.progress = new ArrayList<Annotation>();
982          for (Annotation i : progress)
983            dst.progress.add(i.copy());
984        };
985        dst.reference = reference == null ? null : reference.copy();
986        dst.detail = detail == null ? null : detail.copy();
987      }
988
989      @Override
990      public boolean equalsDeep(Base other_) {
991        if (!super.equalsDeep(other_))
992          return false;
993        if (!(other_ instanceof CarePlanActivityComponent))
994          return false;
995        CarePlanActivityComponent o = (CarePlanActivityComponent) other_;
996        return compareDeep(outcomeCodeableConcept, o.outcomeCodeableConcept, true) && compareDeep(outcomeReference, o.outcomeReference, true)
997           && compareDeep(progress, o.progress, true) && compareDeep(reference, o.reference, true) && compareDeep(detail, o.detail, true)
998          ;
999      }
1000
1001      @Override
1002      public boolean equalsShallow(Base other_) {
1003        if (!super.equalsShallow(other_))
1004          return false;
1005        if (!(other_ instanceof CarePlanActivityComponent))
1006          return false;
1007        CarePlanActivityComponent o = (CarePlanActivityComponent) other_;
1008        return true;
1009      }
1010
1011      public boolean isEmpty() {
1012        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(outcomeCodeableConcept, outcomeReference
1013          , progress, reference, detail);
1014      }
1015
1016  public String fhirType() {
1017    return "CarePlan.activity";
1018
1019  }
1020
1021  }
1022
1023    @Block()
1024    public static class CarePlanActivityDetailComponent extends BackboneElement implements IBaseBackboneElement {
1025        /**
1026         * A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.
1027         */
1028        @Child(name = "kind", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1029        @Description(shortDefinition="Appointment | CommunicationRequest | DeviceRequest | MedicationRequest | NutritionOrder | Task | ServiceRequest | VisionPrescription", formalDefinition="A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest." )
1030        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-plan-activity-kind")
1031        protected Enumeration<CarePlanActivityKind> kind;
1032
1033        /**
1034         * The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.
1035         */
1036        @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1037        @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity." )
1038        protected List<CanonicalType> instantiatesCanonical;
1039
1040        /**
1041         * The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.
1042         */
1043        @Child(name = "instantiatesUri", type = {UriType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1044        @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity." )
1045        protected List<UriType> instantiatesUri;
1046
1047        /**
1048         * Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter.
1049         */
1050        @Child(name = "code", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
1051        @Description(shortDefinition="Detail type of activity", formalDefinition="Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter." )
1052        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-code")
1053        protected CodeableConcept code;
1054
1055        /**
1056         * Provides the rationale that drove the inclusion of this particular activity as part of the plan or the reason why the activity was prohibited.
1057         */
1058        @Child(name = "reasonCode", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1059        @Description(shortDefinition="Why activity should be done or why activity was prohibited", formalDefinition="Provides the rationale that drove the inclusion of this particular activity as part of the plan or the reason why the activity was prohibited." )
1060        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings")
1061        protected List<CodeableConcept> reasonCode;
1062
1063        /**
1064         * Indicates another resource, such as the health condition(s), whose existence justifies this request and drove the inclusion of this particular activity as part of the plan.
1065         */
1066        @Child(name = "reasonReference", type = {Condition.class, Observation.class, DiagnosticReport.class, DocumentReference.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1067        @Description(shortDefinition="Why activity is needed", formalDefinition="Indicates another resource, such as the health condition(s), whose existence justifies this request and drove the inclusion of this particular activity as part of the plan." )
1068        protected List<Reference> reasonReference;
1069
1070        /**
1071         * Internal reference that identifies the goals that this activity is intended to contribute towards meeting.
1072         */
1073        @Child(name = "goal", type = {Goal.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1074        @Description(shortDefinition="Goals this activity relates to", formalDefinition="Internal reference that identifies the goals that this activity is intended to contribute towards meeting." )
1075        protected List<Reference> goal;
1076
1077        /**
1078         * Identifies what progress is being made for the specific activity.
1079         */
1080        @Child(name = "status", type = {CodeType.class}, order=8, min=1, max=1, modifier=true, summary=false)
1081        @Description(shortDefinition="not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error", formalDefinition="Identifies what progress is being made for the specific activity." )
1082        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-plan-activity-status")
1083        protected Enumeration<CarePlanActivityStatus> status;
1084
1085        /**
1086         * Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.
1087         */
1088        @Child(name = "statusReason", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=false)
1089        @Description(shortDefinition="Reason for current status", formalDefinition="Provides reason why the activity isn't yet started, is on hold, was cancelled, etc." )
1090        protected CodeableConcept statusReason;
1091
1092        /**
1093         * If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.
1094         */
1095        @Child(name = "doNotPerform", type = {BooleanType.class}, order=10, min=0, max=1, modifier=true, summary=false)
1096        @Description(shortDefinition="If true, activity is prohibiting action", formalDefinition="If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan." )
1097        protected BooleanType doNotPerform;
1098
1099        /**
1100         * The period, timing or frequency upon which the described activity is to occur.
1101         */
1102        @Child(name = "scheduled", type = {Timing.class, Period.class, StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
1103        @Description(shortDefinition="When activity is to occur", formalDefinition="The period, timing or frequency upon which the described activity is to occur." )
1104        protected DataType scheduled;
1105
1106        /**
1107         * Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.
1108         */
1109        @Child(name = "location", type = {Location.class}, order=12, min=0, max=1, modifier=false, summary=false)
1110        @Description(shortDefinition="Where it should happen", formalDefinition="Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc." )
1111        protected Reference location;
1112
1113        /**
1114         * Identifies who's expected to be involved in the activity.
1115         */
1116        @Child(name = "performer", type = {Practitioner.class, PractitionerRole.class, Organization.class, RelatedPerson.class, Patient.class, CareTeam.class, HealthcareService.class, Device.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1117        @Description(shortDefinition="Who will be responsible?", formalDefinition="Identifies who's expected to be involved in the activity." )
1118        protected List<Reference> performer;
1119
1120        /**
1121         * Identifies the food, drug or other product to be consumed or supplied in the activity.
1122         */
1123        @Child(name = "product", type = {CodeableConcept.class, Medication.class, Substance.class}, order=14, min=0, max=1, modifier=false, summary=false)
1124        @Description(shortDefinition="What is to be administered/supplied", formalDefinition="Identifies the food, drug or other product to be consumed or supplied in the activity." )
1125        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-codes")
1126        protected DataType product;
1127
1128        /**
1129         * Identifies the quantity expected to be consumed in a given day.
1130         */
1131        @Child(name = "dailyAmount", type = {Quantity.class}, order=15, min=0, max=1, modifier=false, summary=false)
1132        @Description(shortDefinition="How to consume/day?", formalDefinition="Identifies the quantity expected to be consumed in a given day." )
1133        protected Quantity dailyAmount;
1134
1135        /**
1136         * Identifies the quantity expected to be supplied, administered or consumed by the subject.
1137         */
1138        @Child(name = "quantity", type = {Quantity.class}, order=16, min=0, max=1, modifier=false, summary=false)
1139        @Description(shortDefinition="How much to administer/supply/consume", formalDefinition="Identifies the quantity expected to be supplied, administered or consumed by the subject." )
1140        protected Quantity quantity;
1141
1142        /**
1143         * This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
1144         */
1145        @Child(name = "description", type = {StringType.class}, order=17, min=0, max=1, modifier=false, summary=false)
1146        @Description(shortDefinition="Extra info describing activity to perform", formalDefinition="This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc." )
1147        protected StringType description;
1148
1149        private static final long serialVersionUID = 1401139240L;
1150
1151    /**
1152     * Constructor
1153     */
1154      public CarePlanActivityDetailComponent() {
1155        super();
1156      }
1157
1158    /**
1159     * Constructor
1160     */
1161      public CarePlanActivityDetailComponent(CarePlanActivityStatus status) {
1162        super();
1163        this.setStatus(status);
1164      }
1165
1166        /**
1167         * @return {@link #kind} (A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
1168         */
1169        public Enumeration<CarePlanActivityKind> getKindElement() { 
1170          if (this.kind == null)
1171            if (Configuration.errorOnAutoCreate())
1172              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.kind");
1173            else if (Configuration.doAutoCreate())
1174              this.kind = new Enumeration<CarePlanActivityKind>(new CarePlanActivityKindEnumFactory()); // bb
1175          return this.kind;
1176        }
1177
1178        public boolean hasKindElement() { 
1179          return this.kind != null && !this.kind.isEmpty();
1180        }
1181
1182        public boolean hasKind() { 
1183          return this.kind != null && !this.kind.isEmpty();
1184        }
1185
1186        /**
1187         * @param value {@link #kind} (A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
1188         */
1189        public CarePlanActivityDetailComponent setKindElement(Enumeration<CarePlanActivityKind> value) { 
1190          this.kind = value;
1191          return this;
1192        }
1193
1194        /**
1195         * @return A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.
1196         */
1197        public CarePlanActivityKind getKind() { 
1198          return this.kind == null ? null : this.kind.getValue();
1199        }
1200
1201        /**
1202         * @param value A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.
1203         */
1204        public CarePlanActivityDetailComponent setKind(CarePlanActivityKind value) { 
1205          if (value == null)
1206            this.kind = null;
1207          else {
1208            if (this.kind == null)
1209              this.kind = new Enumeration<CarePlanActivityKind>(new CarePlanActivityKindEnumFactory());
1210            this.kind.setValue(value);
1211          }
1212          return this;
1213        }
1214
1215        /**
1216         * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1217         */
1218        public List<CanonicalType> getInstantiatesCanonical() { 
1219          if (this.instantiatesCanonical == null)
1220            this.instantiatesCanonical = new ArrayList<CanonicalType>();
1221          return this.instantiatesCanonical;
1222        }
1223
1224        /**
1225         * @return Returns a reference to <code>this</code> for easy method chaining
1226         */
1227        public CarePlanActivityDetailComponent setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
1228          this.instantiatesCanonical = theInstantiatesCanonical;
1229          return this;
1230        }
1231
1232        public boolean hasInstantiatesCanonical() { 
1233          if (this.instantiatesCanonical == null)
1234            return false;
1235          for (CanonicalType item : this.instantiatesCanonical)
1236            if (!item.isEmpty())
1237              return true;
1238          return false;
1239        }
1240
1241        /**
1242         * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1243         */
1244        public CanonicalType addInstantiatesCanonicalElement() {//2 
1245          CanonicalType t = new CanonicalType();
1246          if (this.instantiatesCanonical == null)
1247            this.instantiatesCanonical = new ArrayList<CanonicalType>();
1248          this.instantiatesCanonical.add(t);
1249          return t;
1250        }
1251
1252        /**
1253         * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1254         */
1255        public CarePlanActivityDetailComponent addInstantiatesCanonical(String value) { //1
1256          CanonicalType t = new CanonicalType();
1257          t.setValue(value);
1258          if (this.instantiatesCanonical == null)
1259            this.instantiatesCanonical = new ArrayList<CanonicalType>();
1260          this.instantiatesCanonical.add(t);
1261          return this;
1262        }
1263
1264        /**
1265         * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1266         */
1267        public boolean hasInstantiatesCanonical(String value) { 
1268          if (this.instantiatesCanonical == null)
1269            return false;
1270          for (CanonicalType v : this.instantiatesCanonical)
1271            if (v.getValue().equals(value)) // canonical
1272              return true;
1273          return false;
1274        }
1275
1276        /**
1277         * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1278         */
1279        public List<UriType> getInstantiatesUri() { 
1280          if (this.instantiatesUri == null)
1281            this.instantiatesUri = new ArrayList<UriType>();
1282          return this.instantiatesUri;
1283        }
1284
1285        /**
1286         * @return Returns a reference to <code>this</code> for easy method chaining
1287         */
1288        public CarePlanActivityDetailComponent setInstantiatesUri(List<UriType> theInstantiatesUri) { 
1289          this.instantiatesUri = theInstantiatesUri;
1290          return this;
1291        }
1292
1293        public boolean hasInstantiatesUri() { 
1294          if (this.instantiatesUri == null)
1295            return false;
1296          for (UriType item : this.instantiatesUri)
1297            if (!item.isEmpty())
1298              return true;
1299          return false;
1300        }
1301
1302        /**
1303         * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1304         */
1305        public UriType addInstantiatesUriElement() {//2 
1306          UriType t = new UriType();
1307          if (this.instantiatesUri == null)
1308            this.instantiatesUri = new ArrayList<UriType>();
1309          this.instantiatesUri.add(t);
1310          return t;
1311        }
1312
1313        /**
1314         * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1315         */
1316        public CarePlanActivityDetailComponent addInstantiatesUri(String value) { //1
1317          UriType t = new UriType();
1318          t.setValue(value);
1319          if (this.instantiatesUri == null)
1320            this.instantiatesUri = new ArrayList<UriType>();
1321          this.instantiatesUri.add(t);
1322          return this;
1323        }
1324
1325        /**
1326         * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.)
1327         */
1328        public boolean hasInstantiatesUri(String value) { 
1329          if (this.instantiatesUri == null)
1330            return false;
1331          for (UriType v : this.instantiatesUri)
1332            if (v.getValue().equals(value)) // uri
1333              return true;
1334          return false;
1335        }
1336
1337        /**
1338         * @return {@link #code} (Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter.)
1339         */
1340        public CodeableConcept getCode() { 
1341          if (this.code == null)
1342            if (Configuration.errorOnAutoCreate())
1343              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.code");
1344            else if (Configuration.doAutoCreate())
1345              this.code = new CodeableConcept(); // cc
1346          return this.code;
1347        }
1348
1349        public boolean hasCode() { 
1350          return this.code != null && !this.code.isEmpty();
1351        }
1352
1353        /**
1354         * @param value {@link #code} (Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter.)
1355         */
1356        public CarePlanActivityDetailComponent setCode(CodeableConcept value) { 
1357          this.code = value;
1358          return this;
1359        }
1360
1361        /**
1362         * @return {@link #reasonCode} (Provides the rationale that drove the inclusion of this particular activity as part of the plan or the reason why the activity was prohibited.)
1363         */
1364        public List<CodeableConcept> getReasonCode() { 
1365          if (this.reasonCode == null)
1366            this.reasonCode = new ArrayList<CodeableConcept>();
1367          return this.reasonCode;
1368        }
1369
1370        /**
1371         * @return Returns a reference to <code>this</code> for easy method chaining
1372         */
1373        public CarePlanActivityDetailComponent setReasonCode(List<CodeableConcept> theReasonCode) { 
1374          this.reasonCode = theReasonCode;
1375          return this;
1376        }
1377
1378        public boolean hasReasonCode() { 
1379          if (this.reasonCode == null)
1380            return false;
1381          for (CodeableConcept item : this.reasonCode)
1382            if (!item.isEmpty())
1383              return true;
1384          return false;
1385        }
1386
1387        public CodeableConcept addReasonCode() { //3
1388          CodeableConcept t = new CodeableConcept();
1389          if (this.reasonCode == null)
1390            this.reasonCode = new ArrayList<CodeableConcept>();
1391          this.reasonCode.add(t);
1392          return t;
1393        }
1394
1395        public CarePlanActivityDetailComponent addReasonCode(CodeableConcept t) { //3
1396          if (t == null)
1397            return this;
1398          if (this.reasonCode == null)
1399            this.reasonCode = new ArrayList<CodeableConcept>();
1400          this.reasonCode.add(t);
1401          return this;
1402        }
1403
1404        /**
1405         * @return The first repetition of repeating field {@link #reasonCode}, creating it if it does not already exist {3}
1406         */
1407        public CodeableConcept getReasonCodeFirstRep() { 
1408          if (getReasonCode().isEmpty()) {
1409            addReasonCode();
1410          }
1411          return getReasonCode().get(0);
1412        }
1413
1414        /**
1415         * @return {@link #reasonReference} (Indicates another resource, such as the health condition(s), whose existence justifies this request and drove the inclusion of this particular activity as part of the plan.)
1416         */
1417        public List<Reference> getReasonReference() { 
1418          if (this.reasonReference == null)
1419            this.reasonReference = new ArrayList<Reference>();
1420          return this.reasonReference;
1421        }
1422
1423        /**
1424         * @return Returns a reference to <code>this</code> for easy method chaining
1425         */
1426        public CarePlanActivityDetailComponent setReasonReference(List<Reference> theReasonReference) { 
1427          this.reasonReference = theReasonReference;
1428          return this;
1429        }
1430
1431        public boolean hasReasonReference() { 
1432          if (this.reasonReference == null)
1433            return false;
1434          for (Reference item : this.reasonReference)
1435            if (!item.isEmpty())
1436              return true;
1437          return false;
1438        }
1439
1440        public Reference addReasonReference() { //3
1441          Reference t = new Reference();
1442          if (this.reasonReference == null)
1443            this.reasonReference = new ArrayList<Reference>();
1444          this.reasonReference.add(t);
1445          return t;
1446        }
1447
1448        public CarePlanActivityDetailComponent addReasonReference(Reference t) { //3
1449          if (t == null)
1450            return this;
1451          if (this.reasonReference == null)
1452            this.reasonReference = new ArrayList<Reference>();
1453          this.reasonReference.add(t);
1454          return this;
1455        }
1456
1457        /**
1458         * @return The first repetition of repeating field {@link #reasonReference}, creating it if it does not already exist {3}
1459         */
1460        public Reference getReasonReferenceFirstRep() { 
1461          if (getReasonReference().isEmpty()) {
1462            addReasonReference();
1463          }
1464          return getReasonReference().get(0);
1465        }
1466
1467        /**
1468         * @return {@link #goal} (Internal reference that identifies the goals that this activity is intended to contribute towards meeting.)
1469         */
1470        public List<Reference> getGoal() { 
1471          if (this.goal == null)
1472            this.goal = new ArrayList<Reference>();
1473          return this.goal;
1474        }
1475
1476        /**
1477         * @return Returns a reference to <code>this</code> for easy method chaining
1478         */
1479        public CarePlanActivityDetailComponent setGoal(List<Reference> theGoal) { 
1480          this.goal = theGoal;
1481          return this;
1482        }
1483
1484        public boolean hasGoal() { 
1485          if (this.goal == null)
1486            return false;
1487          for (Reference item : this.goal)
1488            if (!item.isEmpty())
1489              return true;
1490          return false;
1491        }
1492
1493        public Reference addGoal() { //3
1494          Reference t = new Reference();
1495          if (this.goal == null)
1496            this.goal = new ArrayList<Reference>();
1497          this.goal.add(t);
1498          return t;
1499        }
1500
1501        public CarePlanActivityDetailComponent addGoal(Reference t) { //3
1502          if (t == null)
1503            return this;
1504          if (this.goal == null)
1505            this.goal = new ArrayList<Reference>();
1506          this.goal.add(t);
1507          return this;
1508        }
1509
1510        /**
1511         * @return The first repetition of repeating field {@link #goal}, creating it if it does not already exist {3}
1512         */
1513        public Reference getGoalFirstRep() { 
1514          if (getGoal().isEmpty()) {
1515            addGoal();
1516          }
1517          return getGoal().get(0);
1518        }
1519
1520        /**
1521         * @return {@link #status} (Identifies what progress is being made for the specific activity.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1522         */
1523        public Enumeration<CarePlanActivityStatus> getStatusElement() { 
1524          if (this.status == null)
1525            if (Configuration.errorOnAutoCreate())
1526              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.status");
1527            else if (Configuration.doAutoCreate())
1528              this.status = new Enumeration<CarePlanActivityStatus>(new CarePlanActivityStatusEnumFactory()); // bb
1529          return this.status;
1530        }
1531
1532        public boolean hasStatusElement() { 
1533          return this.status != null && !this.status.isEmpty();
1534        }
1535
1536        public boolean hasStatus() { 
1537          return this.status != null && !this.status.isEmpty();
1538        }
1539
1540        /**
1541         * @param value {@link #status} (Identifies what progress is being made for the specific activity.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1542         */
1543        public CarePlanActivityDetailComponent setStatusElement(Enumeration<CarePlanActivityStatus> value) { 
1544          this.status = value;
1545          return this;
1546        }
1547
1548        /**
1549         * @return Identifies what progress is being made for the specific activity.
1550         */
1551        public CarePlanActivityStatus getStatus() { 
1552          return this.status == null ? null : this.status.getValue();
1553        }
1554
1555        /**
1556         * @param value Identifies what progress is being made for the specific activity.
1557         */
1558        public CarePlanActivityDetailComponent setStatus(CarePlanActivityStatus value) { 
1559            if (this.status == null)
1560              this.status = new Enumeration<CarePlanActivityStatus>(new CarePlanActivityStatusEnumFactory());
1561            this.status.setValue(value);
1562          return this;
1563        }
1564
1565        /**
1566         * @return {@link #statusReason} (Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.)
1567         */
1568        public CodeableConcept getStatusReason() { 
1569          if (this.statusReason == null)
1570            if (Configuration.errorOnAutoCreate())
1571              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.statusReason");
1572            else if (Configuration.doAutoCreate())
1573              this.statusReason = new CodeableConcept(); // cc
1574          return this.statusReason;
1575        }
1576
1577        public boolean hasStatusReason() { 
1578          return this.statusReason != null && !this.statusReason.isEmpty();
1579        }
1580
1581        /**
1582         * @param value {@link #statusReason} (Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.)
1583         */
1584        public CarePlanActivityDetailComponent setStatusReason(CodeableConcept value) { 
1585          this.statusReason = value;
1586          return this;
1587        }
1588
1589        /**
1590         * @return {@link #doNotPerform} (If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
1591         */
1592        public BooleanType getDoNotPerformElement() { 
1593          if (this.doNotPerform == null)
1594            if (Configuration.errorOnAutoCreate())
1595              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.doNotPerform");
1596            else if (Configuration.doAutoCreate())
1597              this.doNotPerform = new BooleanType(); // bb
1598          return this.doNotPerform;
1599        }
1600
1601        public boolean hasDoNotPerformElement() { 
1602          return this.doNotPerform != null && !this.doNotPerform.isEmpty();
1603        }
1604
1605        public boolean hasDoNotPerform() { 
1606          return this.doNotPerform != null && !this.doNotPerform.isEmpty();
1607        }
1608
1609        /**
1610         * @param value {@link #doNotPerform} (If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
1611         */
1612        public CarePlanActivityDetailComponent setDoNotPerformElement(BooleanType value) { 
1613          this.doNotPerform = value;
1614          return this;
1615        }
1616
1617        /**
1618         * @return If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.
1619         */
1620        public boolean getDoNotPerform() { 
1621          return this.doNotPerform == null || this.doNotPerform.isEmpty() ? false : this.doNotPerform.getValue();
1622        }
1623
1624        /**
1625         * @param value If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.
1626         */
1627        public CarePlanActivityDetailComponent setDoNotPerform(boolean value) { 
1628            if (this.doNotPerform == null)
1629              this.doNotPerform = new BooleanType();
1630            this.doNotPerform.setValue(value);
1631          return this;
1632        }
1633
1634        /**
1635         * @return {@link #scheduled} (The period, timing or frequency upon which the described activity is to occur.)
1636         */
1637        public DataType getScheduled() { 
1638          return this.scheduled;
1639        }
1640
1641        /**
1642         * @return {@link #scheduled} (The period, timing or frequency upon which the described activity is to occur.)
1643         */
1644        public Timing getScheduledTiming() throws FHIRException { 
1645          if (this.scheduled == null)
1646            this.scheduled = new Timing();
1647          if (!(this.scheduled instanceof Timing))
1648            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.scheduled.getClass().getName()+" was encountered");
1649          return (Timing) this.scheduled;
1650        }
1651
1652        public boolean hasScheduledTiming() { 
1653          return this != null && this.scheduled instanceof Timing;
1654        }
1655
1656        /**
1657         * @return {@link #scheduled} (The period, timing or frequency upon which the described activity is to occur.)
1658         */
1659        public Period getScheduledPeriod() throws FHIRException { 
1660          if (this.scheduled == null)
1661            this.scheduled = new Period();
1662          if (!(this.scheduled instanceof Period))
1663            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.scheduled.getClass().getName()+" was encountered");
1664          return (Period) this.scheduled;
1665        }
1666
1667        public boolean hasScheduledPeriod() { 
1668          return this != null && this.scheduled instanceof Period;
1669        }
1670
1671        /**
1672         * @return {@link #scheduled} (The period, timing or frequency upon which the described activity is to occur.)
1673         */
1674        public StringType getScheduledStringType() throws FHIRException { 
1675          if (this.scheduled == null)
1676            this.scheduled = new StringType();
1677          if (!(this.scheduled instanceof StringType))
1678            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.scheduled.getClass().getName()+" was encountered");
1679          return (StringType) this.scheduled;
1680        }
1681
1682        public boolean hasScheduledStringType() { 
1683          return this != null && this.scheduled instanceof StringType;
1684        }
1685
1686        public boolean hasScheduled() { 
1687          return this.scheduled != null && !this.scheduled.isEmpty();
1688        }
1689
1690        /**
1691         * @param value {@link #scheduled} (The period, timing or frequency upon which the described activity is to occur.)
1692         */
1693        public CarePlanActivityDetailComponent setScheduled(DataType value) { 
1694          if (value != null && !(value instanceof Timing || value instanceof Period || value instanceof StringType))
1695            throw new Error("Not the right type for CarePlan.activity.detail.scheduled[x]: "+value.fhirType());
1696          this.scheduled = value;
1697          return this;
1698        }
1699
1700        /**
1701         * @return {@link #location} (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
1702         */
1703        public Reference getLocation() { 
1704          if (this.location == null)
1705            if (Configuration.errorOnAutoCreate())
1706              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.location");
1707            else if (Configuration.doAutoCreate())
1708              this.location = new Reference(); // cc
1709          return this.location;
1710        }
1711
1712        public boolean hasLocation() { 
1713          return this.location != null && !this.location.isEmpty();
1714        }
1715
1716        /**
1717         * @param value {@link #location} (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
1718         */
1719        public CarePlanActivityDetailComponent setLocation(Reference value) { 
1720          this.location = value;
1721          return this;
1722        }
1723
1724        /**
1725         * @return {@link #performer} (Identifies who's expected to be involved in the activity.)
1726         */
1727        public List<Reference> getPerformer() { 
1728          if (this.performer == null)
1729            this.performer = new ArrayList<Reference>();
1730          return this.performer;
1731        }
1732
1733        /**
1734         * @return Returns a reference to <code>this</code> for easy method chaining
1735         */
1736        public CarePlanActivityDetailComponent setPerformer(List<Reference> thePerformer) { 
1737          this.performer = thePerformer;
1738          return this;
1739        }
1740
1741        public boolean hasPerformer() { 
1742          if (this.performer == null)
1743            return false;
1744          for (Reference item : this.performer)
1745            if (!item.isEmpty())
1746              return true;
1747          return false;
1748        }
1749
1750        public Reference addPerformer() { //3
1751          Reference t = new Reference();
1752          if (this.performer == null)
1753            this.performer = new ArrayList<Reference>();
1754          this.performer.add(t);
1755          return t;
1756        }
1757
1758        public CarePlanActivityDetailComponent addPerformer(Reference t) { //3
1759          if (t == null)
1760            return this;
1761          if (this.performer == null)
1762            this.performer = new ArrayList<Reference>();
1763          this.performer.add(t);
1764          return this;
1765        }
1766
1767        /**
1768         * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
1769         */
1770        public Reference getPerformerFirstRep() { 
1771          if (getPerformer().isEmpty()) {
1772            addPerformer();
1773          }
1774          return getPerformer().get(0);
1775        }
1776
1777        /**
1778         * @return {@link #product} (Identifies the food, drug or other product to be consumed or supplied in the activity.)
1779         */
1780        public DataType getProduct() { 
1781          return this.product;
1782        }
1783
1784        /**
1785         * @return {@link #product} (Identifies the food, drug or other product to be consumed or supplied in the activity.)
1786         */
1787        public CodeableConcept getProductCodeableConcept() throws FHIRException { 
1788          if (this.product == null)
1789            this.product = new CodeableConcept();
1790          if (!(this.product instanceof CodeableConcept))
1791            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.product.getClass().getName()+" was encountered");
1792          return (CodeableConcept) this.product;
1793        }
1794
1795        public boolean hasProductCodeableConcept() { 
1796          return this != null && this.product instanceof CodeableConcept;
1797        }
1798
1799        /**
1800         * @return {@link #product} (Identifies the food, drug or other product to be consumed or supplied in the activity.)
1801         */
1802        public Reference getProductReference() throws FHIRException { 
1803          if (this.product == null)
1804            this.product = new Reference();
1805          if (!(this.product instanceof Reference))
1806            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.product.getClass().getName()+" was encountered");
1807          return (Reference) this.product;
1808        }
1809
1810        public boolean hasProductReference() { 
1811          return this != null && this.product instanceof Reference;
1812        }
1813
1814        public boolean hasProduct() { 
1815          return this.product != null && !this.product.isEmpty();
1816        }
1817
1818        /**
1819         * @param value {@link #product} (Identifies the food, drug or other product to be consumed or supplied in the activity.)
1820         */
1821        public CarePlanActivityDetailComponent setProduct(DataType value) { 
1822          if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
1823            throw new Error("Not the right type for CarePlan.activity.detail.product[x]: "+value.fhirType());
1824          this.product = value;
1825          return this;
1826        }
1827
1828        /**
1829         * @return {@link #dailyAmount} (Identifies the quantity expected to be consumed in a given day.)
1830         */
1831        public Quantity getDailyAmount() { 
1832          if (this.dailyAmount == null)
1833            if (Configuration.errorOnAutoCreate())
1834              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.dailyAmount");
1835            else if (Configuration.doAutoCreate())
1836              this.dailyAmount = new Quantity(); // cc
1837          return this.dailyAmount;
1838        }
1839
1840        public boolean hasDailyAmount() { 
1841          return this.dailyAmount != null && !this.dailyAmount.isEmpty();
1842        }
1843
1844        /**
1845         * @param value {@link #dailyAmount} (Identifies the quantity expected to be consumed in a given day.)
1846         */
1847        public CarePlanActivityDetailComponent setDailyAmount(Quantity value) { 
1848          this.dailyAmount = value;
1849          return this;
1850        }
1851
1852        /**
1853         * @return {@link #quantity} (Identifies the quantity expected to be supplied, administered or consumed by the subject.)
1854         */
1855        public Quantity getQuantity() { 
1856          if (this.quantity == null)
1857            if (Configuration.errorOnAutoCreate())
1858              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.quantity");
1859            else if (Configuration.doAutoCreate())
1860              this.quantity = new Quantity(); // cc
1861          return this.quantity;
1862        }
1863
1864        public boolean hasQuantity() { 
1865          return this.quantity != null && !this.quantity.isEmpty();
1866        }
1867
1868        /**
1869         * @param value {@link #quantity} (Identifies the quantity expected to be supplied, administered or consumed by the subject.)
1870         */
1871        public CarePlanActivityDetailComponent setQuantity(Quantity value) { 
1872          this.quantity = value;
1873          return this;
1874        }
1875
1876        /**
1877         * @return {@link #description} (This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1878         */
1879        public StringType getDescriptionElement() { 
1880          if (this.description == null)
1881            if (Configuration.errorOnAutoCreate())
1882              throw new Error("Attempt to auto-create CarePlanActivityDetailComponent.description");
1883            else if (Configuration.doAutoCreate())
1884              this.description = new StringType(); // bb
1885          return this.description;
1886        }
1887
1888        public boolean hasDescriptionElement() { 
1889          return this.description != null && !this.description.isEmpty();
1890        }
1891
1892        public boolean hasDescription() { 
1893          return this.description != null && !this.description.isEmpty();
1894        }
1895
1896        /**
1897         * @param value {@link #description} (This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1898         */
1899        public CarePlanActivityDetailComponent setDescriptionElement(StringType value) { 
1900          this.description = value;
1901          return this;
1902        }
1903
1904        /**
1905         * @return This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
1906         */
1907        public String getDescription() { 
1908          return this.description == null ? null : this.description.getValue();
1909        }
1910
1911        /**
1912         * @param value This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
1913         */
1914        public CarePlanActivityDetailComponent setDescription(String value) { 
1915          if (Utilities.noString(value))
1916            this.description = null;
1917          else {
1918            if (this.description == null)
1919              this.description = new StringType();
1920            this.description.setValue(value);
1921          }
1922          return this;
1923        }
1924
1925        protected void listChildren(List<Property> children) {
1926          super.listChildren(children);
1927          children.add(new Property("kind", "code", "A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.", 0, 1, kind));
1928          children.add(new Property("instantiatesCanonical", "canonical(PlanDefinition|ActivityDefinition|Questionnaire|Measure|OperationDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
1929          children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
1930          children.add(new Property("code", "CodeableConcept", "Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter.", 0, 1, code));
1931          children.add(new Property("reasonCode", "CodeableConcept", "Provides the rationale that drove the inclusion of this particular activity as part of the plan or the reason why the activity was prohibited.", 0, java.lang.Integer.MAX_VALUE, reasonCode));
1932          children.add(new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Indicates another resource, such as the health condition(s), whose existence justifies this request and drove the inclusion of this particular activity as part of the plan.", 0, java.lang.Integer.MAX_VALUE, reasonReference));
1933          children.add(new Property("goal", "Reference(Goal)", "Internal reference that identifies the goals that this activity is intended to contribute towards meeting.", 0, java.lang.Integer.MAX_VALUE, goal));
1934          children.add(new Property("status", "code", "Identifies what progress is being made for the specific activity.", 0, 1, status));
1935          children.add(new Property("statusReason", "CodeableConcept", "Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.", 0, 1, statusReason));
1936          children.add(new Property("doNotPerform", "boolean", "If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.", 0, 1, doNotPerform));
1937          children.add(new Property("scheduled[x]", "Timing|Period|string", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, scheduled));
1938          children.add(new Property("location", "Reference(Location)", "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.", 0, 1, location));
1939          children.add(new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|RelatedPerson|Patient|CareTeam|HealthcareService|Device)", "Identifies who's expected to be involved in the activity.", 0, java.lang.Integer.MAX_VALUE, performer));
1940          children.add(new Property("product[x]", "CodeableConcept|Reference(Medication|Substance)", "Identifies the food, drug or other product to be consumed or supplied in the activity.", 0, 1, product));
1941          children.add(new Property("dailyAmount", "Quantity", "Identifies the quantity expected to be consumed in a given day.", 0, 1, dailyAmount));
1942          children.add(new Property("quantity", "Quantity", "Identifies the quantity expected to be supplied, administered or consumed by the subject.", 0, 1, quantity));
1943          children.add(new Property("description", "string", "This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.", 0, 1, description));
1944        }
1945
1946        @Override
1947        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1948          switch (_hash) {
1949          case 3292052: /*kind*/  return new Property("kind", "code", "A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest.", 0, 1, kind);
1950          case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(PlanDefinition|ActivityDefinition|Questionnaire|Measure|OperationDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
1951          case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
1952          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter.", 0, 1, code);
1953          case 722137681: /*reasonCode*/  return new Property("reasonCode", "CodeableConcept", "Provides the rationale that drove the inclusion of this particular activity as part of the plan or the reason why the activity was prohibited.", 0, java.lang.Integer.MAX_VALUE, reasonCode);
1954          case -1146218137: /*reasonReference*/  return new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Indicates another resource, such as the health condition(s), whose existence justifies this request and drove the inclusion of this particular activity as part of the plan.", 0, java.lang.Integer.MAX_VALUE, reasonReference);
1955          case 3178259: /*goal*/  return new Property("goal", "Reference(Goal)", "Internal reference that identifies the goals that this activity is intended to contribute towards meeting.", 0, java.lang.Integer.MAX_VALUE, goal);
1956          case -892481550: /*status*/  return new Property("status", "code", "Identifies what progress is being made for the specific activity.", 0, 1, status);
1957          case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableConcept", "Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.", 0, 1, statusReason);
1958          case -1788508167: /*doNotPerform*/  return new Property("doNotPerform", "boolean", "If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan.", 0, 1, doNotPerform);
1959          case 1162627251: /*scheduled[x]*/  return new Property("scheduled[x]", "Timing|Period|string", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, scheduled);
1960          case -160710483: /*scheduled*/  return new Property("scheduled[x]", "Timing|Period|string", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, scheduled);
1961          case 998483799: /*scheduledTiming*/  return new Property("scheduled[x]", "Timing", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, scheduled);
1962          case 880422094: /*scheduledPeriod*/  return new Property("scheduled[x]", "Period", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, scheduled);
1963          case 980162334: /*scheduledString*/  return new Property("scheduled[x]", "string", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, scheduled);
1964          case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.", 0, 1, location);
1965          case 481140686: /*performer*/  return new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|RelatedPerson|Patient|CareTeam|HealthcareService|Device)", "Identifies who's expected to be involved in the activity.", 0, java.lang.Integer.MAX_VALUE, performer);
1966          case 1753005361: /*product[x]*/  return new Property("product[x]", "CodeableConcept|Reference(Medication|Substance)", "Identifies the food, drug or other product to be consumed or supplied in the activity.", 0, 1, product);
1967          case -309474065: /*product*/  return new Property("product[x]", "CodeableConcept|Reference(Medication|Substance)", "Identifies the food, drug or other product to be consumed or supplied in the activity.", 0, 1, product);
1968          case 906854066: /*productCodeableConcept*/  return new Property("product[x]", "CodeableConcept", "Identifies the food, drug or other product to be consumed or supplied in the activity.", 0, 1, product);
1969          case -669667556: /*productReference*/  return new Property("product[x]", "Reference(Medication|Substance)", "Identifies the food, drug or other product to be consumed or supplied in the activity.", 0, 1, product);
1970          case -768908335: /*dailyAmount*/  return new Property("dailyAmount", "Quantity", "Identifies the quantity expected to be consumed in a given day.", 0, 1, dailyAmount);
1971          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "Identifies the quantity expected to be supplied, administered or consumed by the subject.", 0, 1, quantity);
1972          case -1724546052: /*description*/  return new Property("description", "string", "This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.", 0, 1, description);
1973          default: return super.getNamedProperty(_hash, _name, _checkValid);
1974          }
1975
1976        }
1977
1978      @Override
1979      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1980        switch (hash) {
1981        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<CarePlanActivityKind>
1982        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
1983        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
1984        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1985        case 722137681: /*reasonCode*/ return this.reasonCode == null ? new Base[0] : this.reasonCode.toArray(new Base[this.reasonCode.size()]); // CodeableConcept
1986        case -1146218137: /*reasonReference*/ return this.reasonReference == null ? new Base[0] : this.reasonReference.toArray(new Base[this.reasonReference.size()]); // Reference
1987        case 3178259: /*goal*/ return this.goal == null ? new Base[0] : this.goal.toArray(new Base[this.goal.size()]); // Reference
1988        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<CarePlanActivityStatus>
1989        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // CodeableConcept
1990        case -1788508167: /*doNotPerform*/ return this.doNotPerform == null ? new Base[0] : new Base[] {this.doNotPerform}; // BooleanType
1991        case -160710483: /*scheduled*/ return this.scheduled == null ? new Base[0] : new Base[] {this.scheduled}; // DataType
1992        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
1993        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // Reference
1994        case -309474065: /*product*/ return this.product == null ? new Base[0] : new Base[] {this.product}; // DataType
1995        case -768908335: /*dailyAmount*/ return this.dailyAmount == null ? new Base[0] : new Base[] {this.dailyAmount}; // Quantity
1996        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
1997        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1998        default: return super.getProperty(hash, name, checkValid);
1999        }
2000
2001      }
2002
2003      @Override
2004      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2005        switch (hash) {
2006        case 3292052: // kind
2007          value = new CarePlanActivityKindEnumFactory().fromType(TypeConvertor.castToCode(value));
2008          this.kind = (Enumeration) value; // Enumeration<CarePlanActivityKind>
2009          return value;
2010        case 8911915: // instantiatesCanonical
2011          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2012          return value;
2013        case -1926393373: // instantiatesUri
2014          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
2015          return value;
2016        case 3059181: // code
2017          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2018          return value;
2019        case 722137681: // reasonCode
2020          this.getReasonCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2021          return value;
2022        case -1146218137: // reasonReference
2023          this.getReasonReference().add(TypeConvertor.castToReference(value)); // Reference
2024          return value;
2025        case 3178259: // goal
2026          this.getGoal().add(TypeConvertor.castToReference(value)); // Reference
2027          return value;
2028        case -892481550: // status
2029          value = new CarePlanActivityStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2030          this.status = (Enumeration) value; // Enumeration<CarePlanActivityStatus>
2031          return value;
2032        case 2051346646: // statusReason
2033          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2034          return value;
2035        case -1788508167: // doNotPerform
2036          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
2037          return value;
2038        case -160710483: // scheduled
2039          this.scheduled = TypeConvertor.castToType(value); // DataType
2040          return value;
2041        case 1901043637: // location
2042          this.location = TypeConvertor.castToReference(value); // Reference
2043          return value;
2044        case 481140686: // performer
2045          this.getPerformer().add(TypeConvertor.castToReference(value)); // Reference
2046          return value;
2047        case -309474065: // product
2048          this.product = TypeConvertor.castToType(value); // DataType
2049          return value;
2050        case -768908335: // dailyAmount
2051          this.dailyAmount = TypeConvertor.castToQuantity(value); // Quantity
2052          return value;
2053        case -1285004149: // quantity
2054          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
2055          return value;
2056        case -1724546052: // description
2057          this.description = TypeConvertor.castToString(value); // StringType
2058          return value;
2059        default: return super.setProperty(hash, name, value);
2060        }
2061
2062      }
2063
2064      @Override
2065      public Base setProperty(String name, Base value) throws FHIRException {
2066        if (name.equals("kind")) {
2067          value = new CarePlanActivityKindEnumFactory().fromType(TypeConvertor.castToCode(value));
2068          this.kind = (Enumeration) value; // Enumeration<CarePlanActivityKind>
2069        } else if (name.equals("instantiatesCanonical")) {
2070          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
2071        } else if (name.equals("instantiatesUri")) {
2072          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
2073        } else if (name.equals("code")) {
2074          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2075        } else if (name.equals("reasonCode")) {
2076          this.getReasonCode().add(TypeConvertor.castToCodeableConcept(value));
2077        } else if (name.equals("reasonReference")) {
2078          this.getReasonReference().add(TypeConvertor.castToReference(value));
2079        } else if (name.equals("goal")) {
2080          this.getGoal().add(TypeConvertor.castToReference(value));
2081        } else if (name.equals("status")) {
2082          value = new CarePlanActivityStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2083          this.status = (Enumeration) value; // Enumeration<CarePlanActivityStatus>
2084        } else if (name.equals("statusReason")) {
2085          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2086        } else if (name.equals("doNotPerform")) {
2087          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
2088        } else if (name.equals("scheduled[x]")) {
2089          this.scheduled = TypeConvertor.castToType(value); // DataType
2090        } else if (name.equals("location")) {
2091          this.location = TypeConvertor.castToReference(value); // Reference
2092        } else if (name.equals("performer")) {
2093          this.getPerformer().add(TypeConvertor.castToReference(value));
2094        } else if (name.equals("product[x]")) {
2095          this.product = TypeConvertor.castToType(value); // DataType
2096        } else if (name.equals("dailyAmount")) {
2097          this.dailyAmount = TypeConvertor.castToQuantity(value); // Quantity
2098        } else if (name.equals("quantity")) {
2099          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
2100        } else if (name.equals("description")) {
2101          this.description = TypeConvertor.castToString(value); // StringType
2102        } else
2103          return super.setProperty(name, value);
2104        return value;
2105      }
2106
2107      @Override
2108      public Base makeProperty(int hash, String name) throws FHIRException {
2109        switch (hash) {
2110        case 3292052:  return getKindElement();
2111        case 8911915:  return addInstantiatesCanonicalElement();
2112        case -1926393373:  return addInstantiatesUriElement();
2113        case 3059181:  return getCode();
2114        case 722137681:  return addReasonCode(); 
2115        case -1146218137:  return addReasonReference(); 
2116        case 3178259:  return addGoal(); 
2117        case -892481550:  return getStatusElement();
2118        case 2051346646:  return getStatusReason();
2119        case -1788508167:  return getDoNotPerformElement();
2120        case 1162627251:  return getScheduled();
2121        case -160710483:  return getScheduled();
2122        case 1901043637:  return getLocation();
2123        case 481140686:  return addPerformer(); 
2124        case 1753005361:  return getProduct();
2125        case -309474065:  return getProduct();
2126        case -768908335:  return getDailyAmount();
2127        case -1285004149:  return getQuantity();
2128        case -1724546052:  return getDescriptionElement();
2129        default: return super.makeProperty(hash, name);
2130        }
2131
2132      }
2133
2134      @Override
2135      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2136        switch (hash) {
2137        case 3292052: /*kind*/ return new String[] {"code"};
2138        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
2139        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
2140        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
2141        case 722137681: /*reasonCode*/ return new String[] {"CodeableConcept"};
2142        case -1146218137: /*reasonReference*/ return new String[] {"Reference"};
2143        case 3178259: /*goal*/ return new String[] {"Reference"};
2144        case -892481550: /*status*/ return new String[] {"code"};
2145        case 2051346646: /*statusReason*/ return new String[] {"CodeableConcept"};
2146        case -1788508167: /*doNotPerform*/ return new String[] {"boolean"};
2147        case -160710483: /*scheduled*/ return new String[] {"Timing", "Period", "string"};
2148        case 1901043637: /*location*/ return new String[] {"Reference"};
2149        case 481140686: /*performer*/ return new String[] {"Reference"};
2150        case -309474065: /*product*/ return new String[] {"CodeableConcept", "Reference"};
2151        case -768908335: /*dailyAmount*/ return new String[] {"Quantity"};
2152        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
2153        case -1724546052: /*description*/ return new String[] {"string"};
2154        default: return super.getTypesForProperty(hash, name);
2155        }
2156
2157      }
2158
2159      @Override
2160      public Base addChild(String name) throws FHIRException {
2161        if (name.equals("kind")) {
2162          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.activity.detail.kind");
2163        }
2164        else if (name.equals("instantiatesCanonical")) {
2165          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.activity.detail.instantiatesCanonical");
2166        }
2167        else if (name.equals("instantiatesUri")) {
2168          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.activity.detail.instantiatesUri");
2169        }
2170        else if (name.equals("code")) {
2171          this.code = new CodeableConcept();
2172          return this.code;
2173        }
2174        else if (name.equals("reasonCode")) {
2175          return addReasonCode();
2176        }
2177        else if (name.equals("reasonReference")) {
2178          return addReasonReference();
2179        }
2180        else if (name.equals("goal")) {
2181          return addGoal();
2182        }
2183        else if (name.equals("status")) {
2184          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.activity.detail.status");
2185        }
2186        else if (name.equals("statusReason")) {
2187          this.statusReason = new CodeableConcept();
2188          return this.statusReason;
2189        }
2190        else if (name.equals("doNotPerform")) {
2191          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.activity.detail.doNotPerform");
2192        }
2193        else if (name.equals("scheduledTiming")) {
2194          this.scheduled = new Timing();
2195          return this.scheduled;
2196        }
2197        else if (name.equals("scheduledPeriod")) {
2198          this.scheduled = new Period();
2199          return this.scheduled;
2200        }
2201        else if (name.equals("scheduledString")) {
2202          this.scheduled = new StringType();
2203          return this.scheduled;
2204        }
2205        else if (name.equals("location")) {
2206          this.location = new Reference();
2207          return this.location;
2208        }
2209        else if (name.equals("performer")) {
2210          return addPerformer();
2211        }
2212        else if (name.equals("productCodeableConcept")) {
2213          this.product = new CodeableConcept();
2214          return this.product;
2215        }
2216        else if (name.equals("productReference")) {
2217          this.product = new Reference();
2218          return this.product;
2219        }
2220        else if (name.equals("dailyAmount")) {
2221          this.dailyAmount = new Quantity();
2222          return this.dailyAmount;
2223        }
2224        else if (name.equals("quantity")) {
2225          this.quantity = new Quantity();
2226          return this.quantity;
2227        }
2228        else if (name.equals("description")) {
2229          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.activity.detail.description");
2230        }
2231        else
2232          return super.addChild(name);
2233      }
2234
2235      public CarePlanActivityDetailComponent copy() {
2236        CarePlanActivityDetailComponent dst = new CarePlanActivityDetailComponent();
2237        copyValues(dst);
2238        return dst;
2239      }
2240
2241      public void copyValues(CarePlanActivityDetailComponent dst) {
2242        super.copyValues(dst);
2243        dst.kind = kind == null ? null : kind.copy();
2244        if (instantiatesCanonical != null) {
2245          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
2246          for (CanonicalType i : instantiatesCanonical)
2247            dst.instantiatesCanonical.add(i.copy());
2248        };
2249        if (instantiatesUri != null) {
2250          dst.instantiatesUri = new ArrayList<UriType>();
2251          for (UriType i : instantiatesUri)
2252            dst.instantiatesUri.add(i.copy());
2253        };
2254        dst.code = code == null ? null : code.copy();
2255        if (reasonCode != null) {
2256          dst.reasonCode = new ArrayList<CodeableConcept>();
2257          for (CodeableConcept i : reasonCode)
2258            dst.reasonCode.add(i.copy());
2259        };
2260        if (reasonReference != null) {
2261          dst.reasonReference = new ArrayList<Reference>();
2262          for (Reference i : reasonReference)
2263            dst.reasonReference.add(i.copy());
2264        };
2265        if (goal != null) {
2266          dst.goal = new ArrayList<Reference>();
2267          for (Reference i : goal)
2268            dst.goal.add(i.copy());
2269        };
2270        dst.status = status == null ? null : status.copy();
2271        dst.statusReason = statusReason == null ? null : statusReason.copy();
2272        dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
2273        dst.scheduled = scheduled == null ? null : scheduled.copy();
2274        dst.location = location == null ? null : location.copy();
2275        if (performer != null) {
2276          dst.performer = new ArrayList<Reference>();
2277          for (Reference i : performer)
2278            dst.performer.add(i.copy());
2279        };
2280        dst.product = product == null ? null : product.copy();
2281        dst.dailyAmount = dailyAmount == null ? null : dailyAmount.copy();
2282        dst.quantity = quantity == null ? null : quantity.copy();
2283        dst.description = description == null ? null : description.copy();
2284      }
2285
2286      @Override
2287      public boolean equalsDeep(Base other_) {
2288        if (!super.equalsDeep(other_))
2289          return false;
2290        if (!(other_ instanceof CarePlanActivityDetailComponent))
2291          return false;
2292        CarePlanActivityDetailComponent o = (CarePlanActivityDetailComponent) other_;
2293        return compareDeep(kind, o.kind, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
2294           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(code, o.code, true) && compareDeep(reasonCode, o.reasonCode, true)
2295           && compareDeep(reasonReference, o.reasonReference, true) && compareDeep(goal, o.goal, true) && compareDeep(status, o.status, true)
2296           && compareDeep(statusReason, o.statusReason, true) && compareDeep(doNotPerform, o.doNotPerform, true)
2297           && compareDeep(scheduled, o.scheduled, true) && compareDeep(location, o.location, true) && compareDeep(performer, o.performer, true)
2298           && compareDeep(product, o.product, true) && compareDeep(dailyAmount, o.dailyAmount, true) && compareDeep(quantity, o.quantity, true)
2299           && compareDeep(description, o.description, true);
2300      }
2301
2302      @Override
2303      public boolean equalsShallow(Base other_) {
2304        if (!super.equalsShallow(other_))
2305          return false;
2306        if (!(other_ instanceof CarePlanActivityDetailComponent))
2307          return false;
2308        CarePlanActivityDetailComponent o = (CarePlanActivityDetailComponent) other_;
2309        return compareValues(kind, o.kind, true) && compareValues(instantiatesCanonical, o.instantiatesCanonical, true)
2310           && compareValues(instantiatesUri, o.instantiatesUri, true) && compareValues(status, o.status, true)
2311           && compareValues(doNotPerform, o.doNotPerform, true) && compareValues(description, o.description, true)
2312          ;
2313      }
2314
2315      public boolean isEmpty() {
2316        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(kind, instantiatesCanonical
2317          , instantiatesUri, code, reasonCode, reasonReference, goal, status, statusReason
2318          , doNotPerform, scheduled, location, performer, product, dailyAmount, quantity
2319          , description);
2320      }
2321
2322  public String fhirType() {
2323    return "CarePlan.activity.detail";
2324
2325  }
2326
2327  }
2328
2329    /**
2330     * Business identifiers assigned to this care plan by the performer or other systems which remain constant as the resource is updated and propagates from server to server.
2331     */
2332    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2333    @Description(shortDefinition="External Ids for this plan", formalDefinition="Business identifiers assigned to this care plan by the performer or other systems which remain constant as the resource is updated and propagates from server to server." )
2334    protected List<Identifier> identifier;
2335
2336    /**
2337     * The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.
2338     */
2339    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2340    @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan." )
2341    protected List<CanonicalType> instantiatesCanonical;
2342
2343    /**
2344     * The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.
2345     */
2346    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2347    @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan." )
2348    protected List<UriType> instantiatesUri;
2349
2350    /**
2351     * A care plan that is fulfilled in whole or in part by this care plan.
2352     */
2353    @Child(name = "basedOn", type = {CarePlan.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2354    @Description(shortDefinition="Fulfills CarePlan", formalDefinition="A care plan that is fulfilled in whole or in part by this care plan." )
2355    protected List<Reference> basedOn;
2356
2357    /**
2358     * Completed or terminated care plan whose function is taken by this new care plan.
2359     */
2360    @Child(name = "replaces", type = {CarePlan.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2361    @Description(shortDefinition="CarePlan replaced by this CarePlan", formalDefinition="Completed or terminated care plan whose function is taken by this new care plan." )
2362    protected List<Reference> replaces;
2363
2364    /**
2365     * A larger care plan of which this particular care plan is a component or step.
2366     */
2367    @Child(name = "partOf", type = {CarePlan.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2368    @Description(shortDefinition="Part of referenced CarePlan", formalDefinition="A larger care plan of which this particular care plan is a component or step." )
2369    protected List<Reference> partOf;
2370
2371    /**
2372     * Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
2373     */
2374    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
2375    @Description(shortDefinition="draft | active | on-hold | revoked | completed | entered-in-error | unknown", formalDefinition="Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record." )
2376    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
2377    protected Enumeration<RequestStatus> status;
2378
2379    /**
2380     * Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.
2381     */
2382    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
2383    @Description(shortDefinition="proposal | plan | order | option", formalDefinition="Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain." )
2384    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-plan-intent")
2385    protected Enumeration<CarePlanIntent> intent;
2386
2387    /**
2388     * Identifies what "kind" of plan this is to support differentiation between multiple co-existing plans; e.g. "Home health", "psychiatric", "asthma", "disease management", "wellness plan", etc.
2389     */
2390    @Child(name = "category", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2391    @Description(shortDefinition="Type of plan", formalDefinition="Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans; e.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", \"wellness plan\", etc." )
2392    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-plan-category")
2393    protected List<CodeableConcept> category;
2394
2395    /**
2396     * Human-friendly name for the care plan.
2397     */
2398    @Child(name = "title", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
2399    @Description(shortDefinition="Human-friendly name for the care plan", formalDefinition="Human-friendly name for the care plan." )
2400    protected StringType title;
2401
2402    /**
2403     * A description of the scope and nature of the plan.
2404     */
2405    @Child(name = "description", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=true)
2406    @Description(shortDefinition="Summary of nature of plan", formalDefinition="A description of the scope and nature of the plan." )
2407    protected StringType description;
2408
2409    /**
2410     * Identifies the patient or group whose intended care is described by the plan.
2411     */
2412    @Child(name = "subject", type = {Patient.class, Group.class}, order=11, min=1, max=1, modifier=false, summary=true)
2413    @Description(shortDefinition="Who the care plan is for", formalDefinition="Identifies the patient or group whose intended care is described by the plan." )
2414    protected Reference subject;
2415
2416    /**
2417     * The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated.
2418     */
2419    @Child(name = "encounter", type = {Encounter.class}, order=12, min=0, max=1, modifier=false, summary=true)
2420    @Description(shortDefinition="Encounter created as part of", formalDefinition="The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated." )
2421    protected Reference encounter;
2422
2423    /**
2424     * Indicates when the plan did (or is intended to) come into effect and end.
2425     */
2426    @Child(name = "period", type = {Period.class}, order=13, min=0, max=1, modifier=false, summary=true)
2427    @Description(shortDefinition="Time period plan covers", formalDefinition="Indicates when the plan did (or is intended to) come into effect and end." )
2428    protected Period period;
2429
2430    /**
2431     * Represents when this particular CarePlan record was created in the system, which is often a system-generated date.
2432     */
2433    @Child(name = "created", type = {DateTimeType.class}, order=14, min=0, max=1, modifier=false, summary=true)
2434    @Description(shortDefinition="Date record was first recorded", formalDefinition="Represents when this particular CarePlan record was created in the system, which is often a system-generated date." )
2435    protected DateTimeType created;
2436
2437    /**
2438     * When populated, the author is responsible for the care plan.  The care plan is attributed to the author.
2439     */
2440    @Child(name = "author", type = {Patient.class, Practitioner.class, PractitionerRole.class, Device.class, RelatedPerson.class, Organization.class, CareTeam.class}, order=15, min=0, max=1, modifier=false, summary=true)
2441    @Description(shortDefinition="Who is the designated responsible party", formalDefinition="When populated, the author is responsible for the care plan.  The care plan is attributed to the author." )
2442    protected Reference author;
2443
2444    /**
2445     * Identifies the individual(s) or organization who provided the contents of the care plan.
2446     */
2447    @Child(name = "contributor", type = {Patient.class, Practitioner.class, PractitionerRole.class, Device.class, RelatedPerson.class, Organization.class, CareTeam.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2448    @Description(shortDefinition="Who provided the content of the care plan", formalDefinition="Identifies the individual(s) or organization who provided the contents of the care plan." )
2449    protected List<Reference> contributor;
2450
2451    /**
2452     * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
2453     */
2454    @Child(name = "careTeam", type = {CareTeam.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2455    @Description(shortDefinition="Who's involved in plan?", formalDefinition="Identifies all people and organizations who are expected to be involved in the care envisioned by this plan." )
2456    protected List<Reference> careTeam;
2457
2458    /**
2459     * Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.
2460     */
2461    @Child(name = "addresses", type = {Condition.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2462    @Description(shortDefinition="Health issues this plan addresses", formalDefinition="Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan." )
2463    protected List<Reference> addresses;
2464
2465    /**
2466     * Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include comorbidities, recent procedures, limitations, recent assessments, etc.
2467     */
2468    @Child(name = "supportingInfo", type = {Reference.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2469    @Description(shortDefinition="Information considered as part of plan", formalDefinition="Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include comorbidities, recent procedures, limitations, recent assessments, etc." )
2470    protected List<Reference> supportingInfo;
2471
2472    /**
2473     * Describes the intended objective(s) of carrying out the care plan.
2474     */
2475    @Child(name = "goal", type = {Goal.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2476    @Description(shortDefinition="Desired outcome of plan", formalDefinition="Describes the intended objective(s) of carrying out the care plan." )
2477    protected List<Reference> goal;
2478
2479    /**
2480     * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
2481     */
2482    @Child(name = "activity", type = {}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2483    @Description(shortDefinition="Action to occur as part of plan", formalDefinition="Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc." )
2484    protected List<CarePlanActivityComponent> activity;
2485
2486    /**
2487     * General notes about the care plan not covered elsewhere.
2488     */
2489    @Child(name = "note", type = {Annotation.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2490    @Description(shortDefinition="Comments about the plan", formalDefinition="General notes about the care plan not covered elsewhere." )
2491    protected List<Annotation> note;
2492
2493    private static final long serialVersionUID = 1002483680L;
2494
2495  /**
2496   * Constructor
2497   */
2498    public CarePlan() {
2499      super();
2500    }
2501
2502  /**
2503   * Constructor
2504   */
2505    public CarePlan(RequestStatus status, CarePlanIntent intent, Reference subject) {
2506      super();
2507      this.setStatus(status);
2508      this.setIntent(intent);
2509      this.setSubject(subject);
2510    }
2511
2512    /**
2513     * @return {@link #identifier} (Business identifiers assigned to this care plan by the performer or other systems which remain constant as the resource is updated and propagates from server to server.)
2514     */
2515    public List<Identifier> getIdentifier() { 
2516      if (this.identifier == null)
2517        this.identifier = new ArrayList<Identifier>();
2518      return this.identifier;
2519    }
2520
2521    /**
2522     * @return Returns a reference to <code>this</code> for easy method chaining
2523     */
2524    public CarePlan setIdentifier(List<Identifier> theIdentifier) { 
2525      this.identifier = theIdentifier;
2526      return this;
2527    }
2528
2529    public boolean hasIdentifier() { 
2530      if (this.identifier == null)
2531        return false;
2532      for (Identifier item : this.identifier)
2533        if (!item.isEmpty())
2534          return true;
2535      return false;
2536    }
2537
2538    public Identifier addIdentifier() { //3
2539      Identifier t = new Identifier();
2540      if (this.identifier == null)
2541        this.identifier = new ArrayList<Identifier>();
2542      this.identifier.add(t);
2543      return t;
2544    }
2545
2546    public CarePlan addIdentifier(Identifier t) { //3
2547      if (t == null)
2548        return this;
2549      if (this.identifier == null)
2550        this.identifier = new ArrayList<Identifier>();
2551      this.identifier.add(t);
2552      return this;
2553    }
2554
2555    /**
2556     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2557     */
2558    public Identifier getIdentifierFirstRep() { 
2559      if (getIdentifier().isEmpty()) {
2560        addIdentifier();
2561      }
2562      return getIdentifier().get(0);
2563    }
2564
2565    /**
2566     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2567     */
2568    public List<CanonicalType> getInstantiatesCanonical() { 
2569      if (this.instantiatesCanonical == null)
2570        this.instantiatesCanonical = new ArrayList<CanonicalType>();
2571      return this.instantiatesCanonical;
2572    }
2573
2574    /**
2575     * @return Returns a reference to <code>this</code> for easy method chaining
2576     */
2577    public CarePlan setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
2578      this.instantiatesCanonical = theInstantiatesCanonical;
2579      return this;
2580    }
2581
2582    public boolean hasInstantiatesCanonical() { 
2583      if (this.instantiatesCanonical == null)
2584        return false;
2585      for (CanonicalType item : this.instantiatesCanonical)
2586        if (!item.isEmpty())
2587          return true;
2588      return false;
2589    }
2590
2591    /**
2592     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2593     */
2594    public CanonicalType addInstantiatesCanonicalElement() {//2 
2595      CanonicalType t = new CanonicalType();
2596      if (this.instantiatesCanonical == null)
2597        this.instantiatesCanonical = new ArrayList<CanonicalType>();
2598      this.instantiatesCanonical.add(t);
2599      return t;
2600    }
2601
2602    /**
2603     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2604     */
2605    public CarePlan addInstantiatesCanonical(String value) { //1
2606      CanonicalType t = new CanonicalType();
2607      t.setValue(value);
2608      if (this.instantiatesCanonical == null)
2609        this.instantiatesCanonical = new ArrayList<CanonicalType>();
2610      this.instantiatesCanonical.add(t);
2611      return this;
2612    }
2613
2614    /**
2615     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2616     */
2617    public boolean hasInstantiatesCanonical(String value) { 
2618      if (this.instantiatesCanonical == null)
2619        return false;
2620      for (CanonicalType v : this.instantiatesCanonical)
2621        if (v.getValue().equals(value)) // canonical
2622          return true;
2623      return false;
2624    }
2625
2626    /**
2627     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2628     */
2629    public List<UriType> getInstantiatesUri() { 
2630      if (this.instantiatesUri == null)
2631        this.instantiatesUri = new ArrayList<UriType>();
2632      return this.instantiatesUri;
2633    }
2634
2635    /**
2636     * @return Returns a reference to <code>this</code> for easy method chaining
2637     */
2638    public CarePlan setInstantiatesUri(List<UriType> theInstantiatesUri) { 
2639      this.instantiatesUri = theInstantiatesUri;
2640      return this;
2641    }
2642
2643    public boolean hasInstantiatesUri() { 
2644      if (this.instantiatesUri == null)
2645        return false;
2646      for (UriType item : this.instantiatesUri)
2647        if (!item.isEmpty())
2648          return true;
2649      return false;
2650    }
2651
2652    /**
2653     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2654     */
2655    public UriType addInstantiatesUriElement() {//2 
2656      UriType t = new UriType();
2657      if (this.instantiatesUri == null)
2658        this.instantiatesUri = new ArrayList<UriType>();
2659      this.instantiatesUri.add(t);
2660      return t;
2661    }
2662
2663    /**
2664     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2665     */
2666    public CarePlan addInstantiatesUri(String value) { //1
2667      UriType t = new UriType();
2668      t.setValue(value);
2669      if (this.instantiatesUri == null)
2670        this.instantiatesUri = new ArrayList<UriType>();
2671      this.instantiatesUri.add(t);
2672      return this;
2673    }
2674
2675    /**
2676     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.)
2677     */
2678    public boolean hasInstantiatesUri(String value) { 
2679      if (this.instantiatesUri == null)
2680        return false;
2681      for (UriType v : this.instantiatesUri)
2682        if (v.getValue().equals(value)) // uri
2683          return true;
2684      return false;
2685    }
2686
2687    /**
2688     * @return {@link #basedOn} (A care plan that is fulfilled in whole or in part by this care plan.)
2689     */
2690    public List<Reference> getBasedOn() { 
2691      if (this.basedOn == null)
2692        this.basedOn = new ArrayList<Reference>();
2693      return this.basedOn;
2694    }
2695
2696    /**
2697     * @return Returns a reference to <code>this</code> for easy method chaining
2698     */
2699    public CarePlan setBasedOn(List<Reference> theBasedOn) { 
2700      this.basedOn = theBasedOn;
2701      return this;
2702    }
2703
2704    public boolean hasBasedOn() { 
2705      if (this.basedOn == null)
2706        return false;
2707      for (Reference item : this.basedOn)
2708        if (!item.isEmpty())
2709          return true;
2710      return false;
2711    }
2712
2713    public Reference addBasedOn() { //3
2714      Reference t = new Reference();
2715      if (this.basedOn == null)
2716        this.basedOn = new ArrayList<Reference>();
2717      this.basedOn.add(t);
2718      return t;
2719    }
2720
2721    public CarePlan addBasedOn(Reference t) { //3
2722      if (t == null)
2723        return this;
2724      if (this.basedOn == null)
2725        this.basedOn = new ArrayList<Reference>();
2726      this.basedOn.add(t);
2727      return this;
2728    }
2729
2730    /**
2731     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
2732     */
2733    public Reference getBasedOnFirstRep() { 
2734      if (getBasedOn().isEmpty()) {
2735        addBasedOn();
2736      }
2737      return getBasedOn().get(0);
2738    }
2739
2740    /**
2741     * @return {@link #replaces} (Completed or terminated care plan whose function is taken by this new care plan.)
2742     */
2743    public List<Reference> getReplaces() { 
2744      if (this.replaces == null)
2745        this.replaces = new ArrayList<Reference>();
2746      return this.replaces;
2747    }
2748
2749    /**
2750     * @return Returns a reference to <code>this</code> for easy method chaining
2751     */
2752    public CarePlan setReplaces(List<Reference> theReplaces) { 
2753      this.replaces = theReplaces;
2754      return this;
2755    }
2756
2757    public boolean hasReplaces() { 
2758      if (this.replaces == null)
2759        return false;
2760      for (Reference item : this.replaces)
2761        if (!item.isEmpty())
2762          return true;
2763      return false;
2764    }
2765
2766    public Reference addReplaces() { //3
2767      Reference t = new Reference();
2768      if (this.replaces == null)
2769        this.replaces = new ArrayList<Reference>();
2770      this.replaces.add(t);
2771      return t;
2772    }
2773
2774    public CarePlan addReplaces(Reference t) { //3
2775      if (t == null)
2776        return this;
2777      if (this.replaces == null)
2778        this.replaces = new ArrayList<Reference>();
2779      this.replaces.add(t);
2780      return this;
2781    }
2782
2783    /**
2784     * @return The first repetition of repeating field {@link #replaces}, creating it if it does not already exist {3}
2785     */
2786    public Reference getReplacesFirstRep() { 
2787      if (getReplaces().isEmpty()) {
2788        addReplaces();
2789      }
2790      return getReplaces().get(0);
2791    }
2792
2793    /**
2794     * @return {@link #partOf} (A larger care plan of which this particular care plan is a component or step.)
2795     */
2796    public List<Reference> getPartOf() { 
2797      if (this.partOf == null)
2798        this.partOf = new ArrayList<Reference>();
2799      return this.partOf;
2800    }
2801
2802    /**
2803     * @return Returns a reference to <code>this</code> for easy method chaining
2804     */
2805    public CarePlan setPartOf(List<Reference> thePartOf) { 
2806      this.partOf = thePartOf;
2807      return this;
2808    }
2809
2810    public boolean hasPartOf() { 
2811      if (this.partOf == null)
2812        return false;
2813      for (Reference item : this.partOf)
2814        if (!item.isEmpty())
2815          return true;
2816      return false;
2817    }
2818
2819    public Reference addPartOf() { //3
2820      Reference t = new Reference();
2821      if (this.partOf == null)
2822        this.partOf = new ArrayList<Reference>();
2823      this.partOf.add(t);
2824      return t;
2825    }
2826
2827    public CarePlan addPartOf(Reference t) { //3
2828      if (t == null)
2829        return this;
2830      if (this.partOf == null)
2831        this.partOf = new ArrayList<Reference>();
2832      this.partOf.add(t);
2833      return this;
2834    }
2835
2836    /**
2837     * @return The first repetition of repeating field {@link #partOf}, creating it if it does not already exist {3}
2838     */
2839    public Reference getPartOfFirstRep() { 
2840      if (getPartOf().isEmpty()) {
2841        addPartOf();
2842      }
2843      return getPartOf().get(0);
2844    }
2845
2846    /**
2847     * @return {@link #status} (Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2848     */
2849    public Enumeration<RequestStatus> getStatusElement() { 
2850      if (this.status == null)
2851        if (Configuration.errorOnAutoCreate())
2852          throw new Error("Attempt to auto-create CarePlan.status");
2853        else if (Configuration.doAutoCreate())
2854          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
2855      return this.status;
2856    }
2857
2858    public boolean hasStatusElement() { 
2859      return this.status != null && !this.status.isEmpty();
2860    }
2861
2862    public boolean hasStatus() { 
2863      return this.status != null && !this.status.isEmpty();
2864    }
2865
2866    /**
2867     * @param value {@link #status} (Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2868     */
2869    public CarePlan setStatusElement(Enumeration<RequestStatus> value) { 
2870      this.status = value;
2871      return this;
2872    }
2873
2874    /**
2875     * @return Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
2876     */
2877    public RequestStatus getStatus() { 
2878      return this.status == null ? null : this.status.getValue();
2879    }
2880
2881    /**
2882     * @param value Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
2883     */
2884    public CarePlan setStatus(RequestStatus value) { 
2885        if (this.status == null)
2886          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
2887        this.status.setValue(value);
2888      return this;
2889    }
2890
2891    /**
2892     * @return {@link #intent} (Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
2893     */
2894    public Enumeration<CarePlanIntent> getIntentElement() { 
2895      if (this.intent == null)
2896        if (Configuration.errorOnAutoCreate())
2897          throw new Error("Attempt to auto-create CarePlan.intent");
2898        else if (Configuration.doAutoCreate())
2899          this.intent = new Enumeration<CarePlanIntent>(new CarePlanIntentEnumFactory()); // bb
2900      return this.intent;
2901    }
2902
2903    public boolean hasIntentElement() { 
2904      return this.intent != null && !this.intent.isEmpty();
2905    }
2906
2907    public boolean hasIntent() { 
2908      return this.intent != null && !this.intent.isEmpty();
2909    }
2910
2911    /**
2912     * @param value {@link #intent} (Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
2913     */
2914    public CarePlan setIntentElement(Enumeration<CarePlanIntent> value) { 
2915      this.intent = value;
2916      return this;
2917    }
2918
2919    /**
2920     * @return Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.
2921     */
2922    public CarePlanIntent getIntent() { 
2923      return this.intent == null ? null : this.intent.getValue();
2924    }
2925
2926    /**
2927     * @param value Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.
2928     */
2929    public CarePlan setIntent(CarePlanIntent value) { 
2930        if (this.intent == null)
2931          this.intent = new Enumeration<CarePlanIntent>(new CarePlanIntentEnumFactory());
2932        this.intent.setValue(value);
2933      return this;
2934    }
2935
2936    /**
2937     * @return {@link #category} (Identifies what "kind" of plan this is to support differentiation between multiple co-existing plans; e.g. "Home health", "psychiatric", "asthma", "disease management", "wellness plan", etc.)
2938     */
2939    public List<CodeableConcept> getCategory() { 
2940      if (this.category == null)
2941        this.category = new ArrayList<CodeableConcept>();
2942      return this.category;
2943    }
2944
2945    /**
2946     * @return Returns a reference to <code>this</code> for easy method chaining
2947     */
2948    public CarePlan setCategory(List<CodeableConcept> theCategory) { 
2949      this.category = theCategory;
2950      return this;
2951    }
2952
2953    public boolean hasCategory() { 
2954      if (this.category == null)
2955        return false;
2956      for (CodeableConcept item : this.category)
2957        if (!item.isEmpty())
2958          return true;
2959      return false;
2960    }
2961
2962    public CodeableConcept addCategory() { //3
2963      CodeableConcept t = new CodeableConcept();
2964      if (this.category == null)
2965        this.category = new ArrayList<CodeableConcept>();
2966      this.category.add(t);
2967      return t;
2968    }
2969
2970    public CarePlan addCategory(CodeableConcept t) { //3
2971      if (t == null)
2972        return this;
2973      if (this.category == null)
2974        this.category = new ArrayList<CodeableConcept>();
2975      this.category.add(t);
2976      return this;
2977    }
2978
2979    /**
2980     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
2981     */
2982    public CodeableConcept getCategoryFirstRep() { 
2983      if (getCategory().isEmpty()) {
2984        addCategory();
2985      }
2986      return getCategory().get(0);
2987    }
2988
2989    /**
2990     * @return {@link #title} (Human-friendly name for the care plan.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2991     */
2992    public StringType getTitleElement() { 
2993      if (this.title == null)
2994        if (Configuration.errorOnAutoCreate())
2995          throw new Error("Attempt to auto-create CarePlan.title");
2996        else if (Configuration.doAutoCreate())
2997          this.title = new StringType(); // bb
2998      return this.title;
2999    }
3000
3001    public boolean hasTitleElement() { 
3002      return this.title != null && !this.title.isEmpty();
3003    }
3004
3005    public boolean hasTitle() { 
3006      return this.title != null && !this.title.isEmpty();
3007    }
3008
3009    /**
3010     * @param value {@link #title} (Human-friendly name for the care plan.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
3011     */
3012    public CarePlan setTitleElement(StringType value) { 
3013      this.title = value;
3014      return this;
3015    }
3016
3017    /**
3018     * @return Human-friendly name for the care plan.
3019     */
3020    public String getTitle() { 
3021      return this.title == null ? null : this.title.getValue();
3022    }
3023
3024    /**
3025     * @param value Human-friendly name for the care plan.
3026     */
3027    public CarePlan setTitle(String value) { 
3028      if (Utilities.noString(value))
3029        this.title = null;
3030      else {
3031        if (this.title == null)
3032          this.title = new StringType();
3033        this.title.setValue(value);
3034      }
3035      return this;
3036    }
3037
3038    /**
3039     * @return {@link #description} (A description of the scope and nature of the plan.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3040     */
3041    public StringType getDescriptionElement() { 
3042      if (this.description == null)
3043        if (Configuration.errorOnAutoCreate())
3044          throw new Error("Attempt to auto-create CarePlan.description");
3045        else if (Configuration.doAutoCreate())
3046          this.description = new StringType(); // bb
3047      return this.description;
3048    }
3049
3050    public boolean hasDescriptionElement() { 
3051      return this.description != null && !this.description.isEmpty();
3052    }
3053
3054    public boolean hasDescription() { 
3055      return this.description != null && !this.description.isEmpty();
3056    }
3057
3058    /**
3059     * @param value {@link #description} (A description of the scope and nature of the plan.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3060     */
3061    public CarePlan setDescriptionElement(StringType value) { 
3062      this.description = value;
3063      return this;
3064    }
3065
3066    /**
3067     * @return A description of the scope and nature of the plan.
3068     */
3069    public String getDescription() { 
3070      return this.description == null ? null : this.description.getValue();
3071    }
3072
3073    /**
3074     * @param value A description of the scope and nature of the plan.
3075     */
3076    public CarePlan setDescription(String value) { 
3077      if (Utilities.noString(value))
3078        this.description = null;
3079      else {
3080        if (this.description == null)
3081          this.description = new StringType();
3082        this.description.setValue(value);
3083      }
3084      return this;
3085    }
3086
3087    /**
3088     * @return {@link #subject} (Identifies the patient or group whose intended care is described by the plan.)
3089     */
3090    public Reference getSubject() { 
3091      if (this.subject == null)
3092        if (Configuration.errorOnAutoCreate())
3093          throw new Error("Attempt to auto-create CarePlan.subject");
3094        else if (Configuration.doAutoCreate())
3095          this.subject = new Reference(); // cc
3096      return this.subject;
3097    }
3098
3099    public boolean hasSubject() { 
3100      return this.subject != null && !this.subject.isEmpty();
3101    }
3102
3103    /**
3104     * @param value {@link #subject} (Identifies the patient or group whose intended care is described by the plan.)
3105     */
3106    public CarePlan setSubject(Reference value) { 
3107      this.subject = value;
3108      return this;
3109    }
3110
3111    /**
3112     * @return {@link #encounter} (The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated.)
3113     */
3114    public Reference getEncounter() { 
3115      if (this.encounter == null)
3116        if (Configuration.errorOnAutoCreate())
3117          throw new Error("Attempt to auto-create CarePlan.encounter");
3118        else if (Configuration.doAutoCreate())
3119          this.encounter = new Reference(); // cc
3120      return this.encounter;
3121    }
3122
3123    public boolean hasEncounter() { 
3124      return this.encounter != null && !this.encounter.isEmpty();
3125    }
3126
3127    /**
3128     * @param value {@link #encounter} (The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated.)
3129     */
3130    public CarePlan setEncounter(Reference value) { 
3131      this.encounter = value;
3132      return this;
3133    }
3134
3135    /**
3136     * @return {@link #period} (Indicates when the plan did (or is intended to) come into effect and end.)
3137     */
3138    public Period getPeriod() { 
3139      if (this.period == null)
3140        if (Configuration.errorOnAutoCreate())
3141          throw new Error("Attempt to auto-create CarePlan.period");
3142        else if (Configuration.doAutoCreate())
3143          this.period = new Period(); // cc
3144      return this.period;
3145    }
3146
3147    public boolean hasPeriod() { 
3148      return this.period != null && !this.period.isEmpty();
3149    }
3150
3151    /**
3152     * @param value {@link #period} (Indicates when the plan did (or is intended to) come into effect and end.)
3153     */
3154    public CarePlan setPeriod(Period value) { 
3155      this.period = value;
3156      return this;
3157    }
3158
3159    /**
3160     * @return {@link #created} (Represents when this particular CarePlan record was created in the system, which is often a system-generated date.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
3161     */
3162    public DateTimeType getCreatedElement() { 
3163      if (this.created == null)
3164        if (Configuration.errorOnAutoCreate())
3165          throw new Error("Attempt to auto-create CarePlan.created");
3166        else if (Configuration.doAutoCreate())
3167          this.created = new DateTimeType(); // bb
3168      return this.created;
3169    }
3170
3171    public boolean hasCreatedElement() { 
3172      return this.created != null && !this.created.isEmpty();
3173    }
3174
3175    public boolean hasCreated() { 
3176      return this.created != null && !this.created.isEmpty();
3177    }
3178
3179    /**
3180     * @param value {@link #created} (Represents when this particular CarePlan record was created in the system, which is often a system-generated date.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
3181     */
3182    public CarePlan setCreatedElement(DateTimeType value) { 
3183      this.created = value;
3184      return this;
3185    }
3186
3187    /**
3188     * @return Represents when this particular CarePlan record was created in the system, which is often a system-generated date.
3189     */
3190    public Date getCreated() { 
3191      return this.created == null ? null : this.created.getValue();
3192    }
3193
3194    /**
3195     * @param value Represents when this particular CarePlan record was created in the system, which is often a system-generated date.
3196     */
3197    public CarePlan setCreated(Date value) { 
3198      if (value == null)
3199        this.created = null;
3200      else {
3201        if (this.created == null)
3202          this.created = new DateTimeType();
3203        this.created.setValue(value);
3204      }
3205      return this;
3206    }
3207
3208    /**
3209     * @return {@link #author} (When populated, the author is responsible for the care plan.  The care plan is attributed to the author.)
3210     */
3211    public Reference getAuthor() { 
3212      if (this.author == null)
3213        if (Configuration.errorOnAutoCreate())
3214          throw new Error("Attempt to auto-create CarePlan.author");
3215        else if (Configuration.doAutoCreate())
3216          this.author = new Reference(); // cc
3217      return this.author;
3218    }
3219
3220    public boolean hasAuthor() { 
3221      return this.author != null && !this.author.isEmpty();
3222    }
3223
3224    /**
3225     * @param value {@link #author} (When populated, the author is responsible for the care plan.  The care plan is attributed to the author.)
3226     */
3227    public CarePlan setAuthor(Reference value) { 
3228      this.author = value;
3229      return this;
3230    }
3231
3232    /**
3233     * @return {@link #contributor} (Identifies the individual(s) or organization who provided the contents of the care plan.)
3234     */
3235    public List<Reference> getContributor() { 
3236      if (this.contributor == null)
3237        this.contributor = new ArrayList<Reference>();
3238      return this.contributor;
3239    }
3240
3241    /**
3242     * @return Returns a reference to <code>this</code> for easy method chaining
3243     */
3244    public CarePlan setContributor(List<Reference> theContributor) { 
3245      this.contributor = theContributor;
3246      return this;
3247    }
3248
3249    public boolean hasContributor() { 
3250      if (this.contributor == null)
3251        return false;
3252      for (Reference item : this.contributor)
3253        if (!item.isEmpty())
3254          return true;
3255      return false;
3256    }
3257
3258    public Reference addContributor() { //3
3259      Reference t = new Reference();
3260      if (this.contributor == null)
3261        this.contributor = new ArrayList<Reference>();
3262      this.contributor.add(t);
3263      return t;
3264    }
3265
3266    public CarePlan addContributor(Reference t) { //3
3267      if (t == null)
3268        return this;
3269      if (this.contributor == null)
3270        this.contributor = new ArrayList<Reference>();
3271      this.contributor.add(t);
3272      return this;
3273    }
3274
3275    /**
3276     * @return The first repetition of repeating field {@link #contributor}, creating it if it does not already exist {3}
3277     */
3278    public Reference getContributorFirstRep() { 
3279      if (getContributor().isEmpty()) {
3280        addContributor();
3281      }
3282      return getContributor().get(0);
3283    }
3284
3285    /**
3286     * @return {@link #careTeam} (Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.)
3287     */
3288    public List<Reference> getCareTeam() { 
3289      if (this.careTeam == null)
3290        this.careTeam = new ArrayList<Reference>();
3291      return this.careTeam;
3292    }
3293
3294    /**
3295     * @return Returns a reference to <code>this</code> for easy method chaining
3296     */
3297    public CarePlan setCareTeam(List<Reference> theCareTeam) { 
3298      this.careTeam = theCareTeam;
3299      return this;
3300    }
3301
3302    public boolean hasCareTeam() { 
3303      if (this.careTeam == null)
3304        return false;
3305      for (Reference item : this.careTeam)
3306        if (!item.isEmpty())
3307          return true;
3308      return false;
3309    }
3310
3311    public Reference addCareTeam() { //3
3312      Reference t = new Reference();
3313      if (this.careTeam == null)
3314        this.careTeam = new ArrayList<Reference>();
3315      this.careTeam.add(t);
3316      return t;
3317    }
3318
3319    public CarePlan addCareTeam(Reference t) { //3
3320      if (t == null)
3321        return this;
3322      if (this.careTeam == null)
3323        this.careTeam = new ArrayList<Reference>();
3324      this.careTeam.add(t);
3325      return this;
3326    }
3327
3328    /**
3329     * @return The first repetition of repeating field {@link #careTeam}, creating it if it does not already exist {3}
3330     */
3331    public Reference getCareTeamFirstRep() { 
3332      if (getCareTeam().isEmpty()) {
3333        addCareTeam();
3334      }
3335      return getCareTeam().get(0);
3336    }
3337
3338    /**
3339     * @return {@link #addresses} (Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.)
3340     */
3341    public List<Reference> getAddresses() { 
3342      if (this.addresses == null)
3343        this.addresses = new ArrayList<Reference>();
3344      return this.addresses;
3345    }
3346
3347    /**
3348     * @return Returns a reference to <code>this</code> for easy method chaining
3349     */
3350    public CarePlan setAddresses(List<Reference> theAddresses) { 
3351      this.addresses = theAddresses;
3352      return this;
3353    }
3354
3355    public boolean hasAddresses() { 
3356      if (this.addresses == null)
3357        return false;
3358      for (Reference item : this.addresses)
3359        if (!item.isEmpty())
3360          return true;
3361      return false;
3362    }
3363
3364    public Reference addAddresses() { //3
3365      Reference t = new Reference();
3366      if (this.addresses == null)
3367        this.addresses = new ArrayList<Reference>();
3368      this.addresses.add(t);
3369      return t;
3370    }
3371
3372    public CarePlan addAddresses(Reference t) { //3
3373      if (t == null)
3374        return this;
3375      if (this.addresses == null)
3376        this.addresses = new ArrayList<Reference>();
3377      this.addresses.add(t);
3378      return this;
3379    }
3380
3381    /**
3382     * @return The first repetition of repeating field {@link #addresses}, creating it if it does not already exist {3}
3383     */
3384    public Reference getAddressesFirstRep() { 
3385      if (getAddresses().isEmpty()) {
3386        addAddresses();
3387      }
3388      return getAddresses().get(0);
3389    }
3390
3391    /**
3392     * @return {@link #supportingInfo} (Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include comorbidities, recent procedures, limitations, recent assessments, etc.)
3393     */
3394    public List<Reference> getSupportingInfo() { 
3395      if (this.supportingInfo == null)
3396        this.supportingInfo = new ArrayList<Reference>();
3397      return this.supportingInfo;
3398    }
3399
3400    /**
3401     * @return Returns a reference to <code>this</code> for easy method chaining
3402     */
3403    public CarePlan setSupportingInfo(List<Reference> theSupportingInfo) { 
3404      this.supportingInfo = theSupportingInfo;
3405      return this;
3406    }
3407
3408    public boolean hasSupportingInfo() { 
3409      if (this.supportingInfo == null)
3410        return false;
3411      for (Reference item : this.supportingInfo)
3412        if (!item.isEmpty())
3413          return true;
3414      return false;
3415    }
3416
3417    public Reference addSupportingInfo() { //3
3418      Reference t = new Reference();
3419      if (this.supportingInfo == null)
3420        this.supportingInfo = new ArrayList<Reference>();
3421      this.supportingInfo.add(t);
3422      return t;
3423    }
3424
3425    public CarePlan addSupportingInfo(Reference t) { //3
3426      if (t == null)
3427        return this;
3428      if (this.supportingInfo == null)
3429        this.supportingInfo = new ArrayList<Reference>();
3430      this.supportingInfo.add(t);
3431      return this;
3432    }
3433
3434    /**
3435     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
3436     */
3437    public Reference getSupportingInfoFirstRep() { 
3438      if (getSupportingInfo().isEmpty()) {
3439        addSupportingInfo();
3440      }
3441      return getSupportingInfo().get(0);
3442    }
3443
3444    /**
3445     * @return {@link #goal} (Describes the intended objective(s) of carrying out the care plan.)
3446     */
3447    public List<Reference> getGoal() { 
3448      if (this.goal == null)
3449        this.goal = new ArrayList<Reference>();
3450      return this.goal;
3451    }
3452
3453    /**
3454     * @return Returns a reference to <code>this</code> for easy method chaining
3455     */
3456    public CarePlan setGoal(List<Reference> theGoal) { 
3457      this.goal = theGoal;
3458      return this;
3459    }
3460
3461    public boolean hasGoal() { 
3462      if (this.goal == null)
3463        return false;
3464      for (Reference item : this.goal)
3465        if (!item.isEmpty())
3466          return true;
3467      return false;
3468    }
3469
3470    public Reference addGoal() { //3
3471      Reference t = new Reference();
3472      if (this.goal == null)
3473        this.goal = new ArrayList<Reference>();
3474      this.goal.add(t);
3475      return t;
3476    }
3477
3478    public CarePlan addGoal(Reference t) { //3
3479      if (t == null)
3480        return this;
3481      if (this.goal == null)
3482        this.goal = new ArrayList<Reference>();
3483      this.goal.add(t);
3484      return this;
3485    }
3486
3487    /**
3488     * @return The first repetition of repeating field {@link #goal}, creating it if it does not already exist {3}
3489     */
3490    public Reference getGoalFirstRep() { 
3491      if (getGoal().isEmpty()) {
3492        addGoal();
3493      }
3494      return getGoal().get(0);
3495    }
3496
3497    /**
3498     * @return {@link #activity} (Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.)
3499     */
3500    public List<CarePlanActivityComponent> getActivity() { 
3501      if (this.activity == null)
3502        this.activity = new ArrayList<CarePlanActivityComponent>();
3503      return this.activity;
3504    }
3505
3506    /**
3507     * @return Returns a reference to <code>this</code> for easy method chaining
3508     */
3509    public CarePlan setActivity(List<CarePlanActivityComponent> theActivity) { 
3510      this.activity = theActivity;
3511      return this;
3512    }
3513
3514    public boolean hasActivity() { 
3515      if (this.activity == null)
3516        return false;
3517      for (CarePlanActivityComponent item : this.activity)
3518        if (!item.isEmpty())
3519          return true;
3520      return false;
3521    }
3522
3523    public CarePlanActivityComponent addActivity() { //3
3524      CarePlanActivityComponent t = new CarePlanActivityComponent();
3525      if (this.activity == null)
3526        this.activity = new ArrayList<CarePlanActivityComponent>();
3527      this.activity.add(t);
3528      return t;
3529    }
3530
3531    public CarePlan addActivity(CarePlanActivityComponent t) { //3
3532      if (t == null)
3533        return this;
3534      if (this.activity == null)
3535        this.activity = new ArrayList<CarePlanActivityComponent>();
3536      this.activity.add(t);
3537      return this;
3538    }
3539
3540    /**
3541     * @return The first repetition of repeating field {@link #activity}, creating it if it does not already exist {3}
3542     */
3543    public CarePlanActivityComponent getActivityFirstRep() { 
3544      if (getActivity().isEmpty()) {
3545        addActivity();
3546      }
3547      return getActivity().get(0);
3548    }
3549
3550    /**
3551     * @return {@link #note} (General notes about the care plan not covered elsewhere.)
3552     */
3553    public List<Annotation> getNote() { 
3554      if (this.note == null)
3555        this.note = new ArrayList<Annotation>();
3556      return this.note;
3557    }
3558
3559    /**
3560     * @return Returns a reference to <code>this</code> for easy method chaining
3561     */
3562    public CarePlan setNote(List<Annotation> theNote) { 
3563      this.note = theNote;
3564      return this;
3565    }
3566
3567    public boolean hasNote() { 
3568      if (this.note == null)
3569        return false;
3570      for (Annotation item : this.note)
3571        if (!item.isEmpty())
3572          return true;
3573      return false;
3574    }
3575
3576    public Annotation addNote() { //3
3577      Annotation t = new Annotation();
3578      if (this.note == null)
3579        this.note = new ArrayList<Annotation>();
3580      this.note.add(t);
3581      return t;
3582    }
3583
3584    public CarePlan addNote(Annotation t) { //3
3585      if (t == null)
3586        return this;
3587      if (this.note == null)
3588        this.note = new ArrayList<Annotation>();
3589      this.note.add(t);
3590      return this;
3591    }
3592
3593    /**
3594     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
3595     */
3596    public Annotation getNoteFirstRep() { 
3597      if (getNote().isEmpty()) {
3598        addNote();
3599      }
3600      return getNote().get(0);
3601    }
3602
3603      protected void listChildren(List<Property> children) {
3604        super.listChildren(children);
3605        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this care plan by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
3606        children.add(new Property("instantiatesCanonical", "canonical(PlanDefinition|Questionnaire|Measure|ActivityDefinition|OperationDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
3607        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
3608        children.add(new Property("basedOn", "Reference(CarePlan)", "A care plan that is fulfilled in whole or in part by this care plan.", 0, java.lang.Integer.MAX_VALUE, basedOn));
3609        children.add(new Property("replaces", "Reference(CarePlan)", "Completed or terminated care plan whose function is taken by this new care plan.", 0, java.lang.Integer.MAX_VALUE, replaces));
3610        children.add(new Property("partOf", "Reference(CarePlan)", "A larger care plan of which this particular care plan is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf));
3611        children.add(new Property("status", "code", "Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.", 0, 1, status));
3612        children.add(new Property("intent", "code", "Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.", 0, 1, intent));
3613        children.add(new Property("category", "CodeableConcept", "Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans; e.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", \"wellness plan\", etc.", 0, java.lang.Integer.MAX_VALUE, category));
3614        children.add(new Property("title", "string", "Human-friendly name for the care plan.", 0, 1, title));
3615        children.add(new Property("description", "string", "A description of the scope and nature of the plan.", 0, 1, description));
3616        children.add(new Property("subject", "Reference(Patient|Group)", "Identifies the patient or group whose intended care is described by the plan.", 0, 1, subject));
3617        children.add(new Property("encounter", "Reference(Encounter)", "The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated.", 0, 1, encounter));
3618        children.add(new Property("period", "Period", "Indicates when the plan did (or is intended to) come into effect and end.", 0, 1, period));
3619        children.add(new Property("created", "dateTime", "Represents when this particular CarePlan record was created in the system, which is often a system-generated date.", 0, 1, created));
3620        children.add(new Property("author", "Reference(Patient|Practitioner|PractitionerRole|Device|RelatedPerson|Organization|CareTeam)", "When populated, the author is responsible for the care plan.  The care plan is attributed to the author.", 0, 1, author));
3621        children.add(new Property("contributor", "Reference(Patient|Practitioner|PractitionerRole|Device|RelatedPerson|Organization|CareTeam)", "Identifies the individual(s) or organization who provided the contents of the care plan.", 0, java.lang.Integer.MAX_VALUE, contributor));
3622        children.add(new Property("careTeam", "Reference(CareTeam)", "Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.", 0, java.lang.Integer.MAX_VALUE, careTeam));
3623        children.add(new Property("addresses", "Reference(Condition)", "Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.", 0, java.lang.Integer.MAX_VALUE, addresses));
3624        children.add(new Property("supportingInfo", "Reference(Any)", "Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include comorbidities, recent procedures, limitations, recent assessments, etc.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
3625        children.add(new Property("goal", "Reference(Goal)", "Describes the intended objective(s) of carrying out the care plan.", 0, java.lang.Integer.MAX_VALUE, goal));
3626        children.add(new Property("activity", "", "Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.", 0, java.lang.Integer.MAX_VALUE, activity));
3627        children.add(new Property("note", "Annotation", "General notes about the care plan not covered elsewhere.", 0, java.lang.Integer.MAX_VALUE, note));
3628      }
3629
3630      @Override
3631      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3632        switch (_hash) {
3633        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this care plan by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
3634        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(PlanDefinition|Questionnaire|Measure|ActivityDefinition|OperationDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
3635        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
3636        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan)", "A care plan that is fulfilled in whole or in part by this care plan.", 0, java.lang.Integer.MAX_VALUE, basedOn);
3637        case -430332865: /*replaces*/  return new Property("replaces", "Reference(CarePlan)", "Completed or terminated care plan whose function is taken by this new care plan.", 0, java.lang.Integer.MAX_VALUE, replaces);
3638        case -995410646: /*partOf*/  return new Property("partOf", "Reference(CarePlan)", "A larger care plan of which this particular care plan is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf);
3639        case -892481550: /*status*/  return new Property("status", "code", "Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.", 0, 1, status);
3640        case -1183762788: /*intent*/  return new Property("intent", "code", "Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain.", 0, 1, intent);
3641        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans; e.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", \"wellness plan\", etc.", 0, java.lang.Integer.MAX_VALUE, category);
3642        case 110371416: /*title*/  return new Property("title", "string", "Human-friendly name for the care plan.", 0, 1, title);
3643        case -1724546052: /*description*/  return new Property("description", "string", "A description of the scope and nature of the plan.", 0, 1, description);
3644        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "Identifies the patient or group whose intended care is described by the plan.", 0, 1, subject);
3645        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated.", 0, 1, encounter);
3646        case -991726143: /*period*/  return new Property("period", "Period", "Indicates when the plan did (or is intended to) come into effect and end.", 0, 1, period);
3647        case 1028554472: /*created*/  return new Property("created", "dateTime", "Represents when this particular CarePlan record was created in the system, which is often a system-generated date.", 0, 1, created);
3648        case -1406328437: /*author*/  return new Property("author", "Reference(Patient|Practitioner|PractitionerRole|Device|RelatedPerson|Organization|CareTeam)", "When populated, the author is responsible for the care plan.  The care plan is attributed to the author.", 0, 1, author);
3649        case -1895276325: /*contributor*/  return new Property("contributor", "Reference(Patient|Practitioner|PractitionerRole|Device|RelatedPerson|Organization|CareTeam)", "Identifies the individual(s) or organization who provided the contents of the care plan.", 0, java.lang.Integer.MAX_VALUE, contributor);
3650        case -7323378: /*careTeam*/  return new Property("careTeam", "Reference(CareTeam)", "Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.", 0, java.lang.Integer.MAX_VALUE, careTeam);
3651        case 874544034: /*addresses*/  return new Property("addresses", "Reference(Condition)", "Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.", 0, java.lang.Integer.MAX_VALUE, addresses);
3652        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "Reference(Any)", "Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include comorbidities, recent procedures, limitations, recent assessments, etc.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
3653        case 3178259: /*goal*/  return new Property("goal", "Reference(Goal)", "Describes the intended objective(s) of carrying out the care plan.", 0, java.lang.Integer.MAX_VALUE, goal);
3654        case -1655966961: /*activity*/  return new Property("activity", "", "Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.", 0, java.lang.Integer.MAX_VALUE, activity);
3655        case 3387378: /*note*/  return new Property("note", "Annotation", "General notes about the care plan not covered elsewhere.", 0, java.lang.Integer.MAX_VALUE, note);
3656        default: return super.getNamedProperty(_hash, _name, _checkValid);
3657        }
3658
3659      }
3660
3661      @Override
3662      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3663        switch (hash) {
3664        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3665        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
3666        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
3667        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
3668        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // Reference
3669        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : this.partOf.toArray(new Base[this.partOf.size()]); // Reference
3670        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
3671        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<CarePlanIntent>
3672        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
3673        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3674        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
3675        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
3676        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
3677        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
3678        case 1028554472: /*created*/ return this.created == null ? new Base[0] : new Base[] {this.created}; // DateTimeType
3679        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
3680        case -1895276325: /*contributor*/ return this.contributor == null ? new Base[0] : this.contributor.toArray(new Base[this.contributor.size()]); // Reference
3681        case -7323378: /*careTeam*/ return this.careTeam == null ? new Base[0] : this.careTeam.toArray(new Base[this.careTeam.size()]); // Reference
3682        case 874544034: /*addresses*/ return this.addresses == null ? new Base[0] : this.addresses.toArray(new Base[this.addresses.size()]); // Reference
3683        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
3684        case 3178259: /*goal*/ return this.goal == null ? new Base[0] : this.goal.toArray(new Base[this.goal.size()]); // Reference
3685        case -1655966961: /*activity*/ return this.activity == null ? new Base[0] : this.activity.toArray(new Base[this.activity.size()]); // CarePlanActivityComponent
3686        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
3687        default: return super.getProperty(hash, name, checkValid);
3688        }
3689
3690      }
3691
3692      @Override
3693      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3694        switch (hash) {
3695        case -1618432855: // identifier
3696          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3697          return value;
3698        case 8911915: // instantiatesCanonical
3699          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
3700          return value;
3701        case -1926393373: // instantiatesUri
3702          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
3703          return value;
3704        case -332612366: // basedOn
3705          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
3706          return value;
3707        case -430332865: // replaces
3708          this.getReplaces().add(TypeConvertor.castToReference(value)); // Reference
3709          return value;
3710        case -995410646: // partOf
3711          this.getPartOf().add(TypeConvertor.castToReference(value)); // Reference
3712          return value;
3713        case -892481550: // status
3714          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3715          this.status = (Enumeration) value; // Enumeration<RequestStatus>
3716          return value;
3717        case -1183762788: // intent
3718          value = new CarePlanIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
3719          this.intent = (Enumeration) value; // Enumeration<CarePlanIntent>
3720          return value;
3721        case 50511102: // category
3722          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3723          return value;
3724        case 110371416: // title
3725          this.title = TypeConvertor.castToString(value); // StringType
3726          return value;
3727        case -1724546052: // description
3728          this.description = TypeConvertor.castToString(value); // StringType
3729          return value;
3730        case -1867885268: // subject
3731          this.subject = TypeConvertor.castToReference(value); // Reference
3732          return value;
3733        case 1524132147: // encounter
3734          this.encounter = TypeConvertor.castToReference(value); // Reference
3735          return value;
3736        case -991726143: // period
3737          this.period = TypeConvertor.castToPeriod(value); // Period
3738          return value;
3739        case 1028554472: // created
3740          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
3741          return value;
3742        case -1406328437: // author
3743          this.author = TypeConvertor.castToReference(value); // Reference
3744          return value;
3745        case -1895276325: // contributor
3746          this.getContributor().add(TypeConvertor.castToReference(value)); // Reference
3747          return value;
3748        case -7323378: // careTeam
3749          this.getCareTeam().add(TypeConvertor.castToReference(value)); // Reference
3750          return value;
3751        case 874544034: // addresses
3752          this.getAddresses().add(TypeConvertor.castToReference(value)); // Reference
3753          return value;
3754        case 1922406657: // supportingInfo
3755          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
3756          return value;
3757        case 3178259: // goal
3758          this.getGoal().add(TypeConvertor.castToReference(value)); // Reference
3759          return value;
3760        case -1655966961: // activity
3761          this.getActivity().add((CarePlanActivityComponent) value); // CarePlanActivityComponent
3762          return value;
3763        case 3387378: // note
3764          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
3765          return value;
3766        default: return super.setProperty(hash, name, value);
3767        }
3768
3769      }
3770
3771      @Override
3772      public Base setProperty(String name, Base value) throws FHIRException {
3773        if (name.equals("identifier")) {
3774          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3775        } else if (name.equals("instantiatesCanonical")) {
3776          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
3777        } else if (name.equals("instantiatesUri")) {
3778          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
3779        } else if (name.equals("basedOn")) {
3780          this.getBasedOn().add(TypeConvertor.castToReference(value));
3781        } else if (name.equals("replaces")) {
3782          this.getReplaces().add(TypeConvertor.castToReference(value));
3783        } else if (name.equals("partOf")) {
3784          this.getPartOf().add(TypeConvertor.castToReference(value));
3785        } else if (name.equals("status")) {
3786          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3787          this.status = (Enumeration) value; // Enumeration<RequestStatus>
3788        } else if (name.equals("intent")) {
3789          value = new CarePlanIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
3790          this.intent = (Enumeration) value; // Enumeration<CarePlanIntent>
3791        } else if (name.equals("category")) {
3792          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
3793        } else if (name.equals("title")) {
3794          this.title = TypeConvertor.castToString(value); // StringType
3795        } else if (name.equals("description")) {
3796          this.description = TypeConvertor.castToString(value); // StringType
3797        } else if (name.equals("subject")) {
3798          this.subject = TypeConvertor.castToReference(value); // Reference
3799        } else if (name.equals("encounter")) {
3800          this.encounter = TypeConvertor.castToReference(value); // Reference
3801        } else if (name.equals("period")) {
3802          this.period = TypeConvertor.castToPeriod(value); // Period
3803        } else if (name.equals("created")) {
3804          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
3805        } else if (name.equals("author")) {
3806          this.author = TypeConvertor.castToReference(value); // Reference
3807        } else if (name.equals("contributor")) {
3808          this.getContributor().add(TypeConvertor.castToReference(value));
3809        } else if (name.equals("careTeam")) {
3810          this.getCareTeam().add(TypeConvertor.castToReference(value));
3811        } else if (name.equals("addresses")) {
3812          this.getAddresses().add(TypeConvertor.castToReference(value));
3813        } else if (name.equals("supportingInfo")) {
3814          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
3815        } else if (name.equals("goal")) {
3816          this.getGoal().add(TypeConvertor.castToReference(value));
3817        } else if (name.equals("activity")) {
3818          this.getActivity().add((CarePlanActivityComponent) value);
3819        } else if (name.equals("note")) {
3820          this.getNote().add(TypeConvertor.castToAnnotation(value));
3821        } else
3822          return super.setProperty(name, value);
3823        return value;
3824      }
3825
3826      @Override
3827      public Base makeProperty(int hash, String name) throws FHIRException {
3828        switch (hash) {
3829        case -1618432855:  return addIdentifier(); 
3830        case 8911915:  return addInstantiatesCanonicalElement();
3831        case -1926393373:  return addInstantiatesUriElement();
3832        case -332612366:  return addBasedOn(); 
3833        case -430332865:  return addReplaces(); 
3834        case -995410646:  return addPartOf(); 
3835        case -892481550:  return getStatusElement();
3836        case -1183762788:  return getIntentElement();
3837        case 50511102:  return addCategory(); 
3838        case 110371416:  return getTitleElement();
3839        case -1724546052:  return getDescriptionElement();
3840        case -1867885268:  return getSubject();
3841        case 1524132147:  return getEncounter();
3842        case -991726143:  return getPeriod();
3843        case 1028554472:  return getCreatedElement();
3844        case -1406328437:  return getAuthor();
3845        case -1895276325:  return addContributor(); 
3846        case -7323378:  return addCareTeam(); 
3847        case 874544034:  return addAddresses(); 
3848        case 1922406657:  return addSupportingInfo(); 
3849        case 3178259:  return addGoal(); 
3850        case -1655966961:  return addActivity(); 
3851        case 3387378:  return addNote(); 
3852        default: return super.makeProperty(hash, name);
3853        }
3854
3855      }
3856
3857      @Override
3858      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3859        switch (hash) {
3860        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3861        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
3862        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
3863        case -332612366: /*basedOn*/ return new String[] {"Reference"};
3864        case -430332865: /*replaces*/ return new String[] {"Reference"};
3865        case -995410646: /*partOf*/ return new String[] {"Reference"};
3866        case -892481550: /*status*/ return new String[] {"code"};
3867        case -1183762788: /*intent*/ return new String[] {"code"};
3868        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
3869        case 110371416: /*title*/ return new String[] {"string"};
3870        case -1724546052: /*description*/ return new String[] {"string"};
3871        case -1867885268: /*subject*/ return new String[] {"Reference"};
3872        case 1524132147: /*encounter*/ return new String[] {"Reference"};
3873        case -991726143: /*period*/ return new String[] {"Period"};
3874        case 1028554472: /*created*/ return new String[] {"dateTime"};
3875        case -1406328437: /*author*/ return new String[] {"Reference"};
3876        case -1895276325: /*contributor*/ return new String[] {"Reference"};
3877        case -7323378: /*careTeam*/ return new String[] {"Reference"};
3878        case 874544034: /*addresses*/ return new String[] {"Reference"};
3879        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
3880        case 3178259: /*goal*/ return new String[] {"Reference"};
3881        case -1655966961: /*activity*/ return new String[] {};
3882        case 3387378: /*note*/ return new String[] {"Annotation"};
3883        default: return super.getTypesForProperty(hash, name);
3884        }
3885
3886      }
3887
3888      @Override
3889      public Base addChild(String name) throws FHIRException {
3890        if (name.equals("identifier")) {
3891          return addIdentifier();
3892        }
3893        else if (name.equals("instantiatesCanonical")) {
3894          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.instantiatesCanonical");
3895        }
3896        else if (name.equals("instantiatesUri")) {
3897          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.instantiatesUri");
3898        }
3899        else if (name.equals("basedOn")) {
3900          return addBasedOn();
3901        }
3902        else if (name.equals("replaces")) {
3903          return addReplaces();
3904        }
3905        else if (name.equals("partOf")) {
3906          return addPartOf();
3907        }
3908        else if (name.equals("status")) {
3909          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.status");
3910        }
3911        else if (name.equals("intent")) {
3912          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.intent");
3913        }
3914        else if (name.equals("category")) {
3915          return addCategory();
3916        }
3917        else if (name.equals("title")) {
3918          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.title");
3919        }
3920        else if (name.equals("description")) {
3921          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.description");
3922        }
3923        else if (name.equals("subject")) {
3924          this.subject = new Reference();
3925          return this.subject;
3926        }
3927        else if (name.equals("encounter")) {
3928          this.encounter = new Reference();
3929          return this.encounter;
3930        }
3931        else if (name.equals("period")) {
3932          this.period = new Period();
3933          return this.period;
3934        }
3935        else if (name.equals("created")) {
3936          throw new FHIRException("Cannot call addChild on a primitive type CarePlan.created");
3937        }
3938        else if (name.equals("author")) {
3939          this.author = new Reference();
3940          return this.author;
3941        }
3942        else if (name.equals("contributor")) {
3943          return addContributor();
3944        }
3945        else if (name.equals("careTeam")) {
3946          return addCareTeam();
3947        }
3948        else if (name.equals("addresses")) {
3949          return addAddresses();
3950        }
3951        else if (name.equals("supportingInfo")) {
3952          return addSupportingInfo();
3953        }
3954        else if (name.equals("goal")) {
3955          return addGoal();
3956        }
3957        else if (name.equals("activity")) {
3958          return addActivity();
3959        }
3960        else if (name.equals("note")) {
3961          return addNote();
3962        }
3963        else
3964          return super.addChild(name);
3965      }
3966
3967  public String fhirType() {
3968    return "CarePlan";
3969
3970  }
3971
3972      public CarePlan copy() {
3973        CarePlan dst = new CarePlan();
3974        copyValues(dst);
3975        return dst;
3976      }
3977
3978      public void copyValues(CarePlan dst) {
3979        super.copyValues(dst);
3980        if (identifier != null) {
3981          dst.identifier = new ArrayList<Identifier>();
3982          for (Identifier i : identifier)
3983            dst.identifier.add(i.copy());
3984        };
3985        if (instantiatesCanonical != null) {
3986          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
3987          for (CanonicalType i : instantiatesCanonical)
3988            dst.instantiatesCanonical.add(i.copy());
3989        };
3990        if (instantiatesUri != null) {
3991          dst.instantiatesUri = new ArrayList<UriType>();
3992          for (UriType i : instantiatesUri)
3993            dst.instantiatesUri.add(i.copy());
3994        };
3995        if (basedOn != null) {
3996          dst.basedOn = new ArrayList<Reference>();
3997          for (Reference i : basedOn)
3998            dst.basedOn.add(i.copy());
3999        };
4000        if (replaces != null) {
4001          dst.replaces = new ArrayList<Reference>();
4002          for (Reference i : replaces)
4003            dst.replaces.add(i.copy());
4004        };
4005        if (partOf != null) {
4006          dst.partOf = new ArrayList<Reference>();
4007          for (Reference i : partOf)
4008            dst.partOf.add(i.copy());
4009        };
4010        dst.status = status == null ? null : status.copy();
4011        dst.intent = intent == null ? null : intent.copy();
4012        if (category != null) {
4013          dst.category = new ArrayList<CodeableConcept>();
4014          for (CodeableConcept i : category)
4015            dst.category.add(i.copy());
4016        };
4017        dst.title = title == null ? null : title.copy();
4018        dst.description = description == null ? null : description.copy();
4019        dst.subject = subject == null ? null : subject.copy();
4020        dst.encounter = encounter == null ? null : encounter.copy();
4021        dst.period = period == null ? null : period.copy();
4022        dst.created = created == null ? null : created.copy();
4023        dst.author = author == null ? null : author.copy();
4024        if (contributor != null) {
4025          dst.contributor = new ArrayList<Reference>();
4026          for (Reference i : contributor)
4027            dst.contributor.add(i.copy());
4028        };
4029        if (careTeam != null) {
4030          dst.careTeam = new ArrayList<Reference>();
4031          for (Reference i : careTeam)
4032            dst.careTeam.add(i.copy());
4033        };
4034        if (addresses != null) {
4035          dst.addresses = new ArrayList<Reference>();
4036          for (Reference i : addresses)
4037            dst.addresses.add(i.copy());
4038        };
4039        if (supportingInfo != null) {
4040          dst.supportingInfo = new ArrayList<Reference>();
4041          for (Reference i : supportingInfo)
4042            dst.supportingInfo.add(i.copy());
4043        };
4044        if (goal != null) {
4045          dst.goal = new ArrayList<Reference>();
4046          for (Reference i : goal)
4047            dst.goal.add(i.copy());
4048        };
4049        if (activity != null) {
4050          dst.activity = new ArrayList<CarePlanActivityComponent>();
4051          for (CarePlanActivityComponent i : activity)
4052            dst.activity.add(i.copy());
4053        };
4054        if (note != null) {
4055          dst.note = new ArrayList<Annotation>();
4056          for (Annotation i : note)
4057            dst.note.add(i.copy());
4058        };
4059      }
4060
4061      protected CarePlan typedCopy() {
4062        return copy();
4063      }
4064
4065      @Override
4066      public boolean equalsDeep(Base other_) {
4067        if (!super.equalsDeep(other_))
4068          return false;
4069        if (!(other_ instanceof CarePlan))
4070          return false;
4071        CarePlan o = (CarePlan) other_;
4072        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
4073           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
4074           && compareDeep(replaces, o.replaces, true) && compareDeep(partOf, o.partOf, true) && compareDeep(status, o.status, true)
4075           && compareDeep(intent, o.intent, true) && compareDeep(category, o.category, true) && compareDeep(title, o.title, true)
4076           && compareDeep(description, o.description, true) && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true)
4077           && compareDeep(period, o.period, true) && compareDeep(created, o.created, true) && compareDeep(author, o.author, true)
4078           && compareDeep(contributor, o.contributor, true) && compareDeep(careTeam, o.careTeam, true) && compareDeep(addresses, o.addresses, true)
4079           && compareDeep(supportingInfo, o.supportingInfo, true) && compareDeep(goal, o.goal, true) && compareDeep(activity, o.activity, true)
4080           && compareDeep(note, o.note, true);
4081      }
4082
4083      @Override
4084      public boolean equalsShallow(Base other_) {
4085        if (!super.equalsShallow(other_))
4086          return false;
4087        if (!(other_ instanceof CarePlan))
4088          return false;
4089        CarePlan o = (CarePlan) other_;
4090        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
4091           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(title, o.title, true)
4092           && compareValues(description, o.description, true) && compareValues(created, o.created, true);
4093      }
4094
4095      public boolean isEmpty() {
4096        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
4097          , instantiatesUri, basedOn, replaces, partOf, status, intent, category, title
4098          , description, subject, encounter, period, created, author, contributor, careTeam
4099          , addresses, supportingInfo, goal, activity, note);
4100      }
4101
4102  @Override
4103  public ResourceType getResourceType() {
4104    return ResourceType.CarePlan;
4105   }
4106
4107 /**
4108   * Search parameter: <b>activity-code</b>
4109   * <p>
4110   * Description: <b>Detail type of activity</b><br>
4111   * Type: <b>token</b><br>
4112   * Path: <b>CarePlan.activity.detail.code</b><br>
4113   * </p>
4114   */
4115  @SearchParamDefinition(name="activity-code", path="CarePlan.activity.detail.code", description="Detail type of activity", type="token" )
4116  public static final String SP_ACTIVITY_CODE = "activity-code";
4117 /**
4118   * <b>Fluent Client</b> search parameter constant for <b>activity-code</b>
4119   * <p>
4120   * Description: <b>Detail type of activity</b><br>
4121   * Type: <b>token</b><br>
4122   * Path: <b>CarePlan.activity.detail.code</b><br>
4123   * </p>
4124   */
4125  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTIVITY_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ACTIVITY_CODE);
4126
4127 /**
4128   * Search parameter: <b>activity-date</b>
4129   * <p>
4130   * Description: <b>Specified date occurs within period specified by CarePlan.activity.detail.scheduled[x]</b><br>
4131   * Type: <b>date</b><br>
4132   * Path: <b>CarePlan.activity.detail.scheduled</b><br>
4133   * </p>
4134   */
4135  @SearchParamDefinition(name="activity-date", path="CarePlan.activity.detail.scheduled", description="Specified date occurs within period specified by CarePlan.activity.detail.scheduled[x]", type="date" )
4136  public static final String SP_ACTIVITY_DATE = "activity-date";
4137 /**
4138   * <b>Fluent Client</b> search parameter constant for <b>activity-date</b>
4139   * <p>
4140   * Description: <b>Specified date occurs within period specified by CarePlan.activity.detail.scheduled[x]</b><br>
4141   * Type: <b>date</b><br>
4142   * Path: <b>CarePlan.activity.detail.scheduled</b><br>
4143   * </p>
4144   */
4145  public static final ca.uhn.fhir.rest.gclient.DateClientParam ACTIVITY_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ACTIVITY_DATE);
4146
4147 /**
4148   * Search parameter: <b>activity-reference</b>
4149   * <p>
4150   * Description: <b>Activity details defined in specific resource</b><br>
4151   * Type: <b>reference</b><br>
4152   * Path: <b>CarePlan.activity.reference</b><br>
4153   * </p>
4154   */
4155  @SearchParamDefinition(name="activity-reference", path="CarePlan.activity.reference", description="Activity details defined in specific resource", type="reference", target={Appointment.class, CommunicationRequest.class, DeviceRequest.class, MedicationRequest.class, NutritionOrder.class, RequestGroup.class, ServiceRequest.class, Task.class, VisionPrescription.class } )
4156  public static final String SP_ACTIVITY_REFERENCE = "activity-reference";
4157 /**
4158   * <b>Fluent Client</b> search parameter constant for <b>activity-reference</b>
4159   * <p>
4160   * Description: <b>Activity details defined in specific resource</b><br>
4161   * Type: <b>reference</b><br>
4162   * Path: <b>CarePlan.activity.reference</b><br>
4163   * </p>
4164   */
4165  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ACTIVITY_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ACTIVITY_REFERENCE);
4166
4167/**
4168   * Constant for fluent queries to be used to add include statements. Specifies
4169   * the path value of "<b>CarePlan:activity-reference</b>".
4170   */
4171  public static final ca.uhn.fhir.model.api.Include INCLUDE_ACTIVITY_REFERENCE = new ca.uhn.fhir.model.api.Include("CarePlan:activity-reference").toLocked();
4172
4173 /**
4174   * Search parameter: <b>based-on</b>
4175   * <p>
4176   * Description: <b>Fulfills CarePlan</b><br>
4177   * Type: <b>reference</b><br>
4178   * Path: <b>CarePlan.basedOn</b><br>
4179   * </p>
4180   */
4181  @SearchParamDefinition(name="based-on", path="CarePlan.basedOn", description="Fulfills CarePlan", type="reference", target={CarePlan.class } )
4182  public static final String SP_BASED_ON = "based-on";
4183 /**
4184   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
4185   * <p>
4186   * Description: <b>Fulfills CarePlan</b><br>
4187   * Type: <b>reference</b><br>
4188   * Path: <b>CarePlan.basedOn</b><br>
4189   * </p>
4190   */
4191  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
4192
4193/**
4194   * Constant for fluent queries to be used to add include statements. Specifies
4195   * the path value of "<b>CarePlan:based-on</b>".
4196   */
4197  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("CarePlan:based-on").toLocked();
4198
4199 /**
4200   * Search parameter: <b>care-team</b>
4201   * <p>
4202   * Description: <b>Who's involved in plan?</b><br>
4203   * Type: <b>reference</b><br>
4204   * Path: <b>CarePlan.careTeam</b><br>
4205   * </p>
4206   */
4207  @SearchParamDefinition(name="care-team", path="CarePlan.careTeam", description="Who's involved in plan?", type="reference", target={CareTeam.class } )
4208  public static final String SP_CARE_TEAM = "care-team";
4209 /**
4210   * <b>Fluent Client</b> search parameter constant for <b>care-team</b>
4211   * <p>
4212   * Description: <b>Who's involved in plan?</b><br>
4213   * Type: <b>reference</b><br>
4214   * Path: <b>CarePlan.careTeam</b><br>
4215   * </p>
4216   */
4217  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CARE_TEAM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CARE_TEAM);
4218
4219/**
4220   * Constant for fluent queries to be used to add include statements. Specifies
4221   * the path value of "<b>CarePlan:care-team</b>".
4222   */
4223  public static final ca.uhn.fhir.model.api.Include INCLUDE_CARE_TEAM = new ca.uhn.fhir.model.api.Include("CarePlan:care-team").toLocked();
4224
4225 /**
4226   * Search parameter: <b>category</b>
4227   * <p>
4228   * Description: <b>Type of plan</b><br>
4229   * Type: <b>token</b><br>
4230   * Path: <b>CarePlan.category</b><br>
4231   * </p>
4232   */
4233  @SearchParamDefinition(name="category", path="CarePlan.category", description="Type of plan", type="token" )
4234  public static final String SP_CATEGORY = "category";
4235 /**
4236   * <b>Fluent Client</b> search parameter constant for <b>category</b>
4237   * <p>
4238   * Description: <b>Type of plan</b><br>
4239   * Type: <b>token</b><br>
4240   * Path: <b>CarePlan.category</b><br>
4241   * </p>
4242   */
4243  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
4244
4245 /**
4246   * Search parameter: <b>condition</b>
4247   * <p>
4248   * Description: <b>Health issues this plan addresses</b><br>
4249   * Type: <b>reference</b><br>
4250   * Path: <b>CarePlan.addresses</b><br>
4251   * </p>
4252   */
4253  @SearchParamDefinition(name="condition", path="CarePlan.addresses", description="Health issues this plan addresses", type="reference", target={Condition.class } )
4254  public static final String SP_CONDITION = "condition";
4255 /**
4256   * <b>Fluent Client</b> search parameter constant for <b>condition</b>
4257   * <p>
4258   * Description: <b>Health issues this plan addresses</b><br>
4259   * Type: <b>reference</b><br>
4260   * Path: <b>CarePlan.addresses</b><br>
4261   * </p>
4262   */
4263  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONDITION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CONDITION);
4264
4265/**
4266   * Constant for fluent queries to be used to add include statements. Specifies
4267   * the path value of "<b>CarePlan:condition</b>".
4268   */
4269  public static final ca.uhn.fhir.model.api.Include INCLUDE_CONDITION = new ca.uhn.fhir.model.api.Include("CarePlan:condition").toLocked();
4270
4271 /**
4272   * Search parameter: <b>encounter</b>
4273   * <p>
4274   * Description: <b>Encounter created as part of</b><br>
4275   * Type: <b>reference</b><br>
4276   * Path: <b>CarePlan.encounter</b><br>
4277   * </p>
4278   */
4279  @SearchParamDefinition(name="encounter", path="CarePlan.encounter", description="Encounter created as part of", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
4280  public static final String SP_ENCOUNTER = "encounter";
4281 /**
4282   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
4283   * <p>
4284   * Description: <b>Encounter created as part of</b><br>
4285   * Type: <b>reference</b><br>
4286   * Path: <b>CarePlan.encounter</b><br>
4287   * </p>
4288   */
4289  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
4290
4291/**
4292   * Constant for fluent queries to be used to add include statements. Specifies
4293   * the path value of "<b>CarePlan:encounter</b>".
4294   */
4295  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("CarePlan:encounter").toLocked();
4296
4297 /**
4298   * Search parameter: <b>goal</b>
4299   * <p>
4300   * Description: <b>Desired outcome of plan</b><br>
4301   * Type: <b>reference</b><br>
4302   * Path: <b>CarePlan.goal</b><br>
4303   * </p>
4304   */
4305  @SearchParamDefinition(name="goal", path="CarePlan.goal", description="Desired outcome of plan", type="reference", target={Goal.class } )
4306  public static final String SP_GOAL = "goal";
4307 /**
4308   * <b>Fluent Client</b> search parameter constant for <b>goal</b>
4309   * <p>
4310   * Description: <b>Desired outcome of plan</b><br>
4311   * Type: <b>reference</b><br>
4312   * Path: <b>CarePlan.goal</b><br>
4313   * </p>
4314   */
4315  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam GOAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_GOAL);
4316
4317/**
4318   * Constant for fluent queries to be used to add include statements. Specifies
4319   * the path value of "<b>CarePlan:goal</b>".
4320   */
4321  public static final ca.uhn.fhir.model.api.Include INCLUDE_GOAL = new ca.uhn.fhir.model.api.Include("CarePlan:goal").toLocked();
4322
4323 /**
4324   * Search parameter: <b>instantiates-canonical</b>
4325   * <p>
4326   * Description: <b>Instantiates FHIR protocol or definition</b><br>
4327   * Type: <b>reference</b><br>
4328   * Path: <b>CarePlan.instantiatesCanonical</b><br>
4329   * </p>
4330   */
4331  @SearchParamDefinition(name="instantiates-canonical", path="CarePlan.instantiatesCanonical", description="Instantiates FHIR protocol or definition", type="reference", target={ActivityDefinition.class, Measure.class, OperationDefinition.class, PlanDefinition.class, Questionnaire.class } )
4332  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
4333 /**
4334   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
4335   * <p>
4336   * Description: <b>Instantiates FHIR protocol or definition</b><br>
4337   * Type: <b>reference</b><br>
4338   * Path: <b>CarePlan.instantiatesCanonical</b><br>
4339   * </p>
4340   */
4341  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
4342
4343/**
4344   * Constant for fluent queries to be used to add include statements. Specifies
4345   * the path value of "<b>CarePlan:instantiates-canonical</b>".
4346   */
4347  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("CarePlan:instantiates-canonical").toLocked();
4348
4349 /**
4350   * Search parameter: <b>instantiates-uri</b>
4351   * <p>
4352   * Description: <b>Instantiates external protocol or definition</b><br>
4353   * Type: <b>uri</b><br>
4354   * Path: <b>CarePlan.instantiatesUri</b><br>
4355   * </p>
4356   */
4357  @SearchParamDefinition(name="instantiates-uri", path="CarePlan.instantiatesUri", description="Instantiates external protocol or definition", type="uri" )
4358  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
4359 /**
4360   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
4361   * <p>
4362   * Description: <b>Instantiates external protocol or definition</b><br>
4363   * Type: <b>uri</b><br>
4364   * Path: <b>CarePlan.instantiatesUri</b><br>
4365   * </p>
4366   */
4367  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
4368
4369 /**
4370   * Search parameter: <b>intent</b>
4371   * <p>
4372   * Description: <b>proposal | plan | order | option</b><br>
4373   * Type: <b>token</b><br>
4374   * Path: <b>CarePlan.intent</b><br>
4375   * </p>
4376   */
4377  @SearchParamDefinition(name="intent", path="CarePlan.intent", description="proposal | plan | order | option", type="token" )
4378  public static final String SP_INTENT = "intent";
4379 /**
4380   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
4381   * <p>
4382   * Description: <b>proposal | plan | order | option</b><br>
4383   * Type: <b>token</b><br>
4384   * Path: <b>CarePlan.intent</b><br>
4385   * </p>
4386   */
4387  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
4388
4389 /**
4390   * Search parameter: <b>part-of</b>
4391   * <p>
4392   * Description: <b>Part of referenced CarePlan</b><br>
4393   * Type: <b>reference</b><br>
4394   * Path: <b>CarePlan.partOf</b><br>
4395   * </p>
4396   */
4397  @SearchParamDefinition(name="part-of", path="CarePlan.partOf", description="Part of referenced CarePlan", type="reference", target={CarePlan.class } )
4398  public static final String SP_PART_OF = "part-of";
4399 /**
4400   * <b>Fluent Client</b> search parameter constant for <b>part-of</b>
4401   * <p>
4402   * Description: <b>Part of referenced CarePlan</b><br>
4403   * Type: <b>reference</b><br>
4404   * Path: <b>CarePlan.partOf</b><br>
4405   * </p>
4406   */
4407  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PART_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PART_OF);
4408
4409/**
4410   * Constant for fluent queries to be used to add include statements. Specifies
4411   * the path value of "<b>CarePlan:part-of</b>".
4412   */
4413  public static final ca.uhn.fhir.model.api.Include INCLUDE_PART_OF = new ca.uhn.fhir.model.api.Include("CarePlan:part-of").toLocked();
4414
4415 /**
4416   * Search parameter: <b>performer</b>
4417   * <p>
4418   * Description: <b>Matches if the practitioner is listed as a performer in any of the "simple" activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)</b><br>
4419   * Type: <b>reference</b><br>
4420   * Path: <b>CarePlan.activity.detail.performer</b><br>
4421   * </p>
4422   */
4423  @SearchParamDefinition(name="performer", path="CarePlan.activity.detail.performer", description="Matches if the practitioner is listed as a performer in any of the \"simple\" activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={CareTeam.class, Device.class, HealthcareService.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
4424  public static final String SP_PERFORMER = "performer";
4425 /**
4426   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
4427   * <p>
4428   * Description: <b>Matches if the practitioner is listed as a performer in any of the "simple" activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)</b><br>
4429   * Type: <b>reference</b><br>
4430   * Path: <b>CarePlan.activity.detail.performer</b><br>
4431   * </p>
4432   */
4433  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
4434
4435/**
4436   * Constant for fluent queries to be used to add include statements. Specifies
4437   * the path value of "<b>CarePlan:performer</b>".
4438   */
4439  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("CarePlan:performer").toLocked();
4440
4441 /**
4442   * Search parameter: <b>replaces</b>
4443   * <p>
4444   * Description: <b>CarePlan replaced by this CarePlan</b><br>
4445   * Type: <b>reference</b><br>
4446   * Path: <b>CarePlan.replaces</b><br>
4447   * </p>
4448   */
4449  @SearchParamDefinition(name="replaces", path="CarePlan.replaces", description="CarePlan replaced by this CarePlan", type="reference", target={CarePlan.class } )
4450  public static final String SP_REPLACES = "replaces";
4451 /**
4452   * <b>Fluent Client</b> search parameter constant for <b>replaces</b>
4453   * <p>
4454   * Description: <b>CarePlan replaced by this CarePlan</b><br>
4455   * Type: <b>reference</b><br>
4456   * Path: <b>CarePlan.replaces</b><br>
4457   * </p>
4458   */
4459  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REPLACES = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REPLACES);
4460
4461/**
4462   * Constant for fluent queries to be used to add include statements. Specifies
4463   * the path value of "<b>CarePlan:replaces</b>".
4464   */
4465  public static final ca.uhn.fhir.model.api.Include INCLUDE_REPLACES = new ca.uhn.fhir.model.api.Include("CarePlan:replaces").toLocked();
4466
4467 /**
4468   * Search parameter: <b>status</b>
4469   * <p>
4470   * Description: <b>draft | active | on-hold | revoked | completed | entered-in-error | unknown</b><br>
4471   * Type: <b>token</b><br>
4472   * Path: <b>CarePlan.status</b><br>
4473   * </p>
4474   */
4475  @SearchParamDefinition(name="status", path="CarePlan.status", description="draft | active | on-hold | revoked | completed | entered-in-error | unknown", type="token" )
4476  public static final String SP_STATUS = "status";
4477 /**
4478   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4479   * <p>
4480   * Description: <b>draft | active | on-hold | revoked | completed | entered-in-error | unknown</b><br>
4481   * Type: <b>token</b><br>
4482   * Path: <b>CarePlan.status</b><br>
4483   * </p>
4484   */
4485  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4486
4487 /**
4488   * Search parameter: <b>subject</b>
4489   * <p>
4490   * Description: <b>Who the care plan is for</b><br>
4491   * Type: <b>reference</b><br>
4492   * Path: <b>CarePlan.subject</b><br>
4493   * </p>
4494   */
4495  @SearchParamDefinition(name="subject", path="CarePlan.subject", description="Who the care plan is for", type="reference", target={Group.class, Patient.class } )
4496  public static final String SP_SUBJECT = "subject";
4497 /**
4498   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
4499   * <p>
4500   * Description: <b>Who the care plan is for</b><br>
4501   * Type: <b>reference</b><br>
4502   * Path: <b>CarePlan.subject</b><br>
4503   * </p>
4504   */
4505  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
4506
4507/**
4508   * Constant for fluent queries to be used to add include statements. Specifies
4509   * the path value of "<b>CarePlan:subject</b>".
4510   */
4511  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("CarePlan:subject").toLocked();
4512
4513 /**
4514   * Search parameter: <b>date</b>
4515   * <p>
4516   * Description: <b>Multiple Resources: 
4517
4518* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
4519* [CarePlan](careplan.html): Time period plan covers
4520* [CareTeam](careteam.html): Time period team covers
4521* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
4522* [Composition](composition.html): Composition editing time
4523* [Consent](consent.html): When this Consent was created or indexed
4524* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
4525* [Encounter](encounter.html): A date within the period the Encounter lasted
4526* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
4527* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
4528* [Flag](flag.html): Time period when flag is active
4529* [Immunization](immunization.html): Vaccination  (non)-Administration Date
4530* [List](list.html): When the list was prepared
4531* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
4532* [Procedure](procedure.html): When the procedure was performed
4533* [RiskAssessment](riskassessment.html): When was assessment made?
4534* [SupplyRequest](supplyrequest.html): When the request was made
4535</b><br>
4536   * Type: <b>date</b><br>
4537   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
4538   * </p>
4539   */
4540  @SearchParamDefinition(name="date", path="AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): Time period team covers\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When this Consent was created or indexed\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [Encounter](encounter.html): A date within the period the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [List](list.html): When the list was prepared\r\n* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period\r\n* [Procedure](procedure.html): When the procedure was performed\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
4541  public static final String SP_DATE = "date";
4542 /**
4543   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4544   * <p>
4545   * Description: <b>Multiple Resources: 
4546
4547* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
4548* [CarePlan](careplan.html): Time period plan covers
4549* [CareTeam](careteam.html): Time period team covers
4550* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
4551* [Composition](composition.html): Composition editing time
4552* [Consent](consent.html): When this Consent was created or indexed
4553* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
4554* [Encounter](encounter.html): A date within the period the Encounter lasted
4555* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
4556* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
4557* [Flag](flag.html): Time period when flag is active
4558* [Immunization](immunization.html): Vaccination  (non)-Administration Date
4559* [List](list.html): When the list was prepared
4560* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
4561* [Procedure](procedure.html): When the procedure was performed
4562* [RiskAssessment](riskassessment.html): When was assessment made?
4563* [SupplyRequest](supplyrequest.html): When the request was made
4564</b><br>
4565   * Type: <b>date</b><br>
4566   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
4567   * </p>
4568   */
4569  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4570
4571 /**
4572   * Search parameter: <b>identifier</b>
4573   * <p>
4574   * Description: <b>Multiple Resources: 
4575
4576* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4577* [CarePlan](careplan.html): External Ids for this plan
4578* [CareTeam](careteam.html): External Ids for this team
4579* [Composition](composition.html): Version-independent identifier for the Composition
4580* [Condition](condition.html): A unique identifier of the condition record
4581* [Consent](consent.html): Identifier for this record (external references)
4582* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4583* [DeviceRequest](devicerequest.html): Business identifier for request/order
4584* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4585* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
4586* [DocumentReference](documentreference.html): Master Version Specific Identifier
4587* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4588* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4589* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4590* [Goal](goal.html): External Ids for this goal
4591* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
4592* [Immunization](immunization.html): Business identifier
4593* [List](list.html): Business identifier
4594* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4595* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4596* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4597* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4598* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4599* [Observation](observation.html): The unique id for a particular observation
4600* [Procedure](procedure.html): A unique identifier for a procedure
4601* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4602* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4603* [SupplyDelivery](supplydelivery.html): External identifier
4604* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4605* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4606</b><br>
4607   * Type: <b>token</b><br>
4608   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
4609   * </p>
4610   */
4611  @SearchParamDefinition(name="identifier", path="AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents\r\n* [DocumentReference](documentreference.html): Master Version Specific Identifier\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number\r\n* [Immunization](immunization.html): Business identifier\r\n* [List](list.html): Business identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
4612  public static final String SP_IDENTIFIER = "identifier";
4613 /**
4614   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4615   * <p>
4616   * Description: <b>Multiple Resources: 
4617
4618* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4619* [CarePlan](careplan.html): External Ids for this plan
4620* [CareTeam](careteam.html): External Ids for this team
4621* [Composition](composition.html): Version-independent identifier for the Composition
4622* [Condition](condition.html): A unique identifier of the condition record
4623* [Consent](consent.html): Identifier for this record (external references)
4624* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4625* [DeviceRequest](devicerequest.html): Business identifier for request/order
4626* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4627* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
4628* [DocumentReference](documentreference.html): Master Version Specific Identifier
4629* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4630* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4631* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4632* [Goal](goal.html): External Ids for this goal
4633* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
4634* [Immunization](immunization.html): Business identifier
4635* [List](list.html): Business identifier
4636* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4637* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4638* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4639* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4640* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4641* [Observation](observation.html): The unique id for a particular observation
4642* [Procedure](procedure.html): A unique identifier for a procedure
4643* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4644* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4645* [SupplyDelivery](supplydelivery.html): External identifier
4646* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4647* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4648</b><br>
4649   * Type: <b>token</b><br>
4650   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
4651   * </p>
4652   */
4653  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4654
4655 /**
4656   * Search parameter: <b>patient</b>
4657   * <p>
4658   * Description: <b>Multiple Resources: 
4659
4660* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4661* [CarePlan](careplan.html): Who the care plan is for
4662* [CareTeam](careteam.html): Who care team is for
4663* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
4664* [Composition](composition.html): Who and/or what the composition is about
4665* [Condition](condition.html): Who has the condition?
4666* [Consent](consent.html): Who the consent applies to
4667* [DetectedIssue](detectedissue.html): Associated patient
4668* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4669* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
4670* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4671* [DocumentManifest](documentmanifest.html): The subject of the set of documents
4672* [DocumentReference](documentreference.html): Who/what is the subject of the document
4673* [Encounter](encounter.html): The patient or group present at the encounter
4674* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4675* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4676* [Flag](flag.html): The identity of a subject to list flags for
4677* [Goal](goal.html): Who this goal is intended for
4678* [ImagingStudy](imagingstudy.html): Who the study is about
4679* [Immunization](immunization.html): The patient for the vaccination record
4680* [List](list.html): If all resources have the same subject
4681* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4682* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4683* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4684* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4685* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
4686* [Observation](observation.html): The subject that the observation is about (if patient)
4687* [Procedure](procedure.html): Search by subject - a patient
4688* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4689* [ServiceRequest](servicerequest.html): Search by subject - a patient
4690* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4691* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4692</b><br>
4693   * Type: <b>reference</b><br>
4694   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
4695   * </p>
4696   */
4697  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient or group assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient or group present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
4698  public static final String SP_PATIENT = "patient";
4699 /**
4700   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
4701   * <p>
4702   * Description: <b>Multiple Resources: 
4703
4704* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4705* [CarePlan](careplan.html): Who the care plan is for
4706* [CareTeam](careteam.html): Who care team is for
4707* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
4708* [Composition](composition.html): Who and/or what the composition is about
4709* [Condition](condition.html): Who has the condition?
4710* [Consent](consent.html): Who the consent applies to
4711* [DetectedIssue](detectedissue.html): Associated patient
4712* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4713* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
4714* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4715* [DocumentManifest](documentmanifest.html): The subject of the set of documents
4716* [DocumentReference](documentreference.html): Who/what is the subject of the document
4717* [Encounter](encounter.html): The patient or group present at the encounter
4718* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4719* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4720* [Flag](flag.html): The identity of a subject to list flags for
4721* [Goal](goal.html): Who this goal is intended for
4722* [ImagingStudy](imagingstudy.html): Who the study is about
4723* [Immunization](immunization.html): The patient for the vaccination record
4724* [List](list.html): If all resources have the same subject
4725* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4726* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4727* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4728* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4729* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
4730* [Observation](observation.html): The subject that the observation is about (if patient)
4731* [Procedure](procedure.html): Search by subject - a patient
4732* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4733* [ServiceRequest](servicerequest.html): Search by subject - a patient
4734* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4735* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4736</b><br>
4737   * Type: <b>reference</b><br>
4738   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
4739   * </p>
4740   */
4741  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
4742
4743/**
4744   * Constant for fluent queries to be used to add include statements. Specifies
4745   * the path value of "<b>CarePlan:patient</b>".
4746   */
4747  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("CarePlan:patient").toLocked();
4748
4749
4750}
4751