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