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