001package org.hl7.fhir.r5.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 Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.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 * A task to be performed.
052 */
053@ResourceDef(name="Task", profile="http://hl7.org/fhir/StructureDefinition/Task")
054public class Task extends DomainResource {
055
056    public enum TaskIntent {
057        /**
058         * The intent is not known.  When dealing with Task, it's not always known (or relevant) how the task was initiated - i.e. whether it was proposed, planned, ordered or just done spontaneously.
059         */
060        UNKNOWN, 
061        /**
062         * 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.
063         */
064        PROPOSAL, 
065        /**
066         * The request represents an intention to ensure something occurs without providing an authorization for others to act.
067         */
068        PLAN, 
069        /**
070         * The request represents a request/demand and authorization for action by the requestor.
071         */
072        ORDER, 
073        /**
074         * The request represents an original authorization for action.
075         */
076        ORIGINALORDER, 
077        /**
078         * The request represents an automatically generated supplemental authorization for action based on a parent authorization together with initial results of the action taken against that parent authorization.
079         */
080        REFLEXORDER, 
081        /**
082         * The request represents the view of an authorization instantiated by a fulfilling system representing the details of the fulfiller's intention to act upon a submitted order.
083         */
084        FILLERORDER, 
085        /**
086         * An order created in fulfillment of a broader order that represents the authorization for a single activity occurrence.  E.g. The administration of a single dose of a drug.
087         */
088        INSTANCEORDER, 
089        /**
090         * The request represents a component or option for a RequestOrchestration that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestOrchestration]]] for additional information on how this status is used.
091         */
092        OPTION, 
093        /**
094         * added to help the parsers with the generic types
095         */
096        NULL;
097        public static TaskIntent fromCode(String codeString) throws FHIRException {
098            if (codeString == null || "".equals(codeString))
099                return null;
100        if ("unknown".equals(codeString))
101          return UNKNOWN;
102        if ("proposal".equals(codeString))
103          return PROPOSAL;
104        if ("plan".equals(codeString))
105          return PLAN;
106        if ("order".equals(codeString))
107          return ORDER;
108        if ("original-order".equals(codeString))
109          return ORIGINALORDER;
110        if ("reflex-order".equals(codeString))
111          return REFLEXORDER;
112        if ("filler-order".equals(codeString))
113          return FILLERORDER;
114        if ("instance-order".equals(codeString))
115          return INSTANCEORDER;
116        if ("option".equals(codeString))
117          return OPTION;
118        if (Configuration.isAcceptInvalidEnums())
119          return null;
120        else
121          throw new FHIRException("Unknown TaskIntent code '"+codeString+"'");
122        }
123        public String toCode() {
124          switch (this) {
125            case UNKNOWN: return "unknown";
126            case PROPOSAL: return "proposal";
127            case PLAN: return "plan";
128            case ORDER: return "order";
129            case ORIGINALORDER: return "original-order";
130            case REFLEXORDER: return "reflex-order";
131            case FILLERORDER: return "filler-order";
132            case INSTANCEORDER: return "instance-order";
133            case OPTION: return "option";
134            case NULL: return null;
135            default: return "?";
136          }
137        }
138        public String getSystem() {
139          switch (this) {
140            case UNKNOWN: return "http://hl7.org/fhir/task-intent";
141            case PROPOSAL: return "http://hl7.org/fhir/request-intent";
142            case PLAN: return "http://hl7.org/fhir/request-intent";
143            case ORDER: return "http://hl7.org/fhir/request-intent";
144            case ORIGINALORDER: return "http://hl7.org/fhir/request-intent";
145            case REFLEXORDER: return "http://hl7.org/fhir/request-intent";
146            case FILLERORDER: return "http://hl7.org/fhir/request-intent";
147            case INSTANCEORDER: return "http://hl7.org/fhir/request-intent";
148            case OPTION: return "http://hl7.org/fhir/request-intent";
149            case NULL: return null;
150            default: return "?";
151          }
152        }
153        public String getDefinition() {
154          switch (this) {
155            case UNKNOWN: return "The intent is not known.  When dealing with Task, it's not always known (or relevant) how the task was initiated - i.e. whether it was proposed, planned, ordered or just done spontaneously.";
156            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.";
157            case PLAN: return "The request represents an intention to ensure something occurs without providing an authorization for others to act.";
158            case ORDER: return "The request represents a request/demand and authorization for action by the requestor.";
159            case ORIGINALORDER: return "The request represents an original authorization for action.";
160            case REFLEXORDER: return "The request represents an automatically generated supplemental authorization for action based on a parent authorization together with initial results of the action taken against that parent authorization.";
161            case FILLERORDER: return "The request represents the view of an authorization instantiated by a fulfilling system representing the details of the fulfiller's intention to act upon a submitted order.";
162            case INSTANCEORDER: return "An order created in fulfillment of a broader order that represents the authorization for a single activity occurrence.  E.g. The administration of a single dose of a drug.";
163            case OPTION: return "The request represents a component or option for a RequestOrchestration that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestOrchestration]]] for additional information on how this status is used.";
164            case NULL: return null;
165            default: return "?";
166          }
167        }
168        public String getDisplay() {
169          switch (this) {
170            case UNKNOWN: return "Unknown";
171            case PROPOSAL: return "Proposal";
172            case PLAN: return "Plan";
173            case ORDER: return "Order";
174            case ORIGINALORDER: return "Original Order";
175            case REFLEXORDER: return "Reflex Order";
176            case FILLERORDER: return "Filler Order";
177            case INSTANCEORDER: return "Instance Order";
178            case OPTION: return "Option";
179            case NULL: return null;
180            default: return "?";
181          }
182        }
183    }
184
185  public static class TaskIntentEnumFactory implements EnumFactory<TaskIntent> {
186    public TaskIntent fromCode(String codeString) throws IllegalArgumentException {
187      if (codeString == null || "".equals(codeString))
188            if (codeString == null || "".equals(codeString))
189                return null;
190        if ("unknown".equals(codeString))
191          return TaskIntent.UNKNOWN;
192        if ("proposal".equals(codeString))
193          return TaskIntent.PROPOSAL;
194        if ("plan".equals(codeString))
195          return TaskIntent.PLAN;
196        if ("order".equals(codeString))
197          return TaskIntent.ORDER;
198        if ("original-order".equals(codeString))
199          return TaskIntent.ORIGINALORDER;
200        if ("reflex-order".equals(codeString))
201          return TaskIntent.REFLEXORDER;
202        if ("filler-order".equals(codeString))
203          return TaskIntent.FILLERORDER;
204        if ("instance-order".equals(codeString))
205          return TaskIntent.INSTANCEORDER;
206        if ("option".equals(codeString))
207          return TaskIntent.OPTION;
208        throw new IllegalArgumentException("Unknown TaskIntent code '"+codeString+"'");
209        }
210        public Enumeration<TaskIntent> fromType(PrimitiveType<?> code) throws FHIRException {
211          if (code == null)
212            return null;
213          if (code.isEmpty())
214            return new Enumeration<TaskIntent>(this, TaskIntent.NULL, code);
215          String codeString = ((PrimitiveType) code).asStringValue();
216          if (codeString == null || "".equals(codeString))
217            return new Enumeration<TaskIntent>(this, TaskIntent.NULL, code);
218        if ("unknown".equals(codeString))
219          return new Enumeration<TaskIntent>(this, TaskIntent.UNKNOWN, code);
220        if ("proposal".equals(codeString))
221          return new Enumeration<TaskIntent>(this, TaskIntent.PROPOSAL, code);
222        if ("plan".equals(codeString))
223          return new Enumeration<TaskIntent>(this, TaskIntent.PLAN, code);
224        if ("order".equals(codeString))
225          return new Enumeration<TaskIntent>(this, TaskIntent.ORDER, code);
226        if ("original-order".equals(codeString))
227          return new Enumeration<TaskIntent>(this, TaskIntent.ORIGINALORDER, code);
228        if ("reflex-order".equals(codeString))
229          return new Enumeration<TaskIntent>(this, TaskIntent.REFLEXORDER, code);
230        if ("filler-order".equals(codeString))
231          return new Enumeration<TaskIntent>(this, TaskIntent.FILLERORDER, code);
232        if ("instance-order".equals(codeString))
233          return new Enumeration<TaskIntent>(this, TaskIntent.INSTANCEORDER, code);
234        if ("option".equals(codeString))
235          return new Enumeration<TaskIntent>(this, TaskIntent.OPTION, code);
236        throw new FHIRException("Unknown TaskIntent code '"+codeString+"'");
237        }
238    public String toCode(TaskIntent code) {
239      if (code == TaskIntent.UNKNOWN)
240        return "unknown";
241      if (code == TaskIntent.PROPOSAL)
242        return "proposal";
243      if (code == TaskIntent.PLAN)
244        return "plan";
245      if (code == TaskIntent.ORDER)
246        return "order";
247      if (code == TaskIntent.ORIGINALORDER)
248        return "original-order";
249      if (code == TaskIntent.REFLEXORDER)
250        return "reflex-order";
251      if (code == TaskIntent.FILLERORDER)
252        return "filler-order";
253      if (code == TaskIntent.INSTANCEORDER)
254        return "instance-order";
255      if (code == TaskIntent.OPTION)
256        return "option";
257      return "?";
258      }
259    public String toSystem(TaskIntent code) {
260      return code.getSystem();
261      }
262    }
263
264    public enum TaskStatus {
265        /**
266         * The task is not yet ready to be acted upon.
267         */
268        DRAFT, 
269        /**
270         * The task is ready to be acted upon and action is sought.
271         */
272        REQUESTED, 
273        /**
274         * A potential performer has claimed ownership of the task and is evaluating whether to perform it.
275         */
276        RECEIVED, 
277        /**
278         * The potential performer has agreed to execute the task but has not yet started work.
279         */
280        ACCEPTED, 
281        /**
282         * The potential performer who claimed ownership of the task has decided not to execute it prior to performing any action.
283         */
284        REJECTED, 
285        /**
286         * The task is ready to be performed, but no action has yet been taken.  Used in place of requested/received/accepted/rejected when request assignment and acceptance is a given.
287         */
288        READY, 
289        /**
290         * The task was not completed.
291         */
292        CANCELLED, 
293        /**
294         * The task has been started but is not yet complete.
295         */
296        INPROGRESS, 
297        /**
298         * The task has been started but work has been paused.
299         */
300        ONHOLD, 
301        /**
302         * The task was attempted but could not be completed due to some error.
303         */
304        FAILED, 
305        /**
306         * The task has been completed.
307         */
308        COMPLETED, 
309        /**
310         * The task should never have existed and is retained only because of the possibility it may have used.
311         */
312        ENTEREDINERROR, 
313        /**
314         * added to help the parsers with the generic types
315         */
316        NULL;
317        public static TaskStatus fromCode(String codeString) throws FHIRException {
318            if (codeString == null || "".equals(codeString))
319                return null;
320        if ("draft".equals(codeString))
321          return DRAFT;
322        if ("requested".equals(codeString))
323          return REQUESTED;
324        if ("received".equals(codeString))
325          return RECEIVED;
326        if ("accepted".equals(codeString))
327          return ACCEPTED;
328        if ("rejected".equals(codeString))
329          return REJECTED;
330        if ("ready".equals(codeString))
331          return READY;
332        if ("cancelled".equals(codeString))
333          return CANCELLED;
334        if ("in-progress".equals(codeString))
335          return INPROGRESS;
336        if ("on-hold".equals(codeString))
337          return ONHOLD;
338        if ("failed".equals(codeString))
339          return FAILED;
340        if ("completed".equals(codeString))
341          return COMPLETED;
342        if ("entered-in-error".equals(codeString))
343          return ENTEREDINERROR;
344        if (Configuration.isAcceptInvalidEnums())
345          return null;
346        else
347          throw new FHIRException("Unknown TaskStatus code '"+codeString+"'");
348        }
349        public String toCode() {
350          switch (this) {
351            case DRAFT: return "draft";
352            case REQUESTED: return "requested";
353            case RECEIVED: return "received";
354            case ACCEPTED: return "accepted";
355            case REJECTED: return "rejected";
356            case READY: return "ready";
357            case CANCELLED: return "cancelled";
358            case INPROGRESS: return "in-progress";
359            case ONHOLD: return "on-hold";
360            case FAILED: return "failed";
361            case COMPLETED: return "completed";
362            case ENTEREDINERROR: return "entered-in-error";
363            case NULL: return null;
364            default: return "?";
365          }
366        }
367        public String getSystem() {
368          switch (this) {
369            case DRAFT: return "http://hl7.org/fhir/task-status";
370            case REQUESTED: return "http://hl7.org/fhir/task-status";
371            case RECEIVED: return "http://hl7.org/fhir/task-status";
372            case ACCEPTED: return "http://hl7.org/fhir/task-status";
373            case REJECTED: return "http://hl7.org/fhir/task-status";
374            case READY: return "http://hl7.org/fhir/task-status";
375            case CANCELLED: return "http://hl7.org/fhir/task-status";
376            case INPROGRESS: return "http://hl7.org/fhir/task-status";
377            case ONHOLD: return "http://hl7.org/fhir/task-status";
378            case FAILED: return "http://hl7.org/fhir/task-status";
379            case COMPLETED: return "http://hl7.org/fhir/task-status";
380            case ENTEREDINERROR: return "http://hl7.org/fhir/task-status";
381            case NULL: return null;
382            default: return "?";
383          }
384        }
385        public String getDefinition() {
386          switch (this) {
387            case DRAFT: return "The task is not yet ready to be acted upon.";
388            case REQUESTED: return "The task is ready to be acted upon and action is sought.";
389            case RECEIVED: return "A potential performer has claimed ownership of the task and is evaluating whether to perform it.";
390            case ACCEPTED: return "The potential performer has agreed to execute the task but has not yet started work.";
391            case REJECTED: return "The potential performer who claimed ownership of the task has decided not to execute it prior to performing any action.";
392            case READY: return "The task is ready to be performed, but no action has yet been taken.  Used in place of requested/received/accepted/rejected when request assignment and acceptance is a given.";
393            case CANCELLED: return "The task was not completed.";
394            case INPROGRESS: return "The task has been started but is not yet complete.";
395            case ONHOLD: return "The task has been started but work has been paused.";
396            case FAILED: return "The task was attempted but could not be completed due to some error.";
397            case COMPLETED: return "The task has been completed.";
398            case ENTEREDINERROR: return "The task should never have existed and is retained only because of the possibility it may have used.";
399            case NULL: return null;
400            default: return "?";
401          }
402        }
403        public String getDisplay() {
404          switch (this) {
405            case DRAFT: return "Draft";
406            case REQUESTED: return "Requested";
407            case RECEIVED: return "Received";
408            case ACCEPTED: return "Accepted";
409            case REJECTED: return "Rejected";
410            case READY: return "Ready";
411            case CANCELLED: return "Cancelled";
412            case INPROGRESS: return "In Progress";
413            case ONHOLD: return "On Hold";
414            case FAILED: return "Failed";
415            case COMPLETED: return "Completed";
416            case ENTEREDINERROR: return "Entered in Error";
417            case NULL: return null;
418            default: return "?";
419          }
420        }
421    }
422
423  public static class TaskStatusEnumFactory implements EnumFactory<TaskStatus> {
424    public TaskStatus fromCode(String codeString) throws IllegalArgumentException {
425      if (codeString == null || "".equals(codeString))
426            if (codeString == null || "".equals(codeString))
427                return null;
428        if ("draft".equals(codeString))
429          return TaskStatus.DRAFT;
430        if ("requested".equals(codeString))
431          return TaskStatus.REQUESTED;
432        if ("received".equals(codeString))
433          return TaskStatus.RECEIVED;
434        if ("accepted".equals(codeString))
435          return TaskStatus.ACCEPTED;
436        if ("rejected".equals(codeString))
437          return TaskStatus.REJECTED;
438        if ("ready".equals(codeString))
439          return TaskStatus.READY;
440        if ("cancelled".equals(codeString))
441          return TaskStatus.CANCELLED;
442        if ("in-progress".equals(codeString))
443          return TaskStatus.INPROGRESS;
444        if ("on-hold".equals(codeString))
445          return TaskStatus.ONHOLD;
446        if ("failed".equals(codeString))
447          return TaskStatus.FAILED;
448        if ("completed".equals(codeString))
449          return TaskStatus.COMPLETED;
450        if ("entered-in-error".equals(codeString))
451          return TaskStatus.ENTEREDINERROR;
452        throw new IllegalArgumentException("Unknown TaskStatus code '"+codeString+"'");
453        }
454        public Enumeration<TaskStatus> fromType(PrimitiveType<?> code) throws FHIRException {
455          if (code == null)
456            return null;
457          if (code.isEmpty())
458            return new Enumeration<TaskStatus>(this, TaskStatus.NULL, code);
459          String codeString = ((PrimitiveType) code).asStringValue();
460          if (codeString == null || "".equals(codeString))
461            return new Enumeration<TaskStatus>(this, TaskStatus.NULL, code);
462        if ("draft".equals(codeString))
463          return new Enumeration<TaskStatus>(this, TaskStatus.DRAFT, code);
464        if ("requested".equals(codeString))
465          return new Enumeration<TaskStatus>(this, TaskStatus.REQUESTED, code);
466        if ("received".equals(codeString))
467          return new Enumeration<TaskStatus>(this, TaskStatus.RECEIVED, code);
468        if ("accepted".equals(codeString))
469          return new Enumeration<TaskStatus>(this, TaskStatus.ACCEPTED, code);
470        if ("rejected".equals(codeString))
471          return new Enumeration<TaskStatus>(this, TaskStatus.REJECTED, code);
472        if ("ready".equals(codeString))
473          return new Enumeration<TaskStatus>(this, TaskStatus.READY, code);
474        if ("cancelled".equals(codeString))
475          return new Enumeration<TaskStatus>(this, TaskStatus.CANCELLED, code);
476        if ("in-progress".equals(codeString))
477          return new Enumeration<TaskStatus>(this, TaskStatus.INPROGRESS, code);
478        if ("on-hold".equals(codeString))
479          return new Enumeration<TaskStatus>(this, TaskStatus.ONHOLD, code);
480        if ("failed".equals(codeString))
481          return new Enumeration<TaskStatus>(this, TaskStatus.FAILED, code);
482        if ("completed".equals(codeString))
483          return new Enumeration<TaskStatus>(this, TaskStatus.COMPLETED, code);
484        if ("entered-in-error".equals(codeString))
485          return new Enumeration<TaskStatus>(this, TaskStatus.ENTEREDINERROR, code);
486        throw new FHIRException("Unknown TaskStatus code '"+codeString+"'");
487        }
488    public String toCode(TaskStatus code) {
489      if (code == TaskStatus.DRAFT)
490        return "draft";
491      if (code == TaskStatus.REQUESTED)
492        return "requested";
493      if (code == TaskStatus.RECEIVED)
494        return "received";
495      if (code == TaskStatus.ACCEPTED)
496        return "accepted";
497      if (code == TaskStatus.REJECTED)
498        return "rejected";
499      if (code == TaskStatus.READY)
500        return "ready";
501      if (code == TaskStatus.CANCELLED)
502        return "cancelled";
503      if (code == TaskStatus.INPROGRESS)
504        return "in-progress";
505      if (code == TaskStatus.ONHOLD)
506        return "on-hold";
507      if (code == TaskStatus.FAILED)
508        return "failed";
509      if (code == TaskStatus.COMPLETED)
510        return "completed";
511      if (code == TaskStatus.ENTEREDINERROR)
512        return "entered-in-error";
513      return "?";
514      }
515    public String toSystem(TaskStatus code) {
516      return code.getSystem();
517      }
518    }
519
520    @Block()
521    public static class TaskPerformerComponent extends BackboneElement implements IBaseBackboneElement {
522        /**
523         * A code or description of the performer of the task.
524         */
525        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
526        @Description(shortDefinition="Type of performance", formalDefinition="A code or description of the performer of the task." )
527        protected CodeableConcept function;
528
529        /**
530         * The actor or entity who performed the task.
531         */
532        @Child(name = "actor", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class, Patient.class, RelatedPerson.class}, order=2, min=1, max=1, modifier=false, summary=true)
533        @Description(shortDefinition="Who performed the task", formalDefinition="The actor or entity who performed the task." )
534        protected Reference actor;
535
536        private static final long serialVersionUID = -576943815L;
537
538    /**
539     * Constructor
540     */
541      public TaskPerformerComponent() {
542        super();
543      }
544
545    /**
546     * Constructor
547     */
548      public TaskPerformerComponent(Reference actor) {
549        super();
550        this.setActor(actor);
551      }
552
553        /**
554         * @return {@link #function} (A code or description of the performer of the task.)
555         */
556        public CodeableConcept getFunction() { 
557          if (this.function == null)
558            if (Configuration.errorOnAutoCreate())
559              throw new Error("Attempt to auto-create TaskPerformerComponent.function");
560            else if (Configuration.doAutoCreate())
561              this.function = new CodeableConcept(); // cc
562          return this.function;
563        }
564
565        public boolean hasFunction() { 
566          return this.function != null && !this.function.isEmpty();
567        }
568
569        /**
570         * @param value {@link #function} (A code or description of the performer of the task.)
571         */
572        public TaskPerformerComponent setFunction(CodeableConcept value) { 
573          this.function = value;
574          return this;
575        }
576
577        /**
578         * @return {@link #actor} (The actor or entity who performed the task.)
579         */
580        public Reference getActor() { 
581          if (this.actor == null)
582            if (Configuration.errorOnAutoCreate())
583              throw new Error("Attempt to auto-create TaskPerformerComponent.actor");
584            else if (Configuration.doAutoCreate())
585              this.actor = new Reference(); // cc
586          return this.actor;
587        }
588
589        public boolean hasActor() { 
590          return this.actor != null && !this.actor.isEmpty();
591        }
592
593        /**
594         * @param value {@link #actor} (The actor or entity who performed the task.)
595         */
596        public TaskPerformerComponent setActor(Reference value) { 
597          this.actor = value;
598          return this;
599        }
600
601        protected void listChildren(List<Property> children) {
602          super.listChildren(children);
603          children.add(new Property("function", "CodeableConcept", "A code or description of the performer of the task.", 0, 1, function));
604          children.add(new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|RelatedPerson)", "The actor or entity who performed the task.", 0, 1, actor));
605        }
606
607        @Override
608        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
609          switch (_hash) {
610          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "A code or description of the performer of the task.", 0, 1, function);
611          case 92645877: /*actor*/  return new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|RelatedPerson)", "The actor or entity who performed the task.", 0, 1, actor);
612          default: return super.getNamedProperty(_hash, _name, _checkValid);
613          }
614
615        }
616
617      @Override
618      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
619        switch (hash) {
620        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
621        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
622        default: return super.getProperty(hash, name, checkValid);
623        }
624
625      }
626
627      @Override
628      public Base setProperty(int hash, String name, Base value) throws FHIRException {
629        switch (hash) {
630        case 1380938712: // function
631          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
632          return value;
633        case 92645877: // actor
634          this.actor = TypeConvertor.castToReference(value); // Reference
635          return value;
636        default: return super.setProperty(hash, name, value);
637        }
638
639      }
640
641      @Override
642      public Base setProperty(String name, Base value) throws FHIRException {
643        if (name.equals("function")) {
644          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
645        } else if (name.equals("actor")) {
646          this.actor = TypeConvertor.castToReference(value); // Reference
647        } else
648          return super.setProperty(name, value);
649        return value;
650      }
651
652  @Override
653  public void removeChild(String name, Base value) throws FHIRException {
654        if (name.equals("function")) {
655          this.function = null;
656        } else if (name.equals("actor")) {
657          this.actor = null;
658        } else
659          super.removeChild(name, value);
660        
661      }
662
663      @Override
664      public Base makeProperty(int hash, String name) throws FHIRException {
665        switch (hash) {
666        case 1380938712:  return getFunction();
667        case 92645877:  return getActor();
668        default: return super.makeProperty(hash, name);
669        }
670
671      }
672
673      @Override
674      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
675        switch (hash) {
676        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
677        case 92645877: /*actor*/ return new String[] {"Reference"};
678        default: return super.getTypesForProperty(hash, name);
679        }
680
681      }
682
683      @Override
684      public Base addChild(String name) throws FHIRException {
685        if (name.equals("function")) {
686          this.function = new CodeableConcept();
687          return this.function;
688        }
689        else if (name.equals("actor")) {
690          this.actor = new Reference();
691          return this.actor;
692        }
693        else
694          return super.addChild(name);
695      }
696
697      public TaskPerformerComponent copy() {
698        TaskPerformerComponent dst = new TaskPerformerComponent();
699        copyValues(dst);
700        return dst;
701      }
702
703      public void copyValues(TaskPerformerComponent dst) {
704        super.copyValues(dst);
705        dst.function = function == null ? null : function.copy();
706        dst.actor = actor == null ? null : actor.copy();
707      }
708
709      @Override
710      public boolean equalsDeep(Base other_) {
711        if (!super.equalsDeep(other_))
712          return false;
713        if (!(other_ instanceof TaskPerformerComponent))
714          return false;
715        TaskPerformerComponent o = (TaskPerformerComponent) other_;
716        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true);
717      }
718
719      @Override
720      public boolean equalsShallow(Base other_) {
721        if (!super.equalsShallow(other_))
722          return false;
723        if (!(other_ instanceof TaskPerformerComponent))
724          return false;
725        TaskPerformerComponent o = (TaskPerformerComponent) other_;
726        return true;
727      }
728
729      public boolean isEmpty() {
730        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor);
731      }
732
733  public String fhirType() {
734    return "Task.performer";
735
736  }
737
738  }
739
740    @Block()
741    public static class TaskRestrictionComponent extends BackboneElement implements IBaseBackboneElement {
742        /**
743         * Indicates the number of times the requested action should occur.
744         */
745        @Child(name = "repetitions", type = {PositiveIntType.class}, order=1, min=0, max=1, modifier=false, summary=false)
746        @Description(shortDefinition="How many times to repeat", formalDefinition="Indicates the number of times the requested action should occur." )
747        protected PositiveIntType repetitions;
748
749        /**
750         * The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request.  E.g. ServiceRequest.occurance[x].
751         */
752        @Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=false)
753        @Description(shortDefinition="When fulfillment is sought", formalDefinition="The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request.  E.g. ServiceRequest.occurance[x]." )
754        protected Period period;
755
756        /**
757         * For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought for.
758         */
759        @Child(name = "recipient", type = {Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class, Group.class, Organization.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
760        @Description(shortDefinition="For whom is fulfillment sought?", formalDefinition="For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought for." )
761        protected List<Reference> recipient;
762
763        private static final long serialVersionUID = 1673996066L;
764
765    /**
766     * Constructor
767     */
768      public TaskRestrictionComponent() {
769        super();
770      }
771
772        /**
773         * @return {@link #repetitions} (Indicates the number of times the requested action should occur.). This is the underlying object with id, value and extensions. The accessor "getRepetitions" gives direct access to the value
774         */
775        public PositiveIntType getRepetitionsElement() { 
776          if (this.repetitions == null)
777            if (Configuration.errorOnAutoCreate())
778              throw new Error("Attempt to auto-create TaskRestrictionComponent.repetitions");
779            else if (Configuration.doAutoCreate())
780              this.repetitions = new PositiveIntType(); // bb
781          return this.repetitions;
782        }
783
784        public boolean hasRepetitionsElement() { 
785          return this.repetitions != null && !this.repetitions.isEmpty();
786        }
787
788        public boolean hasRepetitions() { 
789          return this.repetitions != null && !this.repetitions.isEmpty();
790        }
791
792        /**
793         * @param value {@link #repetitions} (Indicates the number of times the requested action should occur.). This is the underlying object with id, value and extensions. The accessor "getRepetitions" gives direct access to the value
794         */
795        public TaskRestrictionComponent setRepetitionsElement(PositiveIntType value) { 
796          this.repetitions = value;
797          return this;
798        }
799
800        /**
801         * @return Indicates the number of times the requested action should occur.
802         */
803        public int getRepetitions() { 
804          return this.repetitions == null || this.repetitions.isEmpty() ? 0 : this.repetitions.getValue();
805        }
806
807        /**
808         * @param value Indicates the number of times the requested action should occur.
809         */
810        public TaskRestrictionComponent setRepetitions(int value) { 
811            if (this.repetitions == null)
812              this.repetitions = new PositiveIntType();
813            this.repetitions.setValue(value);
814          return this;
815        }
816
817        /**
818         * @return {@link #period} (The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request.  E.g. ServiceRequest.occurance[x].)
819         */
820        public Period getPeriod() { 
821          if (this.period == null)
822            if (Configuration.errorOnAutoCreate())
823              throw new Error("Attempt to auto-create TaskRestrictionComponent.period");
824            else if (Configuration.doAutoCreate())
825              this.period = new Period(); // cc
826          return this.period;
827        }
828
829        public boolean hasPeriod() { 
830          return this.period != null && !this.period.isEmpty();
831        }
832
833        /**
834         * @param value {@link #period} (The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request.  E.g. ServiceRequest.occurance[x].)
835         */
836        public TaskRestrictionComponent setPeriod(Period value) { 
837          this.period = value;
838          return this;
839        }
840
841        /**
842         * @return {@link #recipient} (For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought for.)
843         */
844        public List<Reference> getRecipient() { 
845          if (this.recipient == null)
846            this.recipient = new ArrayList<Reference>();
847          return this.recipient;
848        }
849
850        /**
851         * @return Returns a reference to <code>this</code> for easy method chaining
852         */
853        public TaskRestrictionComponent setRecipient(List<Reference> theRecipient) { 
854          this.recipient = theRecipient;
855          return this;
856        }
857
858        public boolean hasRecipient() { 
859          if (this.recipient == null)
860            return false;
861          for (Reference item : this.recipient)
862            if (!item.isEmpty())
863              return true;
864          return false;
865        }
866
867        public Reference addRecipient() { //3
868          Reference t = new Reference();
869          if (this.recipient == null)
870            this.recipient = new ArrayList<Reference>();
871          this.recipient.add(t);
872          return t;
873        }
874
875        public TaskRestrictionComponent addRecipient(Reference t) { //3
876          if (t == null)
877            return this;
878          if (this.recipient == null)
879            this.recipient = new ArrayList<Reference>();
880          this.recipient.add(t);
881          return this;
882        }
883
884        /**
885         * @return The first repetition of repeating field {@link #recipient}, creating it if it does not already exist {3}
886         */
887        public Reference getRecipientFirstRep() { 
888          if (getRecipient().isEmpty()) {
889            addRecipient();
890          }
891          return getRecipient().get(0);
892        }
893
894        protected void listChildren(List<Property> children) {
895          super.listChildren(children);
896          children.add(new Property("repetitions", "positiveInt", "Indicates the number of times the requested action should occur.", 0, 1, repetitions));
897          children.add(new Property("period", "Period", "The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request.  E.g. ServiceRequest.occurance[x].", 0, 1, period));
898          children.add(new Property("recipient", "Reference(Patient|Practitioner|PractitionerRole|RelatedPerson|Group|Organization)", "For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought for.", 0, java.lang.Integer.MAX_VALUE, recipient));
899        }
900
901        @Override
902        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
903          switch (_hash) {
904          case 984367650: /*repetitions*/  return new Property("repetitions", "positiveInt", "Indicates the number of times the requested action should occur.", 0, 1, repetitions);
905          case -991726143: /*period*/  return new Property("period", "Period", "The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request.  E.g. ServiceRequest.occurance[x].", 0, 1, period);
906          case 820081177: /*recipient*/  return new Property("recipient", "Reference(Patient|Practitioner|PractitionerRole|RelatedPerson|Group|Organization)", "For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought for.", 0, java.lang.Integer.MAX_VALUE, recipient);
907          default: return super.getNamedProperty(_hash, _name, _checkValid);
908          }
909
910        }
911
912      @Override
913      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
914        switch (hash) {
915        case 984367650: /*repetitions*/ return this.repetitions == null ? new Base[0] : new Base[] {this.repetitions}; // PositiveIntType
916        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
917        case 820081177: /*recipient*/ return this.recipient == null ? new Base[0] : this.recipient.toArray(new Base[this.recipient.size()]); // Reference
918        default: return super.getProperty(hash, name, checkValid);
919        }
920
921      }
922
923      @Override
924      public Base setProperty(int hash, String name, Base value) throws FHIRException {
925        switch (hash) {
926        case 984367650: // repetitions
927          this.repetitions = TypeConvertor.castToPositiveInt(value); // PositiveIntType
928          return value;
929        case -991726143: // period
930          this.period = TypeConvertor.castToPeriod(value); // Period
931          return value;
932        case 820081177: // recipient
933          this.getRecipient().add(TypeConvertor.castToReference(value)); // Reference
934          return value;
935        default: return super.setProperty(hash, name, value);
936        }
937
938      }
939
940      @Override
941      public Base setProperty(String name, Base value) throws FHIRException {
942        if (name.equals("repetitions")) {
943          this.repetitions = TypeConvertor.castToPositiveInt(value); // PositiveIntType
944        } else if (name.equals("period")) {
945          this.period = TypeConvertor.castToPeriod(value); // Period
946        } else if (name.equals("recipient")) {
947          this.getRecipient().add(TypeConvertor.castToReference(value));
948        } else
949          return super.setProperty(name, value);
950        return value;
951      }
952
953  @Override
954  public void removeChild(String name, Base value) throws FHIRException {
955        if (name.equals("repetitions")) {
956          this.repetitions = null;
957        } else if (name.equals("period")) {
958          this.period = null;
959        } else if (name.equals("recipient")) {
960          this.getRecipient().remove(value);
961        } else
962          super.removeChild(name, value);
963        
964      }
965
966      @Override
967      public Base makeProperty(int hash, String name) throws FHIRException {
968        switch (hash) {
969        case 984367650:  return getRepetitionsElement();
970        case -991726143:  return getPeriod();
971        case 820081177:  return addRecipient(); 
972        default: return super.makeProperty(hash, name);
973        }
974
975      }
976
977      @Override
978      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
979        switch (hash) {
980        case 984367650: /*repetitions*/ return new String[] {"positiveInt"};
981        case -991726143: /*period*/ return new String[] {"Period"};
982        case 820081177: /*recipient*/ return new String[] {"Reference"};
983        default: return super.getTypesForProperty(hash, name);
984        }
985
986      }
987
988      @Override
989      public Base addChild(String name) throws FHIRException {
990        if (name.equals("repetitions")) {
991          throw new FHIRException("Cannot call addChild on a singleton property Task.restriction.repetitions");
992        }
993        else if (name.equals("period")) {
994          this.period = new Period();
995          return this.period;
996        }
997        else if (name.equals("recipient")) {
998          return addRecipient();
999        }
1000        else
1001          return super.addChild(name);
1002      }
1003
1004      public TaskRestrictionComponent copy() {
1005        TaskRestrictionComponent dst = new TaskRestrictionComponent();
1006        copyValues(dst);
1007        return dst;
1008      }
1009
1010      public void copyValues(TaskRestrictionComponent dst) {
1011        super.copyValues(dst);
1012        dst.repetitions = repetitions == null ? null : repetitions.copy();
1013        dst.period = period == null ? null : period.copy();
1014        if (recipient != null) {
1015          dst.recipient = new ArrayList<Reference>();
1016          for (Reference i : recipient)
1017            dst.recipient.add(i.copy());
1018        };
1019      }
1020
1021      @Override
1022      public boolean equalsDeep(Base other_) {
1023        if (!super.equalsDeep(other_))
1024          return false;
1025        if (!(other_ instanceof TaskRestrictionComponent))
1026          return false;
1027        TaskRestrictionComponent o = (TaskRestrictionComponent) other_;
1028        return compareDeep(repetitions, o.repetitions, true) && compareDeep(period, o.period, true) && compareDeep(recipient, o.recipient, true)
1029          ;
1030      }
1031
1032      @Override
1033      public boolean equalsShallow(Base other_) {
1034        if (!super.equalsShallow(other_))
1035          return false;
1036        if (!(other_ instanceof TaskRestrictionComponent))
1037          return false;
1038        TaskRestrictionComponent o = (TaskRestrictionComponent) other_;
1039        return compareValues(repetitions, o.repetitions, true);
1040      }
1041
1042      public boolean isEmpty() {
1043        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(repetitions, period, recipient
1044          );
1045      }
1046
1047  public String fhirType() {
1048    return "Task.restriction";
1049
1050  }
1051
1052  }
1053
1054    @Block()
1055    public static class TaskInputComponent extends BackboneElement implements IBaseBackboneElement {
1056        /**
1057         * A code or description indicating how the input is intended to be used as part of the task execution.
1058         */
1059        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
1060        @Description(shortDefinition="Label for the input", formalDefinition="A code or description indicating how the input is intended to be used as part of the task execution." )
1061        protected CodeableConcept type;
1062
1063        /**
1064         * The value of the input parameter as a basic type.
1065         */
1066        @Child(name = "value", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, Integer64Type.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, CodeableReference.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, RatioRange.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Availability.class, ExtendedContactDetail.class, Dosage.class, Meta.class}, order=2, min=1, max=1, modifier=false, summary=false)
1067        @Description(shortDefinition="Content to use in performing the task", formalDefinition="The value of the input parameter as a basic type." )
1068        protected DataType value;
1069
1070        private static final long serialVersionUID = -1659186716L;
1071
1072    /**
1073     * Constructor
1074     */
1075      public TaskInputComponent() {
1076        super();
1077      }
1078
1079    /**
1080     * Constructor
1081     */
1082      public TaskInputComponent(CodeableConcept type, DataType value) {
1083        super();
1084        this.setType(type);
1085        this.setValue(value);
1086      }
1087
1088        /**
1089         * @return {@link #type} (A code or description indicating how the input is intended to be used as part of the task execution.)
1090         */
1091        public CodeableConcept getType() { 
1092          if (this.type == null)
1093            if (Configuration.errorOnAutoCreate())
1094              throw new Error("Attempt to auto-create TaskInputComponent.type");
1095            else if (Configuration.doAutoCreate())
1096              this.type = new CodeableConcept(); // cc
1097          return this.type;
1098        }
1099
1100        public boolean hasType() { 
1101          return this.type != null && !this.type.isEmpty();
1102        }
1103
1104        /**
1105         * @param value {@link #type} (A code or description indicating how the input is intended to be used as part of the task execution.)
1106         */
1107        public TaskInputComponent setType(CodeableConcept value) { 
1108          this.type = value;
1109          return this;
1110        }
1111
1112        /**
1113         * @return {@link #value} (The value of the input parameter as a basic type.)
1114         */
1115        public DataType getValue() { 
1116          return this.value;
1117        }
1118
1119        /**
1120         * @return {@link #value} (The value of the input parameter as a basic type.)
1121         */
1122        public Base64BinaryType getValueBase64BinaryType() throws FHIRException { 
1123          if (this.value == null)
1124            this.value = new Base64BinaryType();
1125          if (!(this.value instanceof Base64BinaryType))
1126            throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.value.getClass().getName()+" was encountered");
1127          return (Base64BinaryType) this.value;
1128        }
1129
1130        public boolean hasValueBase64BinaryType() { 
1131          return this != null && this.value instanceof Base64BinaryType;
1132        }
1133
1134        /**
1135         * @return {@link #value} (The value of the input parameter as a basic type.)
1136         */
1137        public BooleanType getValueBooleanType() throws FHIRException { 
1138          if (this.value == null)
1139            this.value = new BooleanType();
1140          if (!(this.value instanceof BooleanType))
1141            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
1142          return (BooleanType) this.value;
1143        }
1144
1145        public boolean hasValueBooleanType() { 
1146          return this != null && this.value instanceof BooleanType;
1147        }
1148
1149        /**
1150         * @return {@link #value} (The value of the input parameter as a basic type.)
1151         */
1152        public CanonicalType getValueCanonicalType() throws FHIRException { 
1153          if (this.value == null)
1154            this.value = new CanonicalType();
1155          if (!(this.value instanceof CanonicalType))
1156            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.value.getClass().getName()+" was encountered");
1157          return (CanonicalType) this.value;
1158        }
1159
1160        public boolean hasValueCanonicalType() { 
1161          return this != null && this.value instanceof CanonicalType;
1162        }
1163
1164        /**
1165         * @return {@link #value} (The value of the input parameter as a basic type.)
1166         */
1167        public CodeType getValueCodeType() throws FHIRException { 
1168          if (this.value == null)
1169            this.value = new CodeType();
1170          if (!(this.value instanceof CodeType))
1171            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
1172          return (CodeType) this.value;
1173        }
1174
1175        public boolean hasValueCodeType() { 
1176          return this != null && this.value instanceof CodeType;
1177        }
1178
1179        /**
1180         * @return {@link #value} (The value of the input parameter as a basic type.)
1181         */
1182        public DateType getValueDateType() throws FHIRException { 
1183          if (this.value == null)
1184            this.value = new DateType();
1185          if (!(this.value instanceof DateType))
1186            throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.value.getClass().getName()+" was encountered");
1187          return (DateType) this.value;
1188        }
1189
1190        public boolean hasValueDateType() { 
1191          return this != null && this.value instanceof DateType;
1192        }
1193
1194        /**
1195         * @return {@link #value} (The value of the input parameter as a basic type.)
1196         */
1197        public DateTimeType getValueDateTimeType() throws FHIRException { 
1198          if (this.value == null)
1199            this.value = new DateTimeType();
1200          if (!(this.value instanceof DateTimeType))
1201            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
1202          return (DateTimeType) this.value;
1203        }
1204
1205        public boolean hasValueDateTimeType() { 
1206          return this != null && this.value instanceof DateTimeType;
1207        }
1208
1209        /**
1210         * @return {@link #value} (The value of the input parameter as a basic type.)
1211         */
1212        public DecimalType getValueDecimalType() throws FHIRException { 
1213          if (this.value == null)
1214            this.value = new DecimalType();
1215          if (!(this.value instanceof DecimalType))
1216            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
1217          return (DecimalType) this.value;
1218        }
1219
1220        public boolean hasValueDecimalType() { 
1221          return this != null && this.value instanceof DecimalType;
1222        }
1223
1224        /**
1225         * @return {@link #value} (The value of the input parameter as a basic type.)
1226         */
1227        public IdType getValueIdType() throws FHIRException { 
1228          if (this.value == null)
1229            this.value = new IdType();
1230          if (!(this.value instanceof IdType))
1231            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.value.getClass().getName()+" was encountered");
1232          return (IdType) this.value;
1233        }
1234
1235        public boolean hasValueIdType() { 
1236          return this != null && this.value instanceof IdType;
1237        }
1238
1239        /**
1240         * @return {@link #value} (The value of the input parameter as a basic type.)
1241         */
1242        public InstantType getValueInstantType() throws FHIRException { 
1243          if (this.value == null)
1244            this.value = new InstantType();
1245          if (!(this.value instanceof InstantType))
1246            throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.value.getClass().getName()+" was encountered");
1247          return (InstantType) this.value;
1248        }
1249
1250        public boolean hasValueInstantType() { 
1251          return this != null && this.value instanceof InstantType;
1252        }
1253
1254        /**
1255         * @return {@link #value} (The value of the input parameter as a basic type.)
1256         */
1257        public IntegerType getValueIntegerType() throws FHIRException { 
1258          if (this.value == null)
1259            this.value = new IntegerType();
1260          if (!(this.value instanceof IntegerType))
1261            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
1262          return (IntegerType) this.value;
1263        }
1264
1265        public boolean hasValueIntegerType() { 
1266          return this != null && this.value instanceof IntegerType;
1267        }
1268
1269        /**
1270         * @return {@link #value} (The value of the input parameter as a basic type.)
1271         */
1272        public Integer64Type getValueInteger64Type() throws FHIRException { 
1273          if (this.value == null)
1274            this.value = new Integer64Type();
1275          if (!(this.value instanceof Integer64Type))
1276            throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.value.getClass().getName()+" was encountered");
1277          return (Integer64Type) this.value;
1278        }
1279
1280        public boolean hasValueInteger64Type() { 
1281          return this != null && this.value instanceof Integer64Type;
1282        }
1283
1284        /**
1285         * @return {@link #value} (The value of the input parameter as a basic type.)
1286         */
1287        public MarkdownType getValueMarkdownType() throws FHIRException { 
1288          if (this.value == null)
1289            this.value = new MarkdownType();
1290          if (!(this.value instanceof MarkdownType))
1291            throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.value.getClass().getName()+" was encountered");
1292          return (MarkdownType) this.value;
1293        }
1294
1295        public boolean hasValueMarkdownType() { 
1296          return this != null && this.value instanceof MarkdownType;
1297        }
1298
1299        /**
1300         * @return {@link #value} (The value of the input parameter as a basic type.)
1301         */
1302        public OidType getValueOidType() throws FHIRException { 
1303          if (this.value == null)
1304            this.value = new OidType();
1305          if (!(this.value instanceof OidType))
1306            throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.value.getClass().getName()+" was encountered");
1307          return (OidType) this.value;
1308        }
1309
1310        public boolean hasValueOidType() { 
1311          return this != null && this.value instanceof OidType;
1312        }
1313
1314        /**
1315         * @return {@link #value} (The value of the input parameter as a basic type.)
1316         */
1317        public PositiveIntType getValuePositiveIntType() throws FHIRException { 
1318          if (this.value == null)
1319            this.value = new PositiveIntType();
1320          if (!(this.value instanceof PositiveIntType))
1321            throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.value.getClass().getName()+" was encountered");
1322          return (PositiveIntType) this.value;
1323        }
1324
1325        public boolean hasValuePositiveIntType() { 
1326          return this != null && this.value instanceof PositiveIntType;
1327        }
1328
1329        /**
1330         * @return {@link #value} (The value of the input parameter as a basic type.)
1331         */
1332        public StringType getValueStringType() throws FHIRException { 
1333          if (this.value == null)
1334            this.value = new StringType();
1335          if (!(this.value instanceof StringType))
1336            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
1337          return (StringType) this.value;
1338        }
1339
1340        public boolean hasValueStringType() { 
1341          return this != null && this.value instanceof StringType;
1342        }
1343
1344        /**
1345         * @return {@link #value} (The value of the input parameter as a basic type.)
1346         */
1347        public TimeType getValueTimeType() throws FHIRException { 
1348          if (this.value == null)
1349            this.value = new TimeType();
1350          if (!(this.value instanceof TimeType))
1351            throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.value.getClass().getName()+" was encountered");
1352          return (TimeType) this.value;
1353        }
1354
1355        public boolean hasValueTimeType() { 
1356          return this != null && this.value instanceof TimeType;
1357        }
1358
1359        /**
1360         * @return {@link #value} (The value of the input parameter as a basic type.)
1361         */
1362        public UnsignedIntType getValueUnsignedIntType() throws FHIRException { 
1363          if (this.value == null)
1364            this.value = new UnsignedIntType();
1365          if (!(this.value instanceof UnsignedIntType))
1366            throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.value.getClass().getName()+" was encountered");
1367          return (UnsignedIntType) this.value;
1368        }
1369
1370        public boolean hasValueUnsignedIntType() { 
1371          return this != null && this.value instanceof UnsignedIntType;
1372        }
1373
1374        /**
1375         * @return {@link #value} (The value of the input parameter as a basic type.)
1376         */
1377        public UriType getValueUriType() throws FHIRException { 
1378          if (this.value == null)
1379            this.value = new UriType();
1380          if (!(this.value instanceof UriType))
1381            throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.value.getClass().getName()+" was encountered");
1382          return (UriType) this.value;
1383        }
1384
1385        public boolean hasValueUriType() { 
1386          return this != null && this.value instanceof UriType;
1387        }
1388
1389        /**
1390         * @return {@link #value} (The value of the input parameter as a basic type.)
1391         */
1392        public UrlType getValueUrlType() throws FHIRException { 
1393          if (this.value == null)
1394            this.value = new UrlType();
1395          if (!(this.value instanceof UrlType))
1396            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.value.getClass().getName()+" was encountered");
1397          return (UrlType) this.value;
1398        }
1399
1400        public boolean hasValueUrlType() { 
1401          return this != null && this.value instanceof UrlType;
1402        }
1403
1404        /**
1405         * @return {@link #value} (The value of the input parameter as a basic type.)
1406         */
1407        public UuidType getValueUuidType() throws FHIRException { 
1408          if (this.value == null)
1409            this.value = new UuidType();
1410          if (!(this.value instanceof UuidType))
1411            throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.value.getClass().getName()+" was encountered");
1412          return (UuidType) this.value;
1413        }
1414
1415        public boolean hasValueUuidType() { 
1416          return this != null && this.value instanceof UuidType;
1417        }
1418
1419        /**
1420         * @return {@link #value} (The value of the input parameter as a basic type.)
1421         */
1422        public Address getValueAddress() throws FHIRException { 
1423          if (this.value == null)
1424            this.value = new Address();
1425          if (!(this.value instanceof Address))
1426            throw new FHIRException("Type mismatch: the type Address was expected, but "+this.value.getClass().getName()+" was encountered");
1427          return (Address) this.value;
1428        }
1429
1430        public boolean hasValueAddress() { 
1431          return this != null && this.value instanceof Address;
1432        }
1433
1434        /**
1435         * @return {@link #value} (The value of the input parameter as a basic type.)
1436         */
1437        public Age getValueAge() throws FHIRException { 
1438          if (this.value == null)
1439            this.value = new Age();
1440          if (!(this.value instanceof Age))
1441            throw new FHIRException("Type mismatch: the type Age was expected, but "+this.value.getClass().getName()+" was encountered");
1442          return (Age) this.value;
1443        }
1444
1445        public boolean hasValueAge() { 
1446          return this != null && this.value instanceof Age;
1447        }
1448
1449        /**
1450         * @return {@link #value} (The value of the input parameter as a basic type.)
1451         */
1452        public Annotation getValueAnnotation() throws FHIRException { 
1453          if (this.value == null)
1454            this.value = new Annotation();
1455          if (!(this.value instanceof Annotation))
1456            throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.value.getClass().getName()+" was encountered");
1457          return (Annotation) this.value;
1458        }
1459
1460        public boolean hasValueAnnotation() { 
1461          return this != null && this.value instanceof Annotation;
1462        }
1463
1464        /**
1465         * @return {@link #value} (The value of the input parameter as a basic type.)
1466         */
1467        public Attachment getValueAttachment() throws FHIRException { 
1468          if (this.value == null)
1469            this.value = new Attachment();
1470          if (!(this.value instanceof Attachment))
1471            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.value.getClass().getName()+" was encountered");
1472          return (Attachment) this.value;
1473        }
1474
1475        public boolean hasValueAttachment() { 
1476          return this != null && this.value instanceof Attachment;
1477        }
1478
1479        /**
1480         * @return {@link #value} (The value of the input parameter as a basic type.)
1481         */
1482        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
1483          if (this.value == null)
1484            this.value = new CodeableConcept();
1485          if (!(this.value instanceof CodeableConcept))
1486            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
1487          return (CodeableConcept) this.value;
1488        }
1489
1490        public boolean hasValueCodeableConcept() { 
1491          return this != null && this.value instanceof CodeableConcept;
1492        }
1493
1494        /**
1495         * @return {@link #value} (The value of the input parameter as a basic type.)
1496         */
1497        public CodeableReference getValueCodeableReference() throws FHIRException { 
1498          if (this.value == null)
1499            this.value = new CodeableReference();
1500          if (!(this.value instanceof CodeableReference))
1501            throw new FHIRException("Type mismatch: the type CodeableReference was expected, but "+this.value.getClass().getName()+" was encountered");
1502          return (CodeableReference) this.value;
1503        }
1504
1505        public boolean hasValueCodeableReference() { 
1506          return this != null && this.value instanceof CodeableReference;
1507        }
1508
1509        /**
1510         * @return {@link #value} (The value of the input parameter as a basic type.)
1511         */
1512        public Coding getValueCoding() throws FHIRException { 
1513          if (this.value == null)
1514            this.value = new Coding();
1515          if (!(this.value instanceof Coding))
1516            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
1517          return (Coding) this.value;
1518        }
1519
1520        public boolean hasValueCoding() { 
1521          return this != null && this.value instanceof Coding;
1522        }
1523
1524        /**
1525         * @return {@link #value} (The value of the input parameter as a basic type.)
1526         */
1527        public ContactPoint getValueContactPoint() throws FHIRException { 
1528          if (this.value == null)
1529            this.value = new ContactPoint();
1530          if (!(this.value instanceof ContactPoint))
1531            throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.value.getClass().getName()+" was encountered");
1532          return (ContactPoint) this.value;
1533        }
1534
1535        public boolean hasValueContactPoint() { 
1536          return this != null && this.value instanceof ContactPoint;
1537        }
1538
1539        /**
1540         * @return {@link #value} (The value of the input parameter as a basic type.)
1541         */
1542        public Count getValueCount() throws FHIRException { 
1543          if (this.value == null)
1544            this.value = new Count();
1545          if (!(this.value instanceof Count))
1546            throw new FHIRException("Type mismatch: the type Count was expected, but "+this.value.getClass().getName()+" was encountered");
1547          return (Count) this.value;
1548        }
1549
1550        public boolean hasValueCount() { 
1551          return this != null && this.value instanceof Count;
1552        }
1553
1554        /**
1555         * @return {@link #value} (The value of the input parameter as a basic type.)
1556         */
1557        public Distance getValueDistance() throws FHIRException { 
1558          if (this.value == null)
1559            this.value = new Distance();
1560          if (!(this.value instanceof Distance))
1561            throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.value.getClass().getName()+" was encountered");
1562          return (Distance) this.value;
1563        }
1564
1565        public boolean hasValueDistance() { 
1566          return this != null && this.value instanceof Distance;
1567        }
1568
1569        /**
1570         * @return {@link #value} (The value of the input parameter as a basic type.)
1571         */
1572        public Duration getValueDuration() throws FHIRException { 
1573          if (this.value == null)
1574            this.value = new Duration();
1575          if (!(this.value instanceof Duration))
1576            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.value.getClass().getName()+" was encountered");
1577          return (Duration) this.value;
1578        }
1579
1580        public boolean hasValueDuration() { 
1581          return this != null && this.value instanceof Duration;
1582        }
1583
1584        /**
1585         * @return {@link #value} (The value of the input parameter as a basic type.)
1586         */
1587        public HumanName getValueHumanName() throws FHIRException { 
1588          if (this.value == null)
1589            this.value = new HumanName();
1590          if (!(this.value instanceof HumanName))
1591            throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.value.getClass().getName()+" was encountered");
1592          return (HumanName) this.value;
1593        }
1594
1595        public boolean hasValueHumanName() { 
1596          return this != null && this.value instanceof HumanName;
1597        }
1598
1599        /**
1600         * @return {@link #value} (The value of the input parameter as a basic type.)
1601         */
1602        public Identifier getValueIdentifier() throws FHIRException { 
1603          if (this.value == null)
1604            this.value = new Identifier();
1605          if (!(this.value instanceof Identifier))
1606            throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.value.getClass().getName()+" was encountered");
1607          return (Identifier) this.value;
1608        }
1609
1610        public boolean hasValueIdentifier() { 
1611          return this != null && this.value instanceof Identifier;
1612        }
1613
1614        /**
1615         * @return {@link #value} (The value of the input parameter as a basic type.)
1616         */
1617        public Money getValueMoney() throws FHIRException { 
1618          if (this.value == null)
1619            this.value = new Money();
1620          if (!(this.value instanceof Money))
1621            throw new FHIRException("Type mismatch: the type Money was expected, but "+this.value.getClass().getName()+" was encountered");
1622          return (Money) this.value;
1623        }
1624
1625        public boolean hasValueMoney() { 
1626          return this != null && this.value instanceof Money;
1627        }
1628
1629        /**
1630         * @return {@link #value} (The value of the input parameter as a basic type.)
1631         */
1632        public Period getValuePeriod() throws FHIRException { 
1633          if (this.value == null)
1634            this.value = new Period();
1635          if (!(this.value instanceof Period))
1636            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.value.getClass().getName()+" was encountered");
1637          return (Period) this.value;
1638        }
1639
1640        public boolean hasValuePeriod() { 
1641          return this != null && this.value instanceof Period;
1642        }
1643
1644        /**
1645         * @return {@link #value} (The value of the input parameter as a basic type.)
1646         */
1647        public Quantity getValueQuantity() throws FHIRException { 
1648          if (this.value == null)
1649            this.value = new Quantity();
1650          if (!(this.value instanceof Quantity))
1651            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
1652          return (Quantity) this.value;
1653        }
1654
1655        public boolean hasValueQuantity() { 
1656          return this != null && this.value instanceof Quantity;
1657        }
1658
1659        /**
1660         * @return {@link #value} (The value of the input parameter as a basic type.)
1661         */
1662        public Range getValueRange() throws FHIRException { 
1663          if (this.value == null)
1664            this.value = new Range();
1665          if (!(this.value instanceof Range))
1666            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
1667          return (Range) this.value;
1668        }
1669
1670        public boolean hasValueRange() { 
1671          return this != null && this.value instanceof Range;
1672        }
1673
1674        /**
1675         * @return {@link #value} (The value of the input parameter as a basic type.)
1676         */
1677        public Ratio getValueRatio() throws FHIRException { 
1678          if (this.value == null)
1679            this.value = new Ratio();
1680          if (!(this.value instanceof Ratio))
1681            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.value.getClass().getName()+" was encountered");
1682          return (Ratio) this.value;
1683        }
1684
1685        public boolean hasValueRatio() { 
1686          return this != null && this.value instanceof Ratio;
1687        }
1688
1689        /**
1690         * @return {@link #value} (The value of the input parameter as a basic type.)
1691         */
1692        public RatioRange getValueRatioRange() throws FHIRException { 
1693          if (this.value == null)
1694            this.value = new RatioRange();
1695          if (!(this.value instanceof RatioRange))
1696            throw new FHIRException("Type mismatch: the type RatioRange was expected, but "+this.value.getClass().getName()+" was encountered");
1697          return (RatioRange) this.value;
1698        }
1699
1700        public boolean hasValueRatioRange() { 
1701          return this != null && this.value instanceof RatioRange;
1702        }
1703
1704        /**
1705         * @return {@link #value} (The value of the input parameter as a basic type.)
1706         */
1707        public Reference getValueReference() throws FHIRException { 
1708          if (this.value == null)
1709            this.value = new Reference();
1710          if (!(this.value instanceof Reference))
1711            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered");
1712          return (Reference) this.value;
1713        }
1714
1715        public boolean hasValueReference() { 
1716          return this != null && this.value instanceof Reference;
1717        }
1718
1719        /**
1720         * @return {@link #value} (The value of the input parameter as a basic type.)
1721         */
1722        public SampledData getValueSampledData() throws FHIRException { 
1723          if (this.value == null)
1724            this.value = new SampledData();
1725          if (!(this.value instanceof SampledData))
1726            throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.value.getClass().getName()+" was encountered");
1727          return (SampledData) this.value;
1728        }
1729
1730        public boolean hasValueSampledData() { 
1731          return this != null && this.value instanceof SampledData;
1732        }
1733
1734        /**
1735         * @return {@link #value} (The value of the input parameter as a basic type.)
1736         */
1737        public Signature getValueSignature() throws FHIRException { 
1738          if (this.value == null)
1739            this.value = new Signature();
1740          if (!(this.value instanceof Signature))
1741            throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.value.getClass().getName()+" was encountered");
1742          return (Signature) this.value;
1743        }
1744
1745        public boolean hasValueSignature() { 
1746          return this != null && this.value instanceof Signature;
1747        }
1748
1749        /**
1750         * @return {@link #value} (The value of the input parameter as a basic type.)
1751         */
1752        public Timing getValueTiming() throws FHIRException { 
1753          if (this.value == null)
1754            this.value = new Timing();
1755          if (!(this.value instanceof Timing))
1756            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.value.getClass().getName()+" was encountered");
1757          return (Timing) this.value;
1758        }
1759
1760        public boolean hasValueTiming() { 
1761          return this != null && this.value instanceof Timing;
1762        }
1763
1764        /**
1765         * @return {@link #value} (The value of the input parameter as a basic type.)
1766         */
1767        public ContactDetail getValueContactDetail() throws FHIRException { 
1768          if (this.value == null)
1769            this.value = new ContactDetail();
1770          if (!(this.value instanceof ContactDetail))
1771            throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.value.getClass().getName()+" was encountered");
1772          return (ContactDetail) this.value;
1773        }
1774
1775        public boolean hasValueContactDetail() { 
1776          return this != null && this.value instanceof ContactDetail;
1777        }
1778
1779        /**
1780         * @return {@link #value} (The value of the input parameter as a basic type.)
1781         */
1782        public DataRequirement getValueDataRequirement() throws FHIRException { 
1783          if (this.value == null)
1784            this.value = new DataRequirement();
1785          if (!(this.value instanceof DataRequirement))
1786            throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.value.getClass().getName()+" was encountered");
1787          return (DataRequirement) this.value;
1788        }
1789
1790        public boolean hasValueDataRequirement() { 
1791          return this != null && this.value instanceof DataRequirement;
1792        }
1793
1794        /**
1795         * @return {@link #value} (The value of the input parameter as a basic type.)
1796         */
1797        public Expression getValueExpression() throws FHIRException { 
1798          if (this.value == null)
1799            this.value = new Expression();
1800          if (!(this.value instanceof Expression))
1801            throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.value.getClass().getName()+" was encountered");
1802          return (Expression) this.value;
1803        }
1804
1805        public boolean hasValueExpression() { 
1806          return this != null && this.value instanceof Expression;
1807        }
1808
1809        /**
1810         * @return {@link #value} (The value of the input parameter as a basic type.)
1811         */
1812        public ParameterDefinition getValueParameterDefinition() throws FHIRException { 
1813          if (this.value == null)
1814            this.value = new ParameterDefinition();
1815          if (!(this.value instanceof ParameterDefinition))
1816            throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.value.getClass().getName()+" was encountered");
1817          return (ParameterDefinition) this.value;
1818        }
1819
1820        public boolean hasValueParameterDefinition() { 
1821          return this != null && this.value instanceof ParameterDefinition;
1822        }
1823
1824        /**
1825         * @return {@link #value} (The value of the input parameter as a basic type.)
1826         */
1827        public RelatedArtifact getValueRelatedArtifact() throws FHIRException { 
1828          if (this.value == null)
1829            this.value = new RelatedArtifact();
1830          if (!(this.value instanceof RelatedArtifact))
1831            throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.value.getClass().getName()+" was encountered");
1832          return (RelatedArtifact) this.value;
1833        }
1834
1835        public boolean hasValueRelatedArtifact() { 
1836          return this != null && this.value instanceof RelatedArtifact;
1837        }
1838
1839        /**
1840         * @return {@link #value} (The value of the input parameter as a basic type.)
1841         */
1842        public TriggerDefinition getValueTriggerDefinition() throws FHIRException { 
1843          if (this.value == null)
1844            this.value = new TriggerDefinition();
1845          if (!(this.value instanceof TriggerDefinition))
1846            throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.value.getClass().getName()+" was encountered");
1847          return (TriggerDefinition) this.value;
1848        }
1849
1850        public boolean hasValueTriggerDefinition() { 
1851          return this != null && this.value instanceof TriggerDefinition;
1852        }
1853
1854        /**
1855         * @return {@link #value} (The value of the input parameter as a basic type.)
1856         */
1857        public UsageContext getValueUsageContext() throws FHIRException { 
1858          if (this.value == null)
1859            this.value = new UsageContext();
1860          if (!(this.value instanceof UsageContext))
1861            throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.value.getClass().getName()+" was encountered");
1862          return (UsageContext) this.value;
1863        }
1864
1865        public boolean hasValueUsageContext() { 
1866          return this != null && this.value instanceof UsageContext;
1867        }
1868
1869        /**
1870         * @return {@link #value} (The value of the input parameter as a basic type.)
1871         */
1872        public Availability getValueAvailability() throws FHIRException { 
1873          if (this.value == null)
1874            this.value = new Availability();
1875          if (!(this.value instanceof Availability))
1876            throw new FHIRException("Type mismatch: the type Availability was expected, but "+this.value.getClass().getName()+" was encountered");
1877          return (Availability) this.value;
1878        }
1879
1880        public boolean hasValueAvailability() { 
1881          return this != null && this.value instanceof Availability;
1882        }
1883
1884        /**
1885         * @return {@link #value} (The value of the input parameter as a basic type.)
1886         */
1887        public ExtendedContactDetail getValueExtendedContactDetail() throws FHIRException { 
1888          if (this.value == null)
1889            this.value = new ExtendedContactDetail();
1890          if (!(this.value instanceof ExtendedContactDetail))
1891            throw new FHIRException("Type mismatch: the type ExtendedContactDetail was expected, but "+this.value.getClass().getName()+" was encountered");
1892          return (ExtendedContactDetail) this.value;
1893        }
1894
1895        public boolean hasValueExtendedContactDetail() { 
1896          return this != null && this.value instanceof ExtendedContactDetail;
1897        }
1898
1899        /**
1900         * @return {@link #value} (The value of the input parameter as a basic type.)
1901         */
1902        public Dosage getValueDosage() throws FHIRException { 
1903          if (this.value == null)
1904            this.value = new Dosage();
1905          if (!(this.value instanceof Dosage))
1906            throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.value.getClass().getName()+" was encountered");
1907          return (Dosage) this.value;
1908        }
1909
1910        public boolean hasValueDosage() { 
1911          return this != null && this.value instanceof Dosage;
1912        }
1913
1914        /**
1915         * @return {@link #value} (The value of the input parameter as a basic type.)
1916         */
1917        public Meta getValueMeta() throws FHIRException { 
1918          if (this.value == null)
1919            this.value = new Meta();
1920          if (!(this.value instanceof Meta))
1921            throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.value.getClass().getName()+" was encountered");
1922          return (Meta) this.value;
1923        }
1924
1925        public boolean hasValueMeta() { 
1926          return this != null && this.value instanceof Meta;
1927        }
1928
1929        public boolean hasValue() { 
1930          return this.value != null && !this.value.isEmpty();
1931        }
1932
1933        /**
1934         * @param value {@link #value} (The value of the input parameter as a basic type.)
1935         */
1936        public TaskInputComponent setValue(DataType value) { 
1937          if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof CodeableReference || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof RatioRange || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Availability || value instanceof ExtendedContactDetail || value instanceof Dosage || value instanceof Meta))
1938            throw new FHIRException("Not the right type for Task.input.value[x]: "+value.fhirType());
1939          this.value = value;
1940          return this;
1941        }
1942
1943        protected void listChildren(List<Property> children) {
1944          super.listChildren(children);
1945          children.add(new Property("type", "CodeableConcept", "A code or description indicating how the input is intended to be used as part of the task execution.", 0, 1, type));
1946          children.add(new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value of the input parameter as a basic type.", 0, 1, value));
1947        }
1948
1949        @Override
1950        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1951          switch (_hash) {
1952          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "A code or description indicating how the input is intended to be used as part of the task execution.", 0, 1, type);
1953          case -1410166417: /*value[x]*/  return new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value of the input parameter as a basic type.", 0, 1, value);
1954          case 111972721: /*value*/  return new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value of the input parameter as a basic type.", 0, 1, value);
1955          case -1535024575: /*valueBase64Binary*/  return new Property("value[x]", "base64Binary", "The value of the input parameter as a basic type.", 0, 1, value);
1956          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of the input parameter as a basic type.", 0, 1, value);
1957          case -786218365: /*valueCanonical*/  return new Property("value[x]", "canonical", "The value of the input parameter as a basic type.", 0, 1, value);
1958          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of the input parameter as a basic type.", 0, 1, value);
1959          case -766192449: /*valueDate*/  return new Property("value[x]", "date", "The value of the input parameter as a basic type.", 0, 1, value);
1960          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of the input parameter as a basic type.", 0, 1, value);
1961          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of the input parameter as a basic type.", 0, 1, value);
1962          case 231604844: /*valueId*/  return new Property("value[x]", "id", "The value of the input parameter as a basic type.", 0, 1, value);
1963          case -1668687056: /*valueInstant*/  return new Property("value[x]", "instant", "The value of the input parameter as a basic type.", 0, 1, value);
1964          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of the input parameter as a basic type.", 0, 1, value);
1965          case -1122120181: /*valueInteger64*/  return new Property("value[x]", "integer64", "The value of the input parameter as a basic type.", 0, 1, value);
1966          case -497880704: /*valueMarkdown*/  return new Property("value[x]", "markdown", "The value of the input parameter as a basic type.", 0, 1, value);
1967          case -1410178407: /*valueOid*/  return new Property("value[x]", "oid", "The value of the input parameter as a basic type.", 0, 1, value);
1968          case -1249932027: /*valuePositiveInt*/  return new Property("value[x]", "positiveInt", "The value of the input parameter as a basic type.", 0, 1, value);
1969          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of the input parameter as a basic type.", 0, 1, value);
1970          case -765708322: /*valueTime*/  return new Property("value[x]", "time", "The value of the input parameter as a basic type.", 0, 1, value);
1971          case 26529417: /*valueUnsignedInt*/  return new Property("value[x]", "unsignedInt", "The value of the input parameter as a basic type.", 0, 1, value);
1972          case -1410172357: /*valueUri*/  return new Property("value[x]", "uri", "The value of the input parameter as a basic type.", 0, 1, value);
1973          case -1410172354: /*valueUrl*/  return new Property("value[x]", "url", "The value of the input parameter as a basic type.", 0, 1, value);
1974          case -765667124: /*valueUuid*/  return new Property("value[x]", "uuid", "The value of the input parameter as a basic type.", 0, 1, value);
1975          case -478981821: /*valueAddress*/  return new Property("value[x]", "Address", "The value of the input parameter as a basic type.", 0, 1, value);
1976          case -1410191922: /*valueAge*/  return new Property("value[x]", "Age", "The value of the input parameter as a basic type.", 0, 1, value);
1977          case -67108992: /*valueAnnotation*/  return new Property("value[x]", "Annotation", "The value of the input parameter as a basic type.", 0, 1, value);
1978          case -475566732: /*valueAttachment*/  return new Property("value[x]", "Attachment", "The value of the input parameter as a basic type.", 0, 1, value);
1979          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "The value of the input parameter as a basic type.", 0, 1, value);
1980          case -257955629: /*valueCodeableReference*/  return new Property("value[x]", "CodeableReference", "The value of the input parameter as a basic type.", 0, 1, value);
1981          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "The value of the input parameter as a basic type.", 0, 1, value);
1982          case 944904545: /*valueContactPoint*/  return new Property("value[x]", "ContactPoint", "The value of the input parameter as a basic type.", 0, 1, value);
1983          case 2017332766: /*valueCount*/  return new Property("value[x]", "Count", "The value of the input parameter as a basic type.", 0, 1, value);
1984          case -456359802: /*valueDistance*/  return new Property("value[x]", "Distance", "The value of the input parameter as a basic type.", 0, 1, value);
1985          case 1558135333: /*valueDuration*/  return new Property("value[x]", "Duration", "The value of the input parameter as a basic type.", 0, 1, value);
1986          case -2026205465: /*valueHumanName*/  return new Property("value[x]", "HumanName", "The value of the input parameter as a basic type.", 0, 1, value);
1987          case -130498310: /*valueIdentifier*/  return new Property("value[x]", "Identifier", "The value of the input parameter as a basic type.", 0, 1, value);
1988          case 2026560975: /*valueMoney*/  return new Property("value[x]", "Money", "The value of the input parameter as a basic type.", 0, 1, value);
1989          case -1524344174: /*valuePeriod*/  return new Property("value[x]", "Period", "The value of the input parameter as a basic type.", 0, 1, value);
1990          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "The value of the input parameter as a basic type.", 0, 1, value);
1991          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "The value of the input parameter as a basic type.", 0, 1, value);
1992          case 2030767386: /*valueRatio*/  return new Property("value[x]", "Ratio", "The value of the input parameter as a basic type.", 0, 1, value);
1993          case -706454461: /*valueRatioRange*/  return new Property("value[x]", "RatioRange", "The value of the input parameter as a basic type.", 0, 1, value);
1994          case 1755241690: /*valueReference*/  return new Property("value[x]", "Reference", "The value of the input parameter as a basic type.", 0, 1, value);
1995          case -962229101: /*valueSampledData*/  return new Property("value[x]", "SampledData", "The value of the input parameter as a basic type.", 0, 1, value);
1996          case -540985785: /*valueSignature*/  return new Property("value[x]", "Signature", "The value of the input parameter as a basic type.", 0, 1, value);
1997          case -1406282469: /*valueTiming*/  return new Property("value[x]", "Timing", "The value of the input parameter as a basic type.", 0, 1, value);
1998          case -1125200224: /*valueContactDetail*/  return new Property("value[x]", "ContactDetail", "The value of the input parameter as a basic type.", 0, 1, value);
1999          case 1710554248: /*valueDataRequirement*/  return new Property("value[x]", "DataRequirement", "The value of the input parameter as a basic type.", 0, 1, value);
2000          case -307517719: /*valueExpression*/  return new Property("value[x]", "Expression", "The value of the input parameter as a basic type.", 0, 1, value);
2001          case 1387478187: /*valueParameterDefinition*/  return new Property("value[x]", "ParameterDefinition", "The value of the input parameter as a basic type.", 0, 1, value);
2002          case 1748214124: /*valueRelatedArtifact*/  return new Property("value[x]", "RelatedArtifact", "The value of the input parameter as a basic type.", 0, 1, value);
2003          case 976830394: /*valueTriggerDefinition*/  return new Property("value[x]", "TriggerDefinition", "The value of the input parameter as a basic type.", 0, 1, value);
2004          case 588000479: /*valueUsageContext*/  return new Property("value[x]", "UsageContext", "The value of the input parameter as a basic type.", 0, 1, value);
2005          case 1678530924: /*valueAvailability*/  return new Property("value[x]", "Availability", "The value of the input parameter as a basic type.", 0, 1, value);
2006          case -1567222041: /*valueExtendedContactDetail*/  return new Property("value[x]", "ExtendedContactDetail", "The value of the input parameter as a basic type.", 0, 1, value);
2007          case -1858636920: /*valueDosage*/  return new Property("value[x]", "Dosage", "The value of the input parameter as a basic type.", 0, 1, value);
2008          case -765920490: /*valueMeta*/  return new Property("value[x]", "Meta", "The value of the input parameter as a basic type.", 0, 1, value);
2009          default: return super.getNamedProperty(_hash, _name, _checkValid);
2010          }
2011
2012        }
2013
2014      @Override
2015      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2016        switch (hash) {
2017        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
2018        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
2019        default: return super.getProperty(hash, name, checkValid);
2020        }
2021
2022      }
2023
2024      @Override
2025      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2026        switch (hash) {
2027        case 3575610: // type
2028          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2029          return value;
2030        case 111972721: // value
2031          this.value = TypeConvertor.castToType(value); // DataType
2032          return value;
2033        default: return super.setProperty(hash, name, value);
2034        }
2035
2036      }
2037
2038      @Override
2039      public Base setProperty(String name, Base value) throws FHIRException {
2040        if (name.equals("type")) {
2041          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2042        } else if (name.equals("value[x]")) {
2043          this.value = TypeConvertor.castToType(value); // DataType
2044        } else
2045          return super.setProperty(name, value);
2046        return value;
2047      }
2048
2049  @Override
2050  public void removeChild(String name, Base value) throws FHIRException {
2051        if (name.equals("type")) {
2052          this.type = null;
2053        } else if (name.equals("value[x]")) {
2054          this.value = null;
2055        } else
2056          super.removeChild(name, value);
2057        
2058      }
2059
2060      @Override
2061      public Base makeProperty(int hash, String name) throws FHIRException {
2062        switch (hash) {
2063        case 3575610:  return getType();
2064        case -1410166417:  return getValue();
2065        case 111972721:  return getValue();
2066        default: return super.makeProperty(hash, name);
2067        }
2068
2069      }
2070
2071      @Override
2072      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2073        switch (hash) {
2074        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
2075        case 111972721: /*value*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "integer64", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "CodeableReference", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "RatioRange", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Availability", "ExtendedContactDetail", "Dosage", "Meta"};
2076        default: return super.getTypesForProperty(hash, name);
2077        }
2078
2079      }
2080
2081      @Override
2082      public Base addChild(String name) throws FHIRException {
2083        if (name.equals("type")) {
2084          this.type = new CodeableConcept();
2085          return this.type;
2086        }
2087        else if (name.equals("valueBase64Binary")) {
2088          this.value = new Base64BinaryType();
2089          return this.value;
2090        }
2091        else if (name.equals("valueBoolean")) {
2092          this.value = new BooleanType();
2093          return this.value;
2094        }
2095        else if (name.equals("valueCanonical")) {
2096          this.value = new CanonicalType();
2097          return this.value;
2098        }
2099        else if (name.equals("valueCode")) {
2100          this.value = new CodeType();
2101          return this.value;
2102        }
2103        else if (name.equals("valueDate")) {
2104          this.value = new DateType();
2105          return this.value;
2106        }
2107        else if (name.equals("valueDateTime")) {
2108          this.value = new DateTimeType();
2109          return this.value;
2110        }
2111        else if (name.equals("valueDecimal")) {
2112          this.value = new DecimalType();
2113          return this.value;
2114        }
2115        else if (name.equals("valueId")) {
2116          this.value = new IdType();
2117          return this.value;
2118        }
2119        else if (name.equals("valueInstant")) {
2120          this.value = new InstantType();
2121          return this.value;
2122        }
2123        else if (name.equals("valueInteger")) {
2124          this.value = new IntegerType();
2125          return this.value;
2126        }
2127        else if (name.equals("valueInteger64")) {
2128          this.value = new Integer64Type();
2129          return this.value;
2130        }
2131        else if (name.equals("valueMarkdown")) {
2132          this.value = new MarkdownType();
2133          return this.value;
2134        }
2135        else if (name.equals("valueOid")) {
2136          this.value = new OidType();
2137          return this.value;
2138        }
2139        else if (name.equals("valuePositiveInt")) {
2140          this.value = new PositiveIntType();
2141          return this.value;
2142        }
2143        else if (name.equals("valueString")) {
2144          this.value = new StringType();
2145          return this.value;
2146        }
2147        else if (name.equals("valueTime")) {
2148          this.value = new TimeType();
2149          return this.value;
2150        }
2151        else if (name.equals("valueUnsignedInt")) {
2152          this.value = new UnsignedIntType();
2153          return this.value;
2154        }
2155        else if (name.equals("valueUri")) {
2156          this.value = new UriType();
2157          return this.value;
2158        }
2159        else if (name.equals("valueUrl")) {
2160          this.value = new UrlType();
2161          return this.value;
2162        }
2163        else if (name.equals("valueUuid")) {
2164          this.value = new UuidType();
2165          return this.value;
2166        }
2167        else if (name.equals("valueAddress")) {
2168          this.value = new Address();
2169          return this.value;
2170        }
2171        else if (name.equals("valueAge")) {
2172          this.value = new Age();
2173          return this.value;
2174        }
2175        else if (name.equals("valueAnnotation")) {
2176          this.value = new Annotation();
2177          return this.value;
2178        }
2179        else if (name.equals("valueAttachment")) {
2180          this.value = new Attachment();
2181          return this.value;
2182        }
2183        else if (name.equals("valueCodeableConcept")) {
2184          this.value = new CodeableConcept();
2185          return this.value;
2186        }
2187        else if (name.equals("valueCodeableReference")) {
2188          this.value = new CodeableReference();
2189          return this.value;
2190        }
2191        else if (name.equals("valueCoding")) {
2192          this.value = new Coding();
2193          return this.value;
2194        }
2195        else if (name.equals("valueContactPoint")) {
2196          this.value = new ContactPoint();
2197          return this.value;
2198        }
2199        else if (name.equals("valueCount")) {
2200          this.value = new Count();
2201          return this.value;
2202        }
2203        else if (name.equals("valueDistance")) {
2204          this.value = new Distance();
2205          return this.value;
2206        }
2207        else if (name.equals("valueDuration")) {
2208          this.value = new Duration();
2209          return this.value;
2210        }
2211        else if (name.equals("valueHumanName")) {
2212          this.value = new HumanName();
2213          return this.value;
2214        }
2215        else if (name.equals("valueIdentifier")) {
2216          this.value = new Identifier();
2217          return this.value;
2218        }
2219        else if (name.equals("valueMoney")) {
2220          this.value = new Money();
2221          return this.value;
2222        }
2223        else if (name.equals("valuePeriod")) {
2224          this.value = new Period();
2225          return this.value;
2226        }
2227        else if (name.equals("valueQuantity")) {
2228          this.value = new Quantity();
2229          return this.value;
2230        }
2231        else if (name.equals("valueRange")) {
2232          this.value = new Range();
2233          return this.value;
2234        }
2235        else if (name.equals("valueRatio")) {
2236          this.value = new Ratio();
2237          return this.value;
2238        }
2239        else if (name.equals("valueRatioRange")) {
2240          this.value = new RatioRange();
2241          return this.value;
2242        }
2243        else if (name.equals("valueReference")) {
2244          this.value = new Reference();
2245          return this.value;
2246        }
2247        else if (name.equals("valueSampledData")) {
2248          this.value = new SampledData();
2249          return this.value;
2250        }
2251        else if (name.equals("valueSignature")) {
2252          this.value = new Signature();
2253          return this.value;
2254        }
2255        else if (name.equals("valueTiming")) {
2256          this.value = new Timing();
2257          return this.value;
2258        }
2259        else if (name.equals("valueContactDetail")) {
2260          this.value = new ContactDetail();
2261          return this.value;
2262        }
2263        else if (name.equals("valueDataRequirement")) {
2264          this.value = new DataRequirement();
2265          return this.value;
2266        }
2267        else if (name.equals("valueExpression")) {
2268          this.value = new Expression();
2269          return this.value;
2270        }
2271        else if (name.equals("valueParameterDefinition")) {
2272          this.value = new ParameterDefinition();
2273          return this.value;
2274        }
2275        else if (name.equals("valueRelatedArtifact")) {
2276          this.value = new RelatedArtifact();
2277          return this.value;
2278        }
2279        else if (name.equals("valueTriggerDefinition")) {
2280          this.value = new TriggerDefinition();
2281          return this.value;
2282        }
2283        else if (name.equals("valueUsageContext")) {
2284          this.value = new UsageContext();
2285          return this.value;
2286        }
2287        else if (name.equals("valueAvailability")) {
2288          this.value = new Availability();
2289          return this.value;
2290        }
2291        else if (name.equals("valueExtendedContactDetail")) {
2292          this.value = new ExtendedContactDetail();
2293          return this.value;
2294        }
2295        else if (name.equals("valueDosage")) {
2296          this.value = new Dosage();
2297          return this.value;
2298        }
2299        else if (name.equals("valueMeta")) {
2300          this.value = new Meta();
2301          return this.value;
2302        }
2303        else
2304          return super.addChild(name);
2305      }
2306
2307      public TaskInputComponent copy() {
2308        TaskInputComponent dst = new TaskInputComponent();
2309        copyValues(dst);
2310        return dst;
2311      }
2312
2313      public void copyValues(TaskInputComponent dst) {
2314        super.copyValues(dst);
2315        dst.type = type == null ? null : type.copy();
2316        dst.value = value == null ? null : value.copy();
2317      }
2318
2319      @Override
2320      public boolean equalsDeep(Base other_) {
2321        if (!super.equalsDeep(other_))
2322          return false;
2323        if (!(other_ instanceof TaskInputComponent))
2324          return false;
2325        TaskInputComponent o = (TaskInputComponent) other_;
2326        return compareDeep(type, o.type, true) && compareDeep(value, o.value, true);
2327      }
2328
2329      @Override
2330      public boolean equalsShallow(Base other_) {
2331        if (!super.equalsShallow(other_))
2332          return false;
2333        if (!(other_ instanceof TaskInputComponent))
2334          return false;
2335        TaskInputComponent o = (TaskInputComponent) other_;
2336        return true;
2337      }
2338
2339      public boolean isEmpty() {
2340        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, value);
2341      }
2342
2343  public String fhirType() {
2344    return "Task.input";
2345
2346  }
2347
2348  }
2349
2350    @Block()
2351    public static class TaskOutputComponent extends BackboneElement implements IBaseBackboneElement {
2352        /**
2353         * The name of the Output parameter.
2354         */
2355        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
2356        @Description(shortDefinition="Label for output", formalDefinition="The name of the Output parameter." )
2357        protected CodeableConcept type;
2358
2359        /**
2360         * The value of the Output parameter as a basic type.
2361         */
2362        @Child(name = "value", type = {Base64BinaryType.class, BooleanType.class, CanonicalType.class, CodeType.class, DateType.class, DateTimeType.class, DecimalType.class, IdType.class, InstantType.class, IntegerType.class, Integer64Type.class, MarkdownType.class, OidType.class, PositiveIntType.class, StringType.class, TimeType.class, UnsignedIntType.class, UriType.class, UrlType.class, UuidType.class, Address.class, Age.class, Annotation.class, Attachment.class, CodeableConcept.class, CodeableReference.class, Coding.class, ContactPoint.class, Count.class, Distance.class, Duration.class, HumanName.class, Identifier.class, Money.class, Period.class, Quantity.class, Range.class, Ratio.class, RatioRange.class, Reference.class, SampledData.class, Signature.class, Timing.class, ContactDetail.class, DataRequirement.class, Expression.class, ParameterDefinition.class, RelatedArtifact.class, TriggerDefinition.class, UsageContext.class, Availability.class, ExtendedContactDetail.class, Dosage.class, Meta.class}, order=2, min=1, max=1, modifier=false, summary=false)
2363        @Description(shortDefinition="Result of output", formalDefinition="The value of the Output parameter as a basic type." )
2364        protected DataType value;
2365
2366        private static final long serialVersionUID = -1659186716L;
2367
2368    /**
2369     * Constructor
2370     */
2371      public TaskOutputComponent() {
2372        super();
2373      }
2374
2375    /**
2376     * Constructor
2377     */
2378      public TaskOutputComponent(CodeableConcept type, DataType value) {
2379        super();
2380        this.setType(type);
2381        this.setValue(value);
2382      }
2383
2384        /**
2385         * @return {@link #type} (The name of the Output parameter.)
2386         */
2387        public CodeableConcept getType() { 
2388          if (this.type == null)
2389            if (Configuration.errorOnAutoCreate())
2390              throw new Error("Attempt to auto-create TaskOutputComponent.type");
2391            else if (Configuration.doAutoCreate())
2392              this.type = new CodeableConcept(); // cc
2393          return this.type;
2394        }
2395
2396        public boolean hasType() { 
2397          return this.type != null && !this.type.isEmpty();
2398        }
2399
2400        /**
2401         * @param value {@link #type} (The name of the Output parameter.)
2402         */
2403        public TaskOutputComponent setType(CodeableConcept value) { 
2404          this.type = value;
2405          return this;
2406        }
2407
2408        /**
2409         * @return {@link #value} (The value of the Output parameter as a basic type.)
2410         */
2411        public DataType getValue() { 
2412          return this.value;
2413        }
2414
2415        /**
2416         * @return {@link #value} (The value of the Output parameter as a basic type.)
2417         */
2418        public Base64BinaryType getValueBase64BinaryType() throws FHIRException { 
2419          if (this.value == null)
2420            this.value = new Base64BinaryType();
2421          if (!(this.value instanceof Base64BinaryType))
2422            throw new FHIRException("Type mismatch: the type Base64BinaryType was expected, but "+this.value.getClass().getName()+" was encountered");
2423          return (Base64BinaryType) this.value;
2424        }
2425
2426        public boolean hasValueBase64BinaryType() { 
2427          return this != null && this.value instanceof Base64BinaryType;
2428        }
2429
2430        /**
2431         * @return {@link #value} (The value of the Output parameter as a basic type.)
2432         */
2433        public BooleanType getValueBooleanType() throws FHIRException { 
2434          if (this.value == null)
2435            this.value = new BooleanType();
2436          if (!(this.value instanceof BooleanType))
2437            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
2438          return (BooleanType) this.value;
2439        }
2440
2441        public boolean hasValueBooleanType() { 
2442          return this != null && this.value instanceof BooleanType;
2443        }
2444
2445        /**
2446         * @return {@link #value} (The value of the Output parameter as a basic type.)
2447         */
2448        public CanonicalType getValueCanonicalType() throws FHIRException { 
2449          if (this.value == null)
2450            this.value = new CanonicalType();
2451          if (!(this.value instanceof CanonicalType))
2452            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.value.getClass().getName()+" was encountered");
2453          return (CanonicalType) this.value;
2454        }
2455
2456        public boolean hasValueCanonicalType() { 
2457          return this != null && this.value instanceof CanonicalType;
2458        }
2459
2460        /**
2461         * @return {@link #value} (The value of the Output parameter as a basic type.)
2462         */
2463        public CodeType getValueCodeType() throws FHIRException { 
2464          if (this.value == null)
2465            this.value = new CodeType();
2466          if (!(this.value instanceof CodeType))
2467            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
2468          return (CodeType) this.value;
2469        }
2470
2471        public boolean hasValueCodeType() { 
2472          return this != null && this.value instanceof CodeType;
2473        }
2474
2475        /**
2476         * @return {@link #value} (The value of the Output parameter as a basic type.)
2477         */
2478        public DateType getValueDateType() throws FHIRException { 
2479          if (this.value == null)
2480            this.value = new DateType();
2481          if (!(this.value instanceof DateType))
2482            throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.value.getClass().getName()+" was encountered");
2483          return (DateType) this.value;
2484        }
2485
2486        public boolean hasValueDateType() { 
2487          return this != null && this.value instanceof DateType;
2488        }
2489
2490        /**
2491         * @return {@link #value} (The value of the Output parameter as a basic type.)
2492         */
2493        public DateTimeType getValueDateTimeType() throws FHIRException { 
2494          if (this.value == null)
2495            this.value = new DateTimeType();
2496          if (!(this.value instanceof DateTimeType))
2497            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
2498          return (DateTimeType) this.value;
2499        }
2500
2501        public boolean hasValueDateTimeType() { 
2502          return this != null && this.value instanceof DateTimeType;
2503        }
2504
2505        /**
2506         * @return {@link #value} (The value of the Output parameter as a basic type.)
2507         */
2508        public DecimalType getValueDecimalType() throws FHIRException { 
2509          if (this.value == null)
2510            this.value = new DecimalType();
2511          if (!(this.value instanceof DecimalType))
2512            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
2513          return (DecimalType) this.value;
2514        }
2515
2516        public boolean hasValueDecimalType() { 
2517          return this != null && this.value instanceof DecimalType;
2518        }
2519
2520        /**
2521         * @return {@link #value} (The value of the Output parameter as a basic type.)
2522         */
2523        public IdType getValueIdType() throws FHIRException { 
2524          if (this.value == null)
2525            this.value = new IdType();
2526          if (!(this.value instanceof IdType))
2527            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.value.getClass().getName()+" was encountered");
2528          return (IdType) this.value;
2529        }
2530
2531        public boolean hasValueIdType() { 
2532          return this != null && this.value instanceof IdType;
2533        }
2534
2535        /**
2536         * @return {@link #value} (The value of the Output parameter as a basic type.)
2537         */
2538        public InstantType getValueInstantType() throws FHIRException { 
2539          if (this.value == null)
2540            this.value = new InstantType();
2541          if (!(this.value instanceof InstantType))
2542            throw new FHIRException("Type mismatch: the type InstantType was expected, but "+this.value.getClass().getName()+" was encountered");
2543          return (InstantType) this.value;
2544        }
2545
2546        public boolean hasValueInstantType() { 
2547          return this != null && this.value instanceof InstantType;
2548        }
2549
2550        /**
2551         * @return {@link #value} (The value of the Output parameter as a basic type.)
2552         */
2553        public IntegerType getValueIntegerType() throws FHIRException { 
2554          if (this.value == null)
2555            this.value = new IntegerType();
2556          if (!(this.value instanceof IntegerType))
2557            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
2558          return (IntegerType) this.value;
2559        }
2560
2561        public boolean hasValueIntegerType() { 
2562          return this != null && this.value instanceof IntegerType;
2563        }
2564
2565        /**
2566         * @return {@link #value} (The value of the Output parameter as a basic type.)
2567         */
2568        public Integer64Type getValueInteger64Type() throws FHIRException { 
2569          if (this.value == null)
2570            this.value = new Integer64Type();
2571          if (!(this.value instanceof Integer64Type))
2572            throw new FHIRException("Type mismatch: the type Integer64Type was expected, but "+this.value.getClass().getName()+" was encountered");
2573          return (Integer64Type) this.value;
2574        }
2575
2576        public boolean hasValueInteger64Type() { 
2577          return this != null && this.value instanceof Integer64Type;
2578        }
2579
2580        /**
2581         * @return {@link #value} (The value of the Output parameter as a basic type.)
2582         */
2583        public MarkdownType getValueMarkdownType() throws FHIRException { 
2584          if (this.value == null)
2585            this.value = new MarkdownType();
2586          if (!(this.value instanceof MarkdownType))
2587            throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.value.getClass().getName()+" was encountered");
2588          return (MarkdownType) this.value;
2589        }
2590
2591        public boolean hasValueMarkdownType() { 
2592          return this != null && this.value instanceof MarkdownType;
2593        }
2594
2595        /**
2596         * @return {@link #value} (The value of the Output parameter as a basic type.)
2597         */
2598        public OidType getValueOidType() throws FHIRException { 
2599          if (this.value == null)
2600            this.value = new OidType();
2601          if (!(this.value instanceof OidType))
2602            throw new FHIRException("Type mismatch: the type OidType was expected, but "+this.value.getClass().getName()+" was encountered");
2603          return (OidType) this.value;
2604        }
2605
2606        public boolean hasValueOidType() { 
2607          return this != null && this.value instanceof OidType;
2608        }
2609
2610        /**
2611         * @return {@link #value} (The value of the Output parameter as a basic type.)
2612         */
2613        public PositiveIntType getValuePositiveIntType() throws FHIRException { 
2614          if (this.value == null)
2615            this.value = new PositiveIntType();
2616          if (!(this.value instanceof PositiveIntType))
2617            throw new FHIRException("Type mismatch: the type PositiveIntType was expected, but "+this.value.getClass().getName()+" was encountered");
2618          return (PositiveIntType) this.value;
2619        }
2620
2621        public boolean hasValuePositiveIntType() { 
2622          return this != null && this.value instanceof PositiveIntType;
2623        }
2624
2625        /**
2626         * @return {@link #value} (The value of the Output parameter as a basic type.)
2627         */
2628        public StringType getValueStringType() throws FHIRException { 
2629          if (this.value == null)
2630            this.value = new StringType();
2631          if (!(this.value instanceof StringType))
2632            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
2633          return (StringType) this.value;
2634        }
2635
2636        public boolean hasValueStringType() { 
2637          return this != null && this.value instanceof StringType;
2638        }
2639
2640        /**
2641         * @return {@link #value} (The value of the Output parameter as a basic type.)
2642         */
2643        public TimeType getValueTimeType() throws FHIRException { 
2644          if (this.value == null)
2645            this.value = new TimeType();
2646          if (!(this.value instanceof TimeType))
2647            throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.value.getClass().getName()+" was encountered");
2648          return (TimeType) this.value;
2649        }
2650
2651        public boolean hasValueTimeType() { 
2652          return this != null && this.value instanceof TimeType;
2653        }
2654
2655        /**
2656         * @return {@link #value} (The value of the Output parameter as a basic type.)
2657         */
2658        public UnsignedIntType getValueUnsignedIntType() throws FHIRException { 
2659          if (this.value == null)
2660            this.value = new UnsignedIntType();
2661          if (!(this.value instanceof UnsignedIntType))
2662            throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.value.getClass().getName()+" was encountered");
2663          return (UnsignedIntType) this.value;
2664        }
2665
2666        public boolean hasValueUnsignedIntType() { 
2667          return this != null && this.value instanceof UnsignedIntType;
2668        }
2669
2670        /**
2671         * @return {@link #value} (The value of the Output parameter as a basic type.)
2672         */
2673        public UriType getValueUriType() throws FHIRException { 
2674          if (this.value == null)
2675            this.value = new UriType();
2676          if (!(this.value instanceof UriType))
2677            throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.value.getClass().getName()+" was encountered");
2678          return (UriType) this.value;
2679        }
2680
2681        public boolean hasValueUriType() { 
2682          return this != null && this.value instanceof UriType;
2683        }
2684
2685        /**
2686         * @return {@link #value} (The value of the Output parameter as a basic type.)
2687         */
2688        public UrlType getValueUrlType() throws FHIRException { 
2689          if (this.value == null)
2690            this.value = new UrlType();
2691          if (!(this.value instanceof UrlType))
2692            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.value.getClass().getName()+" was encountered");
2693          return (UrlType) this.value;
2694        }
2695
2696        public boolean hasValueUrlType() { 
2697          return this != null && this.value instanceof UrlType;
2698        }
2699
2700        /**
2701         * @return {@link #value} (The value of the Output parameter as a basic type.)
2702         */
2703        public UuidType getValueUuidType() throws FHIRException { 
2704          if (this.value == null)
2705            this.value = new UuidType();
2706          if (!(this.value instanceof UuidType))
2707            throw new FHIRException("Type mismatch: the type UuidType was expected, but "+this.value.getClass().getName()+" was encountered");
2708          return (UuidType) this.value;
2709        }
2710
2711        public boolean hasValueUuidType() { 
2712          return this != null && this.value instanceof UuidType;
2713        }
2714
2715        /**
2716         * @return {@link #value} (The value of the Output parameter as a basic type.)
2717         */
2718        public Address getValueAddress() throws FHIRException { 
2719          if (this.value == null)
2720            this.value = new Address();
2721          if (!(this.value instanceof Address))
2722            throw new FHIRException("Type mismatch: the type Address was expected, but "+this.value.getClass().getName()+" was encountered");
2723          return (Address) this.value;
2724        }
2725
2726        public boolean hasValueAddress() { 
2727          return this != null && this.value instanceof Address;
2728        }
2729
2730        /**
2731         * @return {@link #value} (The value of the Output parameter as a basic type.)
2732         */
2733        public Age getValueAge() throws FHIRException { 
2734          if (this.value == null)
2735            this.value = new Age();
2736          if (!(this.value instanceof Age))
2737            throw new FHIRException("Type mismatch: the type Age was expected, but "+this.value.getClass().getName()+" was encountered");
2738          return (Age) this.value;
2739        }
2740
2741        public boolean hasValueAge() { 
2742          return this != null && this.value instanceof Age;
2743        }
2744
2745        /**
2746         * @return {@link #value} (The value of the Output parameter as a basic type.)
2747         */
2748        public Annotation getValueAnnotation() throws FHIRException { 
2749          if (this.value == null)
2750            this.value = new Annotation();
2751          if (!(this.value instanceof Annotation))
2752            throw new FHIRException("Type mismatch: the type Annotation was expected, but "+this.value.getClass().getName()+" was encountered");
2753          return (Annotation) this.value;
2754        }
2755
2756        public boolean hasValueAnnotation() { 
2757          return this != null && this.value instanceof Annotation;
2758        }
2759
2760        /**
2761         * @return {@link #value} (The value of the Output parameter as a basic type.)
2762         */
2763        public Attachment getValueAttachment() throws FHIRException { 
2764          if (this.value == null)
2765            this.value = new Attachment();
2766          if (!(this.value instanceof Attachment))
2767            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.value.getClass().getName()+" was encountered");
2768          return (Attachment) this.value;
2769        }
2770
2771        public boolean hasValueAttachment() { 
2772          return this != null && this.value instanceof Attachment;
2773        }
2774
2775        /**
2776         * @return {@link #value} (The value of the Output parameter as a basic type.)
2777         */
2778        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
2779          if (this.value == null)
2780            this.value = new CodeableConcept();
2781          if (!(this.value instanceof CodeableConcept))
2782            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
2783          return (CodeableConcept) this.value;
2784        }
2785
2786        public boolean hasValueCodeableConcept() { 
2787          return this != null && this.value instanceof CodeableConcept;
2788        }
2789
2790        /**
2791         * @return {@link #value} (The value of the Output parameter as a basic type.)
2792         */
2793        public CodeableReference getValueCodeableReference() throws FHIRException { 
2794          if (this.value == null)
2795            this.value = new CodeableReference();
2796          if (!(this.value instanceof CodeableReference))
2797            throw new FHIRException("Type mismatch: the type CodeableReference was expected, but "+this.value.getClass().getName()+" was encountered");
2798          return (CodeableReference) this.value;
2799        }
2800
2801        public boolean hasValueCodeableReference() { 
2802          return this != null && this.value instanceof CodeableReference;
2803        }
2804
2805        /**
2806         * @return {@link #value} (The value of the Output parameter as a basic type.)
2807         */
2808        public Coding getValueCoding() throws FHIRException { 
2809          if (this.value == null)
2810            this.value = new Coding();
2811          if (!(this.value instanceof Coding))
2812            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
2813          return (Coding) this.value;
2814        }
2815
2816        public boolean hasValueCoding() { 
2817          return this != null && this.value instanceof Coding;
2818        }
2819
2820        /**
2821         * @return {@link #value} (The value of the Output parameter as a basic type.)
2822         */
2823        public ContactPoint getValueContactPoint() throws FHIRException { 
2824          if (this.value == null)
2825            this.value = new ContactPoint();
2826          if (!(this.value instanceof ContactPoint))
2827            throw new FHIRException("Type mismatch: the type ContactPoint was expected, but "+this.value.getClass().getName()+" was encountered");
2828          return (ContactPoint) this.value;
2829        }
2830
2831        public boolean hasValueContactPoint() { 
2832          return this != null && this.value instanceof ContactPoint;
2833        }
2834
2835        /**
2836         * @return {@link #value} (The value of the Output parameter as a basic type.)
2837         */
2838        public Count getValueCount() throws FHIRException { 
2839          if (this.value == null)
2840            this.value = new Count();
2841          if (!(this.value instanceof Count))
2842            throw new FHIRException("Type mismatch: the type Count was expected, but "+this.value.getClass().getName()+" was encountered");
2843          return (Count) this.value;
2844        }
2845
2846        public boolean hasValueCount() { 
2847          return this != null && this.value instanceof Count;
2848        }
2849
2850        /**
2851         * @return {@link #value} (The value of the Output parameter as a basic type.)
2852         */
2853        public Distance getValueDistance() throws FHIRException { 
2854          if (this.value == null)
2855            this.value = new Distance();
2856          if (!(this.value instanceof Distance))
2857            throw new FHIRException("Type mismatch: the type Distance was expected, but "+this.value.getClass().getName()+" was encountered");
2858          return (Distance) this.value;
2859        }
2860
2861        public boolean hasValueDistance() { 
2862          return this != null && this.value instanceof Distance;
2863        }
2864
2865        /**
2866         * @return {@link #value} (The value of the Output parameter as a basic type.)
2867         */
2868        public Duration getValueDuration() throws FHIRException { 
2869          if (this.value == null)
2870            this.value = new Duration();
2871          if (!(this.value instanceof Duration))
2872            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.value.getClass().getName()+" was encountered");
2873          return (Duration) this.value;
2874        }
2875
2876        public boolean hasValueDuration() { 
2877          return this != null && this.value instanceof Duration;
2878        }
2879
2880        /**
2881         * @return {@link #value} (The value of the Output parameter as a basic type.)
2882         */
2883        public HumanName getValueHumanName() throws FHIRException { 
2884          if (this.value == null)
2885            this.value = new HumanName();
2886          if (!(this.value instanceof HumanName))
2887            throw new FHIRException("Type mismatch: the type HumanName was expected, but "+this.value.getClass().getName()+" was encountered");
2888          return (HumanName) this.value;
2889        }
2890
2891        public boolean hasValueHumanName() { 
2892          return this != null && this.value instanceof HumanName;
2893        }
2894
2895        /**
2896         * @return {@link #value} (The value of the Output parameter as a basic type.)
2897         */
2898        public Identifier getValueIdentifier() throws FHIRException { 
2899          if (this.value == null)
2900            this.value = new Identifier();
2901          if (!(this.value instanceof Identifier))
2902            throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.value.getClass().getName()+" was encountered");
2903          return (Identifier) this.value;
2904        }
2905
2906        public boolean hasValueIdentifier() { 
2907          return this != null && this.value instanceof Identifier;
2908        }
2909
2910        /**
2911         * @return {@link #value} (The value of the Output parameter as a basic type.)
2912         */
2913        public Money getValueMoney() throws FHIRException { 
2914          if (this.value == null)
2915            this.value = new Money();
2916          if (!(this.value instanceof Money))
2917            throw new FHIRException("Type mismatch: the type Money was expected, but "+this.value.getClass().getName()+" was encountered");
2918          return (Money) this.value;
2919        }
2920
2921        public boolean hasValueMoney() { 
2922          return this != null && this.value instanceof Money;
2923        }
2924
2925        /**
2926         * @return {@link #value} (The value of the Output parameter as a basic type.)
2927         */
2928        public Period getValuePeriod() throws FHIRException { 
2929          if (this.value == null)
2930            this.value = new Period();
2931          if (!(this.value instanceof Period))
2932            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.value.getClass().getName()+" was encountered");
2933          return (Period) this.value;
2934        }
2935
2936        public boolean hasValuePeriod() { 
2937          return this != null && this.value instanceof Period;
2938        }
2939
2940        /**
2941         * @return {@link #value} (The value of the Output parameter as a basic type.)
2942         */
2943        public Quantity getValueQuantity() throws FHIRException { 
2944          if (this.value == null)
2945            this.value = new Quantity();
2946          if (!(this.value instanceof Quantity))
2947            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
2948          return (Quantity) this.value;
2949        }
2950
2951        public boolean hasValueQuantity() { 
2952          return this != null && this.value instanceof Quantity;
2953        }
2954
2955        /**
2956         * @return {@link #value} (The value of the Output parameter as a basic type.)
2957         */
2958        public Range getValueRange() throws FHIRException { 
2959          if (this.value == null)
2960            this.value = new Range();
2961          if (!(this.value instanceof Range))
2962            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
2963          return (Range) this.value;
2964        }
2965
2966        public boolean hasValueRange() { 
2967          return this != null && this.value instanceof Range;
2968        }
2969
2970        /**
2971         * @return {@link #value} (The value of the Output parameter as a basic type.)
2972         */
2973        public Ratio getValueRatio() throws FHIRException { 
2974          if (this.value == null)
2975            this.value = new Ratio();
2976          if (!(this.value instanceof Ratio))
2977            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.value.getClass().getName()+" was encountered");
2978          return (Ratio) this.value;
2979        }
2980
2981        public boolean hasValueRatio() { 
2982          return this != null && this.value instanceof Ratio;
2983        }
2984
2985        /**
2986         * @return {@link #value} (The value of the Output parameter as a basic type.)
2987         */
2988        public RatioRange getValueRatioRange() throws FHIRException { 
2989          if (this.value == null)
2990            this.value = new RatioRange();
2991          if (!(this.value instanceof RatioRange))
2992            throw new FHIRException("Type mismatch: the type RatioRange was expected, but "+this.value.getClass().getName()+" was encountered");
2993          return (RatioRange) this.value;
2994        }
2995
2996        public boolean hasValueRatioRange() { 
2997          return this != null && this.value instanceof RatioRange;
2998        }
2999
3000        /**
3001         * @return {@link #value} (The value of the Output parameter as a basic type.)
3002         */
3003        public Reference getValueReference() throws FHIRException { 
3004          if (this.value == null)
3005            this.value = new Reference();
3006          if (!(this.value instanceof Reference))
3007            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered");
3008          return (Reference) this.value;
3009        }
3010
3011        public boolean hasValueReference() { 
3012          return this != null && this.value instanceof Reference;
3013        }
3014
3015        /**
3016         * @return {@link #value} (The value of the Output parameter as a basic type.)
3017         */
3018        public SampledData getValueSampledData() throws FHIRException { 
3019          if (this.value == null)
3020            this.value = new SampledData();
3021          if (!(this.value instanceof SampledData))
3022            throw new FHIRException("Type mismatch: the type SampledData was expected, but "+this.value.getClass().getName()+" was encountered");
3023          return (SampledData) this.value;
3024        }
3025
3026        public boolean hasValueSampledData() { 
3027          return this != null && this.value instanceof SampledData;
3028        }
3029
3030        /**
3031         * @return {@link #value} (The value of the Output parameter as a basic type.)
3032         */
3033        public Signature getValueSignature() throws FHIRException { 
3034          if (this.value == null)
3035            this.value = new Signature();
3036          if (!(this.value instanceof Signature))
3037            throw new FHIRException("Type mismatch: the type Signature was expected, but "+this.value.getClass().getName()+" was encountered");
3038          return (Signature) this.value;
3039        }
3040
3041        public boolean hasValueSignature() { 
3042          return this != null && this.value instanceof Signature;
3043        }
3044
3045        /**
3046         * @return {@link #value} (The value of the Output parameter as a basic type.)
3047         */
3048        public Timing getValueTiming() throws FHIRException { 
3049          if (this.value == null)
3050            this.value = new Timing();
3051          if (!(this.value instanceof Timing))
3052            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.value.getClass().getName()+" was encountered");
3053          return (Timing) this.value;
3054        }
3055
3056        public boolean hasValueTiming() { 
3057          return this != null && this.value instanceof Timing;
3058        }
3059
3060        /**
3061         * @return {@link #value} (The value of the Output parameter as a basic type.)
3062         */
3063        public ContactDetail getValueContactDetail() throws FHIRException { 
3064          if (this.value == null)
3065            this.value = new ContactDetail();
3066          if (!(this.value instanceof ContactDetail))
3067            throw new FHIRException("Type mismatch: the type ContactDetail was expected, but "+this.value.getClass().getName()+" was encountered");
3068          return (ContactDetail) this.value;
3069        }
3070
3071        public boolean hasValueContactDetail() { 
3072          return this != null && this.value instanceof ContactDetail;
3073        }
3074
3075        /**
3076         * @return {@link #value} (The value of the Output parameter as a basic type.)
3077         */
3078        public DataRequirement getValueDataRequirement() throws FHIRException { 
3079          if (this.value == null)
3080            this.value = new DataRequirement();
3081          if (!(this.value instanceof DataRequirement))
3082            throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.value.getClass().getName()+" was encountered");
3083          return (DataRequirement) this.value;
3084        }
3085
3086        public boolean hasValueDataRequirement() { 
3087          return this != null && this.value instanceof DataRequirement;
3088        }
3089
3090        /**
3091         * @return {@link #value} (The value of the Output parameter as a basic type.)
3092         */
3093        public Expression getValueExpression() throws FHIRException { 
3094          if (this.value == null)
3095            this.value = new Expression();
3096          if (!(this.value instanceof Expression))
3097            throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.value.getClass().getName()+" was encountered");
3098          return (Expression) this.value;
3099        }
3100
3101        public boolean hasValueExpression() { 
3102          return this != null && this.value instanceof Expression;
3103        }
3104
3105        /**
3106         * @return {@link #value} (The value of the Output parameter as a basic type.)
3107         */
3108        public ParameterDefinition getValueParameterDefinition() throws FHIRException { 
3109          if (this.value == null)
3110            this.value = new ParameterDefinition();
3111          if (!(this.value instanceof ParameterDefinition))
3112            throw new FHIRException("Type mismatch: the type ParameterDefinition was expected, but "+this.value.getClass().getName()+" was encountered");
3113          return (ParameterDefinition) this.value;
3114        }
3115
3116        public boolean hasValueParameterDefinition() { 
3117          return this != null && this.value instanceof ParameterDefinition;
3118        }
3119
3120        /**
3121         * @return {@link #value} (The value of the Output parameter as a basic type.)
3122         */
3123        public RelatedArtifact getValueRelatedArtifact() throws FHIRException { 
3124          if (this.value == null)
3125            this.value = new RelatedArtifact();
3126          if (!(this.value instanceof RelatedArtifact))
3127            throw new FHIRException("Type mismatch: the type RelatedArtifact was expected, but "+this.value.getClass().getName()+" was encountered");
3128          return (RelatedArtifact) this.value;
3129        }
3130
3131        public boolean hasValueRelatedArtifact() { 
3132          return this != null && this.value instanceof RelatedArtifact;
3133        }
3134
3135        /**
3136         * @return {@link #value} (The value of the Output parameter as a basic type.)
3137         */
3138        public TriggerDefinition getValueTriggerDefinition() throws FHIRException { 
3139          if (this.value == null)
3140            this.value = new TriggerDefinition();
3141          if (!(this.value instanceof TriggerDefinition))
3142            throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.value.getClass().getName()+" was encountered");
3143          return (TriggerDefinition) this.value;
3144        }
3145
3146        public boolean hasValueTriggerDefinition() { 
3147          return this != null && this.value instanceof TriggerDefinition;
3148        }
3149
3150        /**
3151         * @return {@link #value} (The value of the Output parameter as a basic type.)
3152         */
3153        public UsageContext getValueUsageContext() throws FHIRException { 
3154          if (this.value == null)
3155            this.value = new UsageContext();
3156          if (!(this.value instanceof UsageContext))
3157            throw new FHIRException("Type mismatch: the type UsageContext was expected, but "+this.value.getClass().getName()+" was encountered");
3158          return (UsageContext) this.value;
3159        }
3160
3161        public boolean hasValueUsageContext() { 
3162          return this != null && this.value instanceof UsageContext;
3163        }
3164
3165        /**
3166         * @return {@link #value} (The value of the Output parameter as a basic type.)
3167         */
3168        public Availability getValueAvailability() throws FHIRException { 
3169          if (this.value == null)
3170            this.value = new Availability();
3171          if (!(this.value instanceof Availability))
3172            throw new FHIRException("Type mismatch: the type Availability was expected, but "+this.value.getClass().getName()+" was encountered");
3173          return (Availability) this.value;
3174        }
3175
3176        public boolean hasValueAvailability() { 
3177          return this != null && this.value instanceof Availability;
3178        }
3179
3180        /**
3181         * @return {@link #value} (The value of the Output parameter as a basic type.)
3182         */
3183        public ExtendedContactDetail getValueExtendedContactDetail() throws FHIRException { 
3184          if (this.value == null)
3185            this.value = new ExtendedContactDetail();
3186          if (!(this.value instanceof ExtendedContactDetail))
3187            throw new FHIRException("Type mismatch: the type ExtendedContactDetail was expected, but "+this.value.getClass().getName()+" was encountered");
3188          return (ExtendedContactDetail) this.value;
3189        }
3190
3191        public boolean hasValueExtendedContactDetail() { 
3192          return this != null && this.value instanceof ExtendedContactDetail;
3193        }
3194
3195        /**
3196         * @return {@link #value} (The value of the Output parameter as a basic type.)
3197         */
3198        public Dosage getValueDosage() throws FHIRException { 
3199          if (this.value == null)
3200            this.value = new Dosage();
3201          if (!(this.value instanceof Dosage))
3202            throw new FHIRException("Type mismatch: the type Dosage was expected, but "+this.value.getClass().getName()+" was encountered");
3203          return (Dosage) this.value;
3204        }
3205
3206        public boolean hasValueDosage() { 
3207          return this != null && this.value instanceof Dosage;
3208        }
3209
3210        /**
3211         * @return {@link #value} (The value of the Output parameter as a basic type.)
3212         */
3213        public Meta getValueMeta() throws FHIRException { 
3214          if (this.value == null)
3215            this.value = new Meta();
3216          if (!(this.value instanceof Meta))
3217            throw new FHIRException("Type mismatch: the type Meta was expected, but "+this.value.getClass().getName()+" was encountered");
3218          return (Meta) this.value;
3219        }
3220
3221        public boolean hasValueMeta() { 
3222          return this != null && this.value instanceof Meta;
3223        }
3224
3225        public boolean hasValue() { 
3226          return this.value != null && !this.value.isEmpty();
3227        }
3228
3229        /**
3230         * @param value {@link #value} (The value of the Output parameter as a basic type.)
3231         */
3232        public TaskOutputComponent setValue(DataType value) { 
3233          if (value != null && !(value instanceof Base64BinaryType || value instanceof BooleanType || value instanceof CanonicalType || value instanceof CodeType || value instanceof DateType || value instanceof DateTimeType || value instanceof DecimalType || value instanceof IdType || value instanceof InstantType || value instanceof IntegerType || value instanceof Integer64Type || value instanceof MarkdownType || value instanceof OidType || value instanceof PositiveIntType || value instanceof StringType || value instanceof TimeType || value instanceof UnsignedIntType || value instanceof UriType || value instanceof UrlType || value instanceof UuidType || value instanceof Address || value instanceof Age || value instanceof Annotation || value instanceof Attachment || value instanceof CodeableConcept || value instanceof CodeableReference || value instanceof Coding || value instanceof ContactPoint || value instanceof Count || value instanceof Distance || value instanceof Duration || value instanceof HumanName || value instanceof Identifier || value instanceof Money || value instanceof Period || value instanceof Quantity || value instanceof Range || value instanceof Ratio || value instanceof RatioRange || value instanceof Reference || value instanceof SampledData || value instanceof Signature || value instanceof Timing || value instanceof ContactDetail || value instanceof DataRequirement || value instanceof Expression || value instanceof ParameterDefinition || value instanceof RelatedArtifact || value instanceof TriggerDefinition || value instanceof UsageContext || value instanceof Availability || value instanceof ExtendedContactDetail || value instanceof Dosage || value instanceof Meta))
3234            throw new FHIRException("Not the right type for Task.output.value[x]: "+value.fhirType());
3235          this.value = value;
3236          return this;
3237        }
3238
3239        protected void listChildren(List<Property> children) {
3240          super.listChildren(children);
3241          children.add(new Property("type", "CodeableConcept", "The name of the Output parameter.", 0, 1, type));
3242          children.add(new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value of the Output parameter as a basic type.", 0, 1, value));
3243        }
3244
3245        @Override
3246        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3247          switch (_hash) {
3248          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The name of the Output parameter.", 0, 1, type);
3249          case -1410166417: /*value[x]*/  return new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value of the Output parameter as a basic type.", 0, 1, value);
3250          case 111972721: /*value*/  return new Property("value[x]", "base64Binary|boolean|canonical|code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta", "The value of the Output parameter as a basic type.", 0, 1, value);
3251          case -1535024575: /*valueBase64Binary*/  return new Property("value[x]", "base64Binary", "The value of the Output parameter as a basic type.", 0, 1, value);
3252          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of the Output parameter as a basic type.", 0, 1, value);
3253          case -786218365: /*valueCanonical*/  return new Property("value[x]", "canonical", "The value of the Output parameter as a basic type.", 0, 1, value);
3254          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of the Output parameter as a basic type.", 0, 1, value);
3255          case -766192449: /*valueDate*/  return new Property("value[x]", "date", "The value of the Output parameter as a basic type.", 0, 1, value);
3256          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of the Output parameter as a basic type.", 0, 1, value);
3257          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of the Output parameter as a basic type.", 0, 1, value);
3258          case 231604844: /*valueId*/  return new Property("value[x]", "id", "The value of the Output parameter as a basic type.", 0, 1, value);
3259          case -1668687056: /*valueInstant*/  return new Property("value[x]", "instant", "The value of the Output parameter as a basic type.", 0, 1, value);
3260          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of the Output parameter as a basic type.", 0, 1, value);
3261          case -1122120181: /*valueInteger64*/  return new Property("value[x]", "integer64", "The value of the Output parameter as a basic type.", 0, 1, value);
3262          case -497880704: /*valueMarkdown*/  return new Property("value[x]", "markdown", "The value of the Output parameter as a basic type.", 0, 1, value);
3263          case -1410178407: /*valueOid*/  return new Property("value[x]", "oid", "The value of the Output parameter as a basic type.", 0, 1, value);
3264          case -1249932027: /*valuePositiveInt*/  return new Property("value[x]", "positiveInt", "The value of the Output parameter as a basic type.", 0, 1, value);
3265          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of the Output parameter as a basic type.", 0, 1, value);
3266          case -765708322: /*valueTime*/  return new Property("value[x]", "time", "The value of the Output parameter as a basic type.", 0, 1, value);
3267          case 26529417: /*valueUnsignedInt*/  return new Property("value[x]", "unsignedInt", "The value of the Output parameter as a basic type.", 0, 1, value);
3268          case -1410172357: /*valueUri*/  return new Property("value[x]", "uri", "The value of the Output parameter as a basic type.", 0, 1, value);
3269          case -1410172354: /*valueUrl*/  return new Property("value[x]", "url", "The value of the Output parameter as a basic type.", 0, 1, value);
3270          case -765667124: /*valueUuid*/  return new Property("value[x]", "uuid", "The value of the Output parameter as a basic type.", 0, 1, value);
3271          case -478981821: /*valueAddress*/  return new Property("value[x]", "Address", "The value of the Output parameter as a basic type.", 0, 1, value);
3272          case -1410191922: /*valueAge*/  return new Property("value[x]", "Age", "The value of the Output parameter as a basic type.", 0, 1, value);
3273          case -67108992: /*valueAnnotation*/  return new Property("value[x]", "Annotation", "The value of the Output parameter as a basic type.", 0, 1, value);
3274          case -475566732: /*valueAttachment*/  return new Property("value[x]", "Attachment", "The value of the Output parameter as a basic type.", 0, 1, value);
3275          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "The value of the Output parameter as a basic type.", 0, 1, value);
3276          case -257955629: /*valueCodeableReference*/  return new Property("value[x]", "CodeableReference", "The value of the Output parameter as a basic type.", 0, 1, value);
3277          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "The value of the Output parameter as a basic type.", 0, 1, value);
3278          case 944904545: /*valueContactPoint*/  return new Property("value[x]", "ContactPoint", "The value of the Output parameter as a basic type.", 0, 1, value);
3279          case 2017332766: /*valueCount*/  return new Property("value[x]", "Count", "The value of the Output parameter as a basic type.", 0, 1, value);
3280          case -456359802: /*valueDistance*/  return new Property("value[x]", "Distance", "The value of the Output parameter as a basic type.", 0, 1, value);
3281          case 1558135333: /*valueDuration*/  return new Property("value[x]", "Duration", "The value of the Output parameter as a basic type.", 0, 1, value);
3282          case -2026205465: /*valueHumanName*/  return new Property("value[x]", "HumanName", "The value of the Output parameter as a basic type.", 0, 1, value);
3283          case -130498310: /*valueIdentifier*/  return new Property("value[x]", "Identifier", "The value of the Output parameter as a basic type.", 0, 1, value);
3284          case 2026560975: /*valueMoney*/  return new Property("value[x]", "Money", "The value of the Output parameter as a basic type.", 0, 1, value);
3285          case -1524344174: /*valuePeriod*/  return new Property("value[x]", "Period", "The value of the Output parameter as a basic type.", 0, 1, value);
3286          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "The value of the Output parameter as a basic type.", 0, 1, value);
3287          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "The value of the Output parameter as a basic type.", 0, 1, value);
3288          case 2030767386: /*valueRatio*/  return new Property("value[x]", "Ratio", "The value of the Output parameter as a basic type.", 0, 1, value);
3289          case -706454461: /*valueRatioRange*/  return new Property("value[x]", "RatioRange", "The value of the Output parameter as a basic type.", 0, 1, value);
3290          case 1755241690: /*valueReference*/  return new Property("value[x]", "Reference", "The value of the Output parameter as a basic type.", 0, 1, value);
3291          case -962229101: /*valueSampledData*/  return new Property("value[x]", "SampledData", "The value of the Output parameter as a basic type.", 0, 1, value);
3292          case -540985785: /*valueSignature*/  return new Property("value[x]", "Signature", "The value of the Output parameter as a basic type.", 0, 1, value);
3293          case -1406282469: /*valueTiming*/  return new Property("value[x]", "Timing", "The value of the Output parameter as a basic type.", 0, 1, value);
3294          case -1125200224: /*valueContactDetail*/  return new Property("value[x]", "ContactDetail", "The value of the Output parameter as a basic type.", 0, 1, value);
3295          case 1710554248: /*valueDataRequirement*/  return new Property("value[x]", "DataRequirement", "The value of the Output parameter as a basic type.", 0, 1, value);
3296          case -307517719: /*valueExpression*/  return new Property("value[x]", "Expression", "The value of the Output parameter as a basic type.", 0, 1, value);
3297          case 1387478187: /*valueParameterDefinition*/  return new Property("value[x]", "ParameterDefinition", "The value of the Output parameter as a basic type.", 0, 1, value);
3298          case 1748214124: /*valueRelatedArtifact*/  return new Property("value[x]", "RelatedArtifact", "The value of the Output parameter as a basic type.", 0, 1, value);
3299          case 976830394: /*valueTriggerDefinition*/  return new Property("value[x]", "TriggerDefinition", "The value of the Output parameter as a basic type.", 0, 1, value);
3300          case 588000479: /*valueUsageContext*/  return new Property("value[x]", "UsageContext", "The value of the Output parameter as a basic type.", 0, 1, value);
3301          case 1678530924: /*valueAvailability*/  return new Property("value[x]", "Availability", "The value of the Output parameter as a basic type.", 0, 1, value);
3302          case -1567222041: /*valueExtendedContactDetail*/  return new Property("value[x]", "ExtendedContactDetail", "The value of the Output parameter as a basic type.", 0, 1, value);
3303          case -1858636920: /*valueDosage*/  return new Property("value[x]", "Dosage", "The value of the Output parameter as a basic type.", 0, 1, value);
3304          case -765920490: /*valueMeta*/  return new Property("value[x]", "Meta", "The value of the Output parameter as a basic type.", 0, 1, value);
3305          default: return super.getNamedProperty(_hash, _name, _checkValid);
3306          }
3307
3308        }
3309
3310      @Override
3311      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3312        switch (hash) {
3313        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
3314        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
3315        default: return super.getProperty(hash, name, checkValid);
3316        }
3317
3318      }
3319
3320      @Override
3321      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3322        switch (hash) {
3323        case 3575610: // type
3324          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3325          return value;
3326        case 111972721: // value
3327          this.value = TypeConvertor.castToType(value); // DataType
3328          return value;
3329        default: return super.setProperty(hash, name, value);
3330        }
3331
3332      }
3333
3334      @Override
3335      public Base setProperty(String name, Base value) throws FHIRException {
3336        if (name.equals("type")) {
3337          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3338        } else if (name.equals("value[x]")) {
3339          this.value = TypeConvertor.castToType(value); // DataType
3340        } else
3341          return super.setProperty(name, value);
3342        return value;
3343      }
3344
3345  @Override
3346  public void removeChild(String name, Base value) throws FHIRException {
3347        if (name.equals("type")) {
3348          this.type = null;
3349        } else if (name.equals("value[x]")) {
3350          this.value = null;
3351        } else
3352          super.removeChild(name, value);
3353        
3354      }
3355
3356      @Override
3357      public Base makeProperty(int hash, String name) throws FHIRException {
3358        switch (hash) {
3359        case 3575610:  return getType();
3360        case -1410166417:  return getValue();
3361        case 111972721:  return getValue();
3362        default: return super.makeProperty(hash, name);
3363        }
3364
3365      }
3366
3367      @Override
3368      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3369        switch (hash) {
3370        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
3371        case 111972721: /*value*/ return new String[] {"base64Binary", "boolean", "canonical", "code", "date", "dateTime", "decimal", "id", "instant", "integer", "integer64", "markdown", "oid", "positiveInt", "string", "time", "unsignedInt", "uri", "url", "uuid", "Address", "Age", "Annotation", "Attachment", "CodeableConcept", "CodeableReference", "Coding", "ContactPoint", "Count", "Distance", "Duration", "HumanName", "Identifier", "Money", "Period", "Quantity", "Range", "Ratio", "RatioRange", "Reference", "SampledData", "Signature", "Timing", "ContactDetail", "DataRequirement", "Expression", "ParameterDefinition", "RelatedArtifact", "TriggerDefinition", "UsageContext", "Availability", "ExtendedContactDetail", "Dosage", "Meta"};
3372        default: return super.getTypesForProperty(hash, name);
3373        }
3374
3375      }
3376
3377      @Override
3378      public Base addChild(String name) throws FHIRException {
3379        if (name.equals("type")) {
3380          this.type = new CodeableConcept();
3381          return this.type;
3382        }
3383        else if (name.equals("valueBase64Binary")) {
3384          this.value = new Base64BinaryType();
3385          return this.value;
3386        }
3387        else if (name.equals("valueBoolean")) {
3388          this.value = new BooleanType();
3389          return this.value;
3390        }
3391        else if (name.equals("valueCanonical")) {
3392          this.value = new CanonicalType();
3393          return this.value;
3394        }
3395        else if (name.equals("valueCode")) {
3396          this.value = new CodeType();
3397          return this.value;
3398        }
3399        else if (name.equals("valueDate")) {
3400          this.value = new DateType();
3401          return this.value;
3402        }
3403        else if (name.equals("valueDateTime")) {
3404          this.value = new DateTimeType();
3405          return this.value;
3406        }
3407        else if (name.equals("valueDecimal")) {
3408          this.value = new DecimalType();
3409          return this.value;
3410        }
3411        else if (name.equals("valueId")) {
3412          this.value = new IdType();
3413          return this.value;
3414        }
3415        else if (name.equals("valueInstant")) {
3416          this.value = new InstantType();
3417          return this.value;
3418        }
3419        else if (name.equals("valueInteger")) {
3420          this.value = new IntegerType();
3421          return this.value;
3422        }
3423        else if (name.equals("valueInteger64")) {
3424          this.value = new Integer64Type();
3425          return this.value;
3426        }
3427        else if (name.equals("valueMarkdown")) {
3428          this.value = new MarkdownType();
3429          return this.value;
3430        }
3431        else if (name.equals("valueOid")) {
3432          this.value = new OidType();
3433          return this.value;
3434        }
3435        else if (name.equals("valuePositiveInt")) {
3436          this.value = new PositiveIntType();
3437          return this.value;
3438        }
3439        else if (name.equals("valueString")) {
3440          this.value = new StringType();
3441          return this.value;
3442        }
3443        else if (name.equals("valueTime")) {
3444          this.value = new TimeType();
3445          return this.value;
3446        }
3447        else if (name.equals("valueUnsignedInt")) {
3448          this.value = new UnsignedIntType();
3449          return this.value;
3450        }
3451        else if (name.equals("valueUri")) {
3452          this.value = new UriType();
3453          return this.value;
3454        }
3455        else if (name.equals("valueUrl")) {
3456          this.value = new UrlType();
3457          return this.value;
3458        }
3459        else if (name.equals("valueUuid")) {
3460          this.value = new UuidType();
3461          return this.value;
3462        }
3463        else if (name.equals("valueAddress")) {
3464          this.value = new Address();
3465          return this.value;
3466        }
3467        else if (name.equals("valueAge")) {
3468          this.value = new Age();
3469          return this.value;
3470        }
3471        else if (name.equals("valueAnnotation")) {
3472          this.value = new Annotation();
3473          return this.value;
3474        }
3475        else if (name.equals("valueAttachment")) {
3476          this.value = new Attachment();
3477          return this.value;
3478        }
3479        else if (name.equals("valueCodeableConcept")) {
3480          this.value = new CodeableConcept();
3481          return this.value;
3482        }
3483        else if (name.equals("valueCodeableReference")) {
3484          this.value = new CodeableReference();
3485          return this.value;
3486        }
3487        else if (name.equals("valueCoding")) {
3488          this.value = new Coding();
3489          return this.value;
3490        }
3491        else if (name.equals("valueContactPoint")) {
3492          this.value = new ContactPoint();
3493          return this.value;
3494        }
3495        else if (name.equals("valueCount")) {
3496          this.value = new Count();
3497          return this.value;
3498        }
3499        else if (name.equals("valueDistance")) {
3500          this.value = new Distance();
3501          return this.value;
3502        }
3503        else if (name.equals("valueDuration")) {
3504          this.value = new Duration();
3505          return this.value;
3506        }
3507        else if (name.equals("valueHumanName")) {
3508          this.value = new HumanName();
3509          return this.value;
3510        }
3511        else if (name.equals("valueIdentifier")) {
3512          this.value = new Identifier();
3513          return this.value;
3514        }
3515        else if (name.equals("valueMoney")) {
3516          this.value = new Money();
3517          return this.value;
3518        }
3519        else if (name.equals("valuePeriod")) {
3520          this.value = new Period();
3521          return this.value;
3522        }
3523        else if (name.equals("valueQuantity")) {
3524          this.value = new Quantity();
3525          return this.value;
3526        }
3527        else if (name.equals("valueRange")) {
3528          this.value = new Range();
3529          return this.value;
3530        }
3531        else if (name.equals("valueRatio")) {
3532          this.value = new Ratio();
3533          return this.value;
3534        }
3535        else if (name.equals("valueRatioRange")) {
3536          this.value = new RatioRange();
3537          return this.value;
3538        }
3539        else if (name.equals("valueReference")) {
3540          this.value = new Reference();
3541          return this.value;
3542        }
3543        else if (name.equals("valueSampledData")) {
3544          this.value = new SampledData();
3545          return this.value;
3546        }
3547        else if (name.equals("valueSignature")) {
3548          this.value = new Signature();
3549          return this.value;
3550        }
3551        else if (name.equals("valueTiming")) {
3552          this.value = new Timing();
3553          return this.value;
3554        }
3555        else if (name.equals("valueContactDetail")) {
3556          this.value = new ContactDetail();
3557          return this.value;
3558        }
3559        else if (name.equals("valueDataRequirement")) {
3560          this.value = new DataRequirement();
3561          return this.value;
3562        }
3563        else if (name.equals("valueExpression")) {
3564          this.value = new Expression();
3565          return this.value;
3566        }
3567        else if (name.equals("valueParameterDefinition")) {
3568          this.value = new ParameterDefinition();
3569          return this.value;
3570        }
3571        else if (name.equals("valueRelatedArtifact")) {
3572          this.value = new RelatedArtifact();
3573          return this.value;
3574        }
3575        else if (name.equals("valueTriggerDefinition")) {
3576          this.value = new TriggerDefinition();
3577          return this.value;
3578        }
3579        else if (name.equals("valueUsageContext")) {
3580          this.value = new UsageContext();
3581          return this.value;
3582        }
3583        else if (name.equals("valueAvailability")) {
3584          this.value = new Availability();
3585          return this.value;
3586        }
3587        else if (name.equals("valueExtendedContactDetail")) {
3588          this.value = new ExtendedContactDetail();
3589          return this.value;
3590        }
3591        else if (name.equals("valueDosage")) {
3592          this.value = new Dosage();
3593          return this.value;
3594        }
3595        else if (name.equals("valueMeta")) {
3596          this.value = new Meta();
3597          return this.value;
3598        }
3599        else
3600          return super.addChild(name);
3601      }
3602
3603      public TaskOutputComponent copy() {
3604        TaskOutputComponent dst = new TaskOutputComponent();
3605        copyValues(dst);
3606        return dst;
3607      }
3608
3609      public void copyValues(TaskOutputComponent dst) {
3610        super.copyValues(dst);
3611        dst.type = type == null ? null : type.copy();
3612        dst.value = value == null ? null : value.copy();
3613      }
3614
3615      @Override
3616      public boolean equalsDeep(Base other_) {
3617        if (!super.equalsDeep(other_))
3618          return false;
3619        if (!(other_ instanceof TaskOutputComponent))
3620          return false;
3621        TaskOutputComponent o = (TaskOutputComponent) other_;
3622        return compareDeep(type, o.type, true) && compareDeep(value, o.value, true);
3623      }
3624
3625      @Override
3626      public boolean equalsShallow(Base other_) {
3627        if (!super.equalsShallow(other_))
3628          return false;
3629        if (!(other_ instanceof TaskOutputComponent))
3630          return false;
3631        TaskOutputComponent o = (TaskOutputComponent) other_;
3632        return true;
3633      }
3634
3635      public boolean isEmpty() {
3636        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, value);
3637      }
3638
3639  public String fhirType() {
3640    return "Task.output";
3641
3642  }
3643
3644  }
3645
3646    /**
3647     * The business identifier for this task.
3648     */
3649    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3650    @Description(shortDefinition="Task Instance Identifier", formalDefinition="The business identifier for this task." )
3651    protected List<Identifier> identifier;
3652
3653    /**
3654     * The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.
3655     */
3656    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=1, modifier=false, summary=true)
3657    @Description(shortDefinition="Formal definition of task", formalDefinition="The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task." )
3658    protected CanonicalType instantiatesCanonical;
3659
3660    /**
3661     * The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.
3662     */
3663    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
3664    @Description(shortDefinition="Formal definition of task", formalDefinition="The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task." )
3665    protected UriType instantiatesUri;
3666
3667    /**
3668     * BasedOn refers to a higher-level authorization that triggered the creation of the task.  It references a "request" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the "request" resource the task is seeking to fulfill.  This latter resource is referenced by focus.  For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patient.
3669     */
3670    @Child(name = "basedOn", type = {Reference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3671    @Description(shortDefinition="Request fulfilled by this task", formalDefinition="BasedOn refers to a higher-level authorization that triggered the creation of the task.  It references a \"request\" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the \"request\" resource the task is seeking to fulfill.  This latter resource is referenced by focus.  For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patient." )
3672    protected List<Reference> basedOn;
3673
3674    /**
3675     * A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.
3676     */
3677    @Child(name = "groupIdentifier", type = {Identifier.class}, order=4, min=0, max=1, modifier=false, summary=true)
3678    @Description(shortDefinition="Requisition or grouper id", formalDefinition="A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time." )
3679    protected Identifier groupIdentifier;
3680
3681    /**
3682     * Task that this particular task is part of.
3683     */
3684    @Child(name = "partOf", type = {Task.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3685    @Description(shortDefinition="Composite task", formalDefinition="Task that this particular task is part of." )
3686    protected List<Reference> partOf;
3687
3688    /**
3689     * The current status of the task.
3690     */
3691    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
3692    @Description(shortDefinition="draft | requested | received | accepted | +", formalDefinition="The current status of the task." )
3693    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/task-status")
3694    protected Enumeration<TaskStatus> status;
3695
3696    /**
3697     * An explanation as to why this task is held, failed, was refused, etc.
3698     */
3699    @Child(name = "statusReason", type = {CodeableReference.class}, order=7, min=0, max=1, modifier=false, summary=true)
3700    @Description(shortDefinition="Reason for current status", formalDefinition="An explanation as to why this task is held, failed, was refused, etc." )
3701    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/task-status-reason")
3702    protected CodeableReference statusReason;
3703
3704    /**
3705     * Contains business-specific nuances of the business state.
3706     */
3707    @Child(name = "businessStatus", type = {CodeableConcept.class}, order=8, min=0, max=1, modifier=false, summary=true)
3708    @Description(shortDefinition="E.g. \"Specimen collected\", \"IV prepped\"", formalDefinition="Contains business-specific nuances of the business state." )
3709    protected CodeableConcept businessStatus;
3710
3711    /**
3712     * Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.
3713     */
3714    @Child(name = "intent", type = {CodeType.class}, order=9, min=1, max=1, modifier=false, summary=true)
3715    @Description(shortDefinition="unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option", formalDefinition="Indicates the \"level\" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc." )
3716    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/task-intent")
3717    protected Enumeration<TaskIntent> intent;
3718
3719    /**
3720     * Indicates how quickly the Task should be addressed with respect to other requests.
3721     */
3722    @Child(name = "priority", type = {CodeType.class}, order=10, min=0, max=1, modifier=false, summary=false)
3723    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the Task should be addressed with respect to other requests." )
3724    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
3725    protected Enumeration<RequestPriority> priority;
3726
3727    /**
3728     * If true indicates that the Task is asking for the specified action to *not* occur.
3729     */
3730    @Child(name = "doNotPerform", type = {BooleanType.class}, order=11, min=0, max=1, modifier=true, summary=true)
3731    @Description(shortDefinition="True if Task is prohibiting action", formalDefinition="If true indicates that the Task is asking for the specified action to *not* occur." )
3732    protected BooleanType doNotPerform;
3733
3734    /**
3735     * A name or code (or both) briefly describing what the task involves.
3736     */
3737    @Child(name = "code", type = {CodeableConcept.class}, order=12, min=0, max=1, modifier=false, summary=true)
3738    @Description(shortDefinition="Task Type", formalDefinition="A name or code (or both) briefly describing what the task involves." )
3739    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/task-code")
3740    protected CodeableConcept code;
3741
3742    /**
3743     * A free-text description of what is to be performed.
3744     */
3745    @Child(name = "description", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=true)
3746    @Description(shortDefinition="Human-readable explanation of task", formalDefinition="A free-text description of what is to be performed." )
3747    protected StringType description;
3748
3749    /**
3750     * The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this task.
3751     */
3752    @Child(name = "focus", type = {Reference.class}, order=14, min=0, max=1, modifier=false, summary=true)
3753    @Description(shortDefinition="What task is acting on", formalDefinition="The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this task." )
3754    protected Reference focus;
3755
3756    /**
3757     * The entity who benefits from the performance of the service specified in the task (e.g., the patient).
3758     */
3759    @Child(name = "for", type = {Reference.class}, order=15, min=0, max=1, modifier=false, summary=true)
3760    @Description(shortDefinition="Beneficiary of the Task", formalDefinition="The entity who benefits from the performance of the service specified in the task (e.g., the patient)." )
3761    protected Reference for_;
3762
3763    /**
3764     * The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created.
3765     */
3766    @Child(name = "encounter", type = {Encounter.class}, order=16, min=0, max=1, modifier=false, summary=true)
3767    @Description(shortDefinition="Healthcare event during which this task originated", formalDefinition="The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created." )
3768    protected Reference encounter;
3769
3770    /**
3771     * Indicates the start and/or end of the period of time when completion of the task is desired to take place.
3772     */
3773    @Child(name = "requestedPeriod", type = {Period.class}, order=17, min=0, max=1, modifier=false, summary=true)
3774    @Description(shortDefinition="When the task should be performed", formalDefinition="Indicates the start and/or end of the period of time when completion of the task is desired to take place." )
3775    protected Period requestedPeriod;
3776
3777    /**
3778     * Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end).
3779     */
3780    @Child(name = "executionPeriod", type = {Period.class}, order=18, min=0, max=1, modifier=false, summary=true)
3781    @Description(shortDefinition="Start and end time of execution", formalDefinition="Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end)." )
3782    protected Period executionPeriod;
3783
3784    /**
3785     * The date and time this task was created.
3786     */
3787    @Child(name = "authoredOn", type = {DateTimeType.class}, order=19, min=0, max=1, modifier=false, summary=false)
3788    @Description(shortDefinition="Task Creation Date", formalDefinition="The date and time this task was created." )
3789    protected DateTimeType authoredOn;
3790
3791    /**
3792     * The date and time of last modification to this task.
3793     */
3794    @Child(name = "lastModified", type = {DateTimeType.class}, order=20, min=0, max=1, modifier=false, summary=true)
3795    @Description(shortDefinition="Task Last Modified Date", formalDefinition="The date and time of last modification to this task." )
3796    protected DateTimeType lastModified;
3797
3798    /**
3799     * The creator of the task.
3800     */
3801    @Child(name = "requester", type = {Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class}, order=21, min=0, max=1, modifier=false, summary=true)
3802    @Description(shortDefinition="Who is asking for task to be done", formalDefinition="The creator of the task." )
3803    protected Reference requester;
3804
3805    /**
3806     * The kind of participant or specific participant that should perform the task.
3807     */
3808    @Child(name = "requestedPerformer", type = {CodeableReference.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3809    @Description(shortDefinition="Who should perform Task", formalDefinition="The kind of participant or specific participant that should perform the task." )
3810    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/performer-role")
3811    protected List<CodeableReference> requestedPerformer;
3812
3813    /**
3814     * Party responsible for managing task execution.
3815     */
3816    @Child(name = "owner", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class, Patient.class, RelatedPerson.class}, order=23, min=0, max=1, modifier=false, summary=true)
3817    @Description(shortDefinition="Responsible individual", formalDefinition="Party responsible for managing task execution." )
3818    protected Reference owner;
3819
3820    /**
3821     * The entity who performed the requested task.
3822     */
3823    @Child(name = "performer", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3824    @Description(shortDefinition="Who or what performed the task", formalDefinition="The entity who performed the requested task." )
3825    protected List<TaskPerformerComponent> performer;
3826
3827    /**
3828     * Principal physical location where this task is performed.
3829     */
3830    @Child(name = "location", type = {Location.class}, order=25, min=0, max=1, modifier=false, summary=true)
3831    @Description(shortDefinition="Where task occurs", formalDefinition="Principal physical location where this task is performed." )
3832    protected Reference location;
3833
3834    /**
3835     * A description, code, or reference indicating why this task needs to be performed.
3836     */
3837    @Child(name = "reason", type = {CodeableReference.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3838    @Description(shortDefinition="Why task is needed", formalDefinition="A description, code, or reference indicating why this task needs to be performed." )
3839    protected List<CodeableReference> reason;
3840
3841    /**
3842     * Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task.
3843     */
3844    @Child(name = "insurance", type = {Coverage.class, ClaimResponse.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3845    @Description(shortDefinition="Associated insurance coverage", formalDefinition="Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task." )
3846    protected List<Reference> insurance;
3847
3848    /**
3849     * Free-text information captured about the task as it progresses.
3850     */
3851    @Child(name = "note", type = {Annotation.class}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3852    @Description(shortDefinition="Comments made about the task", formalDefinition="Free-text information captured about the task as it progresses." )
3853    protected List<Annotation> note;
3854
3855    /**
3856     * Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task.
3857     */
3858    @Child(name = "relevantHistory", type = {Provenance.class}, order=29, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3859    @Description(shortDefinition="Key events in history of the Task", formalDefinition="Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task." )
3860    protected List<Reference> relevantHistory;
3861
3862    /**
3863     * If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned.
3864     */
3865    @Child(name = "restriction", type = {}, order=30, min=0, max=1, modifier=false, summary=false)
3866    @Description(shortDefinition="Constraints on fulfillment tasks", formalDefinition="If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned." )
3867    protected TaskRestrictionComponent restriction;
3868
3869    /**
3870     * Additional information that may be needed in the execution of the task.
3871     */
3872    @Child(name = "input", type = {}, order=31, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3873    @Description(shortDefinition="Information used to perform task", formalDefinition="Additional information that may be needed in the execution of the task." )
3874    protected List<TaskInputComponent> input;
3875
3876    /**
3877     * Outputs produced by the Task.
3878     */
3879    @Child(name = "output", type = {}, order=32, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3880    @Description(shortDefinition="Information produced as part of task", formalDefinition="Outputs produced by the Task." )
3881    protected List<TaskOutputComponent> output;
3882
3883    private static final long serialVersionUID = 1363715195L;
3884
3885  /**
3886   * Constructor
3887   */
3888    public Task() {
3889      super();
3890    }
3891
3892  /**
3893   * Constructor
3894   */
3895    public Task(TaskStatus status, TaskIntent intent) {
3896      super();
3897      this.setStatus(status);
3898      this.setIntent(intent);
3899    }
3900
3901    /**
3902     * @return {@link #identifier} (The business identifier for this task.)
3903     */
3904    public List<Identifier> getIdentifier() { 
3905      if (this.identifier == null)
3906        this.identifier = new ArrayList<Identifier>();
3907      return this.identifier;
3908    }
3909
3910    /**
3911     * @return Returns a reference to <code>this</code> for easy method chaining
3912     */
3913    public Task setIdentifier(List<Identifier> theIdentifier) { 
3914      this.identifier = theIdentifier;
3915      return this;
3916    }
3917
3918    public boolean hasIdentifier() { 
3919      if (this.identifier == null)
3920        return false;
3921      for (Identifier item : this.identifier)
3922        if (!item.isEmpty())
3923          return true;
3924      return false;
3925    }
3926
3927    public Identifier addIdentifier() { //3
3928      Identifier t = new Identifier();
3929      if (this.identifier == null)
3930        this.identifier = new ArrayList<Identifier>();
3931      this.identifier.add(t);
3932      return t;
3933    }
3934
3935    public Task addIdentifier(Identifier t) { //3
3936      if (t == null)
3937        return this;
3938      if (this.identifier == null)
3939        this.identifier = new ArrayList<Identifier>();
3940      this.identifier.add(t);
3941      return this;
3942    }
3943
3944    /**
3945     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
3946     */
3947    public Identifier getIdentifierFirstRep() { 
3948      if (getIdentifier().isEmpty()) {
3949        addIdentifier();
3950      }
3951      return getIdentifier().get(0);
3952    }
3953
3954    /**
3955     * @return {@link #instantiatesCanonical} (The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesCanonical" gives direct access to the value
3956     */
3957    public CanonicalType getInstantiatesCanonicalElement() { 
3958      if (this.instantiatesCanonical == null)
3959        if (Configuration.errorOnAutoCreate())
3960          throw new Error("Attempt to auto-create Task.instantiatesCanonical");
3961        else if (Configuration.doAutoCreate())
3962          this.instantiatesCanonical = new CanonicalType(); // bb
3963      return this.instantiatesCanonical;
3964    }
3965
3966    public boolean hasInstantiatesCanonicalElement() { 
3967      return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty();
3968    }
3969
3970    public boolean hasInstantiatesCanonical() { 
3971      return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty();
3972    }
3973
3974    /**
3975     * @param value {@link #instantiatesCanonical} (The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesCanonical" gives direct access to the value
3976     */
3977    public Task setInstantiatesCanonicalElement(CanonicalType value) { 
3978      this.instantiatesCanonical = value;
3979      return this;
3980    }
3981
3982    /**
3983     * @return The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.
3984     */
3985    public String getInstantiatesCanonical() { 
3986      return this.instantiatesCanonical == null ? null : this.instantiatesCanonical.getValue();
3987    }
3988
3989    /**
3990     * @param value The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.
3991     */
3992    public Task setInstantiatesCanonical(String value) { 
3993      if (Utilities.noString(value))
3994        this.instantiatesCanonical = null;
3995      else {
3996        if (this.instantiatesCanonical == null)
3997          this.instantiatesCanonical = new CanonicalType();
3998        this.instantiatesCanonical.setValue(value);
3999      }
4000      return this;
4001    }
4002
4003    /**
4004     * @return {@link #instantiatesUri} (The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value
4005     */
4006    public UriType getInstantiatesUriElement() { 
4007      if (this.instantiatesUri == null)
4008        if (Configuration.errorOnAutoCreate())
4009          throw new Error("Attempt to auto-create Task.instantiatesUri");
4010        else if (Configuration.doAutoCreate())
4011          this.instantiatesUri = new UriType(); // bb
4012      return this.instantiatesUri;
4013    }
4014
4015    public boolean hasInstantiatesUriElement() { 
4016      return this.instantiatesUri != null && !this.instantiatesUri.isEmpty();
4017    }
4018
4019    public boolean hasInstantiatesUri() { 
4020      return this.instantiatesUri != null && !this.instantiatesUri.isEmpty();
4021    }
4022
4023    /**
4024     * @param value {@link #instantiatesUri} (The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value
4025     */
4026    public Task setInstantiatesUriElement(UriType value) { 
4027      this.instantiatesUri = value;
4028      return this;
4029    }
4030
4031    /**
4032     * @return The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.
4033     */
4034    public String getInstantiatesUri() { 
4035      return this.instantiatesUri == null ? null : this.instantiatesUri.getValue();
4036    }
4037
4038    /**
4039     * @param value The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.
4040     */
4041    public Task setInstantiatesUri(String value) { 
4042      if (Utilities.noString(value))
4043        this.instantiatesUri = null;
4044      else {
4045        if (this.instantiatesUri == null)
4046          this.instantiatesUri = new UriType();
4047        this.instantiatesUri.setValue(value);
4048      }
4049      return this;
4050    }
4051
4052    /**
4053     * @return {@link #basedOn} (BasedOn refers to a higher-level authorization that triggered the creation of the task.  It references a "request" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the "request" resource the task is seeking to fulfill.  This latter resource is referenced by focus.  For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patient.)
4054     */
4055    public List<Reference> getBasedOn() { 
4056      if (this.basedOn == null)
4057        this.basedOn = new ArrayList<Reference>();
4058      return this.basedOn;
4059    }
4060
4061    /**
4062     * @return Returns a reference to <code>this</code> for easy method chaining
4063     */
4064    public Task setBasedOn(List<Reference> theBasedOn) { 
4065      this.basedOn = theBasedOn;
4066      return this;
4067    }
4068
4069    public boolean hasBasedOn() { 
4070      if (this.basedOn == null)
4071        return false;
4072      for (Reference item : this.basedOn)
4073        if (!item.isEmpty())
4074          return true;
4075      return false;
4076    }
4077
4078    public Reference addBasedOn() { //3
4079      Reference t = new Reference();
4080      if (this.basedOn == null)
4081        this.basedOn = new ArrayList<Reference>();
4082      this.basedOn.add(t);
4083      return t;
4084    }
4085
4086    public Task addBasedOn(Reference t) { //3
4087      if (t == null)
4088        return this;
4089      if (this.basedOn == null)
4090        this.basedOn = new ArrayList<Reference>();
4091      this.basedOn.add(t);
4092      return this;
4093    }
4094
4095    /**
4096     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
4097     */
4098    public Reference getBasedOnFirstRep() { 
4099      if (getBasedOn().isEmpty()) {
4100        addBasedOn();
4101      }
4102      return getBasedOn().get(0);
4103    }
4104
4105    /**
4106     * @return {@link #groupIdentifier} (A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.)
4107     */
4108    public Identifier getGroupIdentifier() { 
4109      if (this.groupIdentifier == null)
4110        if (Configuration.errorOnAutoCreate())
4111          throw new Error("Attempt to auto-create Task.groupIdentifier");
4112        else if (Configuration.doAutoCreate())
4113          this.groupIdentifier = new Identifier(); // cc
4114      return this.groupIdentifier;
4115    }
4116
4117    public boolean hasGroupIdentifier() { 
4118      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
4119    }
4120
4121    /**
4122     * @param value {@link #groupIdentifier} (A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.)
4123     */
4124    public Task setGroupIdentifier(Identifier value) { 
4125      this.groupIdentifier = value;
4126      return this;
4127    }
4128
4129    /**
4130     * @return {@link #partOf} (Task that this particular task is part of.)
4131     */
4132    public List<Reference> getPartOf() { 
4133      if (this.partOf == null)
4134        this.partOf = new ArrayList<Reference>();
4135      return this.partOf;
4136    }
4137
4138    /**
4139     * @return Returns a reference to <code>this</code> for easy method chaining
4140     */
4141    public Task setPartOf(List<Reference> thePartOf) { 
4142      this.partOf = thePartOf;
4143      return this;
4144    }
4145
4146    public boolean hasPartOf() { 
4147      if (this.partOf == null)
4148        return false;
4149      for (Reference item : this.partOf)
4150        if (!item.isEmpty())
4151          return true;
4152      return false;
4153    }
4154
4155    public Reference addPartOf() { //3
4156      Reference t = new Reference();
4157      if (this.partOf == null)
4158        this.partOf = new ArrayList<Reference>();
4159      this.partOf.add(t);
4160      return t;
4161    }
4162
4163    public Task addPartOf(Reference t) { //3
4164      if (t == null)
4165        return this;
4166      if (this.partOf == null)
4167        this.partOf = new ArrayList<Reference>();
4168      this.partOf.add(t);
4169      return this;
4170    }
4171
4172    /**
4173     * @return The first repetition of repeating field {@link #partOf}, creating it if it does not already exist {3}
4174     */
4175    public Reference getPartOfFirstRep() { 
4176      if (getPartOf().isEmpty()) {
4177        addPartOf();
4178      }
4179      return getPartOf().get(0);
4180    }
4181
4182    /**
4183     * @return {@link #status} (The current status of the task.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
4184     */
4185    public Enumeration<TaskStatus> getStatusElement() { 
4186      if (this.status == null)
4187        if (Configuration.errorOnAutoCreate())
4188          throw new Error("Attempt to auto-create Task.status");
4189        else if (Configuration.doAutoCreate())
4190          this.status = new Enumeration<TaskStatus>(new TaskStatusEnumFactory()); // bb
4191      return this.status;
4192    }
4193
4194    public boolean hasStatusElement() { 
4195      return this.status != null && !this.status.isEmpty();
4196    }
4197
4198    public boolean hasStatus() { 
4199      return this.status != null && !this.status.isEmpty();
4200    }
4201
4202    /**
4203     * @param value {@link #status} (The current status of the task.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
4204     */
4205    public Task setStatusElement(Enumeration<TaskStatus> value) { 
4206      this.status = value;
4207      return this;
4208    }
4209
4210    /**
4211     * @return The current status of the task.
4212     */
4213    public TaskStatus getStatus() { 
4214      return this.status == null ? null : this.status.getValue();
4215    }
4216
4217    /**
4218     * @param value The current status of the task.
4219     */
4220    public Task setStatus(TaskStatus value) { 
4221        if (this.status == null)
4222          this.status = new Enumeration<TaskStatus>(new TaskStatusEnumFactory());
4223        this.status.setValue(value);
4224      return this;
4225    }
4226
4227    /**
4228     * @return {@link #statusReason} (An explanation as to why this task is held, failed, was refused, etc.)
4229     */
4230    public CodeableReference getStatusReason() { 
4231      if (this.statusReason == null)
4232        if (Configuration.errorOnAutoCreate())
4233          throw new Error("Attempt to auto-create Task.statusReason");
4234        else if (Configuration.doAutoCreate())
4235          this.statusReason = new CodeableReference(); // cc
4236      return this.statusReason;
4237    }
4238
4239    public boolean hasStatusReason() { 
4240      return this.statusReason != null && !this.statusReason.isEmpty();
4241    }
4242
4243    /**
4244     * @param value {@link #statusReason} (An explanation as to why this task is held, failed, was refused, etc.)
4245     */
4246    public Task setStatusReason(CodeableReference value) { 
4247      this.statusReason = value;
4248      return this;
4249    }
4250
4251    /**
4252     * @return {@link #businessStatus} (Contains business-specific nuances of the business state.)
4253     */
4254    public CodeableConcept getBusinessStatus() { 
4255      if (this.businessStatus == null)
4256        if (Configuration.errorOnAutoCreate())
4257          throw new Error("Attempt to auto-create Task.businessStatus");
4258        else if (Configuration.doAutoCreate())
4259          this.businessStatus = new CodeableConcept(); // cc
4260      return this.businessStatus;
4261    }
4262
4263    public boolean hasBusinessStatus() { 
4264      return this.businessStatus != null && !this.businessStatus.isEmpty();
4265    }
4266
4267    /**
4268     * @param value {@link #businessStatus} (Contains business-specific nuances of the business state.)
4269     */
4270    public Task setBusinessStatus(CodeableConcept value) { 
4271      this.businessStatus = value;
4272      return this;
4273    }
4274
4275    /**
4276     * @return {@link #intent} (Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
4277     */
4278    public Enumeration<TaskIntent> getIntentElement() { 
4279      if (this.intent == null)
4280        if (Configuration.errorOnAutoCreate())
4281          throw new Error("Attempt to auto-create Task.intent");
4282        else if (Configuration.doAutoCreate())
4283          this.intent = new Enumeration<TaskIntent>(new TaskIntentEnumFactory()); // bb
4284      return this.intent;
4285    }
4286
4287    public boolean hasIntentElement() { 
4288      return this.intent != null && !this.intent.isEmpty();
4289    }
4290
4291    public boolean hasIntent() { 
4292      return this.intent != null && !this.intent.isEmpty();
4293    }
4294
4295    /**
4296     * @param value {@link #intent} (Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
4297     */
4298    public Task setIntentElement(Enumeration<TaskIntent> value) { 
4299      this.intent = value;
4300      return this;
4301    }
4302
4303    /**
4304     * @return Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.
4305     */
4306    public TaskIntent getIntent() { 
4307      return this.intent == null ? null : this.intent.getValue();
4308    }
4309
4310    /**
4311     * @param value Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.
4312     */
4313    public Task setIntent(TaskIntent value) { 
4314        if (this.intent == null)
4315          this.intent = new Enumeration<TaskIntent>(new TaskIntentEnumFactory());
4316        this.intent.setValue(value);
4317      return this;
4318    }
4319
4320    /**
4321     * @return {@link #priority} (Indicates how quickly the Task should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
4322     */
4323    public Enumeration<RequestPriority> getPriorityElement() { 
4324      if (this.priority == null)
4325        if (Configuration.errorOnAutoCreate())
4326          throw new Error("Attempt to auto-create Task.priority");
4327        else if (Configuration.doAutoCreate())
4328          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
4329      return this.priority;
4330    }
4331
4332    public boolean hasPriorityElement() { 
4333      return this.priority != null && !this.priority.isEmpty();
4334    }
4335
4336    public boolean hasPriority() { 
4337      return this.priority != null && !this.priority.isEmpty();
4338    }
4339
4340    /**
4341     * @param value {@link #priority} (Indicates how quickly the Task should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
4342     */
4343    public Task setPriorityElement(Enumeration<RequestPriority> value) { 
4344      this.priority = value;
4345      return this;
4346    }
4347
4348    /**
4349     * @return Indicates how quickly the Task should be addressed with respect to other requests.
4350     */
4351    public RequestPriority getPriority() { 
4352      return this.priority == null ? null : this.priority.getValue();
4353    }
4354
4355    /**
4356     * @param value Indicates how quickly the Task should be addressed with respect to other requests.
4357     */
4358    public Task setPriority(RequestPriority value) { 
4359      if (value == null)
4360        this.priority = null;
4361      else {
4362        if (this.priority == null)
4363          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
4364        this.priority.setValue(value);
4365      }
4366      return this;
4367    }
4368
4369    /**
4370     * @return {@link #doNotPerform} (If true indicates that the Task is asking for the specified action to *not* occur.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
4371     */
4372    public BooleanType getDoNotPerformElement() { 
4373      if (this.doNotPerform == null)
4374        if (Configuration.errorOnAutoCreate())
4375          throw new Error("Attempt to auto-create Task.doNotPerform");
4376        else if (Configuration.doAutoCreate())
4377          this.doNotPerform = new BooleanType(); // bb
4378      return this.doNotPerform;
4379    }
4380
4381    public boolean hasDoNotPerformElement() { 
4382      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
4383    }
4384
4385    public boolean hasDoNotPerform() { 
4386      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
4387    }
4388
4389    /**
4390     * @param value {@link #doNotPerform} (If true indicates that the Task is asking for the specified action to *not* occur.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
4391     */
4392    public Task setDoNotPerformElement(BooleanType value) { 
4393      this.doNotPerform = value;
4394      return this;
4395    }
4396
4397    /**
4398     * @return If true indicates that the Task is asking for the specified action to *not* occur.
4399     */
4400    public boolean getDoNotPerform() { 
4401      return this.doNotPerform == null || this.doNotPerform.isEmpty() ? false : this.doNotPerform.getValue();
4402    }
4403
4404    /**
4405     * @param value If true indicates that the Task is asking for the specified action to *not* occur.
4406     */
4407    public Task setDoNotPerform(boolean value) { 
4408        if (this.doNotPerform == null)
4409          this.doNotPerform = new BooleanType();
4410        this.doNotPerform.setValue(value);
4411      return this;
4412    }
4413
4414    /**
4415     * @return {@link #code} (A name or code (or both) briefly describing what the task involves.)
4416     */
4417    public CodeableConcept getCode() { 
4418      if (this.code == null)
4419        if (Configuration.errorOnAutoCreate())
4420          throw new Error("Attempt to auto-create Task.code");
4421        else if (Configuration.doAutoCreate())
4422          this.code = new CodeableConcept(); // cc
4423      return this.code;
4424    }
4425
4426    public boolean hasCode() { 
4427      return this.code != null && !this.code.isEmpty();
4428    }
4429
4430    /**
4431     * @param value {@link #code} (A name or code (or both) briefly describing what the task involves.)
4432     */
4433    public Task setCode(CodeableConcept value) { 
4434      this.code = value;
4435      return this;
4436    }
4437
4438    /**
4439     * @return {@link #description} (A free-text description of what is to be performed.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
4440     */
4441    public StringType getDescriptionElement() { 
4442      if (this.description == null)
4443        if (Configuration.errorOnAutoCreate())
4444          throw new Error("Attempt to auto-create Task.description");
4445        else if (Configuration.doAutoCreate())
4446          this.description = new StringType(); // bb
4447      return this.description;
4448    }
4449
4450    public boolean hasDescriptionElement() { 
4451      return this.description != null && !this.description.isEmpty();
4452    }
4453
4454    public boolean hasDescription() { 
4455      return this.description != null && !this.description.isEmpty();
4456    }
4457
4458    /**
4459     * @param value {@link #description} (A free-text description of what is to be performed.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
4460     */
4461    public Task setDescriptionElement(StringType value) { 
4462      this.description = value;
4463      return this;
4464    }
4465
4466    /**
4467     * @return A free-text description of what is to be performed.
4468     */
4469    public String getDescription() { 
4470      return this.description == null ? null : this.description.getValue();
4471    }
4472
4473    /**
4474     * @param value A free-text description of what is to be performed.
4475     */
4476    public Task setDescription(String value) { 
4477      if (Utilities.noString(value))
4478        this.description = null;
4479      else {
4480        if (this.description == null)
4481          this.description = new StringType();
4482        this.description.setValue(value);
4483      }
4484      return this;
4485    }
4486
4487    /**
4488     * @return {@link #focus} (The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this task.)
4489     */
4490    public Reference getFocus() { 
4491      if (this.focus == null)
4492        if (Configuration.errorOnAutoCreate())
4493          throw new Error("Attempt to auto-create Task.focus");
4494        else if (Configuration.doAutoCreate())
4495          this.focus = new Reference(); // cc
4496      return this.focus;
4497    }
4498
4499    public boolean hasFocus() { 
4500      return this.focus != null && !this.focus.isEmpty();
4501    }
4502
4503    /**
4504     * @param value {@link #focus} (The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this task.)
4505     */
4506    public Task setFocus(Reference value) { 
4507      this.focus = value;
4508      return this;
4509    }
4510
4511    /**
4512     * @return {@link #for_} (The entity who benefits from the performance of the service specified in the task (e.g., the patient).)
4513     */
4514    public Reference getFor() { 
4515      if (this.for_ == null)
4516        if (Configuration.errorOnAutoCreate())
4517          throw new Error("Attempt to auto-create Task.for_");
4518        else if (Configuration.doAutoCreate())
4519          this.for_ = new Reference(); // cc
4520      return this.for_;
4521    }
4522
4523    public boolean hasFor() { 
4524      return this.for_ != null && !this.for_.isEmpty();
4525    }
4526
4527    /**
4528     * @param value {@link #for_} (The entity who benefits from the performance of the service specified in the task (e.g., the patient).)
4529     */
4530    public Task setFor(Reference value) { 
4531      this.for_ = value;
4532      return this;
4533    }
4534
4535    /**
4536     * @return {@link #encounter} (The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created.)
4537     */
4538    public Reference getEncounter() { 
4539      if (this.encounter == null)
4540        if (Configuration.errorOnAutoCreate())
4541          throw new Error("Attempt to auto-create Task.encounter");
4542        else if (Configuration.doAutoCreate())
4543          this.encounter = new Reference(); // cc
4544      return this.encounter;
4545    }
4546
4547    public boolean hasEncounter() { 
4548      return this.encounter != null && !this.encounter.isEmpty();
4549    }
4550
4551    /**
4552     * @param value {@link #encounter} (The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created.)
4553     */
4554    public Task setEncounter(Reference value) { 
4555      this.encounter = value;
4556      return this;
4557    }
4558
4559    /**
4560     * @return {@link #requestedPeriod} (Indicates the start and/or end of the period of time when completion of the task is desired to take place.)
4561     */
4562    public Period getRequestedPeriod() { 
4563      if (this.requestedPeriod == null)
4564        if (Configuration.errorOnAutoCreate())
4565          throw new Error("Attempt to auto-create Task.requestedPeriod");
4566        else if (Configuration.doAutoCreate())
4567          this.requestedPeriod = new Period(); // cc
4568      return this.requestedPeriod;
4569    }
4570
4571    public boolean hasRequestedPeriod() { 
4572      return this.requestedPeriod != null && !this.requestedPeriod.isEmpty();
4573    }
4574
4575    /**
4576     * @param value {@link #requestedPeriod} (Indicates the start and/or end of the period of time when completion of the task is desired to take place.)
4577     */
4578    public Task setRequestedPeriod(Period value) { 
4579      this.requestedPeriod = value;
4580      return this;
4581    }
4582
4583    /**
4584     * @return {@link #executionPeriod} (Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end).)
4585     */
4586    public Period getExecutionPeriod() { 
4587      if (this.executionPeriod == null)
4588        if (Configuration.errorOnAutoCreate())
4589          throw new Error("Attempt to auto-create Task.executionPeriod");
4590        else if (Configuration.doAutoCreate())
4591          this.executionPeriod = new Period(); // cc
4592      return this.executionPeriod;
4593    }
4594
4595    public boolean hasExecutionPeriod() { 
4596      return this.executionPeriod != null && !this.executionPeriod.isEmpty();
4597    }
4598
4599    /**
4600     * @param value {@link #executionPeriod} (Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end).)
4601     */
4602    public Task setExecutionPeriod(Period value) { 
4603      this.executionPeriod = value;
4604      return this;
4605    }
4606
4607    /**
4608     * @return {@link #authoredOn} (The date and time this task was created.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
4609     */
4610    public DateTimeType getAuthoredOnElement() { 
4611      if (this.authoredOn == null)
4612        if (Configuration.errorOnAutoCreate())
4613          throw new Error("Attempt to auto-create Task.authoredOn");
4614        else if (Configuration.doAutoCreate())
4615          this.authoredOn = new DateTimeType(); // bb
4616      return this.authoredOn;
4617    }
4618
4619    public boolean hasAuthoredOnElement() { 
4620      return this.authoredOn != null && !this.authoredOn.isEmpty();
4621    }
4622
4623    public boolean hasAuthoredOn() { 
4624      return this.authoredOn != null && !this.authoredOn.isEmpty();
4625    }
4626
4627    /**
4628     * @param value {@link #authoredOn} (The date and time this task was created.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
4629     */
4630    public Task setAuthoredOnElement(DateTimeType value) { 
4631      this.authoredOn = value;
4632      return this;
4633    }
4634
4635    /**
4636     * @return The date and time this task was created.
4637     */
4638    public Date getAuthoredOn() { 
4639      return this.authoredOn == null ? null : this.authoredOn.getValue();
4640    }
4641
4642    /**
4643     * @param value The date and time this task was created.
4644     */
4645    public Task setAuthoredOn(Date value) { 
4646      if (value == null)
4647        this.authoredOn = null;
4648      else {
4649        if (this.authoredOn == null)
4650          this.authoredOn = new DateTimeType();
4651        this.authoredOn.setValue(value);
4652      }
4653      return this;
4654    }
4655
4656    /**
4657     * @return {@link #lastModified} (The date and time of last modification to this task.). This is the underlying object with id, value and extensions. The accessor "getLastModified" gives direct access to the value
4658     */
4659    public DateTimeType getLastModifiedElement() { 
4660      if (this.lastModified == null)
4661        if (Configuration.errorOnAutoCreate())
4662          throw new Error("Attempt to auto-create Task.lastModified");
4663        else if (Configuration.doAutoCreate())
4664          this.lastModified = new DateTimeType(); // bb
4665      return this.lastModified;
4666    }
4667
4668    public boolean hasLastModifiedElement() { 
4669      return this.lastModified != null && !this.lastModified.isEmpty();
4670    }
4671
4672    public boolean hasLastModified() { 
4673      return this.lastModified != null && !this.lastModified.isEmpty();
4674    }
4675
4676    /**
4677     * @param value {@link #lastModified} (The date and time of last modification to this task.). This is the underlying object with id, value and extensions. The accessor "getLastModified" gives direct access to the value
4678     */
4679    public Task setLastModifiedElement(DateTimeType value) { 
4680      this.lastModified = value;
4681      return this;
4682    }
4683
4684    /**
4685     * @return The date and time of last modification to this task.
4686     */
4687    public Date getLastModified() { 
4688      return this.lastModified == null ? null : this.lastModified.getValue();
4689    }
4690
4691    /**
4692     * @param value The date and time of last modification to this task.
4693     */
4694    public Task setLastModified(Date value) { 
4695      if (value == null)
4696        this.lastModified = null;
4697      else {
4698        if (this.lastModified == null)
4699          this.lastModified = new DateTimeType();
4700        this.lastModified.setValue(value);
4701      }
4702      return this;
4703    }
4704
4705    /**
4706     * @return {@link #requester} (The creator of the task.)
4707     */
4708    public Reference getRequester() { 
4709      if (this.requester == null)
4710        if (Configuration.errorOnAutoCreate())
4711          throw new Error("Attempt to auto-create Task.requester");
4712        else if (Configuration.doAutoCreate())
4713          this.requester = new Reference(); // cc
4714      return this.requester;
4715    }
4716
4717    public boolean hasRequester() { 
4718      return this.requester != null && !this.requester.isEmpty();
4719    }
4720
4721    /**
4722     * @param value {@link #requester} (The creator of the task.)
4723     */
4724    public Task setRequester(Reference value) { 
4725      this.requester = value;
4726      return this;
4727    }
4728
4729    /**
4730     * @return {@link #requestedPerformer} (The kind of participant or specific participant that should perform the task.)
4731     */
4732    public List<CodeableReference> getRequestedPerformer() { 
4733      if (this.requestedPerformer == null)
4734        this.requestedPerformer = new ArrayList<CodeableReference>();
4735      return this.requestedPerformer;
4736    }
4737
4738    /**
4739     * @return Returns a reference to <code>this</code> for easy method chaining
4740     */
4741    public Task setRequestedPerformer(List<CodeableReference> theRequestedPerformer) { 
4742      this.requestedPerformer = theRequestedPerformer;
4743      return this;
4744    }
4745
4746    public boolean hasRequestedPerformer() { 
4747      if (this.requestedPerformer == null)
4748        return false;
4749      for (CodeableReference item : this.requestedPerformer)
4750        if (!item.isEmpty())
4751          return true;
4752      return false;
4753    }
4754
4755    public CodeableReference addRequestedPerformer() { //3
4756      CodeableReference t = new CodeableReference();
4757      if (this.requestedPerformer == null)
4758        this.requestedPerformer = new ArrayList<CodeableReference>();
4759      this.requestedPerformer.add(t);
4760      return t;
4761    }
4762
4763    public Task addRequestedPerformer(CodeableReference t) { //3
4764      if (t == null)
4765        return this;
4766      if (this.requestedPerformer == null)
4767        this.requestedPerformer = new ArrayList<CodeableReference>();
4768      this.requestedPerformer.add(t);
4769      return this;
4770    }
4771
4772    /**
4773     * @return The first repetition of repeating field {@link #requestedPerformer}, creating it if it does not already exist {3}
4774     */
4775    public CodeableReference getRequestedPerformerFirstRep() { 
4776      if (getRequestedPerformer().isEmpty()) {
4777        addRequestedPerformer();
4778      }
4779      return getRequestedPerformer().get(0);
4780    }
4781
4782    /**
4783     * @return {@link #owner} (Party responsible for managing task execution.)
4784     */
4785    public Reference getOwner() { 
4786      if (this.owner == null)
4787        if (Configuration.errorOnAutoCreate())
4788          throw new Error("Attempt to auto-create Task.owner");
4789        else if (Configuration.doAutoCreate())
4790          this.owner = new Reference(); // cc
4791      return this.owner;
4792    }
4793
4794    public boolean hasOwner() { 
4795      return this.owner != null && !this.owner.isEmpty();
4796    }
4797
4798    /**
4799     * @param value {@link #owner} (Party responsible for managing task execution.)
4800     */
4801    public Task setOwner(Reference value) { 
4802      this.owner = value;
4803      return this;
4804    }
4805
4806    /**
4807     * @return {@link #performer} (The entity who performed the requested task.)
4808     */
4809    public List<TaskPerformerComponent> getPerformer() { 
4810      if (this.performer == null)
4811        this.performer = new ArrayList<TaskPerformerComponent>();
4812      return this.performer;
4813    }
4814
4815    /**
4816     * @return Returns a reference to <code>this</code> for easy method chaining
4817     */
4818    public Task setPerformer(List<TaskPerformerComponent> thePerformer) { 
4819      this.performer = thePerformer;
4820      return this;
4821    }
4822
4823    public boolean hasPerformer() { 
4824      if (this.performer == null)
4825        return false;
4826      for (TaskPerformerComponent item : this.performer)
4827        if (!item.isEmpty())
4828          return true;
4829      return false;
4830    }
4831
4832    public TaskPerformerComponent addPerformer() { //3
4833      TaskPerformerComponent t = new TaskPerformerComponent();
4834      if (this.performer == null)
4835        this.performer = new ArrayList<TaskPerformerComponent>();
4836      this.performer.add(t);
4837      return t;
4838    }
4839
4840    public Task addPerformer(TaskPerformerComponent t) { //3
4841      if (t == null)
4842        return this;
4843      if (this.performer == null)
4844        this.performer = new ArrayList<TaskPerformerComponent>();
4845      this.performer.add(t);
4846      return this;
4847    }
4848
4849    /**
4850     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
4851     */
4852    public TaskPerformerComponent getPerformerFirstRep() { 
4853      if (getPerformer().isEmpty()) {
4854        addPerformer();
4855      }
4856      return getPerformer().get(0);
4857    }
4858
4859    /**
4860     * @return {@link #location} (Principal physical location where this task is performed.)
4861     */
4862    public Reference getLocation() { 
4863      if (this.location == null)
4864        if (Configuration.errorOnAutoCreate())
4865          throw new Error("Attempt to auto-create Task.location");
4866        else if (Configuration.doAutoCreate())
4867          this.location = new Reference(); // cc
4868      return this.location;
4869    }
4870
4871    public boolean hasLocation() { 
4872      return this.location != null && !this.location.isEmpty();
4873    }
4874
4875    /**
4876     * @param value {@link #location} (Principal physical location where this task is performed.)
4877     */
4878    public Task setLocation(Reference value) { 
4879      this.location = value;
4880      return this;
4881    }
4882
4883    /**
4884     * @return {@link #reason} (A description, code, or reference indicating why this task needs to be performed.)
4885     */
4886    public List<CodeableReference> getReason() { 
4887      if (this.reason == null)
4888        this.reason = new ArrayList<CodeableReference>();
4889      return this.reason;
4890    }
4891
4892    /**
4893     * @return Returns a reference to <code>this</code> for easy method chaining
4894     */
4895    public Task setReason(List<CodeableReference> theReason) { 
4896      this.reason = theReason;
4897      return this;
4898    }
4899
4900    public boolean hasReason() { 
4901      if (this.reason == null)
4902        return false;
4903      for (CodeableReference item : this.reason)
4904        if (!item.isEmpty())
4905          return true;
4906      return false;
4907    }
4908
4909    public CodeableReference addReason() { //3
4910      CodeableReference t = new CodeableReference();
4911      if (this.reason == null)
4912        this.reason = new ArrayList<CodeableReference>();
4913      this.reason.add(t);
4914      return t;
4915    }
4916
4917    public Task addReason(CodeableReference t) { //3
4918      if (t == null)
4919        return this;
4920      if (this.reason == null)
4921        this.reason = new ArrayList<CodeableReference>();
4922      this.reason.add(t);
4923      return this;
4924    }
4925
4926    /**
4927     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
4928     */
4929    public CodeableReference getReasonFirstRep() { 
4930      if (getReason().isEmpty()) {
4931        addReason();
4932      }
4933      return getReason().get(0);
4934    }
4935
4936    /**
4937     * @return {@link #insurance} (Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task.)
4938     */
4939    public List<Reference> getInsurance() { 
4940      if (this.insurance == null)
4941        this.insurance = new ArrayList<Reference>();
4942      return this.insurance;
4943    }
4944
4945    /**
4946     * @return Returns a reference to <code>this</code> for easy method chaining
4947     */
4948    public Task setInsurance(List<Reference> theInsurance) { 
4949      this.insurance = theInsurance;
4950      return this;
4951    }
4952
4953    public boolean hasInsurance() { 
4954      if (this.insurance == null)
4955        return false;
4956      for (Reference item : this.insurance)
4957        if (!item.isEmpty())
4958          return true;
4959      return false;
4960    }
4961
4962    public Reference addInsurance() { //3
4963      Reference t = new Reference();
4964      if (this.insurance == null)
4965        this.insurance = new ArrayList<Reference>();
4966      this.insurance.add(t);
4967      return t;
4968    }
4969
4970    public Task addInsurance(Reference t) { //3
4971      if (t == null)
4972        return this;
4973      if (this.insurance == null)
4974        this.insurance = new ArrayList<Reference>();
4975      this.insurance.add(t);
4976      return this;
4977    }
4978
4979    /**
4980     * @return The first repetition of repeating field {@link #insurance}, creating it if it does not already exist {3}
4981     */
4982    public Reference getInsuranceFirstRep() { 
4983      if (getInsurance().isEmpty()) {
4984        addInsurance();
4985      }
4986      return getInsurance().get(0);
4987    }
4988
4989    /**
4990     * @return {@link #note} (Free-text information captured about the task as it progresses.)
4991     */
4992    public List<Annotation> getNote() { 
4993      if (this.note == null)
4994        this.note = new ArrayList<Annotation>();
4995      return this.note;
4996    }
4997
4998    /**
4999     * @return Returns a reference to <code>this</code> for easy method chaining
5000     */
5001    public Task setNote(List<Annotation> theNote) { 
5002      this.note = theNote;
5003      return this;
5004    }
5005
5006    public boolean hasNote() { 
5007      if (this.note == null)
5008        return false;
5009      for (Annotation item : this.note)
5010        if (!item.isEmpty())
5011          return true;
5012      return false;
5013    }
5014
5015    public Annotation addNote() { //3
5016      Annotation t = new Annotation();
5017      if (this.note == null)
5018        this.note = new ArrayList<Annotation>();
5019      this.note.add(t);
5020      return t;
5021    }
5022
5023    public Task addNote(Annotation t) { //3
5024      if (t == null)
5025        return this;
5026      if (this.note == null)
5027        this.note = new ArrayList<Annotation>();
5028      this.note.add(t);
5029      return this;
5030    }
5031
5032    /**
5033     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
5034     */
5035    public Annotation getNoteFirstRep() { 
5036      if (getNote().isEmpty()) {
5037        addNote();
5038      }
5039      return getNote().get(0);
5040    }
5041
5042    /**
5043     * @return {@link #relevantHistory} (Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task.)
5044     */
5045    public List<Reference> getRelevantHistory() { 
5046      if (this.relevantHistory == null)
5047        this.relevantHistory = new ArrayList<Reference>();
5048      return this.relevantHistory;
5049    }
5050
5051    /**
5052     * @return Returns a reference to <code>this</code> for easy method chaining
5053     */
5054    public Task setRelevantHistory(List<Reference> theRelevantHistory) { 
5055      this.relevantHistory = theRelevantHistory;
5056      return this;
5057    }
5058
5059    public boolean hasRelevantHistory() { 
5060      if (this.relevantHistory == null)
5061        return false;
5062      for (Reference item : this.relevantHistory)
5063        if (!item.isEmpty())
5064          return true;
5065      return false;
5066    }
5067
5068    public Reference addRelevantHistory() { //3
5069      Reference t = new Reference();
5070      if (this.relevantHistory == null)
5071        this.relevantHistory = new ArrayList<Reference>();
5072      this.relevantHistory.add(t);
5073      return t;
5074    }
5075
5076    public Task addRelevantHistory(Reference t) { //3
5077      if (t == null)
5078        return this;
5079      if (this.relevantHistory == null)
5080        this.relevantHistory = new ArrayList<Reference>();
5081      this.relevantHistory.add(t);
5082      return this;
5083    }
5084
5085    /**
5086     * @return The first repetition of repeating field {@link #relevantHistory}, creating it if it does not already exist {3}
5087     */
5088    public Reference getRelevantHistoryFirstRep() { 
5089      if (getRelevantHistory().isEmpty()) {
5090        addRelevantHistory();
5091      }
5092      return getRelevantHistory().get(0);
5093    }
5094
5095    /**
5096     * @return {@link #restriction} (If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned.)
5097     */
5098    public TaskRestrictionComponent getRestriction() { 
5099      if (this.restriction == null)
5100        if (Configuration.errorOnAutoCreate())
5101          throw new Error("Attempt to auto-create Task.restriction");
5102        else if (Configuration.doAutoCreate())
5103          this.restriction = new TaskRestrictionComponent(); // cc
5104      return this.restriction;
5105    }
5106
5107    public boolean hasRestriction() { 
5108      return this.restriction != null && !this.restriction.isEmpty();
5109    }
5110
5111    /**
5112     * @param value {@link #restriction} (If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned.)
5113     */
5114    public Task setRestriction(TaskRestrictionComponent value) { 
5115      this.restriction = value;
5116      return this;
5117    }
5118
5119    /**
5120     * @return {@link #input} (Additional information that may be needed in the execution of the task.)
5121     */
5122    public List<TaskInputComponent> getInput() { 
5123      if (this.input == null)
5124        this.input = new ArrayList<TaskInputComponent>();
5125      return this.input;
5126    }
5127
5128    /**
5129     * @return Returns a reference to <code>this</code> for easy method chaining
5130     */
5131    public Task setInput(List<TaskInputComponent> theInput) { 
5132      this.input = theInput;
5133      return this;
5134    }
5135
5136    public boolean hasInput() { 
5137      if (this.input == null)
5138        return false;
5139      for (TaskInputComponent item : this.input)
5140        if (!item.isEmpty())
5141          return true;
5142      return false;
5143    }
5144
5145    public TaskInputComponent addInput() { //3
5146      TaskInputComponent t = new TaskInputComponent();
5147      if (this.input == null)
5148        this.input = new ArrayList<TaskInputComponent>();
5149      this.input.add(t);
5150      return t;
5151    }
5152
5153    public Task addInput(TaskInputComponent t) { //3
5154      if (t == null)
5155        return this;
5156      if (this.input == null)
5157        this.input = new ArrayList<TaskInputComponent>();
5158      this.input.add(t);
5159      return this;
5160    }
5161
5162    /**
5163     * @return The first repetition of repeating field {@link #input}, creating it if it does not already exist {3}
5164     */
5165    public TaskInputComponent getInputFirstRep() { 
5166      if (getInput().isEmpty()) {
5167        addInput();
5168      }
5169      return getInput().get(0);
5170    }
5171
5172    /**
5173     * @return {@link #output} (Outputs produced by the Task.)
5174     */
5175    public List<TaskOutputComponent> getOutput() { 
5176      if (this.output == null)
5177        this.output = new ArrayList<TaskOutputComponent>();
5178      return this.output;
5179    }
5180
5181    /**
5182     * @return Returns a reference to <code>this</code> for easy method chaining
5183     */
5184    public Task setOutput(List<TaskOutputComponent> theOutput) { 
5185      this.output = theOutput;
5186      return this;
5187    }
5188
5189    public boolean hasOutput() { 
5190      if (this.output == null)
5191        return false;
5192      for (TaskOutputComponent item : this.output)
5193        if (!item.isEmpty())
5194          return true;
5195      return false;
5196    }
5197
5198    public TaskOutputComponent addOutput() { //3
5199      TaskOutputComponent t = new TaskOutputComponent();
5200      if (this.output == null)
5201        this.output = new ArrayList<TaskOutputComponent>();
5202      this.output.add(t);
5203      return t;
5204    }
5205
5206    public Task addOutput(TaskOutputComponent t) { //3
5207      if (t == null)
5208        return this;
5209      if (this.output == null)
5210        this.output = new ArrayList<TaskOutputComponent>();
5211      this.output.add(t);
5212      return this;
5213    }
5214
5215    /**
5216     * @return The first repetition of repeating field {@link #output}, creating it if it does not already exist {3}
5217     */
5218    public TaskOutputComponent getOutputFirstRep() { 
5219      if (getOutput().isEmpty()) {
5220        addOutput();
5221      }
5222      return getOutput().get(0);
5223    }
5224
5225      protected void listChildren(List<Property> children) {
5226        super.listChildren(children);
5227        children.add(new Property("identifier", "Identifier", "The business identifier for this task.", 0, java.lang.Integer.MAX_VALUE, identifier));
5228        children.add(new Property("instantiatesCanonical", "canonical(ActivityDefinition)", "The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.", 0, 1, instantiatesCanonical));
5229        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.", 0, 1, instantiatesUri));
5230        children.add(new Property("basedOn", "Reference(Any)", "BasedOn refers to a higher-level authorization that triggered the creation of the task.  It references a \"request\" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the \"request\" resource the task is seeking to fulfill.  This latter resource is referenced by focus.  For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patient.", 0, java.lang.Integer.MAX_VALUE, basedOn));
5231        children.add(new Property("groupIdentifier", "Identifier", "A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.", 0, 1, groupIdentifier));
5232        children.add(new Property("partOf", "Reference(Task)", "Task that this particular task is part of.", 0, java.lang.Integer.MAX_VALUE, partOf));
5233        children.add(new Property("status", "code", "The current status of the task.", 0, 1, status));
5234        children.add(new Property("statusReason", "CodeableReference", "An explanation as to why this task is held, failed, was refused, etc.", 0, 1, statusReason));
5235        children.add(new Property("businessStatus", "CodeableConcept", "Contains business-specific nuances of the business state.", 0, 1, businessStatus));
5236        children.add(new Property("intent", "code", "Indicates the \"level\" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.", 0, 1, intent));
5237        children.add(new Property("priority", "code", "Indicates how quickly the Task should be addressed with respect to other requests.", 0, 1, priority));
5238        children.add(new Property("doNotPerform", "boolean", "If true indicates that the Task is asking for the specified action to *not* occur.", 0, 1, doNotPerform));
5239        children.add(new Property("code", "CodeableConcept", "A name or code (or both) briefly describing what the task involves.", 0, 1, code));
5240        children.add(new Property("description", "string", "A free-text description of what is to be performed.", 0, 1, description));
5241        children.add(new Property("focus", "Reference(Any)", "The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this task.", 0, 1, focus));
5242        children.add(new Property("for", "Reference(Any)", "The entity who benefits from the performance of the service specified in the task (e.g., the patient).", 0, 1, for_));
5243        children.add(new Property("encounter", "Reference(Encounter)", "The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created.", 0, 1, encounter));
5244        children.add(new Property("requestedPeriod", "Period", "Indicates the start and/or end of the period of time when completion of the task is desired to take place.", 0, 1, requestedPeriod));
5245        children.add(new Property("executionPeriod", "Period", "Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end).", 0, 1, executionPeriod));
5246        children.add(new Property("authoredOn", "dateTime", "The date and time this task was created.", 0, 1, authoredOn));
5247        children.add(new Property("lastModified", "dateTime", "The date and time of last modification to this task.", 0, 1, lastModified));
5248        children.add(new Property("requester", "Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "The creator of the task.", 0, 1, requester));
5249        children.add(new Property("requestedPerformer", "CodeableReference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The kind of participant or specific participant that should perform the task.", 0, java.lang.Integer.MAX_VALUE, requestedPerformer));
5250        children.add(new Property("owner", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|RelatedPerson)", "Party responsible for managing task execution.", 0, 1, owner));
5251        children.add(new Property("performer", "", "The entity who performed the requested task.", 0, java.lang.Integer.MAX_VALUE, performer));
5252        children.add(new Property("location", "Reference(Location)", "Principal physical location where this task is performed.", 0, 1, location));
5253        children.add(new Property("reason", "CodeableReference", "A description, code, or reference indicating why this task needs to be performed.", 0, java.lang.Integer.MAX_VALUE, reason));
5254        children.add(new Property("insurance", "Reference(Coverage|ClaimResponse)", "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task.", 0, java.lang.Integer.MAX_VALUE, insurance));
5255        children.add(new Property("note", "Annotation", "Free-text information captured about the task as it progresses.", 0, java.lang.Integer.MAX_VALUE, note));
5256        children.add(new Property("relevantHistory", "Reference(Provenance)", "Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task.", 0, java.lang.Integer.MAX_VALUE, relevantHistory));
5257        children.add(new Property("restriction", "", "If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned.", 0, 1, restriction));
5258        children.add(new Property("input", "", "Additional information that may be needed in the execution of the task.", 0, java.lang.Integer.MAX_VALUE, input));
5259        children.add(new Property("output", "", "Outputs produced by the Task.", 0, java.lang.Integer.MAX_VALUE, output));
5260      }
5261
5262      @Override
5263      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5264        switch (_hash) {
5265        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "The business identifier for this task.", 0, java.lang.Integer.MAX_VALUE, identifier);
5266        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(ActivityDefinition)", "The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.", 0, 1, instantiatesCanonical);
5267        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task.", 0, 1, instantiatesUri);
5268        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(Any)", "BasedOn refers to a higher-level authorization that triggered the creation of the task.  It references a \"request\" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the \"request\" resource the task is seeking to fulfill.  This latter resource is referenced by focus.  For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patient.", 0, java.lang.Integer.MAX_VALUE, basedOn);
5269        case -445338488: /*groupIdentifier*/  return new Property("groupIdentifier", "Identifier", "A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.", 0, 1, groupIdentifier);
5270        case -995410646: /*partOf*/  return new Property("partOf", "Reference(Task)", "Task that this particular task is part of.", 0, java.lang.Integer.MAX_VALUE, partOf);
5271        case -892481550: /*status*/  return new Property("status", "code", "The current status of the task.", 0, 1, status);
5272        case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableReference", "An explanation as to why this task is held, failed, was refused, etc.", 0, 1, statusReason);
5273        case 2008591314: /*businessStatus*/  return new Property("businessStatus", "CodeableConcept", "Contains business-specific nuances of the business state.", 0, 1, businessStatus);
5274        case -1183762788: /*intent*/  return new Property("intent", "code", "Indicates the \"level\" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc.", 0, 1, intent);
5275        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the Task should be addressed with respect to other requests.", 0, 1, priority);
5276        case -1788508167: /*doNotPerform*/  return new Property("doNotPerform", "boolean", "If true indicates that the Task is asking for the specified action to *not* occur.", 0, 1, doNotPerform);
5277        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A name or code (or both) briefly describing what the task involves.", 0, 1, code);
5278        case -1724546052: /*description*/  return new Property("description", "string", "A free-text description of what is to be performed.", 0, 1, description);
5279        case 97604824: /*focus*/  return new Property("focus", "Reference(Any)", "The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this task.", 0, 1, focus);
5280        case 101577: /*for*/  return new Property("for", "Reference(Any)", "The entity who benefits from the performance of the service specified in the task (e.g., the patient).", 0, 1, for_);
5281        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created.", 0, 1, encounter);
5282        case -897241393: /*requestedPeriod*/  return new Property("requestedPeriod", "Period", "Indicates the start and/or end of the period of time when completion of the task is desired to take place.", 0, 1, requestedPeriod);
5283        case 1218624249: /*executionPeriod*/  return new Property("executionPeriod", "Period", "Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end).", 0, 1, executionPeriod);
5284        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "The date and time this task was created.", 0, 1, authoredOn);
5285        case 1959003007: /*lastModified*/  return new Property("lastModified", "dateTime", "The date and time of last modification to this task.", 0, 1, lastModified);
5286        case 693933948: /*requester*/  return new Property("requester", "Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "The creator of the task.", 0, 1, requester);
5287        case 2072749056: /*requestedPerformer*/  return new Property("requestedPerformer", "CodeableReference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The kind of participant or specific participant that should perform the task.", 0, java.lang.Integer.MAX_VALUE, requestedPerformer);
5288        case 106164915: /*owner*/  return new Property("owner", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|RelatedPerson)", "Party responsible for managing task execution.", 0, 1, owner);
5289        case 481140686: /*performer*/  return new Property("performer", "", "The entity who performed the requested task.", 0, java.lang.Integer.MAX_VALUE, performer);
5290        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "Principal physical location where this task is performed.", 0, 1, location);
5291        case -934964668: /*reason*/  return new Property("reason", "CodeableReference", "A description, code, or reference indicating why this task needs to be performed.", 0, java.lang.Integer.MAX_VALUE, reason);
5292        case 73049818: /*insurance*/  return new Property("insurance", "Reference(Coverage|ClaimResponse)", "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task.", 0, java.lang.Integer.MAX_VALUE, insurance);
5293        case 3387378: /*note*/  return new Property("note", "Annotation", "Free-text information captured about the task as it progresses.", 0, java.lang.Integer.MAX_VALUE, note);
5294        case 1538891575: /*relevantHistory*/  return new Property("relevantHistory", "Reference(Provenance)", "Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task.", 0, java.lang.Integer.MAX_VALUE, relevantHistory);
5295        case -1561062452: /*restriction*/  return new Property("restriction", "", "If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned.", 0, 1, restriction);
5296        case 100358090: /*input*/  return new Property("input", "", "Additional information that may be needed in the execution of the task.", 0, java.lang.Integer.MAX_VALUE, input);
5297        case -1005512447: /*output*/  return new Property("output", "", "Outputs produced by the Task.", 0, java.lang.Integer.MAX_VALUE, output);
5298        default: return super.getNamedProperty(_hash, _name, _checkValid);
5299        }
5300
5301      }
5302
5303      @Override
5304      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5305        switch (hash) {
5306        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
5307        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : new Base[] {this.instantiatesCanonical}; // CanonicalType
5308        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : new Base[] {this.instantiatesUri}; // UriType
5309        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
5310        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
5311        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : this.partOf.toArray(new Base[this.partOf.size()]); // Reference
5312        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<TaskStatus>
5313        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // CodeableReference
5314        case 2008591314: /*businessStatus*/ return this.businessStatus == null ? new Base[0] : new Base[] {this.businessStatus}; // CodeableConcept
5315        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<TaskIntent>
5316        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
5317        case -1788508167: /*doNotPerform*/ return this.doNotPerform == null ? new Base[0] : new Base[] {this.doNotPerform}; // BooleanType
5318        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
5319        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
5320        case 97604824: /*focus*/ return this.focus == null ? new Base[0] : new Base[] {this.focus}; // Reference
5321        case 101577: /*for*/ return this.for_ == null ? new Base[0] : new Base[] {this.for_}; // Reference
5322        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
5323        case -897241393: /*requestedPeriod*/ return this.requestedPeriod == null ? new Base[0] : new Base[] {this.requestedPeriod}; // Period
5324        case 1218624249: /*executionPeriod*/ return this.executionPeriod == null ? new Base[0] : new Base[] {this.executionPeriod}; // Period
5325        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
5326        case 1959003007: /*lastModified*/ return this.lastModified == null ? new Base[0] : new Base[] {this.lastModified}; // DateTimeType
5327        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : new Base[] {this.requester}; // Reference
5328        case 2072749056: /*requestedPerformer*/ return this.requestedPerformer == null ? new Base[0] : this.requestedPerformer.toArray(new Base[this.requestedPerformer.size()]); // CodeableReference
5329        case 106164915: /*owner*/ return this.owner == null ? new Base[0] : new Base[] {this.owner}; // Reference
5330        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // TaskPerformerComponent
5331        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
5332        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
5333        case 73049818: /*insurance*/ return this.insurance == null ? new Base[0] : this.insurance.toArray(new Base[this.insurance.size()]); // Reference
5334        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
5335        case 1538891575: /*relevantHistory*/ return this.relevantHistory == null ? new Base[0] : this.relevantHistory.toArray(new Base[this.relevantHistory.size()]); // Reference
5336        case -1561062452: /*restriction*/ return this.restriction == null ? new Base[0] : new Base[] {this.restriction}; // TaskRestrictionComponent
5337        case 100358090: /*input*/ return this.input == null ? new Base[0] : this.input.toArray(new Base[this.input.size()]); // TaskInputComponent
5338        case -1005512447: /*output*/ return this.output == null ? new Base[0] : this.output.toArray(new Base[this.output.size()]); // TaskOutputComponent
5339        default: return super.getProperty(hash, name, checkValid);
5340        }
5341
5342      }
5343
5344      @Override
5345      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5346        switch (hash) {
5347        case -1618432855: // identifier
5348          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
5349          return value;
5350        case 8911915: // instantiatesCanonical
5351          this.instantiatesCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
5352          return value;
5353        case -1926393373: // instantiatesUri
5354          this.instantiatesUri = TypeConvertor.castToUri(value); // UriType
5355          return value;
5356        case -332612366: // basedOn
5357          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
5358          return value;
5359        case -445338488: // groupIdentifier
5360          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5361          return value;
5362        case -995410646: // partOf
5363          this.getPartOf().add(TypeConvertor.castToReference(value)); // Reference
5364          return value;
5365        case -892481550: // status
5366          value = new TaskStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5367          this.status = (Enumeration) value; // Enumeration<TaskStatus>
5368          return value;
5369        case 2051346646: // statusReason
5370          this.statusReason = TypeConvertor.castToCodeableReference(value); // CodeableReference
5371          return value;
5372        case 2008591314: // businessStatus
5373          this.businessStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5374          return value;
5375        case -1183762788: // intent
5376          value = new TaskIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5377          this.intent = (Enumeration) value; // Enumeration<TaskIntent>
5378          return value;
5379        case -1165461084: // priority
5380          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5381          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5382          return value;
5383        case -1788508167: // doNotPerform
5384          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
5385          return value;
5386        case 3059181: // code
5387          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5388          return value;
5389        case -1724546052: // description
5390          this.description = TypeConvertor.castToString(value); // StringType
5391          return value;
5392        case 97604824: // focus
5393          this.focus = TypeConvertor.castToReference(value); // Reference
5394          return value;
5395        case 101577: // for
5396          this.for_ = TypeConvertor.castToReference(value); // Reference
5397          return value;
5398        case 1524132147: // encounter
5399          this.encounter = TypeConvertor.castToReference(value); // Reference
5400          return value;
5401        case -897241393: // requestedPeriod
5402          this.requestedPeriod = TypeConvertor.castToPeriod(value); // Period
5403          return value;
5404        case 1218624249: // executionPeriod
5405          this.executionPeriod = TypeConvertor.castToPeriod(value); // Period
5406          return value;
5407        case -1500852503: // authoredOn
5408          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
5409          return value;
5410        case 1959003007: // lastModified
5411          this.lastModified = TypeConvertor.castToDateTime(value); // DateTimeType
5412          return value;
5413        case 693933948: // requester
5414          this.requester = TypeConvertor.castToReference(value); // Reference
5415          return value;
5416        case 2072749056: // requestedPerformer
5417          this.getRequestedPerformer().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
5418          return value;
5419        case 106164915: // owner
5420          this.owner = TypeConvertor.castToReference(value); // Reference
5421          return value;
5422        case 481140686: // performer
5423          this.getPerformer().add((TaskPerformerComponent) value); // TaskPerformerComponent
5424          return value;
5425        case 1901043637: // location
5426          this.location = TypeConvertor.castToReference(value); // Reference
5427          return value;
5428        case -934964668: // reason
5429          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
5430          return value;
5431        case 73049818: // insurance
5432          this.getInsurance().add(TypeConvertor.castToReference(value)); // Reference
5433          return value;
5434        case 3387378: // note
5435          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
5436          return value;
5437        case 1538891575: // relevantHistory
5438          this.getRelevantHistory().add(TypeConvertor.castToReference(value)); // Reference
5439          return value;
5440        case -1561062452: // restriction
5441          this.restriction = (TaskRestrictionComponent) value; // TaskRestrictionComponent
5442          return value;
5443        case 100358090: // input
5444          this.getInput().add((TaskInputComponent) value); // TaskInputComponent
5445          return value;
5446        case -1005512447: // output
5447          this.getOutput().add((TaskOutputComponent) value); // TaskOutputComponent
5448          return value;
5449        default: return super.setProperty(hash, name, value);
5450        }
5451
5452      }
5453
5454      @Override
5455      public Base setProperty(String name, Base value) throws FHIRException {
5456        if (name.equals("identifier")) {
5457          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
5458        } else if (name.equals("instantiatesCanonical")) {
5459          this.instantiatesCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
5460        } else if (name.equals("instantiatesUri")) {
5461          this.instantiatesUri = TypeConvertor.castToUri(value); // UriType
5462        } else if (name.equals("basedOn")) {
5463          this.getBasedOn().add(TypeConvertor.castToReference(value));
5464        } else if (name.equals("groupIdentifier")) {
5465          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5466        } else if (name.equals("partOf")) {
5467          this.getPartOf().add(TypeConvertor.castToReference(value));
5468        } else if (name.equals("status")) {
5469          value = new TaskStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5470          this.status = (Enumeration) value; // Enumeration<TaskStatus>
5471        } else if (name.equals("statusReason")) {
5472          this.statusReason = TypeConvertor.castToCodeableReference(value); // CodeableReference
5473        } else if (name.equals("businessStatus")) {
5474          this.businessStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5475        } else if (name.equals("intent")) {
5476          value = new TaskIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5477          this.intent = (Enumeration) value; // Enumeration<TaskIntent>
5478        } else if (name.equals("priority")) {
5479          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5480          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5481        } else if (name.equals("doNotPerform")) {
5482          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
5483        } else if (name.equals("code")) {
5484          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5485        } else if (name.equals("description")) {
5486          this.description = TypeConvertor.castToString(value); // StringType
5487        } else if (name.equals("focus")) {
5488          this.focus = TypeConvertor.castToReference(value); // Reference
5489        } else if (name.equals("for")) {
5490          this.for_ = TypeConvertor.castToReference(value); // Reference
5491        } else if (name.equals("encounter")) {
5492          this.encounter = TypeConvertor.castToReference(value); // Reference
5493        } else if (name.equals("requestedPeriod")) {
5494          this.requestedPeriod = TypeConvertor.castToPeriod(value); // Period
5495        } else if (name.equals("executionPeriod")) {
5496          this.executionPeriod = TypeConvertor.castToPeriod(value); // Period
5497        } else if (name.equals("authoredOn")) {
5498          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
5499        } else if (name.equals("lastModified")) {
5500          this.lastModified = TypeConvertor.castToDateTime(value); // DateTimeType
5501        } else if (name.equals("requester")) {
5502          this.requester = TypeConvertor.castToReference(value); // Reference
5503        } else if (name.equals("requestedPerformer")) {
5504          this.getRequestedPerformer().add(TypeConvertor.castToCodeableReference(value));
5505        } else if (name.equals("owner")) {
5506          this.owner = TypeConvertor.castToReference(value); // Reference
5507        } else if (name.equals("performer")) {
5508          this.getPerformer().add((TaskPerformerComponent) value);
5509        } else if (name.equals("location")) {
5510          this.location = TypeConvertor.castToReference(value); // Reference
5511        } else if (name.equals("reason")) {
5512          this.getReason().add(TypeConvertor.castToCodeableReference(value));
5513        } else if (name.equals("insurance")) {
5514          this.getInsurance().add(TypeConvertor.castToReference(value));
5515        } else if (name.equals("note")) {
5516          this.getNote().add(TypeConvertor.castToAnnotation(value));
5517        } else if (name.equals("relevantHistory")) {
5518          this.getRelevantHistory().add(TypeConvertor.castToReference(value));
5519        } else if (name.equals("restriction")) {
5520          this.restriction = (TaskRestrictionComponent) value; // TaskRestrictionComponent
5521        } else if (name.equals("input")) {
5522          this.getInput().add((TaskInputComponent) value);
5523        } else if (name.equals("output")) {
5524          this.getOutput().add((TaskOutputComponent) value);
5525        } else
5526          return super.setProperty(name, value);
5527        return value;
5528      }
5529
5530  @Override
5531  public void removeChild(String name, Base value) throws FHIRException {
5532        if (name.equals("identifier")) {
5533          this.getIdentifier().remove(value);
5534        } else if (name.equals("instantiatesCanonical")) {
5535          this.instantiatesCanonical = null;
5536        } else if (name.equals("instantiatesUri")) {
5537          this.instantiatesUri = null;
5538        } else if (name.equals("basedOn")) {
5539          this.getBasedOn().remove(value);
5540        } else if (name.equals("groupIdentifier")) {
5541          this.groupIdentifier = null;
5542        } else if (name.equals("partOf")) {
5543          this.getPartOf().remove(value);
5544        } else if (name.equals("status")) {
5545          value = new TaskStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5546          this.status = (Enumeration) value; // Enumeration<TaskStatus>
5547        } else if (name.equals("statusReason")) {
5548          this.statusReason = null;
5549        } else if (name.equals("businessStatus")) {
5550          this.businessStatus = null;
5551        } else if (name.equals("intent")) {
5552          value = new TaskIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5553          this.intent = (Enumeration) value; // Enumeration<TaskIntent>
5554        } else if (name.equals("priority")) {
5555          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5556          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5557        } else if (name.equals("doNotPerform")) {
5558          this.doNotPerform = null;
5559        } else if (name.equals("code")) {
5560          this.code = null;
5561        } else if (name.equals("description")) {
5562          this.description = null;
5563        } else if (name.equals("focus")) {
5564          this.focus = null;
5565        } else if (name.equals("for")) {
5566          this.for_ = null;
5567        } else if (name.equals("encounter")) {
5568          this.encounter = null;
5569        } else if (name.equals("requestedPeriod")) {
5570          this.requestedPeriod = null;
5571        } else if (name.equals("executionPeriod")) {
5572          this.executionPeriod = null;
5573        } else if (name.equals("authoredOn")) {
5574          this.authoredOn = null;
5575        } else if (name.equals("lastModified")) {
5576          this.lastModified = null;
5577        } else if (name.equals("requester")) {
5578          this.requester = null;
5579        } else if (name.equals("requestedPerformer")) {
5580          this.getRequestedPerformer().remove(value);
5581        } else if (name.equals("owner")) {
5582          this.owner = null;
5583        } else if (name.equals("performer")) {
5584          this.getPerformer().remove((TaskPerformerComponent) value);
5585        } else if (name.equals("location")) {
5586          this.location = null;
5587        } else if (name.equals("reason")) {
5588          this.getReason().remove(value);
5589        } else if (name.equals("insurance")) {
5590          this.getInsurance().remove(value);
5591        } else if (name.equals("note")) {
5592          this.getNote().remove(value);
5593        } else if (name.equals("relevantHistory")) {
5594          this.getRelevantHistory().remove(value);
5595        } else if (name.equals("restriction")) {
5596          this.restriction = (TaskRestrictionComponent) value; // TaskRestrictionComponent
5597        } else if (name.equals("input")) {
5598          this.getInput().remove((TaskInputComponent) value);
5599        } else if (name.equals("output")) {
5600          this.getOutput().remove((TaskOutputComponent) value);
5601        } else
5602          super.removeChild(name, value);
5603        
5604      }
5605
5606      @Override
5607      public Base makeProperty(int hash, String name) throws FHIRException {
5608        switch (hash) {
5609        case -1618432855:  return addIdentifier(); 
5610        case 8911915:  return getInstantiatesCanonicalElement();
5611        case -1926393373:  return getInstantiatesUriElement();
5612        case -332612366:  return addBasedOn(); 
5613        case -445338488:  return getGroupIdentifier();
5614        case -995410646:  return addPartOf(); 
5615        case -892481550:  return getStatusElement();
5616        case 2051346646:  return getStatusReason();
5617        case 2008591314:  return getBusinessStatus();
5618        case -1183762788:  return getIntentElement();
5619        case -1165461084:  return getPriorityElement();
5620        case -1788508167:  return getDoNotPerformElement();
5621        case 3059181:  return getCode();
5622        case -1724546052:  return getDescriptionElement();
5623        case 97604824:  return getFocus();
5624        case 101577:  return getFor();
5625        case 1524132147:  return getEncounter();
5626        case -897241393:  return getRequestedPeriod();
5627        case 1218624249:  return getExecutionPeriod();
5628        case -1500852503:  return getAuthoredOnElement();
5629        case 1959003007:  return getLastModifiedElement();
5630        case 693933948:  return getRequester();
5631        case 2072749056:  return addRequestedPerformer(); 
5632        case 106164915:  return getOwner();
5633        case 481140686:  return addPerformer(); 
5634        case 1901043637:  return getLocation();
5635        case -934964668:  return addReason(); 
5636        case 73049818:  return addInsurance(); 
5637        case 3387378:  return addNote(); 
5638        case 1538891575:  return addRelevantHistory(); 
5639        case -1561062452:  return getRestriction();
5640        case 100358090:  return addInput(); 
5641        case -1005512447:  return addOutput(); 
5642        default: return super.makeProperty(hash, name);
5643        }
5644
5645      }
5646
5647      @Override
5648      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5649        switch (hash) {
5650        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
5651        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
5652        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
5653        case -332612366: /*basedOn*/ return new String[] {"Reference"};
5654        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
5655        case -995410646: /*partOf*/ return new String[] {"Reference"};
5656        case -892481550: /*status*/ return new String[] {"code"};
5657        case 2051346646: /*statusReason*/ return new String[] {"CodeableReference"};
5658        case 2008591314: /*businessStatus*/ return new String[] {"CodeableConcept"};
5659        case -1183762788: /*intent*/ return new String[] {"code"};
5660        case -1165461084: /*priority*/ return new String[] {"code"};
5661        case -1788508167: /*doNotPerform*/ return new String[] {"boolean"};
5662        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
5663        case -1724546052: /*description*/ return new String[] {"string"};
5664        case 97604824: /*focus*/ return new String[] {"Reference"};
5665        case 101577: /*for*/ return new String[] {"Reference"};
5666        case 1524132147: /*encounter*/ return new String[] {"Reference"};
5667        case -897241393: /*requestedPeriod*/ return new String[] {"Period"};
5668        case 1218624249: /*executionPeriod*/ return new String[] {"Period"};
5669        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
5670        case 1959003007: /*lastModified*/ return new String[] {"dateTime"};
5671        case 693933948: /*requester*/ return new String[] {"Reference"};
5672        case 2072749056: /*requestedPerformer*/ return new String[] {"CodeableReference"};
5673        case 106164915: /*owner*/ return new String[] {"Reference"};
5674        case 481140686: /*performer*/ return new String[] {};
5675        case 1901043637: /*location*/ return new String[] {"Reference"};
5676        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
5677        case 73049818: /*insurance*/ return new String[] {"Reference"};
5678        case 3387378: /*note*/ return new String[] {"Annotation"};
5679        case 1538891575: /*relevantHistory*/ return new String[] {"Reference"};
5680        case -1561062452: /*restriction*/ return new String[] {};
5681        case 100358090: /*input*/ return new String[] {};
5682        case -1005512447: /*output*/ return new String[] {};
5683        default: return super.getTypesForProperty(hash, name);
5684        }
5685
5686      }
5687
5688      @Override
5689      public Base addChild(String name) throws FHIRException {
5690        if (name.equals("identifier")) {
5691          return addIdentifier();
5692        }
5693        else if (name.equals("instantiatesCanonical")) {
5694          throw new FHIRException("Cannot call addChild on a singleton property Task.instantiatesCanonical");
5695        }
5696        else if (name.equals("instantiatesUri")) {
5697          throw new FHIRException("Cannot call addChild on a singleton property Task.instantiatesUri");
5698        }
5699        else if (name.equals("basedOn")) {
5700          return addBasedOn();
5701        }
5702        else if (name.equals("groupIdentifier")) {
5703          this.groupIdentifier = new Identifier();
5704          return this.groupIdentifier;
5705        }
5706        else if (name.equals("partOf")) {
5707          return addPartOf();
5708        }
5709        else if (name.equals("status")) {
5710          throw new FHIRException("Cannot call addChild on a singleton property Task.status");
5711        }
5712        else if (name.equals("statusReason")) {
5713          this.statusReason = new CodeableReference();
5714          return this.statusReason;
5715        }
5716        else if (name.equals("businessStatus")) {
5717          this.businessStatus = new CodeableConcept();
5718          return this.businessStatus;
5719        }
5720        else if (name.equals("intent")) {
5721          throw new FHIRException("Cannot call addChild on a singleton property Task.intent");
5722        }
5723        else if (name.equals("priority")) {
5724          throw new FHIRException("Cannot call addChild on a singleton property Task.priority");
5725        }
5726        else if (name.equals("doNotPerform")) {
5727          throw new FHIRException("Cannot call addChild on a singleton property Task.doNotPerform");
5728        }
5729        else if (name.equals("code")) {
5730          this.code = new CodeableConcept();
5731          return this.code;
5732        }
5733        else if (name.equals("description")) {
5734          throw new FHIRException("Cannot call addChild on a singleton property Task.description");
5735        }
5736        else if (name.equals("focus")) {
5737          this.focus = new Reference();
5738          return this.focus;
5739        }
5740        else if (name.equals("for")) {
5741          this.for_ = new Reference();
5742          return this.for_;
5743        }
5744        else if (name.equals("encounter")) {
5745          this.encounter = new Reference();
5746          return this.encounter;
5747        }
5748        else if (name.equals("requestedPeriod")) {
5749          this.requestedPeriod = new Period();
5750          return this.requestedPeriod;
5751        }
5752        else if (name.equals("executionPeriod")) {
5753          this.executionPeriod = new Period();
5754          return this.executionPeriod;
5755        }
5756        else if (name.equals("authoredOn")) {
5757          throw new FHIRException("Cannot call addChild on a singleton property Task.authoredOn");
5758        }
5759        else if (name.equals("lastModified")) {
5760          throw new FHIRException("Cannot call addChild on a singleton property Task.lastModified");
5761        }
5762        else if (name.equals("requester")) {
5763          this.requester = new Reference();
5764          return this.requester;
5765        }
5766        else if (name.equals("requestedPerformer")) {
5767          return addRequestedPerformer();
5768        }
5769        else if (name.equals("owner")) {
5770          this.owner = new Reference();
5771          return this.owner;
5772        }
5773        else if (name.equals("performer")) {
5774          return addPerformer();
5775        }
5776        else if (name.equals("location")) {
5777          this.location = new Reference();
5778          return this.location;
5779        }
5780        else if (name.equals("reason")) {
5781          return addReason();
5782        }
5783        else if (name.equals("insurance")) {
5784          return addInsurance();
5785        }
5786        else if (name.equals("note")) {
5787          return addNote();
5788        }
5789        else if (name.equals("relevantHistory")) {
5790          return addRelevantHistory();
5791        }
5792        else if (name.equals("restriction")) {
5793          this.restriction = new TaskRestrictionComponent();
5794          return this.restriction;
5795        }
5796        else if (name.equals("input")) {
5797          return addInput();
5798        }
5799        else if (name.equals("output")) {
5800          return addOutput();
5801        }
5802        else
5803          return super.addChild(name);
5804      }
5805
5806  public String fhirType() {
5807    return "Task";
5808
5809  }
5810
5811      public Task copy() {
5812        Task dst = new Task();
5813        copyValues(dst);
5814        return dst;
5815      }
5816
5817      public void copyValues(Task dst) {
5818        super.copyValues(dst);
5819        if (identifier != null) {
5820          dst.identifier = new ArrayList<Identifier>();
5821          for (Identifier i : identifier)
5822            dst.identifier.add(i.copy());
5823        };
5824        dst.instantiatesCanonical = instantiatesCanonical == null ? null : instantiatesCanonical.copy();
5825        dst.instantiatesUri = instantiatesUri == null ? null : instantiatesUri.copy();
5826        if (basedOn != null) {
5827          dst.basedOn = new ArrayList<Reference>();
5828          for (Reference i : basedOn)
5829            dst.basedOn.add(i.copy());
5830        };
5831        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
5832        if (partOf != null) {
5833          dst.partOf = new ArrayList<Reference>();
5834          for (Reference i : partOf)
5835            dst.partOf.add(i.copy());
5836        };
5837        dst.status = status == null ? null : status.copy();
5838        dst.statusReason = statusReason == null ? null : statusReason.copy();
5839        dst.businessStatus = businessStatus == null ? null : businessStatus.copy();
5840        dst.intent = intent == null ? null : intent.copy();
5841        dst.priority = priority == null ? null : priority.copy();
5842        dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
5843        dst.code = code == null ? null : code.copy();
5844        dst.description = description == null ? null : description.copy();
5845        dst.focus = focus == null ? null : focus.copy();
5846        dst.for_ = for_ == null ? null : for_.copy();
5847        dst.encounter = encounter == null ? null : encounter.copy();
5848        dst.requestedPeriod = requestedPeriod == null ? null : requestedPeriod.copy();
5849        dst.executionPeriod = executionPeriod == null ? null : executionPeriod.copy();
5850        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
5851        dst.lastModified = lastModified == null ? null : lastModified.copy();
5852        dst.requester = requester == null ? null : requester.copy();
5853        if (requestedPerformer != null) {
5854          dst.requestedPerformer = new ArrayList<CodeableReference>();
5855          for (CodeableReference i : requestedPerformer)
5856            dst.requestedPerformer.add(i.copy());
5857        };
5858        dst.owner = owner == null ? null : owner.copy();
5859        if (performer != null) {
5860          dst.performer = new ArrayList<TaskPerformerComponent>();
5861          for (TaskPerformerComponent i : performer)
5862            dst.performer.add(i.copy());
5863        };
5864        dst.location = location == null ? null : location.copy();
5865        if (reason != null) {
5866          dst.reason = new ArrayList<CodeableReference>();
5867          for (CodeableReference i : reason)
5868            dst.reason.add(i.copy());
5869        };
5870        if (insurance != null) {
5871          dst.insurance = new ArrayList<Reference>();
5872          for (Reference i : insurance)
5873            dst.insurance.add(i.copy());
5874        };
5875        if (note != null) {
5876          dst.note = new ArrayList<Annotation>();
5877          for (Annotation i : note)
5878            dst.note.add(i.copy());
5879        };
5880        if (relevantHistory != null) {
5881          dst.relevantHistory = new ArrayList<Reference>();
5882          for (Reference i : relevantHistory)
5883            dst.relevantHistory.add(i.copy());
5884        };
5885        dst.restriction = restriction == null ? null : restriction.copy();
5886        if (input != null) {
5887          dst.input = new ArrayList<TaskInputComponent>();
5888          for (TaskInputComponent i : input)
5889            dst.input.add(i.copy());
5890        };
5891        if (output != null) {
5892          dst.output = new ArrayList<TaskOutputComponent>();
5893          for (TaskOutputComponent i : output)
5894            dst.output.add(i.copy());
5895        };
5896      }
5897
5898      protected Task typedCopy() {
5899        return copy();
5900      }
5901
5902      @Override
5903      public boolean equalsDeep(Base other_) {
5904        if (!super.equalsDeep(other_))
5905          return false;
5906        if (!(other_ instanceof Task))
5907          return false;
5908        Task o = (Task) other_;
5909        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
5910           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
5911           && compareDeep(groupIdentifier, o.groupIdentifier, true) && compareDeep(partOf, o.partOf, true)
5912           && compareDeep(status, o.status, true) && compareDeep(statusReason, o.statusReason, true) && compareDeep(businessStatus, o.businessStatus, true)
5913           && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true) && compareDeep(doNotPerform, o.doNotPerform, true)
5914           && compareDeep(code, o.code, true) && compareDeep(description, o.description, true) && compareDeep(focus, o.focus, true)
5915           && compareDeep(for_, o.for_, true) && compareDeep(encounter, o.encounter, true) && compareDeep(requestedPeriod, o.requestedPeriod, true)
5916           && compareDeep(executionPeriod, o.executionPeriod, true) && compareDeep(authoredOn, o.authoredOn, true)
5917           && compareDeep(lastModified, o.lastModified, true) && compareDeep(requester, o.requester, true)
5918           && compareDeep(requestedPerformer, o.requestedPerformer, true) && compareDeep(owner, o.owner, true)
5919           && compareDeep(performer, o.performer, true) && compareDeep(location, o.location, true) && compareDeep(reason, o.reason, true)
5920           && compareDeep(insurance, o.insurance, true) && compareDeep(note, o.note, true) && compareDeep(relevantHistory, o.relevantHistory, true)
5921           && compareDeep(restriction, o.restriction, true) && compareDeep(input, o.input, true) && compareDeep(output, o.output, true)
5922          ;
5923      }
5924
5925      @Override
5926      public boolean equalsShallow(Base other_) {
5927        if (!super.equalsShallow(other_))
5928          return false;
5929        if (!(other_ instanceof Task))
5930          return false;
5931        Task o = (Task) other_;
5932        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
5933           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
5934           && compareValues(doNotPerform, o.doNotPerform, true) && compareValues(description, o.description, true)
5935           && compareValues(authoredOn, o.authoredOn, true) && compareValues(lastModified, o.lastModified, true)
5936          ;
5937      }
5938
5939      public boolean isEmpty() {
5940        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
5941          , instantiatesUri, basedOn, groupIdentifier, partOf, status, statusReason, businessStatus
5942          , intent, priority, doNotPerform, code, description, focus, for_, encounter
5943          , requestedPeriod, executionPeriod, authoredOn, lastModified, requester, requestedPerformer
5944          , owner, performer, location, reason, insurance, note, relevantHistory, restriction
5945          , input, output);
5946      }
5947
5948  @Override
5949  public ResourceType getResourceType() {
5950    return ResourceType.Task;
5951   }
5952
5953 /**
5954   * Search parameter: <b>actor</b>
5955   * <p>
5956   * Description: <b>Search by specific performer.</b><br>
5957   * Type: <b>reference</b><br>
5958   * Path: <b>Task.performer.actor</b><br>
5959   * </p>
5960   */
5961  @SearchParamDefinition(name="actor", path="Task.performer.actor", description="Search by specific performer.", type="reference", target={CareTeam.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
5962  public static final String SP_ACTOR = "actor";
5963 /**
5964   * <b>Fluent Client</b> search parameter constant for <b>actor</b>
5965   * <p>
5966   * Description: <b>Search by specific performer.</b><br>
5967   * Type: <b>reference</b><br>
5968   * Path: <b>Task.performer.actor</b><br>
5969   * </p>
5970   */
5971  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ACTOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ACTOR);
5972
5973/**
5974   * Constant for fluent queries to be used to add include statements. Specifies
5975   * the path value of "<b>Task:actor</b>".
5976   */
5977  public static final ca.uhn.fhir.model.api.Include INCLUDE_ACTOR = new ca.uhn.fhir.model.api.Include("Task:actor").toLocked();
5978
5979 /**
5980   * Search parameter: <b>authored-on</b>
5981   * <p>
5982   * Description: <b>Search by creation date</b><br>
5983   * Type: <b>date</b><br>
5984   * Path: <b>Task.authoredOn</b><br>
5985   * </p>
5986   */
5987  @SearchParamDefinition(name="authored-on", path="Task.authoredOn", description="Search by creation date", type="date" )
5988  public static final String SP_AUTHORED_ON = "authored-on";
5989 /**
5990   * <b>Fluent Client</b> search parameter constant for <b>authored-on</b>
5991   * <p>
5992   * Description: <b>Search by creation date</b><br>
5993   * Type: <b>date</b><br>
5994   * Path: <b>Task.authoredOn</b><br>
5995   * </p>
5996   */
5997  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED_ON = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED_ON);
5998
5999 /**
6000   * Search parameter: <b>based-on</b>
6001   * <p>
6002   * Description: <b>Search by requests this task is based on</b><br>
6003   * Type: <b>reference</b><br>
6004   * Path: <b>Task.basedOn</b><br>
6005   * </p>
6006   */
6007  @SearchParamDefinition(name="based-on", path="Task.basedOn", description="Search by requests this task is based on", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.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, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.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, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.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, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
6008  public static final String SP_BASED_ON = "based-on";
6009 /**
6010   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
6011   * <p>
6012   * Description: <b>Search by requests this task is based on</b><br>
6013   * Type: <b>reference</b><br>
6014   * Path: <b>Task.basedOn</b><br>
6015   * </p>
6016   */
6017  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
6018
6019/**
6020   * Constant for fluent queries to be used to add include statements. Specifies
6021   * the path value of "<b>Task:based-on</b>".
6022   */
6023  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("Task:based-on").toLocked();
6024
6025 /**
6026   * Search parameter: <b>business-status</b>
6027   * <p>
6028   * Description: <b>Search by business status</b><br>
6029   * Type: <b>token</b><br>
6030   * Path: <b>Task.businessStatus</b><br>
6031   * </p>
6032   */
6033  @SearchParamDefinition(name="business-status", path="Task.businessStatus", description="Search by business status", type="token" )
6034  public static final String SP_BUSINESS_STATUS = "business-status";
6035 /**
6036   * <b>Fluent Client</b> search parameter constant for <b>business-status</b>
6037   * <p>
6038   * Description: <b>Search by business status</b><br>
6039   * Type: <b>token</b><br>
6040   * Path: <b>Task.businessStatus</b><br>
6041   * </p>
6042   */
6043  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BUSINESS_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BUSINESS_STATUS);
6044
6045 /**
6046   * Search parameter: <b>focus</b>
6047   * <p>
6048   * Description: <b>Search by task focus</b><br>
6049   * Type: <b>reference</b><br>
6050   * Path: <b>Task.focus</b><br>
6051   * </p>
6052   */
6053  @SearchParamDefinition(name="focus", path="Task.focus", description="Search by task focus", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.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, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.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, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.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, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
6054  public static final String SP_FOCUS = "focus";
6055 /**
6056   * <b>Fluent Client</b> search parameter constant for <b>focus</b>
6057   * <p>
6058   * Description: <b>Search by task focus</b><br>
6059   * Type: <b>reference</b><br>
6060   * Path: <b>Task.focus</b><br>
6061   * </p>
6062   */
6063  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam FOCUS = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_FOCUS);
6064
6065/**
6066   * Constant for fluent queries to be used to add include statements. Specifies
6067   * the path value of "<b>Task:focus</b>".
6068   */
6069  public static final ca.uhn.fhir.model.api.Include INCLUDE_FOCUS = new ca.uhn.fhir.model.api.Include("Task:focus").toLocked();
6070
6071 /**
6072   * Search parameter: <b>group-identifier</b>
6073   * <p>
6074   * Description: <b>Search by group identifier</b><br>
6075   * Type: <b>token</b><br>
6076   * Path: <b>Task.groupIdentifier</b><br>
6077   * </p>
6078   */
6079  @SearchParamDefinition(name="group-identifier", path="Task.groupIdentifier", description="Search by group identifier", type="token" )
6080  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
6081 /**
6082   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
6083   * <p>
6084   * Description: <b>Search by group identifier</b><br>
6085   * Type: <b>token</b><br>
6086   * Path: <b>Task.groupIdentifier</b><br>
6087   * </p>
6088   */
6089  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
6090
6091 /**
6092   * Search parameter: <b>intent</b>
6093   * <p>
6094   * Description: <b>Search by task intent</b><br>
6095   * Type: <b>token</b><br>
6096   * Path: <b>Task.intent</b><br>
6097   * </p>
6098   */
6099  @SearchParamDefinition(name="intent", path="Task.intent", description="Search by task intent", type="token" )
6100  public static final String SP_INTENT = "intent";
6101 /**
6102   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
6103   * <p>
6104   * Description: <b>Search by task intent</b><br>
6105   * Type: <b>token</b><br>
6106   * Path: <b>Task.intent</b><br>
6107   * </p>
6108   */
6109  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
6110
6111 /**
6112   * Search parameter: <b>modified</b>
6113   * <p>
6114   * Description: <b>Search by last modification date</b><br>
6115   * Type: <b>date</b><br>
6116   * Path: <b>Task.lastModified</b><br>
6117   * </p>
6118   */
6119  @SearchParamDefinition(name="modified", path="Task.lastModified", description="Search by last modification date", type="date" )
6120  public static final String SP_MODIFIED = "modified";
6121 /**
6122   * <b>Fluent Client</b> search parameter constant for <b>modified</b>
6123   * <p>
6124   * Description: <b>Search by last modification date</b><br>
6125   * Type: <b>date</b><br>
6126   * Path: <b>Task.lastModified</b><br>
6127   * </p>
6128   */
6129  public static final ca.uhn.fhir.rest.gclient.DateClientParam MODIFIED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_MODIFIED);
6130
6131 /**
6132   * Search parameter: <b>output</b>
6133   * <p>
6134   * Description: <b>Search by task output</b><br>
6135   * Type: <b>reference</b><br>
6136   * Path: <b>Task.output.value.ofType(Reference)</b><br>
6137   * </p>
6138   */
6139  @SearchParamDefinition(name="output", path="Task.output.value.ofType(Reference)", description="Search by task output", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.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, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.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, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.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, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
6140  public static final String SP_OUTPUT = "output";
6141 /**
6142   * <b>Fluent Client</b> search parameter constant for <b>output</b>
6143   * <p>
6144   * Description: <b>Search by task output</b><br>
6145   * Type: <b>reference</b><br>
6146   * Path: <b>Task.output.value.ofType(Reference)</b><br>
6147   * </p>
6148   */
6149  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OUTPUT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OUTPUT);
6150
6151/**
6152   * Constant for fluent queries to be used to add include statements. Specifies
6153   * the path value of "<b>Task:output</b>".
6154   */
6155  public static final ca.uhn.fhir.model.api.Include INCLUDE_OUTPUT = new ca.uhn.fhir.model.api.Include("Task:output").toLocked();
6156
6157 /**
6158   * Search parameter: <b>owner</b>
6159   * <p>
6160   * Description: <b>Search by task owner</b><br>
6161   * Type: <b>reference</b><br>
6162   * Path: <b>Task.owner</b><br>
6163   * </p>
6164   */
6165  @SearchParamDefinition(name="owner", path="Task.owner", description="Search by task owner", type="reference", target={CareTeam.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
6166  public static final String SP_OWNER = "owner";
6167 /**
6168   * <b>Fluent Client</b> search parameter constant for <b>owner</b>
6169   * <p>
6170   * Description: <b>Search by task owner</b><br>
6171   * Type: <b>reference</b><br>
6172   * Path: <b>Task.owner</b><br>
6173   * </p>
6174   */
6175  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OWNER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OWNER);
6176
6177/**
6178   * Constant for fluent queries to be used to add include statements. Specifies
6179   * the path value of "<b>Task:owner</b>".
6180   */
6181  public static final ca.uhn.fhir.model.api.Include INCLUDE_OWNER = new ca.uhn.fhir.model.api.Include("Task:owner").toLocked();
6182
6183 /**
6184   * Search parameter: <b>part-of</b>
6185   * <p>
6186   * Description: <b>Search by task this task is part of</b><br>
6187   * Type: <b>reference</b><br>
6188   * Path: <b>Task.partOf</b><br>
6189   * </p>
6190   */
6191  @SearchParamDefinition(name="part-of", path="Task.partOf", description="Search by task this task is part of", type="reference", target={Task.class } )
6192  public static final String SP_PART_OF = "part-of";
6193 /**
6194   * <b>Fluent Client</b> search parameter constant for <b>part-of</b>
6195   * <p>
6196   * Description: <b>Search by task this task is part of</b><br>
6197   * Type: <b>reference</b><br>
6198   * Path: <b>Task.partOf</b><br>
6199   * </p>
6200   */
6201  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PART_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PART_OF);
6202
6203/**
6204   * Constant for fluent queries to be used to add include statements. Specifies
6205   * the path value of "<b>Task:part-of</b>".
6206   */
6207  public static final ca.uhn.fhir.model.api.Include INCLUDE_PART_OF = new ca.uhn.fhir.model.api.Include("Task:part-of").toLocked();
6208
6209 /**
6210   * Search parameter: <b>performer</b>
6211   * <p>
6212   * Description: <b>Search by recommended type of performer (e.g., Requester, Performer, Scheduler).</b><br>
6213   * Type: <b>token</b><br>
6214   * Path: <b>Task.requestedPerformer.concept</b><br>
6215   * </p>
6216   */
6217  @SearchParamDefinition(name="performer", path="Task.requestedPerformer.concept", description="Search by recommended type of performer (e.g., Requester, Performer, Scheduler).", type="token" )
6218  public static final String SP_PERFORMER = "performer";
6219 /**
6220   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
6221   * <p>
6222   * Description: <b>Search by recommended type of performer (e.g., Requester, Performer, Scheduler).</b><br>
6223   * Type: <b>token</b><br>
6224   * Path: <b>Task.requestedPerformer.concept</b><br>
6225   * </p>
6226   */
6227  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PERFORMER);
6228
6229 /**
6230   * Search parameter: <b>period</b>
6231   * <p>
6232   * Description: <b>Search by period Task is/was underway</b><br>
6233   * Type: <b>date</b><br>
6234   * Path: <b>Task.executionPeriod</b><br>
6235   * </p>
6236   */
6237  @SearchParamDefinition(name="period", path="Task.executionPeriod", description="Search by period Task is/was underway", type="date" )
6238  public static final String SP_PERIOD = "period";
6239 /**
6240   * <b>Fluent Client</b> search parameter constant for <b>period</b>
6241   * <p>
6242   * Description: <b>Search by period Task is/was underway</b><br>
6243   * Type: <b>date</b><br>
6244   * Path: <b>Task.executionPeriod</b><br>
6245   * </p>
6246   */
6247  public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PERIOD);
6248
6249 /**
6250   * Search parameter: <b>priority</b>
6251   * <p>
6252   * Description: <b>Search by task priority</b><br>
6253   * Type: <b>token</b><br>
6254   * Path: <b>Task.priority</b><br>
6255   * </p>
6256   */
6257  @SearchParamDefinition(name="priority", path="Task.priority", description="Search by task priority", type="token" )
6258  public static final String SP_PRIORITY = "priority";
6259 /**
6260   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
6261   * <p>
6262   * Description: <b>Search by task priority</b><br>
6263   * Type: <b>token</b><br>
6264   * Path: <b>Task.priority</b><br>
6265   * </p>
6266   */
6267  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
6268
6269 /**
6270   * Search parameter: <b>requestedperformer-reference</b>
6271   * <p>
6272   * Description: <b>Search by specific requested performer.</b><br>
6273   * Type: <b>reference</b><br>
6274   * Path: <b>Task.requestedPerformer.reference</b><br>
6275   * </p>
6276   */
6277  @SearchParamDefinition(name="requestedperformer-reference", path="Task.requestedPerformer.reference", description="Search by specific requested performer.", type="reference", target={CareTeam.class, Device.class, HealthcareService.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
6278  public static final String SP_REQUESTEDPERFORMER_REFERENCE = "requestedperformer-reference";
6279 /**
6280   * <b>Fluent Client</b> search parameter constant for <b>requestedperformer-reference</b>
6281   * <p>
6282   * Description: <b>Search by specific requested performer.</b><br>
6283   * Type: <b>reference</b><br>
6284   * Path: <b>Task.requestedPerformer.reference</b><br>
6285   * </p>
6286   */
6287  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTEDPERFORMER_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTEDPERFORMER_REFERENCE);
6288
6289/**
6290   * Constant for fluent queries to be used to add include statements. Specifies
6291   * the path value of "<b>Task:requestedperformer-reference</b>".
6292   */
6293  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTEDPERFORMER_REFERENCE = new ca.uhn.fhir.model.api.Include("Task:requestedperformer-reference").toLocked();
6294
6295 /**
6296   * Search parameter: <b>requester</b>
6297   * <p>
6298   * Description: <b>Search by task requester</b><br>
6299   * Type: <b>reference</b><br>
6300   * Path: <b>Task.requester</b><br>
6301   * </p>
6302   */
6303  @SearchParamDefinition(name="requester", path="Task.requester", description="Search by task requester", type="reference", target={Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
6304  public static final String SP_REQUESTER = "requester";
6305 /**
6306   * <b>Fluent Client</b> search parameter constant for <b>requester</b>
6307   * <p>
6308   * Description: <b>Search by task requester</b><br>
6309   * Type: <b>reference</b><br>
6310   * Path: <b>Task.requester</b><br>
6311   * </p>
6312   */
6313  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTER);
6314
6315/**
6316   * Constant for fluent queries to be used to add include statements. Specifies
6317   * the path value of "<b>Task:requester</b>".
6318   */
6319  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTER = new ca.uhn.fhir.model.api.Include("Task:requester").toLocked();
6320
6321 /**
6322   * Search parameter: <b>status</b>
6323   * <p>
6324   * Description: <b>Search by task status</b><br>
6325   * Type: <b>token</b><br>
6326   * Path: <b>Task.status</b><br>
6327   * </p>
6328   */
6329  @SearchParamDefinition(name="status", path="Task.status", description="Search by task status", type="token" )
6330  public static final String SP_STATUS = "status";
6331 /**
6332   * <b>Fluent Client</b> search parameter constant for <b>status</b>
6333   * <p>
6334   * Description: <b>Search by task status</b><br>
6335   * Type: <b>token</b><br>
6336   * Path: <b>Task.status</b><br>
6337   * </p>
6338   */
6339  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
6340
6341 /**
6342   * Search parameter: <b>subject</b>
6343   * <p>
6344   * Description: <b>Search by subject</b><br>
6345   * Type: <b>reference</b><br>
6346   * Path: <b>Task.for</b><br>
6347   * </p>
6348   */
6349  @SearchParamDefinition(name="subject", path="Task.for", description="Search by subject", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.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, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.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, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.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, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
6350  public static final String SP_SUBJECT = "subject";
6351 /**
6352   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
6353   * <p>
6354   * Description: <b>Search by subject</b><br>
6355   * Type: <b>reference</b><br>
6356   * Path: <b>Task.for</b><br>
6357   * </p>
6358   */
6359  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
6360
6361/**
6362   * Constant for fluent queries to be used to add include statements. Specifies
6363   * the path value of "<b>Task:subject</b>".
6364   */
6365  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Task:subject").toLocked();
6366
6367 /**
6368   * Search parameter: <b>code</b>
6369   * <p>
6370   * Description: <b>Multiple Resources: 
6371
6372* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
6373* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
6374* [AuditEvent](auditevent.html): More specific code for the event
6375* [Basic](basic.html): Kind of Resource
6376* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
6377* [Condition](condition.html): Code for the condition
6378* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
6379* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
6380* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
6381* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
6382* [ImagingSelection](imagingselection.html): The imaging selection status
6383* [List](list.html): What the purpose of this list is
6384* [Medication](medication.html): Returns medications for a specific code
6385* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
6386* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
6387* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
6388* [MedicationStatement](medicationstatement.html): Return statements of this medication code
6389* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
6390* [Observation](observation.html): The code of the observation type
6391* [Procedure](procedure.html): A code to identify a  procedure
6392* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
6393* [Task](task.html): Search by task code
6394</b><br>
6395   * Type: <b>token</b><br>
6396   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
6397   * </p>
6398   */
6399  @SearchParamDefinition(name="code", path="AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [AuditEvent](auditevent.html): More specific code for the event\r\n* [Basic](basic.html): Kind of Resource\r\n* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code\r\n* [Condition](condition.html): Code for the condition\r\n* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.\r\n* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered\r\n* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code\r\n* [ImagingSelection](imagingselection.html): The imaging selection status\r\n* [List](list.html): What the purpose of this list is\r\n* [Medication](medication.html): Returns medications for a specific code\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication code\r\n* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake\r\n* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [RequestOrchestration](requestorchestration.html): The code of the request orchestration\r\n* [Task](task.html): Search by task code\r\n", type="token" )
6400  public static final String SP_CODE = "code";
6401 /**
6402   * <b>Fluent Client</b> search parameter constant for <b>code</b>
6403   * <p>
6404   * Description: <b>Multiple Resources: 
6405
6406* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
6407* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
6408* [AuditEvent](auditevent.html): More specific code for the event
6409* [Basic](basic.html): Kind of Resource
6410* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
6411* [Condition](condition.html): Code for the condition
6412* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
6413* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
6414* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
6415* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
6416* [ImagingSelection](imagingselection.html): The imaging selection status
6417* [List](list.html): What the purpose of this list is
6418* [Medication](medication.html): Returns medications for a specific code
6419* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
6420* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
6421* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
6422* [MedicationStatement](medicationstatement.html): Return statements of this medication code
6423* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
6424* [Observation](observation.html): The code of the observation type
6425* [Procedure](procedure.html): A code to identify a  procedure
6426* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
6427* [Task](task.html): Search by task code
6428</b><br>
6429   * Type: <b>token</b><br>
6430   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
6431   * </p>
6432   */
6433  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
6434
6435 /**
6436   * Search parameter: <b>encounter</b>
6437   * <p>
6438   * Description: <b>Multiple Resources: 
6439
6440* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
6441* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
6442* [ChargeItem](chargeitem.html): Encounter associated with event
6443* [Claim](claim.html): Encounters associated with a billed line item
6444* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
6445* [Communication](communication.html): The Encounter during which this Communication was created
6446* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
6447* [Composition](composition.html): Context of the Composition
6448* [Condition](condition.html): The Encounter during which this Condition was created
6449* [DeviceRequest](devicerequest.html): Encounter during which request was created
6450* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
6451* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
6452* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
6453* [Flag](flag.html): Alert relevant during encounter
6454* [ImagingStudy](imagingstudy.html): The context of the study
6455* [List](list.html): Context in which list created
6456* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
6457* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
6458* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
6459* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
6460* [Observation](observation.html): Encounter related to the observation
6461* [Procedure](procedure.html): The Encounter during which this Procedure was created
6462* [Provenance](provenance.html): Encounter related to the Provenance
6463* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
6464* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
6465* [RiskAssessment](riskassessment.html): Where was assessment performed?
6466* [ServiceRequest](servicerequest.html): An encounter in which this request is made
6467* [Task](task.html): Search by encounter
6468* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
6469</b><br>
6470   * Type: <b>reference</b><br>
6471   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
6472   * </p>
6473   */
6474  @SearchParamDefinition(name="encounter", path="AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent\r\n* [CarePlan](careplan.html): The Encounter during which this CarePlan was created\r\n* [ChargeItem](chargeitem.html): Encounter associated with event\r\n* [Claim](claim.html): Encounters associated with a billed line item\r\n* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created\r\n* [Communication](communication.html): The Encounter during which this Communication was created\r\n* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created\r\n* [Composition](composition.html): Context of the Composition\r\n* [Condition](condition.html): The Encounter during which this Condition was created\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values\r\n* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [ImagingStudy](imagingstudy.html): The context of the study\r\n* [List](list.html): Context in which list created\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): The Encounter during which this Procedure was created\r\n* [Provenance](provenance.html): Encounter related to the Provenance\r\n* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response\r\n* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [Task](task.html): Search by encounter\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", target={Encounter.class } )
6475  public static final String SP_ENCOUNTER = "encounter";
6476 /**
6477   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
6478   * <p>
6479   * Description: <b>Multiple Resources: 
6480
6481* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
6482* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
6483* [ChargeItem](chargeitem.html): Encounter associated with event
6484* [Claim](claim.html): Encounters associated with a billed line item
6485* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
6486* [Communication](communication.html): The Encounter during which this Communication was created
6487* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
6488* [Composition](composition.html): Context of the Composition
6489* [Condition](condition.html): The Encounter during which this Condition was created
6490* [DeviceRequest](devicerequest.html): Encounter during which request was created
6491* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
6492* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
6493* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
6494* [Flag](flag.html): Alert relevant during encounter
6495* [ImagingStudy](imagingstudy.html): The context of the study
6496* [List](list.html): Context in which list created
6497* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
6498* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
6499* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
6500* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
6501* [Observation](observation.html): Encounter related to the observation
6502* [Procedure](procedure.html): The Encounter during which this Procedure was created
6503* [Provenance](provenance.html): Encounter related to the Provenance
6504* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
6505* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
6506* [RiskAssessment](riskassessment.html): Where was assessment performed?
6507* [ServiceRequest](servicerequest.html): An encounter in which this request is made
6508* [Task](task.html): Search by encounter
6509* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
6510</b><br>
6511   * Type: <b>reference</b><br>
6512   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
6513   * </p>
6514   */
6515  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
6516
6517/**
6518   * Constant for fluent queries to be used to add include statements. Specifies
6519   * the path value of "<b>Task:encounter</b>".
6520   */
6521  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("Task:encounter").toLocked();
6522
6523 /**
6524   * Search parameter: <b>identifier</b>
6525   * <p>
6526   * Description: <b>Multiple Resources: 
6527
6528* [Account](account.html): Account number
6529* [AdverseEvent](adverseevent.html): Business identifier for the event
6530* [AllergyIntolerance](allergyintolerance.html): External ids for this item
6531* [Appointment](appointment.html): An Identifier of the Appointment
6532* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
6533* [Basic](basic.html): Business identifier
6534* [BodyStructure](bodystructure.html): Bodystructure identifier
6535* [CarePlan](careplan.html): External Ids for this plan
6536* [CareTeam](careteam.html): External Ids for this team
6537* [ChargeItem](chargeitem.html): Business Identifier for item
6538* [Claim](claim.html): The primary identifier of the financial resource
6539* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
6540* [ClinicalImpression](clinicalimpression.html): Business identifier
6541* [Communication](communication.html): Unique identifier
6542* [CommunicationRequest](communicationrequest.html): Unique identifier
6543* [Composition](composition.html): Version-independent identifier for the Composition
6544* [Condition](condition.html): A unique identifier of the condition record
6545* [Consent](consent.html): Identifier for this record (external references)
6546* [Contract](contract.html): The identity of the contract
6547* [Coverage](coverage.html): The primary identifier of the insured and the coverage
6548* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
6549* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
6550* [DetectedIssue](detectedissue.html): Unique id for the detected issue
6551* [DeviceRequest](devicerequest.html): Business identifier for request/order
6552* [DeviceUsage](deviceusage.html): Search by identifier
6553* [DiagnosticReport](diagnosticreport.html): An identifier for the report
6554* [DocumentReference](documentreference.html): Identifier of the attachment binary
6555* [Encounter](encounter.html): Identifier(s) by which this encounter is known
6556* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
6557* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
6558* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
6559* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
6560* [Flag](flag.html): Business identifier
6561* [Goal](goal.html): External Ids for this goal
6562* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
6563* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
6564* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
6565* [Immunization](immunization.html): Business identifier
6566* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
6567* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
6568* [Invoice](invoice.html): Business Identifier for item
6569* [List](list.html): Business identifier
6570* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
6571* [Medication](medication.html): Returns medications with this external identifier
6572* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
6573* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
6574* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
6575* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
6576* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
6577* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
6578* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
6579* [Observation](observation.html): The unique id for a particular observation
6580* [Person](person.html): A person Identifier
6581* [Procedure](procedure.html): A unique identifier for a procedure
6582* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
6583* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
6584* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
6585* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
6586* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
6587* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
6588* [Specimen](specimen.html): The unique identifier associated with the specimen
6589* [SupplyDelivery](supplydelivery.html): External identifier
6590* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
6591* [Task](task.html): Search for a task instance by its business identifier
6592* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
6593</b><br>
6594   * Type: <b>token</b><br>
6595   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
6596   * </p>
6597   */
6598  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\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* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external 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* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.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* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
6599  public static final String SP_IDENTIFIER = "identifier";
6600 /**
6601   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
6602   * <p>
6603   * Description: <b>Multiple Resources: 
6604
6605* [Account](account.html): Account number
6606* [AdverseEvent](adverseevent.html): Business identifier for the event
6607* [AllergyIntolerance](allergyintolerance.html): External ids for this item
6608* [Appointment](appointment.html): An Identifier of the Appointment
6609* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
6610* [Basic](basic.html): Business identifier
6611* [BodyStructure](bodystructure.html): Bodystructure identifier
6612* [CarePlan](careplan.html): External Ids for this plan
6613* [CareTeam](careteam.html): External Ids for this team
6614* [ChargeItem](chargeitem.html): Business Identifier for item
6615* [Claim](claim.html): The primary identifier of the financial resource
6616* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
6617* [ClinicalImpression](clinicalimpression.html): Business identifier
6618* [Communication](communication.html): Unique identifier
6619* [CommunicationRequest](communicationrequest.html): Unique identifier
6620* [Composition](composition.html): Version-independent identifier for the Composition
6621* [Condition](condition.html): A unique identifier of the condition record
6622* [Consent](consent.html): Identifier for this record (external references)
6623* [Contract](contract.html): The identity of the contract
6624* [Coverage](coverage.html): The primary identifier of the insured and the coverage
6625* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
6626* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
6627* [DetectedIssue](detectedissue.html): Unique id for the detected issue
6628* [DeviceRequest](devicerequest.html): Business identifier for request/order
6629* [DeviceUsage](deviceusage.html): Search by identifier
6630* [DiagnosticReport](diagnosticreport.html): An identifier for the report
6631* [DocumentReference](documentreference.html): Identifier of the attachment binary
6632* [Encounter](encounter.html): Identifier(s) by which this encounter is known
6633* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
6634* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
6635* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
6636* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
6637* [Flag](flag.html): Business identifier
6638* [Goal](goal.html): External Ids for this goal
6639* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
6640* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
6641* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
6642* [Immunization](immunization.html): Business identifier
6643* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
6644* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
6645* [Invoice](invoice.html): Business Identifier for item
6646* [List](list.html): Business identifier
6647* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
6648* [Medication](medication.html): Returns medications with this external identifier
6649* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
6650* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
6651* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
6652* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
6653* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
6654* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
6655* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
6656* [Observation](observation.html): The unique id for a particular observation
6657* [Person](person.html): A person Identifier
6658* [Procedure](procedure.html): A unique identifier for a procedure
6659* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
6660* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
6661* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
6662* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
6663* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
6664* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
6665* [Specimen](specimen.html): The unique identifier associated with the specimen
6666* [SupplyDelivery](supplydelivery.html): External identifier
6667* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
6668* [Task](task.html): Search for a task instance by its business identifier
6669* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
6670</b><br>
6671   * Type: <b>token</b><br>
6672   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
6673   * </p>
6674   */
6675  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
6676
6677 /**
6678   * Search parameter: <b>patient</b>
6679   * <p>
6680   * Description: <b>Multiple Resources: 
6681
6682* [Account](account.html): The entity that caused the expenses
6683* [AdverseEvent](adverseevent.html): Subject impacted by event
6684* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
6685* [Appointment](appointment.html): One of the individuals of the appointment is this patient
6686* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
6687* [AuditEvent](auditevent.html): Where the activity involved patient data
6688* [Basic](basic.html): Identifies the focus of this resource
6689* [BodyStructure](bodystructure.html): Who this is about
6690* [CarePlan](careplan.html): Who the care plan is for
6691* [CareTeam](careteam.html): Who care team is for
6692* [ChargeItem](chargeitem.html): Individual service was done for/to
6693* [Claim](claim.html): Patient receiving the products or services
6694* [ClaimResponse](claimresponse.html): The subject of care
6695* [ClinicalImpression](clinicalimpression.html): Patient assessed
6696* [Communication](communication.html): Focus of message
6697* [CommunicationRequest](communicationrequest.html): Focus of message
6698* [Composition](composition.html): Who and/or what the composition is about
6699* [Condition](condition.html): Who has the condition?
6700* [Consent](consent.html): Who the consent applies to
6701* [Contract](contract.html): The identity of the subject of the contract (if a patient)
6702* [Coverage](coverage.html): Retrieve coverages for a patient
6703* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
6704* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
6705* [DetectedIssue](detectedissue.html): Associated patient
6706* [DeviceRequest](devicerequest.html): Individual the service is ordered for
6707* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
6708* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
6709* [DocumentReference](documentreference.html): Who/what is the subject of the document
6710* [Encounter](encounter.html): The patient present at the encounter
6711* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
6712* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
6713* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
6714* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
6715* [Flag](flag.html): The identity of a subject to list flags for
6716* [Goal](goal.html): Who this goal is intended for
6717* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
6718* [ImagingSelection](imagingselection.html): Who the study is about
6719* [ImagingStudy](imagingstudy.html): Who the study is about
6720* [Immunization](immunization.html): The patient for the vaccination record
6721* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
6722* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
6723* [Invoice](invoice.html): Recipient(s) of goods and services
6724* [List](list.html): If all resources have the same subject
6725* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
6726* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
6727* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
6728* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
6729* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
6730* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
6731* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
6732* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
6733* [Observation](observation.html): The subject that the observation is about (if patient)
6734* [Person](person.html): The Person links to this Patient
6735* [Procedure](procedure.html): Search by subject - a patient
6736* [Provenance](provenance.html): Where the activity involved patient data
6737* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
6738* [RelatedPerson](relatedperson.html): The patient this related person is related to
6739* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
6740* [ResearchSubject](researchsubject.html): Who or what is part of study
6741* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
6742* [ServiceRequest](servicerequest.html): Search by subject - a patient
6743* [Specimen](specimen.html): The patient the specimen comes from
6744* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
6745* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
6746* [Task](task.html): Search by patient
6747* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
6748</b><br>
6749   * Type: <b>reference</b><br>
6750   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.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) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
6751   * </p>
6752   */
6753  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.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) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\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* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\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* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\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* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\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={Patient.class } )
6754  public static final String SP_PATIENT = "patient";
6755 /**
6756   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
6757   * <p>
6758   * Description: <b>Multiple Resources: 
6759
6760* [Account](account.html): The entity that caused the expenses
6761* [AdverseEvent](adverseevent.html): Subject impacted by event
6762* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
6763* [Appointment](appointment.html): One of the individuals of the appointment is this patient
6764* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
6765* [AuditEvent](auditevent.html): Where the activity involved patient data
6766* [Basic](basic.html): Identifies the focus of this resource
6767* [BodyStructure](bodystructure.html): Who this is about
6768* [CarePlan](careplan.html): Who the care plan is for
6769* [CareTeam](careteam.html): Who care team is for
6770* [ChargeItem](chargeitem.html): Individual service was done for/to
6771* [Claim](claim.html): Patient receiving the products or services
6772* [ClaimResponse](claimresponse.html): The subject of care
6773* [ClinicalImpression](clinicalimpression.html): Patient assessed
6774* [Communication](communication.html): Focus of message
6775* [CommunicationRequest](communicationrequest.html): Focus of message
6776* [Composition](composition.html): Who and/or what the composition is about
6777* [Condition](condition.html): Who has the condition?
6778* [Consent](consent.html): Who the consent applies to
6779* [Contract](contract.html): The identity of the subject of the contract (if a patient)
6780* [Coverage](coverage.html): Retrieve coverages for a patient
6781* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
6782* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
6783* [DetectedIssue](detectedissue.html): Associated patient
6784* [DeviceRequest](devicerequest.html): Individual the service is ordered for
6785* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
6786* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
6787* [DocumentReference](documentreference.html): Who/what is the subject of the document
6788* [Encounter](encounter.html): The patient present at the encounter
6789* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
6790* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
6791* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
6792* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
6793* [Flag](flag.html): The identity of a subject to list flags for
6794* [Goal](goal.html): Who this goal is intended for
6795* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
6796* [ImagingSelection](imagingselection.html): Who the study is about
6797* [ImagingStudy](imagingstudy.html): Who the study is about
6798* [Immunization](immunization.html): The patient for the vaccination record
6799* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
6800* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
6801* [Invoice](invoice.html): Recipient(s) of goods and services
6802* [List](list.html): If all resources have the same subject
6803* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
6804* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
6805* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
6806* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
6807* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
6808* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
6809* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
6810* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
6811* [Observation](observation.html): The subject that the observation is about (if patient)
6812* [Person](person.html): The Person links to this Patient
6813* [Procedure](procedure.html): Search by subject - a patient
6814* [Provenance](provenance.html): Where the activity involved patient data
6815* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
6816* [RelatedPerson](relatedperson.html): The patient this related person is related to
6817* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
6818* [ResearchSubject](researchsubject.html): Who or what is part of study
6819* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
6820* [ServiceRequest](servicerequest.html): Search by subject - a patient
6821* [Specimen](specimen.html): The patient the specimen comes from
6822* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
6823* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
6824* [Task](task.html): Search by patient
6825* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
6826</b><br>
6827   * Type: <b>reference</b><br>
6828   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.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) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
6829   * </p>
6830   */
6831  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
6832
6833/**
6834   * Constant for fluent queries to be used to add include statements. Specifies
6835   * the path value of "<b>Task:patient</b>".
6836   */
6837  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Task:patient").toLocked();
6838
6839
6840}
6841