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 Base makeProperty(int hash, String name) throws FHIRException {
1891        switch (hash) {
1892        case -1102667083:  return getLinkIdElement();
1893        case -980110702:  return getPrefixElement();
1894        case 110371416:  return getTitleElement();
1895        case -1724546052:  return getDescriptionElement();
1896        case -900391049:  return getTextEquivalentElement();
1897        case -1165461084:  return getPriorityElement();
1898        case 3059181:  return addCode(); 
1899        case 1587405498:  return addDocumentation(); 
1900        case 3178259:  return addGoal(); 
1901        case -861311717:  return addCondition(); 
1902        case 100358090:  return addInput(); 
1903        case -1005512447:  return addOutput(); 
1904        case -384107967:  return addRelatedAction(); 
1905        case 164632566:  return getTiming();
1906        case -873664438:  return getTiming();
1907        case 1901043637:  return getLocation();
1908        case 767422259:  return addParticipant(); 
1909        case 3575610:  return getType();
1910        case 586678389:  return getGroupingBehaviorElement();
1911        case 168639486:  return getSelectionBehaviorElement();
1912        case -1163906287:  return getRequiredBehaviorElement();
1913        case -1174249033:  return getPrecheckBehaviorElement();
1914        case -922577408:  return getCardinalityBehaviorElement();
1915        case -341064690:  return getResource();
1916        case -1139422643:  return getDefinition();
1917        case -1014418093:  return getDefinition();
1918        case 1052666732:  return getTransformElement();
1919        case 572625010:  return addDynamicValue(); 
1920        case -1422950858:  return addAction(); 
1921        default: return super.makeProperty(hash, name);
1922        }
1923
1924      }
1925
1926      @Override
1927      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1928        switch (hash) {
1929        case -1102667083: /*linkId*/ return new String[] {"string"};
1930        case -980110702: /*prefix*/ return new String[] {"string"};
1931        case 110371416: /*title*/ return new String[] {"string"};
1932        case -1724546052: /*description*/ return new String[] {"markdown"};
1933        case -900391049: /*textEquivalent*/ return new String[] {"markdown"};
1934        case -1165461084: /*priority*/ return new String[] {"code"};
1935        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1936        case 1587405498: /*documentation*/ return new String[] {"RelatedArtifact"};
1937        case 3178259: /*goal*/ return new String[] {"Reference"};
1938        case -861311717: /*condition*/ return new String[] {};
1939        case 100358090: /*input*/ return new String[] {};
1940        case -1005512447: /*output*/ return new String[] {};
1941        case -384107967: /*relatedAction*/ return new String[] {};
1942        case -873664438: /*timing*/ return new String[] {"dateTime", "Age", "Period", "Duration", "Range", "Timing"};
1943        case 1901043637: /*location*/ return new String[] {"CodeableReference"};
1944        case 767422259: /*participant*/ return new String[] {};
1945        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1946        case 586678389: /*groupingBehavior*/ return new String[] {"code"};
1947        case 168639486: /*selectionBehavior*/ return new String[] {"code"};
1948        case -1163906287: /*requiredBehavior*/ return new String[] {"code"};
1949        case -1174249033: /*precheckBehavior*/ return new String[] {"code"};
1950        case -922577408: /*cardinalityBehavior*/ return new String[] {"code"};
1951        case -341064690: /*resource*/ return new String[] {"Reference"};
1952        case -1014418093: /*definition*/ return new String[] {"canonical", "uri"};
1953        case 1052666732: /*transform*/ return new String[] {"canonical"};
1954        case 572625010: /*dynamicValue*/ return new String[] {};
1955        case -1422950858: /*action*/ return new String[] {"@RequestOrchestration.action"};
1956        default: return super.getTypesForProperty(hash, name);
1957        }
1958
1959      }
1960
1961      @Override
1962      public Base addChild(String name) throws FHIRException {
1963        if (name.equals("linkId")) {
1964          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.linkId");
1965        }
1966        else if (name.equals("prefix")) {
1967          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.prefix");
1968        }
1969        else if (name.equals("title")) {
1970          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.title");
1971        }
1972        else if (name.equals("description")) {
1973          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.description");
1974        }
1975        else if (name.equals("textEquivalent")) {
1976          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.textEquivalent");
1977        }
1978        else if (name.equals("priority")) {
1979          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.priority");
1980        }
1981        else if (name.equals("code")) {
1982          return addCode();
1983        }
1984        else if (name.equals("documentation")) {
1985          return addDocumentation();
1986        }
1987        else if (name.equals("goal")) {
1988          return addGoal();
1989        }
1990        else if (name.equals("condition")) {
1991          return addCondition();
1992        }
1993        else if (name.equals("input")) {
1994          return addInput();
1995        }
1996        else if (name.equals("output")) {
1997          return addOutput();
1998        }
1999        else if (name.equals("relatedAction")) {
2000          return addRelatedAction();
2001        }
2002        else if (name.equals("timingDateTime")) {
2003          this.timing = new DateTimeType();
2004          return this.timing;
2005        }
2006        else if (name.equals("timingAge")) {
2007          this.timing = new Age();
2008          return this.timing;
2009        }
2010        else if (name.equals("timingPeriod")) {
2011          this.timing = new Period();
2012          return this.timing;
2013        }
2014        else if (name.equals("timingDuration")) {
2015          this.timing = new Duration();
2016          return this.timing;
2017        }
2018        else if (name.equals("timingRange")) {
2019          this.timing = new Range();
2020          return this.timing;
2021        }
2022        else if (name.equals("timingTiming")) {
2023          this.timing = new Timing();
2024          return this.timing;
2025        }
2026        else if (name.equals("location")) {
2027          this.location = new CodeableReference();
2028          return this.location;
2029        }
2030        else if (name.equals("participant")) {
2031          return addParticipant();
2032        }
2033        else if (name.equals("type")) {
2034          this.type = new CodeableConcept();
2035          return this.type;
2036        }
2037        else if (name.equals("groupingBehavior")) {
2038          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.groupingBehavior");
2039        }
2040        else if (name.equals("selectionBehavior")) {
2041          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.selectionBehavior");
2042        }
2043        else if (name.equals("requiredBehavior")) {
2044          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.requiredBehavior");
2045        }
2046        else if (name.equals("precheckBehavior")) {
2047          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.precheckBehavior");
2048        }
2049        else if (name.equals("cardinalityBehavior")) {
2050          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.cardinalityBehavior");
2051        }
2052        else if (name.equals("resource")) {
2053          this.resource = new Reference();
2054          return this.resource;
2055        }
2056        else if (name.equals("definitionCanonical")) {
2057          this.definition = new CanonicalType();
2058          return this.definition;
2059        }
2060        else if (name.equals("definitionUri")) {
2061          this.definition = new UriType();
2062          return this.definition;
2063        }
2064        else if (name.equals("transform")) {
2065          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.transform");
2066        }
2067        else if (name.equals("dynamicValue")) {
2068          return addDynamicValue();
2069        }
2070        else if (name.equals("action")) {
2071          return addAction();
2072        }
2073        else
2074          return super.addChild(name);
2075      }
2076
2077      public RequestOrchestrationActionComponent copy() {
2078        RequestOrchestrationActionComponent dst = new RequestOrchestrationActionComponent();
2079        copyValues(dst);
2080        return dst;
2081      }
2082
2083      public void copyValues(RequestOrchestrationActionComponent dst) {
2084        super.copyValues(dst);
2085        dst.linkId = linkId == null ? null : linkId.copy();
2086        dst.prefix = prefix == null ? null : prefix.copy();
2087        dst.title = title == null ? null : title.copy();
2088        dst.description = description == null ? null : description.copy();
2089        dst.textEquivalent = textEquivalent == null ? null : textEquivalent.copy();
2090        dst.priority = priority == null ? null : priority.copy();
2091        if (code != null) {
2092          dst.code = new ArrayList<CodeableConcept>();
2093          for (CodeableConcept i : code)
2094            dst.code.add(i.copy());
2095        };
2096        if (documentation != null) {
2097          dst.documentation = new ArrayList<RelatedArtifact>();
2098          for (RelatedArtifact i : documentation)
2099            dst.documentation.add(i.copy());
2100        };
2101        if (goal != null) {
2102          dst.goal = new ArrayList<Reference>();
2103          for (Reference i : goal)
2104            dst.goal.add(i.copy());
2105        };
2106        if (condition != null) {
2107          dst.condition = new ArrayList<RequestOrchestrationActionConditionComponent>();
2108          for (RequestOrchestrationActionConditionComponent i : condition)
2109            dst.condition.add(i.copy());
2110        };
2111        if (input != null) {
2112          dst.input = new ArrayList<RequestOrchestrationActionInputComponent>();
2113          for (RequestOrchestrationActionInputComponent i : input)
2114            dst.input.add(i.copy());
2115        };
2116        if (output != null) {
2117          dst.output = new ArrayList<RequestOrchestrationActionOutputComponent>();
2118          for (RequestOrchestrationActionOutputComponent i : output)
2119            dst.output.add(i.copy());
2120        };
2121        if (relatedAction != null) {
2122          dst.relatedAction = new ArrayList<RequestOrchestrationActionRelatedActionComponent>();
2123          for (RequestOrchestrationActionRelatedActionComponent i : relatedAction)
2124            dst.relatedAction.add(i.copy());
2125        };
2126        dst.timing = timing == null ? null : timing.copy();
2127        dst.location = location == null ? null : location.copy();
2128        if (participant != null) {
2129          dst.participant = new ArrayList<RequestOrchestrationActionParticipantComponent>();
2130          for (RequestOrchestrationActionParticipantComponent i : participant)
2131            dst.participant.add(i.copy());
2132        };
2133        dst.type = type == null ? null : type.copy();
2134        dst.groupingBehavior = groupingBehavior == null ? null : groupingBehavior.copy();
2135        dst.selectionBehavior = selectionBehavior == null ? null : selectionBehavior.copy();
2136        dst.requiredBehavior = requiredBehavior == null ? null : requiredBehavior.copy();
2137        dst.precheckBehavior = precheckBehavior == null ? null : precheckBehavior.copy();
2138        dst.cardinalityBehavior = cardinalityBehavior == null ? null : cardinalityBehavior.copy();
2139        dst.resource = resource == null ? null : resource.copy();
2140        dst.definition = definition == null ? null : definition.copy();
2141        dst.transform = transform == null ? null : transform.copy();
2142        if (dynamicValue != null) {
2143          dst.dynamicValue = new ArrayList<RequestOrchestrationActionDynamicValueComponent>();
2144          for (RequestOrchestrationActionDynamicValueComponent i : dynamicValue)
2145            dst.dynamicValue.add(i.copy());
2146        };
2147        if (action != null) {
2148          dst.action = new ArrayList<RequestOrchestrationActionComponent>();
2149          for (RequestOrchestrationActionComponent i : action)
2150            dst.action.add(i.copy());
2151        };
2152      }
2153
2154      @Override
2155      public boolean equalsDeep(Base other_) {
2156        if (!super.equalsDeep(other_))
2157          return false;
2158        if (!(other_ instanceof RequestOrchestrationActionComponent))
2159          return false;
2160        RequestOrchestrationActionComponent o = (RequestOrchestrationActionComponent) other_;
2161        return compareDeep(linkId, o.linkId, true) && compareDeep(prefix, o.prefix, true) && compareDeep(title, o.title, true)
2162           && compareDeep(description, o.description, true) && compareDeep(textEquivalent, o.textEquivalent, true)
2163           && compareDeep(priority, o.priority, true) && compareDeep(code, o.code, true) && compareDeep(documentation, o.documentation, true)
2164           && compareDeep(goal, o.goal, true) && compareDeep(condition, o.condition, true) && compareDeep(input, o.input, true)
2165           && compareDeep(output, o.output, true) && compareDeep(relatedAction, o.relatedAction, true) && compareDeep(timing, o.timing, true)
2166           && compareDeep(location, o.location, true) && compareDeep(participant, o.participant, true) && compareDeep(type, o.type, true)
2167           && compareDeep(groupingBehavior, o.groupingBehavior, true) && compareDeep(selectionBehavior, o.selectionBehavior, true)
2168           && compareDeep(requiredBehavior, o.requiredBehavior, true) && compareDeep(precheckBehavior, o.precheckBehavior, true)
2169           && compareDeep(cardinalityBehavior, o.cardinalityBehavior, true) && compareDeep(resource, o.resource, true)
2170           && compareDeep(definition, o.definition, true) && compareDeep(transform, o.transform, true) && compareDeep(dynamicValue, o.dynamicValue, true)
2171           && compareDeep(action, o.action, true);
2172      }
2173
2174      @Override
2175      public boolean equalsShallow(Base other_) {
2176        if (!super.equalsShallow(other_))
2177          return false;
2178        if (!(other_ instanceof RequestOrchestrationActionComponent))
2179          return false;
2180        RequestOrchestrationActionComponent o = (RequestOrchestrationActionComponent) other_;
2181        return compareValues(linkId, o.linkId, true) && compareValues(prefix, o.prefix, true) && compareValues(title, o.title, true)
2182           && compareValues(description, o.description, true) && compareValues(textEquivalent, o.textEquivalent, true)
2183           && compareValues(priority, o.priority, true) && compareValues(groupingBehavior, o.groupingBehavior, true)
2184           && compareValues(selectionBehavior, o.selectionBehavior, true) && compareValues(requiredBehavior, o.requiredBehavior, true)
2185           && compareValues(precheckBehavior, o.precheckBehavior, true) && compareValues(cardinalityBehavior, o.cardinalityBehavior, true)
2186           && compareValues(transform, o.transform, true);
2187      }
2188
2189      public boolean isEmpty() {
2190        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, prefix, title, description
2191          , textEquivalent, priority, code, documentation, goal, condition, input, output
2192          , relatedAction, timing, location, participant, type, groupingBehavior, selectionBehavior
2193          , requiredBehavior, precheckBehavior, cardinalityBehavior, resource, definition, transform
2194          , dynamicValue, action);
2195      }
2196
2197  public String fhirType() {
2198    return "RequestOrchestration.action";
2199
2200  }
2201
2202  }
2203
2204    @Block()
2205    public static class RequestOrchestrationActionConditionComponent extends BackboneElement implements IBaseBackboneElement {
2206        /**
2207         * The kind of condition.
2208         */
2209        @Child(name = "kind", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2210        @Description(shortDefinition="applicability | start | stop", formalDefinition="The kind of condition." )
2211        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-condition-kind")
2212        protected Enumeration<ActionConditionKind> kind;
2213
2214        /**
2215         * An expression that returns true or false, indicating whether or not the condition is satisfied.
2216         */
2217        @Child(name = "expression", type = {Expression.class}, order=2, min=0, max=1, modifier=false, summary=false)
2218        @Description(shortDefinition="Boolean-valued expression", formalDefinition="An expression that returns true or false, indicating whether or not the condition is satisfied." )
2219        protected Expression expression;
2220
2221        private static final long serialVersionUID = -455150438L;
2222
2223    /**
2224     * Constructor
2225     */
2226      public RequestOrchestrationActionConditionComponent() {
2227        super();
2228      }
2229
2230    /**
2231     * Constructor
2232     */
2233      public RequestOrchestrationActionConditionComponent(ActionConditionKind kind) {
2234        super();
2235        this.setKind(kind);
2236      }
2237
2238        /**
2239         * @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
2240         */
2241        public Enumeration<ActionConditionKind> getKindElement() { 
2242          if (this.kind == null)
2243            if (Configuration.errorOnAutoCreate())
2244              throw new Error("Attempt to auto-create RequestOrchestrationActionConditionComponent.kind");
2245            else if (Configuration.doAutoCreate())
2246              this.kind = new Enumeration<ActionConditionKind>(new ActionConditionKindEnumFactory()); // bb
2247          return this.kind;
2248        }
2249
2250        public boolean hasKindElement() { 
2251          return this.kind != null && !this.kind.isEmpty();
2252        }
2253
2254        public boolean hasKind() { 
2255          return this.kind != null && !this.kind.isEmpty();
2256        }
2257
2258        /**
2259         * @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
2260         */
2261        public RequestOrchestrationActionConditionComponent setKindElement(Enumeration<ActionConditionKind> value) { 
2262          this.kind = value;
2263          return this;
2264        }
2265
2266        /**
2267         * @return The kind of condition.
2268         */
2269        public ActionConditionKind getKind() { 
2270          return this.kind == null ? null : this.kind.getValue();
2271        }
2272
2273        /**
2274         * @param value The kind of condition.
2275         */
2276        public RequestOrchestrationActionConditionComponent setKind(ActionConditionKind value) { 
2277            if (this.kind == null)
2278              this.kind = new Enumeration<ActionConditionKind>(new ActionConditionKindEnumFactory());
2279            this.kind.setValue(value);
2280          return this;
2281        }
2282
2283        /**
2284         * @return {@link #expression} (An expression that returns true or false, indicating whether or not the condition is satisfied.)
2285         */
2286        public Expression getExpression() { 
2287          if (this.expression == null)
2288            if (Configuration.errorOnAutoCreate())
2289              throw new Error("Attempt to auto-create RequestOrchestrationActionConditionComponent.expression");
2290            else if (Configuration.doAutoCreate())
2291              this.expression = new Expression(); // cc
2292          return this.expression;
2293        }
2294
2295        public boolean hasExpression() { 
2296          return this.expression != null && !this.expression.isEmpty();
2297        }
2298
2299        /**
2300         * @param value {@link #expression} (An expression that returns true or false, indicating whether or not the condition is satisfied.)
2301         */
2302        public RequestOrchestrationActionConditionComponent setExpression(Expression value) { 
2303          this.expression = value;
2304          return this;
2305        }
2306
2307        protected void listChildren(List<Property> children) {
2308          super.listChildren(children);
2309          children.add(new Property("kind", "code", "The kind of condition.", 0, 1, kind));
2310          children.add(new Property("expression", "Expression", "An expression that returns true or false, indicating whether or not the condition is satisfied.", 0, 1, expression));
2311        }
2312
2313        @Override
2314        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2315          switch (_hash) {
2316          case 3292052: /*kind*/  return new Property("kind", "code", "The kind of condition.", 0, 1, kind);
2317          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);
2318          default: return super.getNamedProperty(_hash, _name, _checkValid);
2319          }
2320
2321        }
2322
2323      @Override
2324      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2325        switch (hash) {
2326        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<ActionConditionKind>
2327        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // Expression
2328        default: return super.getProperty(hash, name, checkValid);
2329        }
2330
2331      }
2332
2333      @Override
2334      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2335        switch (hash) {
2336        case 3292052: // kind
2337          value = new ActionConditionKindEnumFactory().fromType(TypeConvertor.castToCode(value));
2338          this.kind = (Enumeration) value; // Enumeration<ActionConditionKind>
2339          return value;
2340        case -1795452264: // expression
2341          this.expression = TypeConvertor.castToExpression(value); // Expression
2342          return value;
2343        default: return super.setProperty(hash, name, value);
2344        }
2345
2346      }
2347
2348      @Override
2349      public Base setProperty(String name, Base value) throws FHIRException {
2350        if (name.equals("kind")) {
2351          value = new ActionConditionKindEnumFactory().fromType(TypeConvertor.castToCode(value));
2352          this.kind = (Enumeration) value; // Enumeration<ActionConditionKind>
2353        } else if (name.equals("expression")) {
2354          this.expression = TypeConvertor.castToExpression(value); // Expression
2355        } else
2356          return super.setProperty(name, value);
2357        return value;
2358      }
2359
2360      @Override
2361      public Base makeProperty(int hash, String name) throws FHIRException {
2362        switch (hash) {
2363        case 3292052:  return getKindElement();
2364        case -1795452264:  return getExpression();
2365        default: return super.makeProperty(hash, name);
2366        }
2367
2368      }
2369
2370      @Override
2371      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2372        switch (hash) {
2373        case 3292052: /*kind*/ return new String[] {"code"};
2374        case -1795452264: /*expression*/ return new String[] {"Expression"};
2375        default: return super.getTypesForProperty(hash, name);
2376        }
2377
2378      }
2379
2380      @Override
2381      public Base addChild(String name) throws FHIRException {
2382        if (name.equals("kind")) {
2383          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.condition.kind");
2384        }
2385        else if (name.equals("expression")) {
2386          this.expression = new Expression();
2387          return this.expression;
2388        }
2389        else
2390          return super.addChild(name);
2391      }
2392
2393      public RequestOrchestrationActionConditionComponent copy() {
2394        RequestOrchestrationActionConditionComponent dst = new RequestOrchestrationActionConditionComponent();
2395        copyValues(dst);
2396        return dst;
2397      }
2398
2399      public void copyValues(RequestOrchestrationActionConditionComponent dst) {
2400        super.copyValues(dst);
2401        dst.kind = kind == null ? null : kind.copy();
2402        dst.expression = expression == null ? null : expression.copy();
2403      }
2404
2405      @Override
2406      public boolean equalsDeep(Base other_) {
2407        if (!super.equalsDeep(other_))
2408          return false;
2409        if (!(other_ instanceof RequestOrchestrationActionConditionComponent))
2410          return false;
2411        RequestOrchestrationActionConditionComponent o = (RequestOrchestrationActionConditionComponent) other_;
2412        return compareDeep(kind, o.kind, true) && compareDeep(expression, o.expression, true);
2413      }
2414
2415      @Override
2416      public boolean equalsShallow(Base other_) {
2417        if (!super.equalsShallow(other_))
2418          return false;
2419        if (!(other_ instanceof RequestOrchestrationActionConditionComponent))
2420          return false;
2421        RequestOrchestrationActionConditionComponent o = (RequestOrchestrationActionConditionComponent) other_;
2422        return compareValues(kind, o.kind, true);
2423      }
2424
2425      public boolean isEmpty() {
2426        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(kind, expression);
2427      }
2428
2429  public String fhirType() {
2430    return "RequestOrchestration.action.condition";
2431
2432  }
2433
2434  }
2435
2436    @Block()
2437    public static class RequestOrchestrationActionInputComponent extends BackboneElement implements IBaseBackboneElement {
2438        /**
2439         * 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.
2440         */
2441        @Child(name = "title", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2442        @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." )
2443        protected StringType title;
2444
2445        /**
2446         * Defines the data that is to be provided as input to the action.
2447         */
2448        @Child(name = "requirement", type = {DataRequirement.class}, order=2, min=0, max=1, modifier=false, summary=false)
2449        @Description(shortDefinition="What data is provided", formalDefinition="Defines the data that is to be provided as input to the action." )
2450        protected DataRequirement requirement;
2451
2452        /**
2453         * Points to an existing input or output element that provides data to this input.
2454         */
2455        @Child(name = "relatedData", type = {IdType.class}, order=3, min=0, max=1, modifier=false, summary=false)
2456        @Description(shortDefinition="What data is provided", formalDefinition="Points to an existing input or output element that provides data to this input." )
2457        protected IdType relatedData;
2458
2459        private static final long serialVersionUID = -1064046709L;
2460
2461    /**
2462     * Constructor
2463     */
2464      public RequestOrchestrationActionInputComponent() {
2465        super();
2466      }
2467
2468        /**
2469         * @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
2470         */
2471        public StringType getTitleElement() { 
2472          if (this.title == null)
2473            if (Configuration.errorOnAutoCreate())
2474              throw new Error("Attempt to auto-create RequestOrchestrationActionInputComponent.title");
2475            else if (Configuration.doAutoCreate())
2476              this.title = new StringType(); // bb
2477          return this.title;
2478        }
2479
2480        public boolean hasTitleElement() { 
2481          return this.title != null && !this.title.isEmpty();
2482        }
2483
2484        public boolean hasTitle() { 
2485          return this.title != null && !this.title.isEmpty();
2486        }
2487
2488        /**
2489         * @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
2490         */
2491        public RequestOrchestrationActionInputComponent setTitleElement(StringType value) { 
2492          this.title = value;
2493          return this;
2494        }
2495
2496        /**
2497         * @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.
2498         */
2499        public String getTitle() { 
2500          return this.title == null ? null : this.title.getValue();
2501        }
2502
2503        /**
2504         * @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.
2505         */
2506        public RequestOrchestrationActionInputComponent setTitle(String value) { 
2507          if (Utilities.noString(value))
2508            this.title = null;
2509          else {
2510            if (this.title == null)
2511              this.title = new StringType();
2512            this.title.setValue(value);
2513          }
2514          return this;
2515        }
2516
2517        /**
2518         * @return {@link #requirement} (Defines the data that is to be provided as input to the action.)
2519         */
2520        public DataRequirement getRequirement() { 
2521          if (this.requirement == null)
2522            if (Configuration.errorOnAutoCreate())
2523              throw new Error("Attempt to auto-create RequestOrchestrationActionInputComponent.requirement");
2524            else if (Configuration.doAutoCreate())
2525              this.requirement = new DataRequirement(); // cc
2526          return this.requirement;
2527        }
2528
2529        public boolean hasRequirement() { 
2530          return this.requirement != null && !this.requirement.isEmpty();
2531        }
2532
2533        /**
2534         * @param value {@link #requirement} (Defines the data that is to be provided as input to the action.)
2535         */
2536        public RequestOrchestrationActionInputComponent setRequirement(DataRequirement value) { 
2537          this.requirement = value;
2538          return this;
2539        }
2540
2541        /**
2542         * @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
2543         */
2544        public IdType getRelatedDataElement() { 
2545          if (this.relatedData == null)
2546            if (Configuration.errorOnAutoCreate())
2547              throw new Error("Attempt to auto-create RequestOrchestrationActionInputComponent.relatedData");
2548            else if (Configuration.doAutoCreate())
2549              this.relatedData = new IdType(); // bb
2550          return this.relatedData;
2551        }
2552
2553        public boolean hasRelatedDataElement() { 
2554          return this.relatedData != null && !this.relatedData.isEmpty();
2555        }
2556
2557        public boolean hasRelatedData() { 
2558          return this.relatedData != null && !this.relatedData.isEmpty();
2559        }
2560
2561        /**
2562         * @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
2563         */
2564        public RequestOrchestrationActionInputComponent setRelatedDataElement(IdType value) { 
2565          this.relatedData = value;
2566          return this;
2567        }
2568
2569        /**
2570         * @return Points to an existing input or output element that provides data to this input.
2571         */
2572        public String getRelatedData() { 
2573          return this.relatedData == null ? null : this.relatedData.getValue();
2574        }
2575
2576        /**
2577         * @param value Points to an existing input or output element that provides data to this input.
2578         */
2579        public RequestOrchestrationActionInputComponent setRelatedData(String value) { 
2580          if (Utilities.noString(value))
2581            this.relatedData = null;
2582          else {
2583            if (this.relatedData == null)
2584              this.relatedData = new IdType();
2585            this.relatedData.setValue(value);
2586          }
2587          return this;
2588        }
2589
2590        protected void listChildren(List<Property> children) {
2591          super.listChildren(children);
2592          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));
2593          children.add(new Property("requirement", "DataRequirement", "Defines the data that is to be provided as input to the action.", 0, 1, requirement));
2594          children.add(new Property("relatedData", "id", "Points to an existing input or output element that provides data to this input.", 0, 1, relatedData));
2595        }
2596
2597        @Override
2598        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2599          switch (_hash) {
2600          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);
2601          case 363387971: /*requirement*/  return new Property("requirement", "DataRequirement", "Defines the data that is to be provided as input to the action.", 0, 1, requirement);
2602          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);
2603          default: return super.getNamedProperty(_hash, _name, _checkValid);
2604          }
2605
2606        }
2607
2608      @Override
2609      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2610        switch (hash) {
2611        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2612        case 363387971: /*requirement*/ return this.requirement == null ? new Base[0] : new Base[] {this.requirement}; // DataRequirement
2613        case 1112535669: /*relatedData*/ return this.relatedData == null ? new Base[0] : new Base[] {this.relatedData}; // IdType
2614        default: return super.getProperty(hash, name, checkValid);
2615        }
2616
2617      }
2618
2619      @Override
2620      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2621        switch (hash) {
2622        case 110371416: // title
2623          this.title = TypeConvertor.castToString(value); // StringType
2624          return value;
2625        case 363387971: // requirement
2626          this.requirement = TypeConvertor.castToDataRequirement(value); // DataRequirement
2627          return value;
2628        case 1112535669: // relatedData
2629          this.relatedData = TypeConvertor.castToId(value); // IdType
2630          return value;
2631        default: return super.setProperty(hash, name, value);
2632        }
2633
2634      }
2635
2636      @Override
2637      public Base setProperty(String name, Base value) throws FHIRException {
2638        if (name.equals("title")) {
2639          this.title = TypeConvertor.castToString(value); // StringType
2640        } else if (name.equals("requirement")) {
2641          this.requirement = TypeConvertor.castToDataRequirement(value); // DataRequirement
2642        } else if (name.equals("relatedData")) {
2643          this.relatedData = TypeConvertor.castToId(value); // IdType
2644        } else
2645          return super.setProperty(name, value);
2646        return value;
2647      }
2648
2649      @Override
2650      public Base makeProperty(int hash, String name) throws FHIRException {
2651        switch (hash) {
2652        case 110371416:  return getTitleElement();
2653        case 363387971:  return getRequirement();
2654        case 1112535669:  return getRelatedDataElement();
2655        default: return super.makeProperty(hash, name);
2656        }
2657
2658      }
2659
2660      @Override
2661      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2662        switch (hash) {
2663        case 110371416: /*title*/ return new String[] {"string"};
2664        case 363387971: /*requirement*/ return new String[] {"DataRequirement"};
2665        case 1112535669: /*relatedData*/ return new String[] {"id"};
2666        default: return super.getTypesForProperty(hash, name);
2667        }
2668
2669      }
2670
2671      @Override
2672      public Base addChild(String name) throws FHIRException {
2673        if (name.equals("title")) {
2674          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.input.title");
2675        }
2676        else if (name.equals("requirement")) {
2677          this.requirement = new DataRequirement();
2678          return this.requirement;
2679        }
2680        else if (name.equals("relatedData")) {
2681          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.input.relatedData");
2682        }
2683        else
2684          return super.addChild(name);
2685      }
2686
2687      public RequestOrchestrationActionInputComponent copy() {
2688        RequestOrchestrationActionInputComponent dst = new RequestOrchestrationActionInputComponent();
2689        copyValues(dst);
2690        return dst;
2691      }
2692
2693      public void copyValues(RequestOrchestrationActionInputComponent dst) {
2694        super.copyValues(dst);
2695        dst.title = title == null ? null : title.copy();
2696        dst.requirement = requirement == null ? null : requirement.copy();
2697        dst.relatedData = relatedData == null ? null : relatedData.copy();
2698      }
2699
2700      @Override
2701      public boolean equalsDeep(Base other_) {
2702        if (!super.equalsDeep(other_))
2703          return false;
2704        if (!(other_ instanceof RequestOrchestrationActionInputComponent))
2705          return false;
2706        RequestOrchestrationActionInputComponent o = (RequestOrchestrationActionInputComponent) other_;
2707        return compareDeep(title, o.title, true) && compareDeep(requirement, o.requirement, true) && compareDeep(relatedData, o.relatedData, true)
2708          ;
2709      }
2710
2711      @Override
2712      public boolean equalsShallow(Base other_) {
2713        if (!super.equalsShallow(other_))
2714          return false;
2715        if (!(other_ instanceof RequestOrchestrationActionInputComponent))
2716          return false;
2717        RequestOrchestrationActionInputComponent o = (RequestOrchestrationActionInputComponent) other_;
2718        return compareValues(title, o.title, true) && compareValues(relatedData, o.relatedData, true);
2719      }
2720
2721      public boolean isEmpty() {
2722        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(title, requirement, relatedData
2723          );
2724      }
2725
2726  public String fhirType() {
2727    return "RequestOrchestration.action.input";
2728
2729  }
2730
2731  }
2732
2733    @Block()
2734    public static class RequestOrchestrationActionOutputComponent extends BackboneElement implements IBaseBackboneElement {
2735        /**
2736         * 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.
2737         */
2738        @Child(name = "title", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2739        @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." )
2740        protected StringType title;
2741
2742        /**
2743         * Defines the data that results as output from the action.
2744         */
2745        @Child(name = "requirement", type = {DataRequirement.class}, order=2, min=0, max=1, modifier=false, summary=false)
2746        @Description(shortDefinition="What data is provided", formalDefinition="Defines the data that results as output from the action." )
2747        protected DataRequirement requirement;
2748
2749        /**
2750         * Points to an existing input or output element that is results as output from the action.
2751         */
2752        @Child(name = "relatedData", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
2753        @Description(shortDefinition="What data is provided", formalDefinition="Points to an existing input or output element that is results as output from the action." )
2754        protected StringType relatedData;
2755
2756        private static final long serialVersionUID = 1822414421L;
2757
2758    /**
2759     * Constructor
2760     */
2761      public RequestOrchestrationActionOutputComponent() {
2762        super();
2763      }
2764
2765        /**
2766         * @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
2767         */
2768        public StringType getTitleElement() { 
2769          if (this.title == null)
2770            if (Configuration.errorOnAutoCreate())
2771              throw new Error("Attempt to auto-create RequestOrchestrationActionOutputComponent.title");
2772            else if (Configuration.doAutoCreate())
2773              this.title = new StringType(); // bb
2774          return this.title;
2775        }
2776
2777        public boolean hasTitleElement() { 
2778          return this.title != null && !this.title.isEmpty();
2779        }
2780
2781        public boolean hasTitle() { 
2782          return this.title != null && !this.title.isEmpty();
2783        }
2784
2785        /**
2786         * @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
2787         */
2788        public RequestOrchestrationActionOutputComponent setTitleElement(StringType value) { 
2789          this.title = value;
2790          return this;
2791        }
2792
2793        /**
2794         * @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.
2795         */
2796        public String getTitle() { 
2797          return this.title == null ? null : this.title.getValue();
2798        }
2799
2800        /**
2801         * @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.
2802         */
2803        public RequestOrchestrationActionOutputComponent setTitle(String value) { 
2804          if (Utilities.noString(value))
2805            this.title = null;
2806          else {
2807            if (this.title == null)
2808              this.title = new StringType();
2809            this.title.setValue(value);
2810          }
2811          return this;
2812        }
2813
2814        /**
2815         * @return {@link #requirement} (Defines the data that results as output from the action.)
2816         */
2817        public DataRequirement getRequirement() { 
2818          if (this.requirement == null)
2819            if (Configuration.errorOnAutoCreate())
2820              throw new Error("Attempt to auto-create RequestOrchestrationActionOutputComponent.requirement");
2821            else if (Configuration.doAutoCreate())
2822              this.requirement = new DataRequirement(); // cc
2823          return this.requirement;
2824        }
2825
2826        public boolean hasRequirement() { 
2827          return this.requirement != null && !this.requirement.isEmpty();
2828        }
2829
2830        /**
2831         * @param value {@link #requirement} (Defines the data that results as output from the action.)
2832         */
2833        public RequestOrchestrationActionOutputComponent setRequirement(DataRequirement value) { 
2834          this.requirement = value;
2835          return this;
2836        }
2837
2838        /**
2839         * @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
2840         */
2841        public StringType getRelatedDataElement() { 
2842          if (this.relatedData == null)
2843            if (Configuration.errorOnAutoCreate())
2844              throw new Error("Attempt to auto-create RequestOrchestrationActionOutputComponent.relatedData");
2845            else if (Configuration.doAutoCreate())
2846              this.relatedData = new StringType(); // bb
2847          return this.relatedData;
2848        }
2849
2850        public boolean hasRelatedDataElement() { 
2851          return this.relatedData != null && !this.relatedData.isEmpty();
2852        }
2853
2854        public boolean hasRelatedData() { 
2855          return this.relatedData != null && !this.relatedData.isEmpty();
2856        }
2857
2858        /**
2859         * @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
2860         */
2861        public RequestOrchestrationActionOutputComponent setRelatedDataElement(StringType value) { 
2862          this.relatedData = value;
2863          return this;
2864        }
2865
2866        /**
2867         * @return Points to an existing input or output element that is results as output from the action.
2868         */
2869        public String getRelatedData() { 
2870          return this.relatedData == null ? null : this.relatedData.getValue();
2871        }
2872
2873        /**
2874         * @param value Points to an existing input or output element that is results as output from the action.
2875         */
2876        public RequestOrchestrationActionOutputComponent setRelatedData(String value) { 
2877          if (Utilities.noString(value))
2878            this.relatedData = null;
2879          else {
2880            if (this.relatedData == null)
2881              this.relatedData = new StringType();
2882            this.relatedData.setValue(value);
2883          }
2884          return this;
2885        }
2886
2887        protected void listChildren(List<Property> children) {
2888          super.listChildren(children);
2889          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));
2890          children.add(new Property("requirement", "DataRequirement", "Defines the data that results as output from the action.", 0, 1, requirement));
2891          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));
2892        }
2893
2894        @Override
2895        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2896          switch (_hash) {
2897          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);
2898          case 363387971: /*requirement*/  return new Property("requirement", "DataRequirement", "Defines the data that results as output from the action.", 0, 1, requirement);
2899          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);
2900          default: return super.getNamedProperty(_hash, _name, _checkValid);
2901          }
2902
2903        }
2904
2905      @Override
2906      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2907        switch (hash) {
2908        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2909        case 363387971: /*requirement*/ return this.requirement == null ? new Base[0] : new Base[] {this.requirement}; // DataRequirement
2910        case 1112535669: /*relatedData*/ return this.relatedData == null ? new Base[0] : new Base[] {this.relatedData}; // StringType
2911        default: return super.getProperty(hash, name, checkValid);
2912        }
2913
2914      }
2915
2916      @Override
2917      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2918        switch (hash) {
2919        case 110371416: // title
2920          this.title = TypeConvertor.castToString(value); // StringType
2921          return value;
2922        case 363387971: // requirement
2923          this.requirement = TypeConvertor.castToDataRequirement(value); // DataRequirement
2924          return value;
2925        case 1112535669: // relatedData
2926          this.relatedData = TypeConvertor.castToString(value); // StringType
2927          return value;
2928        default: return super.setProperty(hash, name, value);
2929        }
2930
2931      }
2932
2933      @Override
2934      public Base setProperty(String name, Base value) throws FHIRException {
2935        if (name.equals("title")) {
2936          this.title = TypeConvertor.castToString(value); // StringType
2937        } else if (name.equals("requirement")) {
2938          this.requirement = TypeConvertor.castToDataRequirement(value); // DataRequirement
2939        } else if (name.equals("relatedData")) {
2940          this.relatedData = TypeConvertor.castToString(value); // StringType
2941        } else
2942          return super.setProperty(name, value);
2943        return value;
2944      }
2945
2946      @Override
2947      public Base makeProperty(int hash, String name) throws FHIRException {
2948        switch (hash) {
2949        case 110371416:  return getTitleElement();
2950        case 363387971:  return getRequirement();
2951        case 1112535669:  return getRelatedDataElement();
2952        default: return super.makeProperty(hash, name);
2953        }
2954
2955      }
2956
2957      @Override
2958      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2959        switch (hash) {
2960        case 110371416: /*title*/ return new String[] {"string"};
2961        case 363387971: /*requirement*/ return new String[] {"DataRequirement"};
2962        case 1112535669: /*relatedData*/ return new String[] {"string"};
2963        default: return super.getTypesForProperty(hash, name);
2964        }
2965
2966      }
2967
2968      @Override
2969      public Base addChild(String name) throws FHIRException {
2970        if (name.equals("title")) {
2971          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.output.title");
2972        }
2973        else if (name.equals("requirement")) {
2974          this.requirement = new DataRequirement();
2975          return this.requirement;
2976        }
2977        else if (name.equals("relatedData")) {
2978          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.output.relatedData");
2979        }
2980        else
2981          return super.addChild(name);
2982      }
2983
2984      public RequestOrchestrationActionOutputComponent copy() {
2985        RequestOrchestrationActionOutputComponent dst = new RequestOrchestrationActionOutputComponent();
2986        copyValues(dst);
2987        return dst;
2988      }
2989
2990      public void copyValues(RequestOrchestrationActionOutputComponent dst) {
2991        super.copyValues(dst);
2992        dst.title = title == null ? null : title.copy();
2993        dst.requirement = requirement == null ? null : requirement.copy();
2994        dst.relatedData = relatedData == null ? null : relatedData.copy();
2995      }
2996
2997      @Override
2998      public boolean equalsDeep(Base other_) {
2999        if (!super.equalsDeep(other_))
3000          return false;
3001        if (!(other_ instanceof RequestOrchestrationActionOutputComponent))
3002          return false;
3003        RequestOrchestrationActionOutputComponent o = (RequestOrchestrationActionOutputComponent) other_;
3004        return compareDeep(title, o.title, true) && compareDeep(requirement, o.requirement, true) && compareDeep(relatedData, o.relatedData, true)
3005          ;
3006      }
3007
3008      @Override
3009      public boolean equalsShallow(Base other_) {
3010        if (!super.equalsShallow(other_))
3011          return false;
3012        if (!(other_ instanceof RequestOrchestrationActionOutputComponent))
3013          return false;
3014        RequestOrchestrationActionOutputComponent o = (RequestOrchestrationActionOutputComponent) other_;
3015        return compareValues(title, o.title, true) && compareValues(relatedData, o.relatedData, true);
3016      }
3017
3018      public boolean isEmpty() {
3019        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(title, requirement, relatedData
3020          );
3021      }
3022
3023  public String fhirType() {
3024    return "RequestOrchestration.action.output";
3025
3026  }
3027
3028  }
3029
3030    @Block()
3031    public static class RequestOrchestrationActionRelatedActionComponent extends BackboneElement implements IBaseBackboneElement {
3032        /**
3033         * The element id of the target related action.
3034         */
3035        @Child(name = "targetId", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=false)
3036        @Description(shortDefinition="What action this is related to", formalDefinition="The element id of the target related action." )
3037        protected IdType targetId;
3038
3039        /**
3040         * The relationship of this action to the related action.
3041         */
3042        @Child(name = "relationship", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
3043        @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." )
3044        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-relationship-type")
3045        protected Enumeration<ActionRelationshipType> relationship;
3046
3047        /**
3048         * The relationship of the end of this action to the related action.
3049         */
3050        @Child(name = "endRelationship", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=false)
3051        @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." )
3052        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-relationship-type")
3053        protected Enumeration<ActionRelationshipType> endRelationship;
3054
3055        /**
3056         * A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.
3057         */
3058        @Child(name = "offset", type = {Duration.class, Range.class}, order=4, min=0, max=1, modifier=false, summary=false)
3059        @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." )
3060        protected DataType offset;
3061
3062        private static final long serialVersionUID = 1997058061L;
3063
3064    /**
3065     * Constructor
3066     */
3067      public RequestOrchestrationActionRelatedActionComponent() {
3068        super();
3069      }
3070
3071    /**
3072     * Constructor
3073     */
3074      public RequestOrchestrationActionRelatedActionComponent(String targetId, ActionRelationshipType relationship) {
3075        super();
3076        this.setTargetId(targetId);
3077        this.setRelationship(relationship);
3078      }
3079
3080        /**
3081         * @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
3082         */
3083        public IdType getTargetIdElement() { 
3084          if (this.targetId == null)
3085            if (Configuration.errorOnAutoCreate())
3086              throw new Error("Attempt to auto-create RequestOrchestrationActionRelatedActionComponent.targetId");
3087            else if (Configuration.doAutoCreate())
3088              this.targetId = new IdType(); // bb
3089          return this.targetId;
3090        }
3091
3092        public boolean hasTargetIdElement() { 
3093          return this.targetId != null && !this.targetId.isEmpty();
3094        }
3095
3096        public boolean hasTargetId() { 
3097          return this.targetId != null && !this.targetId.isEmpty();
3098        }
3099
3100        /**
3101         * @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
3102         */
3103        public RequestOrchestrationActionRelatedActionComponent setTargetIdElement(IdType value) { 
3104          this.targetId = value;
3105          return this;
3106        }
3107
3108        /**
3109         * @return The element id of the target related action.
3110         */
3111        public String getTargetId() { 
3112          return this.targetId == null ? null : this.targetId.getValue();
3113        }
3114
3115        /**
3116         * @param value The element id of the target related action.
3117         */
3118        public RequestOrchestrationActionRelatedActionComponent setTargetId(String value) { 
3119            if (this.targetId == null)
3120              this.targetId = new IdType();
3121            this.targetId.setValue(value);
3122          return this;
3123        }
3124
3125        /**
3126         * @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
3127         */
3128        public Enumeration<ActionRelationshipType> getRelationshipElement() { 
3129          if (this.relationship == null)
3130            if (Configuration.errorOnAutoCreate())
3131              throw new Error("Attempt to auto-create RequestOrchestrationActionRelatedActionComponent.relationship");
3132            else if (Configuration.doAutoCreate())
3133              this.relationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory()); // bb
3134          return this.relationship;
3135        }
3136
3137        public boolean hasRelationshipElement() { 
3138          return this.relationship != null && !this.relationship.isEmpty();
3139        }
3140
3141        public boolean hasRelationship() { 
3142          return this.relationship != null && !this.relationship.isEmpty();
3143        }
3144
3145        /**
3146         * @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
3147         */
3148        public RequestOrchestrationActionRelatedActionComponent setRelationshipElement(Enumeration<ActionRelationshipType> value) { 
3149          this.relationship = value;
3150          return this;
3151        }
3152
3153        /**
3154         * @return The relationship of this action to the related action.
3155         */
3156        public ActionRelationshipType getRelationship() { 
3157          return this.relationship == null ? null : this.relationship.getValue();
3158        }
3159
3160        /**
3161         * @param value The relationship of this action to the related action.
3162         */
3163        public RequestOrchestrationActionRelatedActionComponent setRelationship(ActionRelationshipType value) { 
3164            if (this.relationship == null)
3165              this.relationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory());
3166            this.relationship.setValue(value);
3167          return this;
3168        }
3169
3170        /**
3171         * @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
3172         */
3173        public Enumeration<ActionRelationshipType> getEndRelationshipElement() { 
3174          if (this.endRelationship == null)
3175            if (Configuration.errorOnAutoCreate())
3176              throw new Error("Attempt to auto-create RequestOrchestrationActionRelatedActionComponent.endRelationship");
3177            else if (Configuration.doAutoCreate())
3178              this.endRelationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory()); // bb
3179          return this.endRelationship;
3180        }
3181
3182        public boolean hasEndRelationshipElement() { 
3183          return this.endRelationship != null && !this.endRelationship.isEmpty();
3184        }
3185
3186        public boolean hasEndRelationship() { 
3187          return this.endRelationship != null && !this.endRelationship.isEmpty();
3188        }
3189
3190        /**
3191         * @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
3192         */
3193        public RequestOrchestrationActionRelatedActionComponent setEndRelationshipElement(Enumeration<ActionRelationshipType> value) { 
3194          this.endRelationship = value;
3195          return this;
3196        }
3197
3198        /**
3199         * @return The relationship of the end of this action to the related action.
3200         */
3201        public ActionRelationshipType getEndRelationship() { 
3202          return this.endRelationship == null ? null : this.endRelationship.getValue();
3203        }
3204
3205        /**
3206         * @param value The relationship of the end of this action to the related action.
3207         */
3208        public RequestOrchestrationActionRelatedActionComponent setEndRelationship(ActionRelationshipType value) { 
3209          if (value == null)
3210            this.endRelationship = null;
3211          else {
3212            if (this.endRelationship == null)
3213              this.endRelationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory());
3214            this.endRelationship.setValue(value);
3215          }
3216          return this;
3217        }
3218
3219        /**
3220         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3221         */
3222        public DataType getOffset() { 
3223          return this.offset;
3224        }
3225
3226        /**
3227         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3228         */
3229        public Duration getOffsetDuration() throws FHIRException { 
3230          if (this.offset == null)
3231            this.offset = new Duration();
3232          if (!(this.offset instanceof Duration))
3233            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.offset.getClass().getName()+" was encountered");
3234          return (Duration) this.offset;
3235        }
3236
3237        public boolean hasOffsetDuration() { 
3238          return this != null && this.offset instanceof Duration;
3239        }
3240
3241        /**
3242         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3243         */
3244        public Range getOffsetRange() throws FHIRException { 
3245          if (this.offset == null)
3246            this.offset = new Range();
3247          if (!(this.offset instanceof Range))
3248            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.offset.getClass().getName()+" was encountered");
3249          return (Range) this.offset;
3250        }
3251
3252        public boolean hasOffsetRange() { 
3253          return this != null && this.offset instanceof Range;
3254        }
3255
3256        public boolean hasOffset() { 
3257          return this.offset != null && !this.offset.isEmpty();
3258        }
3259
3260        /**
3261         * @param value {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3262         */
3263        public RequestOrchestrationActionRelatedActionComponent setOffset(DataType value) { 
3264          if (value != null && !(value instanceof Duration || value instanceof Range))
3265            throw new FHIRException("Not the right type for RequestOrchestration.action.relatedAction.offset[x]: "+value.fhirType());
3266          this.offset = value;
3267          return this;
3268        }
3269
3270        protected void listChildren(List<Property> children) {
3271          super.listChildren(children);
3272          children.add(new Property("targetId", "id", "The element id of the target related action.", 0, 1, targetId));
3273          children.add(new Property("relationship", "code", "The relationship of this action to the related action.", 0, 1, relationship));
3274          children.add(new Property("endRelationship", "code", "The relationship of the end of this action to the related action.", 0, 1, endRelationship));
3275          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));
3276        }
3277
3278        @Override
3279        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3280          switch (_hash) {
3281          case -441951604: /*targetId*/  return new Property("targetId", "id", "The element id of the target related action.", 0, 1, targetId);
3282          case -261851592: /*relationship*/  return new Property("relationship", "code", "The relationship of this action to the related action.", 0, 1, relationship);
3283          case -1506024781: /*endRelationship*/  return new Property("endRelationship", "code", "The relationship of the end of this action to the related action.", 0, 1, endRelationship);
3284          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);
3285          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);
3286          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);
3287          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);
3288          default: return super.getNamedProperty(_hash, _name, _checkValid);
3289          }
3290
3291        }
3292
3293      @Override
3294      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3295        switch (hash) {
3296        case -441951604: /*targetId*/ return this.targetId == null ? new Base[0] : new Base[] {this.targetId}; // IdType
3297        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : new Base[] {this.relationship}; // Enumeration<ActionRelationshipType>
3298        case -1506024781: /*endRelationship*/ return this.endRelationship == null ? new Base[0] : new Base[] {this.endRelationship}; // Enumeration<ActionRelationshipType>
3299        case -1019779949: /*offset*/ return this.offset == null ? new Base[0] : new Base[] {this.offset}; // DataType
3300        default: return super.getProperty(hash, name, checkValid);
3301        }
3302
3303      }
3304
3305      @Override
3306      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3307        switch (hash) {
3308        case -441951604: // targetId
3309          this.targetId = TypeConvertor.castToId(value); // IdType
3310          return value;
3311        case -261851592: // relationship
3312          value = new ActionRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3313          this.relationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3314          return value;
3315        case -1506024781: // endRelationship
3316          value = new ActionRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3317          this.endRelationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3318          return value;
3319        case -1019779949: // offset
3320          this.offset = TypeConvertor.castToType(value); // DataType
3321          return value;
3322        default: return super.setProperty(hash, name, value);
3323        }
3324
3325      }
3326
3327      @Override
3328      public Base setProperty(String name, Base value) throws FHIRException {
3329        if (name.equals("targetId")) {
3330          this.targetId = TypeConvertor.castToId(value); // IdType
3331        } else if (name.equals("relationship")) {
3332          value = new ActionRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3333          this.relationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3334        } else if (name.equals("endRelationship")) {
3335          value = new ActionRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3336          this.endRelationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3337        } else if (name.equals("offset[x]")) {
3338          this.offset = TypeConvertor.castToType(value); // DataType
3339        } else
3340          return super.setProperty(name, value);
3341        return value;
3342      }
3343
3344      @Override
3345      public Base makeProperty(int hash, String name) throws FHIRException {
3346        switch (hash) {
3347        case -441951604:  return getTargetIdElement();
3348        case -261851592:  return getRelationshipElement();
3349        case -1506024781:  return getEndRelationshipElement();
3350        case -1960684787:  return getOffset();
3351        case -1019779949:  return getOffset();
3352        default: return super.makeProperty(hash, name);
3353        }
3354
3355      }
3356
3357      @Override
3358      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3359        switch (hash) {
3360        case -441951604: /*targetId*/ return new String[] {"id"};
3361        case -261851592: /*relationship*/ return new String[] {"code"};
3362        case -1506024781: /*endRelationship*/ return new String[] {"code"};
3363        case -1019779949: /*offset*/ return new String[] {"Duration", "Range"};
3364        default: return super.getTypesForProperty(hash, name);
3365        }
3366
3367      }
3368
3369      @Override
3370      public Base addChild(String name) throws FHIRException {
3371        if (name.equals("targetId")) {
3372          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.relatedAction.targetId");
3373        }
3374        else if (name.equals("relationship")) {
3375          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.relatedAction.relationship");
3376        }
3377        else if (name.equals("endRelationship")) {
3378          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.relatedAction.endRelationship");
3379        }
3380        else if (name.equals("offsetDuration")) {
3381          this.offset = new Duration();
3382          return this.offset;
3383        }
3384        else if (name.equals("offsetRange")) {
3385          this.offset = new Range();
3386          return this.offset;
3387        }
3388        else
3389          return super.addChild(name);
3390      }
3391
3392      public RequestOrchestrationActionRelatedActionComponent copy() {
3393        RequestOrchestrationActionRelatedActionComponent dst = new RequestOrchestrationActionRelatedActionComponent();
3394        copyValues(dst);
3395        return dst;
3396      }
3397
3398      public void copyValues(RequestOrchestrationActionRelatedActionComponent dst) {
3399        super.copyValues(dst);
3400        dst.targetId = targetId == null ? null : targetId.copy();
3401        dst.relationship = relationship == null ? null : relationship.copy();
3402        dst.endRelationship = endRelationship == null ? null : endRelationship.copy();
3403        dst.offset = offset == null ? null : offset.copy();
3404      }
3405
3406      @Override
3407      public boolean equalsDeep(Base other_) {
3408        if (!super.equalsDeep(other_))
3409          return false;
3410        if (!(other_ instanceof RequestOrchestrationActionRelatedActionComponent))
3411          return false;
3412        RequestOrchestrationActionRelatedActionComponent o = (RequestOrchestrationActionRelatedActionComponent) other_;
3413        return compareDeep(targetId, o.targetId, true) && compareDeep(relationship, o.relationship, true)
3414           && compareDeep(endRelationship, o.endRelationship, true) && compareDeep(offset, o.offset, true)
3415          ;
3416      }
3417
3418      @Override
3419      public boolean equalsShallow(Base other_) {
3420        if (!super.equalsShallow(other_))
3421          return false;
3422        if (!(other_ instanceof RequestOrchestrationActionRelatedActionComponent))
3423          return false;
3424        RequestOrchestrationActionRelatedActionComponent o = (RequestOrchestrationActionRelatedActionComponent) other_;
3425        return compareValues(targetId, o.targetId, true) && compareValues(relationship, o.relationship, true)
3426           && compareValues(endRelationship, o.endRelationship, true);
3427      }
3428
3429      public boolean isEmpty() {
3430        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(targetId, relationship, endRelationship
3431          , offset);
3432      }
3433
3434  public String fhirType() {
3435    return "RequestOrchestration.action.relatedAction";
3436
3437  }
3438
3439  }
3440
3441    @Block()
3442    public static class RequestOrchestrationActionParticipantComponent extends BackboneElement implements IBaseBackboneElement {
3443        /**
3444         * The type of participant in the action.
3445         */
3446        @Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
3447        @Description(shortDefinition="careteam | device | group | healthcareservice | location | organization | patient | practitioner | practitionerrole | relatedperson", formalDefinition="The type of participant in the action." )
3448        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-participant-type")
3449        protected Enumeration<ActionParticipantType> type;
3450
3451        /**
3452         * The type of participant in the action.
3453         */
3454        @Child(name = "typeCanonical", type = {CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3455        @Description(shortDefinition="Who or what can participate", formalDefinition="The type of participant in the action." )
3456        protected CanonicalType typeCanonical;
3457
3458        /**
3459         * The type of participant in the action.
3460         */
3461        @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)
3462        @Description(shortDefinition="Who or what can participate", formalDefinition="The type of participant in the action." )
3463        protected Reference typeReference;
3464
3465        /**
3466         * The role the participant should play in performing the described action.
3467         */
3468        @Child(name = "role", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
3469        @Description(shortDefinition="E.g. Nurse, Surgeon, Parent, etc", formalDefinition="The role the participant should play in performing the described action." )
3470        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/action-participant-role")
3471        protected CodeableConcept role;
3472
3473        /**
3474         * Indicates how the actor will be involved in the action - author, reviewer, witness, etc.
3475         */
3476        @Child(name = "function", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
3477        @Description(shortDefinition="E.g. Author, Reviewer, Witness, etc", formalDefinition="Indicates how the actor will be involved in the action - author, reviewer, witness, etc." )
3478        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-participant-function")
3479        protected CodeableConcept function;
3480
3481        /**
3482         * A reference to the actual participant.
3483         */
3484        @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)
3485        @Description(shortDefinition="Who/what is participating?", formalDefinition="A reference to the actual participant." )
3486        protected DataType actor;
3487
3488        private static final long serialVersionUID = -147206285L;
3489
3490    /**
3491     * Constructor
3492     */
3493      public RequestOrchestrationActionParticipantComponent() {
3494        super();
3495      }
3496
3497        /**
3498         * @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
3499         */
3500        public Enumeration<ActionParticipantType> getTypeElement() { 
3501          if (this.type == null)
3502            if (Configuration.errorOnAutoCreate())
3503              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.type");
3504            else if (Configuration.doAutoCreate())
3505              this.type = new Enumeration<ActionParticipantType>(new ActionParticipantTypeEnumFactory()); // bb
3506          return this.type;
3507        }
3508
3509        public boolean hasTypeElement() { 
3510          return this.type != null && !this.type.isEmpty();
3511        }
3512
3513        public boolean hasType() { 
3514          return this.type != null && !this.type.isEmpty();
3515        }
3516
3517        /**
3518         * @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
3519         */
3520        public RequestOrchestrationActionParticipantComponent setTypeElement(Enumeration<ActionParticipantType> value) { 
3521          this.type = value;
3522          return this;
3523        }
3524
3525        /**
3526         * @return The type of participant in the action.
3527         */
3528        public ActionParticipantType getType() { 
3529          return this.type == null ? null : this.type.getValue();
3530        }
3531
3532        /**
3533         * @param value The type of participant in the action.
3534         */
3535        public RequestOrchestrationActionParticipantComponent setType(ActionParticipantType value) { 
3536          if (value == null)
3537            this.type = null;
3538          else {
3539            if (this.type == null)
3540              this.type = new Enumeration<ActionParticipantType>(new ActionParticipantTypeEnumFactory());
3541            this.type.setValue(value);
3542          }
3543          return this;
3544        }
3545
3546        /**
3547         * @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
3548         */
3549        public CanonicalType getTypeCanonicalElement() { 
3550          if (this.typeCanonical == null)
3551            if (Configuration.errorOnAutoCreate())
3552              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.typeCanonical");
3553            else if (Configuration.doAutoCreate())
3554              this.typeCanonical = new CanonicalType(); // bb
3555          return this.typeCanonical;
3556        }
3557
3558        public boolean hasTypeCanonicalElement() { 
3559          return this.typeCanonical != null && !this.typeCanonical.isEmpty();
3560        }
3561
3562        public boolean hasTypeCanonical() { 
3563          return this.typeCanonical != null && !this.typeCanonical.isEmpty();
3564        }
3565
3566        /**
3567         * @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
3568         */
3569        public RequestOrchestrationActionParticipantComponent setTypeCanonicalElement(CanonicalType value) { 
3570          this.typeCanonical = value;
3571          return this;
3572        }
3573
3574        /**
3575         * @return The type of participant in the action.
3576         */
3577        public String getTypeCanonical() { 
3578          return this.typeCanonical == null ? null : this.typeCanonical.getValue();
3579        }
3580
3581        /**
3582         * @param value The type of participant in the action.
3583         */
3584        public RequestOrchestrationActionParticipantComponent setTypeCanonical(String value) { 
3585          if (Utilities.noString(value))
3586            this.typeCanonical = null;
3587          else {
3588            if (this.typeCanonical == null)
3589              this.typeCanonical = new CanonicalType();
3590            this.typeCanonical.setValue(value);
3591          }
3592          return this;
3593        }
3594
3595        /**
3596         * @return {@link #typeReference} (The type of participant in the action.)
3597         */
3598        public Reference getTypeReference() { 
3599          if (this.typeReference == null)
3600            if (Configuration.errorOnAutoCreate())
3601              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.typeReference");
3602            else if (Configuration.doAutoCreate())
3603              this.typeReference = new Reference(); // cc
3604          return this.typeReference;
3605        }
3606
3607        public boolean hasTypeReference() { 
3608          return this.typeReference != null && !this.typeReference.isEmpty();
3609        }
3610
3611        /**
3612         * @param value {@link #typeReference} (The type of participant in the action.)
3613         */
3614        public RequestOrchestrationActionParticipantComponent setTypeReference(Reference value) { 
3615          this.typeReference = value;
3616          return this;
3617        }
3618
3619        /**
3620         * @return {@link #role} (The role the participant should play in performing the described action.)
3621         */
3622        public CodeableConcept getRole() { 
3623          if (this.role == null)
3624            if (Configuration.errorOnAutoCreate())
3625              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.role");
3626            else if (Configuration.doAutoCreate())
3627              this.role = new CodeableConcept(); // cc
3628          return this.role;
3629        }
3630
3631        public boolean hasRole() { 
3632          return this.role != null && !this.role.isEmpty();
3633        }
3634
3635        /**
3636         * @param value {@link #role} (The role the participant should play in performing the described action.)
3637         */
3638        public RequestOrchestrationActionParticipantComponent setRole(CodeableConcept value) { 
3639          this.role = value;
3640          return this;
3641        }
3642
3643        /**
3644         * @return {@link #function} (Indicates how the actor will be involved in the action - author, reviewer, witness, etc.)
3645         */
3646        public CodeableConcept getFunction() { 
3647          if (this.function == null)
3648            if (Configuration.errorOnAutoCreate())
3649              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.function");
3650            else if (Configuration.doAutoCreate())
3651              this.function = new CodeableConcept(); // cc
3652          return this.function;
3653        }
3654
3655        public boolean hasFunction() { 
3656          return this.function != null && !this.function.isEmpty();
3657        }
3658
3659        /**
3660         * @param value {@link #function} (Indicates how the actor will be involved in the action - author, reviewer, witness, etc.)
3661         */
3662        public RequestOrchestrationActionParticipantComponent setFunction(CodeableConcept value) { 
3663          this.function = value;
3664          return this;
3665        }
3666
3667        /**
3668         * @return {@link #actor} (A reference to the actual participant.)
3669         */
3670        public DataType getActor() { 
3671          return this.actor;
3672        }
3673
3674        /**
3675         * @return {@link #actor} (A reference to the actual participant.)
3676         */
3677        public CanonicalType getActorCanonicalType() throws FHIRException { 
3678          if (this.actor == null)
3679            this.actor = new CanonicalType();
3680          if (!(this.actor instanceof CanonicalType))
3681            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.actor.getClass().getName()+" was encountered");
3682          return (CanonicalType) this.actor;
3683        }
3684
3685        public boolean hasActorCanonicalType() { 
3686          return this != null && this.actor instanceof CanonicalType;
3687        }
3688
3689        /**
3690         * @return {@link #actor} (A reference to the actual participant.)
3691         */
3692        public Reference getActorReference() throws FHIRException { 
3693          if (this.actor == null)
3694            this.actor = new Reference();
3695          if (!(this.actor instanceof Reference))
3696            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.actor.getClass().getName()+" was encountered");
3697          return (Reference) this.actor;
3698        }
3699
3700        public boolean hasActorReference() { 
3701          return this != null && this.actor instanceof Reference;
3702        }
3703
3704        public boolean hasActor() { 
3705          return this.actor != null && !this.actor.isEmpty();
3706        }
3707
3708        /**
3709         * @param value {@link #actor} (A reference to the actual participant.)
3710         */
3711        public RequestOrchestrationActionParticipantComponent setActor(DataType value) { 
3712          if (value != null && !(value instanceof CanonicalType || value instanceof Reference))
3713            throw new FHIRException("Not the right type for RequestOrchestration.action.participant.actor[x]: "+value.fhirType());
3714          this.actor = value;
3715          return this;
3716        }
3717
3718        protected void listChildren(List<Property> children) {
3719          super.listChildren(children);
3720          children.add(new Property("type", "code", "The type of participant in the action.", 0, 1, type));
3721          children.add(new Property("typeCanonical", "canonical(CapabilityStatement)", "The type of participant in the action.", 0, 1, typeCanonical));
3722          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));
3723          children.add(new Property("role", "CodeableConcept", "The role the participant should play in performing the described action.", 0, 1, role));
3724          children.add(new Property("function", "CodeableConcept", "Indicates how the actor will be involved in the action - author, reviewer, witness, etc.", 0, 1, function));
3725          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));
3726        }
3727
3728        @Override
3729        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3730          switch (_hash) {
3731          case 3575610: /*type*/  return new Property("type", "code", "The type of participant in the action.", 0, 1, type);
3732          case -466635046: /*typeCanonical*/  return new Property("typeCanonical", "canonical(CapabilityStatement)", "The type of participant in the action.", 0, 1, typeCanonical);
3733          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);
3734          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "The role the participant should play in performing the described action.", 0, 1, role);
3735          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);
3736          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);
3737          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);
3738          case 1323531903: /*actorCanonical*/  return new Property("actor[x]", "canonical(CapabilityStatement)", "A reference to the actual participant.", 0, 1, actor);
3739          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);
3740          default: return super.getNamedProperty(_hash, _name, _checkValid);
3741          }
3742
3743        }
3744
3745      @Override
3746      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3747        switch (hash) {
3748        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<ActionParticipantType>
3749        case -466635046: /*typeCanonical*/ return this.typeCanonical == null ? new Base[0] : new Base[] {this.typeCanonical}; // CanonicalType
3750        case 2074825009: /*typeReference*/ return this.typeReference == null ? new Base[0] : new Base[] {this.typeReference}; // Reference
3751        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
3752        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
3753        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // DataType
3754        default: return super.getProperty(hash, name, checkValid);
3755        }
3756
3757      }
3758
3759      @Override
3760      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3761        switch (hash) {
3762        case 3575610: // type
3763          value = new ActionParticipantTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3764          this.type = (Enumeration) value; // Enumeration<ActionParticipantType>
3765          return value;
3766        case -466635046: // typeCanonical
3767          this.typeCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
3768          return value;
3769        case 2074825009: // typeReference
3770          this.typeReference = TypeConvertor.castToReference(value); // Reference
3771          return value;
3772        case 3506294: // role
3773          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3774          return value;
3775        case 1380938712: // function
3776          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3777          return value;
3778        case 92645877: // actor
3779          this.actor = TypeConvertor.castToType(value); // DataType
3780          return value;
3781        default: return super.setProperty(hash, name, value);
3782        }
3783
3784      }
3785
3786      @Override
3787      public Base setProperty(String name, Base value) throws FHIRException {
3788        if (name.equals("type")) {
3789          value = new ActionParticipantTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3790          this.type = (Enumeration) value; // Enumeration<ActionParticipantType>
3791        } else if (name.equals("typeCanonical")) {
3792          this.typeCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
3793        } else if (name.equals("typeReference")) {
3794          this.typeReference = TypeConvertor.castToReference(value); // Reference
3795        } else if (name.equals("role")) {
3796          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3797        } else if (name.equals("function")) {
3798          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3799        } else if (name.equals("actor[x]")) {
3800          this.actor = TypeConvertor.castToType(value); // DataType
3801        } else
3802          return super.setProperty(name, value);
3803        return value;
3804      }
3805
3806      @Override
3807      public Base makeProperty(int hash, String name) throws FHIRException {
3808        switch (hash) {
3809        case 3575610:  return getTypeElement();
3810        case -466635046:  return getTypeCanonicalElement();
3811        case 2074825009:  return getTypeReference();
3812        case 3506294:  return getRole();
3813        case 1380938712:  return getFunction();
3814        case -1650558357:  return getActor();
3815        case 92645877:  return getActor();
3816        default: return super.makeProperty(hash, name);
3817        }
3818
3819      }
3820
3821      @Override
3822      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3823        switch (hash) {
3824        case 3575610: /*type*/ return new String[] {"code"};
3825        case -466635046: /*typeCanonical*/ return new String[] {"canonical"};
3826        case 2074825009: /*typeReference*/ return new String[] {"Reference"};
3827        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
3828        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
3829        case 92645877: /*actor*/ return new String[] {"canonical", "Reference"};
3830        default: return super.getTypesForProperty(hash, name);
3831        }
3832
3833      }
3834
3835      @Override
3836      public Base addChild(String name) throws FHIRException {
3837        if (name.equals("type")) {
3838          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.participant.type");
3839        }
3840        else if (name.equals("typeCanonical")) {
3841          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.participant.typeCanonical");
3842        }
3843        else if (name.equals("typeReference")) {
3844          this.typeReference = new Reference();
3845          return this.typeReference;
3846        }
3847        else if (name.equals("role")) {
3848          this.role = new CodeableConcept();
3849          return this.role;
3850        }
3851        else if (name.equals("function")) {
3852          this.function = new CodeableConcept();
3853          return this.function;
3854        }
3855        else if (name.equals("actorCanonical")) {
3856          this.actor = new CanonicalType();
3857          return this.actor;
3858        }
3859        else if (name.equals("actorReference")) {
3860          this.actor = new Reference();
3861          return this.actor;
3862        }
3863        else
3864          return super.addChild(name);
3865      }
3866
3867      public RequestOrchestrationActionParticipantComponent copy() {
3868        RequestOrchestrationActionParticipantComponent dst = new RequestOrchestrationActionParticipantComponent();
3869        copyValues(dst);
3870        return dst;
3871      }
3872
3873      public void copyValues(RequestOrchestrationActionParticipantComponent dst) {
3874        super.copyValues(dst);
3875        dst.type = type == null ? null : type.copy();
3876        dst.typeCanonical = typeCanonical == null ? null : typeCanonical.copy();
3877        dst.typeReference = typeReference == null ? null : typeReference.copy();
3878        dst.role = role == null ? null : role.copy();
3879        dst.function = function == null ? null : function.copy();
3880        dst.actor = actor == null ? null : actor.copy();
3881      }
3882
3883      @Override
3884      public boolean equalsDeep(Base other_) {
3885        if (!super.equalsDeep(other_))
3886          return false;
3887        if (!(other_ instanceof RequestOrchestrationActionParticipantComponent))
3888          return false;
3889        RequestOrchestrationActionParticipantComponent o = (RequestOrchestrationActionParticipantComponent) other_;
3890        return compareDeep(type, o.type, true) && compareDeep(typeCanonical, o.typeCanonical, true) && compareDeep(typeReference, o.typeReference, true)
3891           && compareDeep(role, o.role, true) && compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true)
3892          ;
3893      }
3894
3895      @Override
3896      public boolean equalsShallow(Base other_) {
3897        if (!super.equalsShallow(other_))
3898          return false;
3899        if (!(other_ instanceof RequestOrchestrationActionParticipantComponent))
3900          return false;
3901        RequestOrchestrationActionParticipantComponent o = (RequestOrchestrationActionParticipantComponent) other_;
3902        return compareValues(type, o.type, true) && compareValues(typeCanonical, o.typeCanonical, true);
3903      }
3904
3905      public boolean isEmpty() {
3906        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, typeCanonical, typeReference
3907          , role, function, actor);
3908      }
3909
3910  public String fhirType() {
3911    return "RequestOrchestration.action.participant";
3912
3913  }
3914
3915  }
3916
3917    @Block()
3918    public static class RequestOrchestrationActionDynamicValueComponent extends BackboneElement implements IBaseBackboneElement {
3919        /**
3920         * 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).
3921         */
3922        @Child(name = "path", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
3923        @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)." )
3924        protected StringType path;
3925
3926        /**
3927         * An expression specifying the value of the customized element.
3928         */
3929        @Child(name = "expression", type = {Expression.class}, order=2, min=0, max=1, modifier=false, summary=false)
3930        @Description(shortDefinition="An expression that provides the dynamic value for the customization", formalDefinition="An expression specifying the value of the customized element." )
3931        protected Expression expression;
3932
3933        private static final long serialVersionUID = 1064529082L;
3934
3935    /**
3936     * Constructor
3937     */
3938      public RequestOrchestrationActionDynamicValueComponent() {
3939        super();
3940      }
3941
3942        /**
3943         * @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
3944         */
3945        public StringType getPathElement() { 
3946          if (this.path == null)
3947            if (Configuration.errorOnAutoCreate())
3948              throw new Error("Attempt to auto-create RequestOrchestrationActionDynamicValueComponent.path");
3949            else if (Configuration.doAutoCreate())
3950              this.path = new StringType(); // bb
3951          return this.path;
3952        }
3953
3954        public boolean hasPathElement() { 
3955          return this.path != null && !this.path.isEmpty();
3956        }
3957
3958        public boolean hasPath() { 
3959          return this.path != null && !this.path.isEmpty();
3960        }
3961
3962        /**
3963         * @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
3964         */
3965        public RequestOrchestrationActionDynamicValueComponent setPathElement(StringType value) { 
3966          this.path = value;
3967          return this;
3968        }
3969
3970        /**
3971         * @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).
3972         */
3973        public String getPath() { 
3974          return this.path == null ? null : this.path.getValue();
3975        }
3976
3977        /**
3978         * @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).
3979         */
3980        public RequestOrchestrationActionDynamicValueComponent setPath(String value) { 
3981          if (Utilities.noString(value))
3982            this.path = null;
3983          else {
3984            if (this.path == null)
3985              this.path = new StringType();
3986            this.path.setValue(value);
3987          }
3988          return this;
3989        }
3990
3991        /**
3992         * @return {@link #expression} (An expression specifying the value of the customized element.)
3993         */
3994        public Expression getExpression() { 
3995          if (this.expression == null)
3996            if (Configuration.errorOnAutoCreate())
3997              throw new Error("Attempt to auto-create RequestOrchestrationActionDynamicValueComponent.expression");
3998            else if (Configuration.doAutoCreate())
3999              this.expression = new Expression(); // cc
4000          return this.expression;
4001        }
4002
4003        public boolean hasExpression() { 
4004          return this.expression != null && !this.expression.isEmpty();
4005        }
4006
4007        /**
4008         * @param value {@link #expression} (An expression specifying the value of the customized element.)
4009         */
4010        public RequestOrchestrationActionDynamicValueComponent setExpression(Expression value) { 
4011          this.expression = value;
4012          return this;
4013        }
4014
4015        protected void listChildren(List<Property> children) {
4016          super.listChildren(children);
4017          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));
4018          children.add(new Property("expression", "Expression", "An expression specifying the value of the customized element.", 0, 1, expression));
4019        }
4020
4021        @Override
4022        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4023          switch (_hash) {
4024          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);
4025          case -1795452264: /*expression*/  return new Property("expression", "Expression", "An expression specifying the value of the customized element.", 0, 1, expression);
4026          default: return super.getNamedProperty(_hash, _name, _checkValid);
4027          }
4028
4029        }
4030
4031      @Override
4032      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4033        switch (hash) {
4034        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
4035        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // Expression
4036        default: return super.getProperty(hash, name, checkValid);
4037        }
4038
4039      }
4040
4041      @Override
4042      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4043        switch (hash) {
4044        case 3433509: // path
4045          this.path = TypeConvertor.castToString(value); // StringType
4046          return value;
4047        case -1795452264: // expression
4048          this.expression = TypeConvertor.castToExpression(value); // Expression
4049          return value;
4050        default: return super.setProperty(hash, name, value);
4051        }
4052
4053      }
4054
4055      @Override
4056      public Base setProperty(String name, Base value) throws FHIRException {
4057        if (name.equals("path")) {
4058          this.path = TypeConvertor.castToString(value); // StringType
4059        } else if (name.equals("expression")) {
4060          this.expression = TypeConvertor.castToExpression(value); // Expression
4061        } else
4062          return super.setProperty(name, value);
4063        return value;
4064      }
4065
4066      @Override
4067      public Base makeProperty(int hash, String name) throws FHIRException {
4068        switch (hash) {
4069        case 3433509:  return getPathElement();
4070        case -1795452264:  return getExpression();
4071        default: return super.makeProperty(hash, name);
4072        }
4073
4074      }
4075
4076      @Override
4077      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4078        switch (hash) {
4079        case 3433509: /*path*/ return new String[] {"string"};
4080        case -1795452264: /*expression*/ return new String[] {"Expression"};
4081        default: return super.getTypesForProperty(hash, name);
4082        }
4083
4084      }
4085
4086      @Override
4087      public Base addChild(String name) throws FHIRException {
4088        if (name.equals("path")) {
4089          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.action.dynamicValue.path");
4090        }
4091        else if (name.equals("expression")) {
4092          this.expression = new Expression();
4093          return this.expression;
4094        }
4095        else
4096          return super.addChild(name);
4097      }
4098
4099      public RequestOrchestrationActionDynamicValueComponent copy() {
4100        RequestOrchestrationActionDynamicValueComponent dst = new RequestOrchestrationActionDynamicValueComponent();
4101        copyValues(dst);
4102        return dst;
4103      }
4104
4105      public void copyValues(RequestOrchestrationActionDynamicValueComponent dst) {
4106        super.copyValues(dst);
4107        dst.path = path == null ? null : path.copy();
4108        dst.expression = expression == null ? null : expression.copy();
4109      }
4110
4111      @Override
4112      public boolean equalsDeep(Base other_) {
4113        if (!super.equalsDeep(other_))
4114          return false;
4115        if (!(other_ instanceof RequestOrchestrationActionDynamicValueComponent))
4116          return false;
4117        RequestOrchestrationActionDynamicValueComponent o = (RequestOrchestrationActionDynamicValueComponent) other_;
4118        return compareDeep(path, o.path, true) && compareDeep(expression, o.expression, true);
4119      }
4120
4121      @Override
4122      public boolean equalsShallow(Base other_) {
4123        if (!super.equalsShallow(other_))
4124          return false;
4125        if (!(other_ instanceof RequestOrchestrationActionDynamicValueComponent))
4126          return false;
4127        RequestOrchestrationActionDynamicValueComponent o = (RequestOrchestrationActionDynamicValueComponent) other_;
4128        return compareValues(path, o.path, true);
4129      }
4130
4131      public boolean isEmpty() {
4132        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(path, expression);
4133      }
4134
4135  public String fhirType() {
4136    return "RequestOrchestration.action.dynamicValue";
4137
4138  }
4139
4140  }
4141
4142    /**
4143     * Allows a service to provide a unique, business identifier for the request.
4144     */
4145    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4146    @Description(shortDefinition="Business identifier", formalDefinition="Allows a service to provide a unique, business identifier for the request." )
4147    protected List<Identifier> identifier;
4148
4149    /**
4150     * 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.
4151     */
4152    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4153    @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." )
4154    protected List<CanonicalType> instantiatesCanonical;
4155
4156    /**
4157     * A URL referencing an externally defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this request.
4158     */
4159    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4160    @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." )
4161    protected List<UriType> instantiatesUri;
4162
4163    /**
4164     * A plan, proposal or order that is fulfilled in whole or in part by this request.
4165     */
4166    @Child(name = "basedOn", type = {Reference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4167    @Description(shortDefinition="Fulfills plan, proposal, or order", formalDefinition="A plan, proposal or order that is fulfilled in whole or in part by this request." )
4168    protected List<Reference> basedOn;
4169
4170    /**
4171     * Completed or terminated request(s) whose function is taken by this new request.
4172     */
4173    @Child(name = "replaces", type = {Reference.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4174    @Description(shortDefinition="Request(s) replaced by this request", formalDefinition="Completed or terminated request(s) whose function is taken by this new request." )
4175    protected List<Reference> replaces;
4176
4177    /**
4178     * 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.
4179     */
4180    @Child(name = "groupIdentifier", type = {Identifier.class}, order=5, min=0, max=1, modifier=false, summary=true)
4181    @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." )
4182    protected Identifier groupIdentifier;
4183
4184    /**
4185     * The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
4186     */
4187    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
4188    @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." )
4189    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
4190    protected Enumeration<RequestStatus> status;
4191
4192    /**
4193     * Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4194     */
4195    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
4196    @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." )
4197    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
4198    protected Enumeration<RequestIntent> intent;
4199
4200    /**
4201     * Indicates how quickly the request should be addressed with respect to other requests.
4202     */
4203    @Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
4204    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the request should be addressed with respect to other requests." )
4205    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
4206    protected Enumeration<RequestPriority> priority;
4207
4208    /**
4209     * A code that identifies what the overall request orchestration is.
4210     */
4211    @Child(name = "code", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true)
4212    @Description(shortDefinition="What's being requested/ordered", formalDefinition="A code that identifies what the overall request orchestration is." )
4213    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-code")
4214    protected CodeableConcept code;
4215
4216    /**
4217     * The subject for which the request orchestration was created.
4218     */
4219    @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)
4220    @Description(shortDefinition="Who the request orchestration is about", formalDefinition="The subject for which the request orchestration was created." )
4221    protected Reference subject;
4222
4223    /**
4224     * Describes the context of the request orchestration, if any.
4225     */
4226    @Child(name = "encounter", type = {Encounter.class}, order=11, min=0, max=1, modifier=false, summary=false)
4227    @Description(shortDefinition="Created as part of", formalDefinition="Describes the context of the request orchestration, if any." )
4228    protected Reference encounter;
4229
4230    /**
4231     * Indicates when the request orchestration was created.
4232     */
4233    @Child(name = "authoredOn", type = {DateTimeType.class}, order=12, min=0, max=1, modifier=false, summary=false)
4234    @Description(shortDefinition="When the request orchestration was authored", formalDefinition="Indicates when the request orchestration was created." )
4235    protected DateTimeType authoredOn;
4236
4237    /**
4238     * Provides a reference to the author of the request orchestration.
4239     */
4240    @Child(name = "author", type = {Device.class, Practitioner.class, PractitionerRole.class}, order=13, min=0, max=1, modifier=false, summary=false)
4241    @Description(shortDefinition="Device or practitioner that authored the request orchestration", formalDefinition="Provides a reference to the author of the request orchestration." )
4242    protected Reference author;
4243
4244    /**
4245     * Describes the reason for the request orchestration in coded or textual form.
4246     */
4247    @Child(name = "reason", type = {CodeableReference.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4248    @Description(shortDefinition="Why the request orchestration is needed", formalDefinition="Describes the reason for the request orchestration in coded or textual form." )
4249    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-reason-code")
4250    protected List<CodeableReference> reason;
4251
4252    /**
4253     * Goals that are intended to be achieved by following the requests in this RequestOrchestration.
4254     */
4255    @Child(name = "goal", type = {Goal.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4256    @Description(shortDefinition="What goals", formalDefinition="Goals that are intended to be achieved by following the requests in this RequestOrchestration." )
4257    protected List<Reference> goal;
4258
4259    /**
4260     * Provides a mechanism to communicate additional information about the response.
4261     */
4262    @Child(name = "note", type = {Annotation.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4263    @Description(shortDefinition="Additional notes about the response", formalDefinition="Provides a mechanism to communicate additional information about the response." )
4264    protected List<Annotation> note;
4265
4266    /**
4267     * The actions, if any, produced by the evaluation of the artifact.
4268     */
4269    @Child(name = "action", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4270    @Description(shortDefinition="Proposed actions, if any", formalDefinition="The actions, if any, produced by the evaluation of the artifact." )
4271    protected List<RequestOrchestrationActionComponent> action;
4272
4273    private static final long serialVersionUID = -683989911L;
4274
4275  /**
4276   * Constructor
4277   */
4278    public RequestOrchestration() {
4279      super();
4280    }
4281
4282  /**
4283   * Constructor
4284   */
4285    public RequestOrchestration(RequestStatus status, RequestIntent intent) {
4286      super();
4287      this.setStatus(status);
4288      this.setIntent(intent);
4289    }
4290
4291    /**
4292     * @return {@link #identifier} (Allows a service to provide a unique, business identifier for the request.)
4293     */
4294    public List<Identifier> getIdentifier() { 
4295      if (this.identifier == null)
4296        this.identifier = new ArrayList<Identifier>();
4297      return this.identifier;
4298    }
4299
4300    /**
4301     * @return Returns a reference to <code>this</code> for easy method chaining
4302     */
4303    public RequestOrchestration setIdentifier(List<Identifier> theIdentifier) { 
4304      this.identifier = theIdentifier;
4305      return this;
4306    }
4307
4308    public boolean hasIdentifier() { 
4309      if (this.identifier == null)
4310        return false;
4311      for (Identifier item : this.identifier)
4312        if (!item.isEmpty())
4313          return true;
4314      return false;
4315    }
4316
4317    public Identifier addIdentifier() { //3
4318      Identifier t = new Identifier();
4319      if (this.identifier == null)
4320        this.identifier = new ArrayList<Identifier>();
4321      this.identifier.add(t);
4322      return t;
4323    }
4324
4325    public RequestOrchestration addIdentifier(Identifier t) { //3
4326      if (t == null)
4327        return this;
4328      if (this.identifier == null)
4329        this.identifier = new ArrayList<Identifier>();
4330      this.identifier.add(t);
4331      return this;
4332    }
4333
4334    /**
4335     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
4336     */
4337    public Identifier getIdentifierFirstRep() { 
4338      if (getIdentifier().isEmpty()) {
4339        addIdentifier();
4340      }
4341      return getIdentifier().get(0);
4342    }
4343
4344    /**
4345     * @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.)
4346     */
4347    public List<CanonicalType> getInstantiatesCanonical() { 
4348      if (this.instantiatesCanonical == null)
4349        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4350      return this.instantiatesCanonical;
4351    }
4352
4353    /**
4354     * @return Returns a reference to <code>this</code> for easy method chaining
4355     */
4356    public RequestOrchestration setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
4357      this.instantiatesCanonical = theInstantiatesCanonical;
4358      return this;
4359    }
4360
4361    public boolean hasInstantiatesCanonical() { 
4362      if (this.instantiatesCanonical == null)
4363        return false;
4364      for (CanonicalType item : this.instantiatesCanonical)
4365        if (!item.isEmpty())
4366          return true;
4367      return false;
4368    }
4369
4370    /**
4371     * @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.)
4372     */
4373    public CanonicalType addInstantiatesCanonicalElement() {//2 
4374      CanonicalType t = new CanonicalType();
4375      if (this.instantiatesCanonical == null)
4376        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4377      this.instantiatesCanonical.add(t);
4378      return t;
4379    }
4380
4381    /**
4382     * @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.)
4383     */
4384    public RequestOrchestration addInstantiatesCanonical(String value) { //1
4385      CanonicalType t = new CanonicalType();
4386      t.setValue(value);
4387      if (this.instantiatesCanonical == null)
4388        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4389      this.instantiatesCanonical.add(t);
4390      return this;
4391    }
4392
4393    /**
4394     * @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.)
4395     */
4396    public boolean hasInstantiatesCanonical(String value) { 
4397      if (this.instantiatesCanonical == null)
4398        return false;
4399      for (CanonicalType v : this.instantiatesCanonical)
4400        if (v.getValue().equals(value)) // canonical
4401          return true;
4402      return false;
4403    }
4404
4405    /**
4406     * @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.)
4407     */
4408    public List<UriType> getInstantiatesUri() { 
4409      if (this.instantiatesUri == null)
4410        this.instantiatesUri = new ArrayList<UriType>();
4411      return this.instantiatesUri;
4412    }
4413
4414    /**
4415     * @return Returns a reference to <code>this</code> for easy method chaining
4416     */
4417    public RequestOrchestration setInstantiatesUri(List<UriType> theInstantiatesUri) { 
4418      this.instantiatesUri = theInstantiatesUri;
4419      return this;
4420    }
4421
4422    public boolean hasInstantiatesUri() { 
4423      if (this.instantiatesUri == null)
4424        return false;
4425      for (UriType item : this.instantiatesUri)
4426        if (!item.isEmpty())
4427          return true;
4428      return false;
4429    }
4430
4431    /**
4432     * @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.)
4433     */
4434    public UriType addInstantiatesUriElement() {//2 
4435      UriType t = new UriType();
4436      if (this.instantiatesUri == null)
4437        this.instantiatesUri = new ArrayList<UriType>();
4438      this.instantiatesUri.add(t);
4439      return t;
4440    }
4441
4442    /**
4443     * @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.)
4444     */
4445    public RequestOrchestration addInstantiatesUri(String value) { //1
4446      UriType t = new UriType();
4447      t.setValue(value);
4448      if (this.instantiatesUri == null)
4449        this.instantiatesUri = new ArrayList<UriType>();
4450      this.instantiatesUri.add(t);
4451      return this;
4452    }
4453
4454    /**
4455     * @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.)
4456     */
4457    public boolean hasInstantiatesUri(String value) { 
4458      if (this.instantiatesUri == null)
4459        return false;
4460      for (UriType v : this.instantiatesUri)
4461        if (v.getValue().equals(value)) // uri
4462          return true;
4463      return false;
4464    }
4465
4466    /**
4467     * @return {@link #basedOn} (A plan, proposal or order that is fulfilled in whole or in part by this request.)
4468     */
4469    public List<Reference> getBasedOn() { 
4470      if (this.basedOn == null)
4471        this.basedOn = new ArrayList<Reference>();
4472      return this.basedOn;
4473    }
4474
4475    /**
4476     * @return Returns a reference to <code>this</code> for easy method chaining
4477     */
4478    public RequestOrchestration setBasedOn(List<Reference> theBasedOn) { 
4479      this.basedOn = theBasedOn;
4480      return this;
4481    }
4482
4483    public boolean hasBasedOn() { 
4484      if (this.basedOn == null)
4485        return false;
4486      for (Reference item : this.basedOn)
4487        if (!item.isEmpty())
4488          return true;
4489      return false;
4490    }
4491
4492    public Reference addBasedOn() { //3
4493      Reference t = new Reference();
4494      if (this.basedOn == null)
4495        this.basedOn = new ArrayList<Reference>();
4496      this.basedOn.add(t);
4497      return t;
4498    }
4499
4500    public RequestOrchestration addBasedOn(Reference t) { //3
4501      if (t == null)
4502        return this;
4503      if (this.basedOn == null)
4504        this.basedOn = new ArrayList<Reference>();
4505      this.basedOn.add(t);
4506      return this;
4507    }
4508
4509    /**
4510     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
4511     */
4512    public Reference getBasedOnFirstRep() { 
4513      if (getBasedOn().isEmpty()) {
4514        addBasedOn();
4515      }
4516      return getBasedOn().get(0);
4517    }
4518
4519    /**
4520     * @return {@link #replaces} (Completed or terminated request(s) whose function is taken by this new request.)
4521     */
4522    public List<Reference> getReplaces() { 
4523      if (this.replaces == null)
4524        this.replaces = new ArrayList<Reference>();
4525      return this.replaces;
4526    }
4527
4528    /**
4529     * @return Returns a reference to <code>this</code> for easy method chaining
4530     */
4531    public RequestOrchestration setReplaces(List<Reference> theReplaces) { 
4532      this.replaces = theReplaces;
4533      return this;
4534    }
4535
4536    public boolean hasReplaces() { 
4537      if (this.replaces == null)
4538        return false;
4539      for (Reference item : this.replaces)
4540        if (!item.isEmpty())
4541          return true;
4542      return false;
4543    }
4544
4545    public Reference addReplaces() { //3
4546      Reference t = new Reference();
4547      if (this.replaces == null)
4548        this.replaces = new ArrayList<Reference>();
4549      this.replaces.add(t);
4550      return t;
4551    }
4552
4553    public RequestOrchestration addReplaces(Reference t) { //3
4554      if (t == null)
4555        return this;
4556      if (this.replaces == null)
4557        this.replaces = new ArrayList<Reference>();
4558      this.replaces.add(t);
4559      return this;
4560    }
4561
4562    /**
4563     * @return The first repetition of repeating field {@link #replaces}, creating it if it does not already exist {3}
4564     */
4565    public Reference getReplacesFirstRep() { 
4566      if (getReplaces().isEmpty()) {
4567        addReplaces();
4568      }
4569      return getReplaces().get(0);
4570    }
4571
4572    /**
4573     * @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.)
4574     */
4575    public Identifier getGroupIdentifier() { 
4576      if (this.groupIdentifier == null)
4577        if (Configuration.errorOnAutoCreate())
4578          throw new Error("Attempt to auto-create RequestOrchestration.groupIdentifier");
4579        else if (Configuration.doAutoCreate())
4580          this.groupIdentifier = new Identifier(); // cc
4581      return this.groupIdentifier;
4582    }
4583
4584    public boolean hasGroupIdentifier() { 
4585      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
4586    }
4587
4588    /**
4589     * @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.)
4590     */
4591    public RequestOrchestration setGroupIdentifier(Identifier value) { 
4592      this.groupIdentifier = value;
4593      return this;
4594    }
4595
4596    /**
4597     * @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
4598     */
4599    public Enumeration<RequestStatus> getStatusElement() { 
4600      if (this.status == null)
4601        if (Configuration.errorOnAutoCreate())
4602          throw new Error("Attempt to auto-create RequestOrchestration.status");
4603        else if (Configuration.doAutoCreate())
4604          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
4605      return this.status;
4606    }
4607
4608    public boolean hasStatusElement() { 
4609      return this.status != null && !this.status.isEmpty();
4610    }
4611
4612    public boolean hasStatus() { 
4613      return this.status != null && !this.status.isEmpty();
4614    }
4615
4616    /**
4617     * @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
4618     */
4619    public RequestOrchestration setStatusElement(Enumeration<RequestStatus> value) { 
4620      this.status = value;
4621      return this;
4622    }
4623
4624    /**
4625     * @return The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
4626     */
4627    public RequestStatus getStatus() { 
4628      return this.status == null ? null : this.status.getValue();
4629    }
4630
4631    /**
4632     * @param value The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
4633     */
4634    public RequestOrchestration setStatus(RequestStatus value) { 
4635        if (this.status == null)
4636          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
4637        this.status.setValue(value);
4638      return this;
4639    }
4640
4641    /**
4642     * @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
4643     */
4644    public Enumeration<RequestIntent> getIntentElement() { 
4645      if (this.intent == null)
4646        if (Configuration.errorOnAutoCreate())
4647          throw new Error("Attempt to auto-create RequestOrchestration.intent");
4648        else if (Configuration.doAutoCreate())
4649          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
4650      return this.intent;
4651    }
4652
4653    public boolean hasIntentElement() { 
4654      return this.intent != null && !this.intent.isEmpty();
4655    }
4656
4657    public boolean hasIntent() { 
4658      return this.intent != null && !this.intent.isEmpty();
4659    }
4660
4661    /**
4662     * @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
4663     */
4664    public RequestOrchestration setIntentElement(Enumeration<RequestIntent> value) { 
4665      this.intent = value;
4666      return this;
4667    }
4668
4669    /**
4670     * @return Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4671     */
4672    public RequestIntent getIntent() { 
4673      return this.intent == null ? null : this.intent.getValue();
4674    }
4675
4676    /**
4677     * @param value Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4678     */
4679    public RequestOrchestration setIntent(RequestIntent value) { 
4680        if (this.intent == null)
4681          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
4682        this.intent.setValue(value);
4683      return this;
4684    }
4685
4686    /**
4687     * @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
4688     */
4689    public Enumeration<RequestPriority> getPriorityElement() { 
4690      if (this.priority == null)
4691        if (Configuration.errorOnAutoCreate())
4692          throw new Error("Attempt to auto-create RequestOrchestration.priority");
4693        else if (Configuration.doAutoCreate())
4694          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
4695      return this.priority;
4696    }
4697
4698    public boolean hasPriorityElement() { 
4699      return this.priority != null && !this.priority.isEmpty();
4700    }
4701
4702    public boolean hasPriority() { 
4703      return this.priority != null && !this.priority.isEmpty();
4704    }
4705
4706    /**
4707     * @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
4708     */
4709    public RequestOrchestration setPriorityElement(Enumeration<RequestPriority> value) { 
4710      this.priority = value;
4711      return this;
4712    }
4713
4714    /**
4715     * @return Indicates how quickly the request should be addressed with respect to other requests.
4716     */
4717    public RequestPriority getPriority() { 
4718      return this.priority == null ? null : this.priority.getValue();
4719    }
4720
4721    /**
4722     * @param value Indicates how quickly the request should be addressed with respect to other requests.
4723     */
4724    public RequestOrchestration setPriority(RequestPriority value) { 
4725      if (value == null)
4726        this.priority = null;
4727      else {
4728        if (this.priority == null)
4729          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
4730        this.priority.setValue(value);
4731      }
4732      return this;
4733    }
4734
4735    /**
4736     * @return {@link #code} (A code that identifies what the overall request orchestration is.)
4737     */
4738    public CodeableConcept getCode() { 
4739      if (this.code == null)
4740        if (Configuration.errorOnAutoCreate())
4741          throw new Error("Attempt to auto-create RequestOrchestration.code");
4742        else if (Configuration.doAutoCreate())
4743          this.code = new CodeableConcept(); // cc
4744      return this.code;
4745    }
4746
4747    public boolean hasCode() { 
4748      return this.code != null && !this.code.isEmpty();
4749    }
4750
4751    /**
4752     * @param value {@link #code} (A code that identifies what the overall request orchestration is.)
4753     */
4754    public RequestOrchestration setCode(CodeableConcept value) { 
4755      this.code = value;
4756      return this;
4757    }
4758
4759    /**
4760     * @return {@link #subject} (The subject for which the request orchestration was created.)
4761     */
4762    public Reference getSubject() { 
4763      if (this.subject == null)
4764        if (Configuration.errorOnAutoCreate())
4765          throw new Error("Attempt to auto-create RequestOrchestration.subject");
4766        else if (Configuration.doAutoCreate())
4767          this.subject = new Reference(); // cc
4768      return this.subject;
4769    }
4770
4771    public boolean hasSubject() { 
4772      return this.subject != null && !this.subject.isEmpty();
4773    }
4774
4775    /**
4776     * @param value {@link #subject} (The subject for which the request orchestration was created.)
4777     */
4778    public RequestOrchestration setSubject(Reference value) { 
4779      this.subject = value;
4780      return this;
4781    }
4782
4783    /**
4784     * @return {@link #encounter} (Describes the context of the request orchestration, if any.)
4785     */
4786    public Reference getEncounter() { 
4787      if (this.encounter == null)
4788        if (Configuration.errorOnAutoCreate())
4789          throw new Error("Attempt to auto-create RequestOrchestration.encounter");
4790        else if (Configuration.doAutoCreate())
4791          this.encounter = new Reference(); // cc
4792      return this.encounter;
4793    }
4794
4795    public boolean hasEncounter() { 
4796      return this.encounter != null && !this.encounter.isEmpty();
4797    }
4798
4799    /**
4800     * @param value {@link #encounter} (Describes the context of the request orchestration, if any.)
4801     */
4802    public RequestOrchestration setEncounter(Reference value) { 
4803      this.encounter = value;
4804      return this;
4805    }
4806
4807    /**
4808     * @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
4809     */
4810    public DateTimeType getAuthoredOnElement() { 
4811      if (this.authoredOn == null)
4812        if (Configuration.errorOnAutoCreate())
4813          throw new Error("Attempt to auto-create RequestOrchestration.authoredOn");
4814        else if (Configuration.doAutoCreate())
4815          this.authoredOn = new DateTimeType(); // bb
4816      return this.authoredOn;
4817    }
4818
4819    public boolean hasAuthoredOnElement() { 
4820      return this.authoredOn != null && !this.authoredOn.isEmpty();
4821    }
4822
4823    public boolean hasAuthoredOn() { 
4824      return this.authoredOn != null && !this.authoredOn.isEmpty();
4825    }
4826
4827    /**
4828     * @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
4829     */
4830    public RequestOrchestration setAuthoredOnElement(DateTimeType value) { 
4831      this.authoredOn = value;
4832      return this;
4833    }
4834
4835    /**
4836     * @return Indicates when the request orchestration was created.
4837     */
4838    public Date getAuthoredOn() { 
4839      return this.authoredOn == null ? null : this.authoredOn.getValue();
4840    }
4841
4842    /**
4843     * @param value Indicates when the request orchestration was created.
4844     */
4845    public RequestOrchestration setAuthoredOn(Date value) { 
4846      if (value == null)
4847        this.authoredOn = null;
4848      else {
4849        if (this.authoredOn == null)
4850          this.authoredOn = new DateTimeType();
4851        this.authoredOn.setValue(value);
4852      }
4853      return this;
4854    }
4855
4856    /**
4857     * @return {@link #author} (Provides a reference to the author of the request orchestration.)
4858     */
4859    public Reference getAuthor() { 
4860      if (this.author == null)
4861        if (Configuration.errorOnAutoCreate())
4862          throw new Error("Attempt to auto-create RequestOrchestration.author");
4863        else if (Configuration.doAutoCreate())
4864          this.author = new Reference(); // cc
4865      return this.author;
4866    }
4867
4868    public boolean hasAuthor() { 
4869      return this.author != null && !this.author.isEmpty();
4870    }
4871
4872    /**
4873     * @param value {@link #author} (Provides a reference to the author of the request orchestration.)
4874     */
4875    public RequestOrchestration setAuthor(Reference value) { 
4876      this.author = value;
4877      return this;
4878    }
4879
4880    /**
4881     * @return {@link #reason} (Describes the reason for the request orchestration in coded or textual form.)
4882     */
4883    public List<CodeableReference> getReason() { 
4884      if (this.reason == null)
4885        this.reason = new ArrayList<CodeableReference>();
4886      return this.reason;
4887    }
4888
4889    /**
4890     * @return Returns a reference to <code>this</code> for easy method chaining
4891     */
4892    public RequestOrchestration setReason(List<CodeableReference> theReason) { 
4893      this.reason = theReason;
4894      return this;
4895    }
4896
4897    public boolean hasReason() { 
4898      if (this.reason == null)
4899        return false;
4900      for (CodeableReference item : this.reason)
4901        if (!item.isEmpty())
4902          return true;
4903      return false;
4904    }
4905
4906    public CodeableReference addReason() { //3
4907      CodeableReference t = new CodeableReference();
4908      if (this.reason == null)
4909        this.reason = new ArrayList<CodeableReference>();
4910      this.reason.add(t);
4911      return t;
4912    }
4913
4914    public RequestOrchestration addReason(CodeableReference t) { //3
4915      if (t == null)
4916        return this;
4917      if (this.reason == null)
4918        this.reason = new ArrayList<CodeableReference>();
4919      this.reason.add(t);
4920      return this;
4921    }
4922
4923    /**
4924     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
4925     */
4926    public CodeableReference getReasonFirstRep() { 
4927      if (getReason().isEmpty()) {
4928        addReason();
4929      }
4930      return getReason().get(0);
4931    }
4932
4933    /**
4934     * @return {@link #goal} (Goals that are intended to be achieved by following the requests in this RequestOrchestration.)
4935     */
4936    public List<Reference> getGoal() { 
4937      if (this.goal == null)
4938        this.goal = new ArrayList<Reference>();
4939      return this.goal;
4940    }
4941
4942    /**
4943     * @return Returns a reference to <code>this</code> for easy method chaining
4944     */
4945    public RequestOrchestration setGoal(List<Reference> theGoal) { 
4946      this.goal = theGoal;
4947      return this;
4948    }
4949
4950    public boolean hasGoal() { 
4951      if (this.goal == null)
4952        return false;
4953      for (Reference item : this.goal)
4954        if (!item.isEmpty())
4955          return true;
4956      return false;
4957    }
4958
4959    public Reference addGoal() { //3
4960      Reference t = new Reference();
4961      if (this.goal == null)
4962        this.goal = new ArrayList<Reference>();
4963      this.goal.add(t);
4964      return t;
4965    }
4966
4967    public RequestOrchestration addGoal(Reference t) { //3
4968      if (t == null)
4969        return this;
4970      if (this.goal == null)
4971        this.goal = new ArrayList<Reference>();
4972      this.goal.add(t);
4973      return this;
4974    }
4975
4976    /**
4977     * @return The first repetition of repeating field {@link #goal}, creating it if it does not already exist {3}
4978     */
4979    public Reference getGoalFirstRep() { 
4980      if (getGoal().isEmpty()) {
4981        addGoal();
4982      }
4983      return getGoal().get(0);
4984    }
4985
4986    /**
4987     * @return {@link #note} (Provides a mechanism to communicate additional information about the response.)
4988     */
4989    public List<Annotation> getNote() { 
4990      if (this.note == null)
4991        this.note = new ArrayList<Annotation>();
4992      return this.note;
4993    }
4994
4995    /**
4996     * @return Returns a reference to <code>this</code> for easy method chaining
4997     */
4998    public RequestOrchestration setNote(List<Annotation> theNote) { 
4999      this.note = theNote;
5000      return this;
5001    }
5002
5003    public boolean hasNote() { 
5004      if (this.note == null)
5005        return false;
5006      for (Annotation item : this.note)
5007        if (!item.isEmpty())
5008          return true;
5009      return false;
5010    }
5011
5012    public Annotation addNote() { //3
5013      Annotation t = new Annotation();
5014      if (this.note == null)
5015        this.note = new ArrayList<Annotation>();
5016      this.note.add(t);
5017      return t;
5018    }
5019
5020    public RequestOrchestration addNote(Annotation t) { //3
5021      if (t == null)
5022        return this;
5023      if (this.note == null)
5024        this.note = new ArrayList<Annotation>();
5025      this.note.add(t);
5026      return this;
5027    }
5028
5029    /**
5030     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
5031     */
5032    public Annotation getNoteFirstRep() { 
5033      if (getNote().isEmpty()) {
5034        addNote();
5035      }
5036      return getNote().get(0);
5037    }
5038
5039    /**
5040     * @return {@link #action} (The actions, if any, produced by the evaluation of the artifact.)
5041     */
5042    public List<RequestOrchestrationActionComponent> getAction() { 
5043      if (this.action == null)
5044        this.action = new ArrayList<RequestOrchestrationActionComponent>();
5045      return this.action;
5046    }
5047
5048    /**
5049     * @return Returns a reference to <code>this</code> for easy method chaining
5050     */
5051    public RequestOrchestration setAction(List<RequestOrchestrationActionComponent> theAction) { 
5052      this.action = theAction;
5053      return this;
5054    }
5055
5056    public boolean hasAction() { 
5057      if (this.action == null)
5058        return false;
5059      for (RequestOrchestrationActionComponent item : this.action)
5060        if (!item.isEmpty())
5061          return true;
5062      return false;
5063    }
5064
5065    public RequestOrchestrationActionComponent addAction() { //3
5066      RequestOrchestrationActionComponent t = new RequestOrchestrationActionComponent();
5067      if (this.action == null)
5068        this.action = new ArrayList<RequestOrchestrationActionComponent>();
5069      this.action.add(t);
5070      return t;
5071    }
5072
5073    public RequestOrchestration addAction(RequestOrchestrationActionComponent t) { //3
5074      if (t == null)
5075        return this;
5076      if (this.action == null)
5077        this.action = new ArrayList<RequestOrchestrationActionComponent>();
5078      this.action.add(t);
5079      return this;
5080    }
5081
5082    /**
5083     * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
5084     */
5085    public RequestOrchestrationActionComponent getActionFirstRep() { 
5086      if (getAction().isEmpty()) {
5087        addAction();
5088      }
5089      return getAction().get(0);
5090    }
5091
5092      protected void listChildren(List<Property> children) {
5093        super.listChildren(children);
5094        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));
5095        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));
5096        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));
5097        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));
5098        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));
5099        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));
5100        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));
5101        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));
5102        children.add(new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority));
5103        children.add(new Property("code", "CodeableConcept", "A code that identifies what the overall request orchestration is.", 0, 1, code));
5104        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));
5105        children.add(new Property("encounter", "Reference(Encounter)", "Describes the context of the request orchestration, if any.", 0, 1, encounter));
5106        children.add(new Property("authoredOn", "dateTime", "Indicates when the request orchestration was created.", 0, 1, authoredOn));
5107        children.add(new Property("author", "Reference(Device|Practitioner|PractitionerRole)", "Provides a reference to the author of the request orchestration.", 0, 1, author));
5108        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));
5109        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));
5110        children.add(new Property("note", "Annotation", "Provides a mechanism to communicate additional information about the response.", 0, java.lang.Integer.MAX_VALUE, note));
5111        children.add(new Property("action", "", "The actions, if any, produced by the evaluation of the artifact.", 0, java.lang.Integer.MAX_VALUE, action));
5112      }
5113
5114      @Override
5115      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5116        switch (_hash) {
5117        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);
5118        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);
5119        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);
5120        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);
5121        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);
5122        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);
5123        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);
5124        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);
5125        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority);
5126        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A code that identifies what the overall request orchestration is.", 0, 1, code);
5127        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);
5128        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "Describes the context of the request orchestration, if any.", 0, 1, encounter);
5129        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "Indicates when the request orchestration was created.", 0, 1, authoredOn);
5130        case -1406328437: /*author*/  return new Property("author", "Reference(Device|Practitioner|PractitionerRole)", "Provides a reference to the author of the request orchestration.", 0, 1, author);
5131        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);
5132        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);
5133        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);
5134        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);
5135        default: return super.getNamedProperty(_hash, _name, _checkValid);
5136        }
5137
5138      }
5139
5140      @Override
5141      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5142        switch (hash) {
5143        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
5144        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
5145        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
5146        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
5147        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // Reference
5148        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
5149        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
5150        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
5151        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
5152        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
5153        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
5154        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
5155        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
5156        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
5157        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
5158        case 3178259: /*goal*/ return this.goal == null ? new Base[0] : this.goal.toArray(new Base[this.goal.size()]); // Reference
5159        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
5160        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // RequestOrchestrationActionComponent
5161        default: return super.getProperty(hash, name, checkValid);
5162        }
5163
5164      }
5165
5166      @Override
5167      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5168        switch (hash) {
5169        case -1618432855: // identifier
5170          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
5171          return value;
5172        case 8911915: // instantiatesCanonical
5173          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
5174          return value;
5175        case -1926393373: // instantiatesUri
5176          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
5177          return value;
5178        case -332612366: // basedOn
5179          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
5180          return value;
5181        case -430332865: // replaces
5182          this.getReplaces().add(TypeConvertor.castToReference(value)); // Reference
5183          return value;
5184        case -445338488: // groupIdentifier
5185          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5186          return value;
5187        case -892481550: // status
5188          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5189          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5190          return value;
5191        case -1183762788: // intent
5192          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5193          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5194          return value;
5195        case -1165461084: // priority
5196          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5197          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5198          return value;
5199        case 3059181: // code
5200          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5201          return value;
5202        case -1867885268: // subject
5203          this.subject = TypeConvertor.castToReference(value); // Reference
5204          return value;
5205        case 1524132147: // encounter
5206          this.encounter = TypeConvertor.castToReference(value); // Reference
5207          return value;
5208        case -1500852503: // authoredOn
5209          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
5210          return value;
5211        case -1406328437: // author
5212          this.author = TypeConvertor.castToReference(value); // Reference
5213          return value;
5214        case -934964668: // reason
5215          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
5216          return value;
5217        case 3178259: // goal
5218          this.getGoal().add(TypeConvertor.castToReference(value)); // Reference
5219          return value;
5220        case 3387378: // note
5221          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
5222          return value;
5223        case -1422950858: // action
5224          this.getAction().add((RequestOrchestrationActionComponent) value); // RequestOrchestrationActionComponent
5225          return value;
5226        default: return super.setProperty(hash, name, value);
5227        }
5228
5229      }
5230
5231      @Override
5232      public Base setProperty(String name, Base value) throws FHIRException {
5233        if (name.equals("identifier")) {
5234          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
5235        } else if (name.equals("instantiatesCanonical")) {
5236          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
5237        } else if (name.equals("instantiatesUri")) {
5238          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
5239        } else if (name.equals("basedOn")) {
5240          this.getBasedOn().add(TypeConvertor.castToReference(value));
5241        } else if (name.equals("replaces")) {
5242          this.getReplaces().add(TypeConvertor.castToReference(value));
5243        } else if (name.equals("groupIdentifier")) {
5244          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5245        } else if (name.equals("status")) {
5246          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5247          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5248        } else if (name.equals("intent")) {
5249          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5250          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5251        } else if (name.equals("priority")) {
5252          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5253          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5254        } else if (name.equals("code")) {
5255          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5256        } else if (name.equals("subject")) {
5257          this.subject = TypeConvertor.castToReference(value); // Reference
5258        } else if (name.equals("encounter")) {
5259          this.encounter = TypeConvertor.castToReference(value); // Reference
5260        } else if (name.equals("authoredOn")) {
5261          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
5262        } else if (name.equals("author")) {
5263          this.author = TypeConvertor.castToReference(value); // Reference
5264        } else if (name.equals("reason")) {
5265          this.getReason().add(TypeConvertor.castToCodeableReference(value));
5266        } else if (name.equals("goal")) {
5267          this.getGoal().add(TypeConvertor.castToReference(value));
5268        } else if (name.equals("note")) {
5269          this.getNote().add(TypeConvertor.castToAnnotation(value));
5270        } else if (name.equals("action")) {
5271          this.getAction().add((RequestOrchestrationActionComponent) value);
5272        } else
5273          return super.setProperty(name, value);
5274        return value;
5275      }
5276
5277      @Override
5278      public Base makeProperty(int hash, String name) throws FHIRException {
5279        switch (hash) {
5280        case -1618432855:  return addIdentifier(); 
5281        case 8911915:  return addInstantiatesCanonicalElement();
5282        case -1926393373:  return addInstantiatesUriElement();
5283        case -332612366:  return addBasedOn(); 
5284        case -430332865:  return addReplaces(); 
5285        case -445338488:  return getGroupIdentifier();
5286        case -892481550:  return getStatusElement();
5287        case -1183762788:  return getIntentElement();
5288        case -1165461084:  return getPriorityElement();
5289        case 3059181:  return getCode();
5290        case -1867885268:  return getSubject();
5291        case 1524132147:  return getEncounter();
5292        case -1500852503:  return getAuthoredOnElement();
5293        case -1406328437:  return getAuthor();
5294        case -934964668:  return addReason(); 
5295        case 3178259:  return addGoal(); 
5296        case 3387378:  return addNote(); 
5297        case -1422950858:  return addAction(); 
5298        default: return super.makeProperty(hash, name);
5299        }
5300
5301      }
5302
5303      @Override
5304      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5305        switch (hash) {
5306        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
5307        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
5308        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
5309        case -332612366: /*basedOn*/ return new String[] {"Reference"};
5310        case -430332865: /*replaces*/ return new String[] {"Reference"};
5311        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
5312        case -892481550: /*status*/ return new String[] {"code"};
5313        case -1183762788: /*intent*/ return new String[] {"code"};
5314        case -1165461084: /*priority*/ return new String[] {"code"};
5315        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
5316        case -1867885268: /*subject*/ return new String[] {"Reference"};
5317        case 1524132147: /*encounter*/ return new String[] {"Reference"};
5318        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
5319        case -1406328437: /*author*/ return new String[] {"Reference"};
5320        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
5321        case 3178259: /*goal*/ return new String[] {"Reference"};
5322        case 3387378: /*note*/ return new String[] {"Annotation"};
5323        case -1422950858: /*action*/ return new String[] {};
5324        default: return super.getTypesForProperty(hash, name);
5325        }
5326
5327      }
5328
5329      @Override
5330      public Base addChild(String name) throws FHIRException {
5331        if (name.equals("identifier")) {
5332          return addIdentifier();
5333        }
5334        else if (name.equals("instantiatesCanonical")) {
5335          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.instantiatesCanonical");
5336        }
5337        else if (name.equals("instantiatesUri")) {
5338          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.instantiatesUri");
5339        }
5340        else if (name.equals("basedOn")) {
5341          return addBasedOn();
5342        }
5343        else if (name.equals("replaces")) {
5344          return addReplaces();
5345        }
5346        else if (name.equals("groupIdentifier")) {
5347          this.groupIdentifier = new Identifier();
5348          return this.groupIdentifier;
5349        }
5350        else if (name.equals("status")) {
5351          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.status");
5352        }
5353        else if (name.equals("intent")) {
5354          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.intent");
5355        }
5356        else if (name.equals("priority")) {
5357          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.priority");
5358        }
5359        else if (name.equals("code")) {
5360          this.code = new CodeableConcept();
5361          return this.code;
5362        }
5363        else if (name.equals("subject")) {
5364          this.subject = new Reference();
5365          return this.subject;
5366        }
5367        else if (name.equals("encounter")) {
5368          this.encounter = new Reference();
5369          return this.encounter;
5370        }
5371        else if (name.equals("authoredOn")) {
5372          throw new FHIRException("Cannot call addChild on a singleton property RequestOrchestration.authoredOn");
5373        }
5374        else if (name.equals("author")) {
5375          this.author = new Reference();
5376          return this.author;
5377        }
5378        else if (name.equals("reason")) {
5379          return addReason();
5380        }
5381        else if (name.equals("goal")) {
5382          return addGoal();
5383        }
5384        else if (name.equals("note")) {
5385          return addNote();
5386        }
5387        else if (name.equals("action")) {
5388          return addAction();
5389        }
5390        else
5391          return super.addChild(name);
5392      }
5393
5394  public String fhirType() {
5395    return "RequestOrchestration";
5396
5397  }
5398
5399      public RequestOrchestration copy() {
5400        RequestOrchestration dst = new RequestOrchestration();
5401        copyValues(dst);
5402        return dst;
5403      }
5404
5405      public void copyValues(RequestOrchestration dst) {
5406        super.copyValues(dst);
5407        if (identifier != null) {
5408          dst.identifier = new ArrayList<Identifier>();
5409          for (Identifier i : identifier)
5410            dst.identifier.add(i.copy());
5411        };
5412        if (instantiatesCanonical != null) {
5413          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
5414          for (CanonicalType i : instantiatesCanonical)
5415            dst.instantiatesCanonical.add(i.copy());
5416        };
5417        if (instantiatesUri != null) {
5418          dst.instantiatesUri = new ArrayList<UriType>();
5419          for (UriType i : instantiatesUri)
5420            dst.instantiatesUri.add(i.copy());
5421        };
5422        if (basedOn != null) {
5423          dst.basedOn = new ArrayList<Reference>();
5424          for (Reference i : basedOn)
5425            dst.basedOn.add(i.copy());
5426        };
5427        if (replaces != null) {
5428          dst.replaces = new ArrayList<Reference>();
5429          for (Reference i : replaces)
5430            dst.replaces.add(i.copy());
5431        };
5432        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
5433        dst.status = status == null ? null : status.copy();
5434        dst.intent = intent == null ? null : intent.copy();
5435        dst.priority = priority == null ? null : priority.copy();
5436        dst.code = code == null ? null : code.copy();
5437        dst.subject = subject == null ? null : subject.copy();
5438        dst.encounter = encounter == null ? null : encounter.copy();
5439        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
5440        dst.author = author == null ? null : author.copy();
5441        if (reason != null) {
5442          dst.reason = new ArrayList<CodeableReference>();
5443          for (CodeableReference i : reason)
5444            dst.reason.add(i.copy());
5445        };
5446        if (goal != null) {
5447          dst.goal = new ArrayList<Reference>();
5448          for (Reference i : goal)
5449            dst.goal.add(i.copy());
5450        };
5451        if (note != null) {
5452          dst.note = new ArrayList<Annotation>();
5453          for (Annotation i : note)
5454            dst.note.add(i.copy());
5455        };
5456        if (action != null) {
5457          dst.action = new ArrayList<RequestOrchestrationActionComponent>();
5458          for (RequestOrchestrationActionComponent i : action)
5459            dst.action.add(i.copy());
5460        };
5461      }
5462
5463      protected RequestOrchestration typedCopy() {
5464        return copy();
5465      }
5466
5467      @Override
5468      public boolean equalsDeep(Base other_) {
5469        if (!super.equalsDeep(other_))
5470          return false;
5471        if (!(other_ instanceof RequestOrchestration))
5472          return false;
5473        RequestOrchestration o = (RequestOrchestration) other_;
5474        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
5475           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
5476           && compareDeep(replaces, o.replaces, true) && compareDeep(groupIdentifier, o.groupIdentifier, true)
5477           && compareDeep(status, o.status, true) && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
5478           && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true)
5479           && compareDeep(authoredOn, o.authoredOn, true) && compareDeep(author, o.author, true) && compareDeep(reason, o.reason, true)
5480           && compareDeep(goal, o.goal, true) && compareDeep(note, o.note, true) && compareDeep(action, o.action, true)
5481          ;
5482      }
5483
5484      @Override
5485      public boolean equalsShallow(Base other_) {
5486        if (!super.equalsShallow(other_))
5487          return false;
5488        if (!(other_ instanceof RequestOrchestration))
5489          return false;
5490        RequestOrchestration o = (RequestOrchestration) other_;
5491        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
5492           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
5493           && compareValues(authoredOn, o.authoredOn, true);
5494      }
5495
5496      public boolean isEmpty() {
5497        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
5498          , instantiatesUri, basedOn, replaces, groupIdentifier, status, intent, priority
5499          , code, subject, encounter, authoredOn, author, reason, goal, note, action
5500          );
5501      }
5502
5503  @Override
5504  public ResourceType getResourceType() {
5505    return ResourceType.RequestOrchestration;
5506   }
5507
5508 /**
5509   * Search parameter: <b>author</b>
5510   * <p>
5511   * Description: <b>The author of the request orchestration</b><br>
5512   * Type: <b>reference</b><br>
5513   * Path: <b>RequestOrchestration.author</b><br>
5514   * </p>
5515   */
5516  @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 } )
5517  public static final String SP_AUTHOR = "author";
5518 /**
5519   * <b>Fluent Client</b> search parameter constant for <b>author</b>
5520   * <p>
5521   * Description: <b>The author of the request orchestration</b><br>
5522   * Type: <b>reference</b><br>
5523   * Path: <b>RequestOrchestration.author</b><br>
5524   * </p>
5525   */
5526  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
5527
5528/**
5529   * Constant for fluent queries to be used to add include statements. Specifies
5530   * the path value of "<b>RequestOrchestration:author</b>".
5531   */
5532  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("RequestOrchestration:author").toLocked();
5533
5534 /**
5535   * Search parameter: <b>authored</b>
5536   * <p>
5537   * Description: <b>The date the request orchestration was authored</b><br>
5538   * Type: <b>date</b><br>
5539   * Path: <b>RequestOrchestration.authoredOn</b><br>
5540   * </p>
5541   */
5542  @SearchParamDefinition(name="authored", path="RequestOrchestration.authoredOn", description="The date the request orchestration was authored", type="date" )
5543  public static final String SP_AUTHORED = "authored";
5544 /**
5545   * <b>Fluent Client</b> search parameter constant for <b>authored</b>
5546   * <p>
5547   * Description: <b>The date the request orchestration was authored</b><br>
5548   * Type: <b>date</b><br>
5549   * Path: <b>RequestOrchestration.authoredOn</b><br>
5550   * </p>
5551   */
5552  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED);
5553
5554 /**
5555   * Search parameter: <b>based-on</b>
5556   * <p>
5557   * Description: <b>What this request fullfills.</b><br>
5558   * Type: <b>reference</b><br>
5559   * Path: <b>RequestOrchestration.basedOn</b><br>
5560   * </p>
5561   */
5562  @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 } )
5563  public static final String SP_BASED_ON = "based-on";
5564 /**
5565   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
5566   * <p>
5567   * Description: <b>What this request fullfills.</b><br>
5568   * Type: <b>reference</b><br>
5569   * Path: <b>RequestOrchestration.basedOn</b><br>
5570   * </p>
5571   */
5572  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
5573
5574/**
5575   * Constant for fluent queries to be used to add include statements. Specifies
5576   * the path value of "<b>RequestOrchestration:based-on</b>".
5577   */
5578  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("RequestOrchestration:based-on").toLocked();
5579
5580 /**
5581   * Search parameter: <b>group-identifier</b>
5582   * <p>
5583   * Description: <b>The group identifier for the request orchestration</b><br>
5584   * Type: <b>token</b><br>
5585   * Path: <b>RequestOrchestration.groupIdentifier</b><br>
5586   * </p>
5587   */
5588  @SearchParamDefinition(name="group-identifier", path="RequestOrchestration.groupIdentifier", description="The group identifier for the request orchestration", type="token" )
5589  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
5590 /**
5591   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
5592   * <p>
5593   * Description: <b>The group identifier for the request orchestration</b><br>
5594   * Type: <b>token</b><br>
5595   * Path: <b>RequestOrchestration.groupIdentifier</b><br>
5596   * </p>
5597   */
5598  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
5599
5600 /**
5601   * Search parameter: <b>instantiates-canonical</b>
5602   * <p>
5603   * Description: <b>The FHIR-based definition from which the request orchestration is realized</b><br>
5604   * Type: <b>reference</b><br>
5605   * Path: <b>RequestOrchestration.instantiatesCanonical</b><br>
5606   * </p>
5607   */
5608  @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 } )
5609  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
5610 /**
5611   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
5612   * <p>
5613   * Description: <b>The FHIR-based definition from which the request orchestration is realized</b><br>
5614   * Type: <b>reference</b><br>
5615   * Path: <b>RequestOrchestration.instantiatesCanonical</b><br>
5616   * </p>
5617   */
5618  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
5619
5620/**
5621   * Constant for fluent queries to be used to add include statements. Specifies
5622   * the path value of "<b>RequestOrchestration:instantiates-canonical</b>".
5623   */
5624  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("RequestOrchestration:instantiates-canonical").toLocked();
5625
5626 /**
5627   * Search parameter: <b>instantiates-uri</b>
5628   * <p>
5629   * Description: <b>The external definition from which the request orchestration is realized</b><br>
5630   * Type: <b>uri</b><br>
5631   * Path: <b>RequestOrchestration.instantiatesUri</b><br>
5632   * </p>
5633   */
5634  @SearchParamDefinition(name="instantiates-uri", path="RequestOrchestration.instantiatesUri", description="The external definition from which the request orchestration is realized", type="uri" )
5635  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
5636 /**
5637   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
5638   * <p>
5639   * Description: <b>The external definition from which the request orchestration is realized</b><br>
5640   * Type: <b>uri</b><br>
5641   * Path: <b>RequestOrchestration.instantiatesUri</b><br>
5642   * </p>
5643   */
5644  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
5645
5646 /**
5647   * Search parameter: <b>intent</b>
5648   * <p>
5649   * Description: <b>The intent of the request orchestration</b><br>
5650   * Type: <b>token</b><br>
5651   * Path: <b>RequestOrchestration.intent</b><br>
5652   * </p>
5653   */
5654  @SearchParamDefinition(name="intent", path="RequestOrchestration.intent", description="The intent of the request orchestration", type="token" )
5655  public static final String SP_INTENT = "intent";
5656 /**
5657   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
5658   * <p>
5659   * Description: <b>The intent of the request orchestration</b><br>
5660   * Type: <b>token</b><br>
5661   * Path: <b>RequestOrchestration.intent</b><br>
5662   * </p>
5663   */
5664  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
5665
5666 /**
5667   * Search parameter: <b>participant</b>
5668   * <p>
5669   * Description: <b>The participant in the requests in the orchestration</b><br>
5670   * Type: <b>reference</b><br>
5671   * Path: <b>RequestOrchestration.action.participant.actor.ofType(Reference) | RequestOrchestration.action.participant.actor.ofType(canonical)</b><br>
5672   * </p>
5673   */
5674  @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 } )
5675  public static final String SP_PARTICIPANT = "participant";
5676 /**
5677   * <b>Fluent Client</b> search parameter constant for <b>participant</b>
5678   * <p>
5679   * Description: <b>The participant in the requests in the orchestration</b><br>
5680   * Type: <b>reference</b><br>
5681   * Path: <b>RequestOrchestration.action.participant.actor.ofType(Reference) | RequestOrchestration.action.participant.actor.ofType(canonical)</b><br>
5682   * </p>
5683   */
5684  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTICIPANT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARTICIPANT);
5685
5686/**
5687   * Constant for fluent queries to be used to add include statements. Specifies
5688   * the path value of "<b>RequestOrchestration:participant</b>".
5689   */
5690  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTICIPANT = new ca.uhn.fhir.model.api.Include("RequestOrchestration:participant").toLocked();
5691
5692 /**
5693   * Search parameter: <b>priority</b>
5694   * <p>
5695   * Description: <b>The priority of the request orchestration</b><br>
5696   * Type: <b>token</b><br>
5697   * Path: <b>RequestOrchestration.priority</b><br>
5698   * </p>
5699   */
5700  @SearchParamDefinition(name="priority", path="RequestOrchestration.priority", description="The priority of the request orchestration", type="token" )
5701  public static final String SP_PRIORITY = "priority";
5702 /**
5703   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
5704   * <p>
5705   * Description: <b>The priority of the request orchestration</b><br>
5706   * Type: <b>token</b><br>
5707   * Path: <b>RequestOrchestration.priority</b><br>
5708   * </p>
5709   */
5710  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
5711
5712 /**
5713   * Search parameter: <b>status</b>
5714   * <p>
5715   * Description: <b>The status of the request orchestration</b><br>
5716   * Type: <b>token</b><br>
5717   * Path: <b>RequestOrchestration.status</b><br>
5718   * </p>
5719   */
5720  @SearchParamDefinition(name="status", path="RequestOrchestration.status", description="The status of the request orchestration", type="token" )
5721  public static final String SP_STATUS = "status";
5722 /**
5723   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5724   * <p>
5725   * Description: <b>The status of the request orchestration</b><br>
5726   * Type: <b>token</b><br>
5727   * Path: <b>RequestOrchestration.status</b><br>
5728   * </p>
5729   */
5730  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5731
5732 /**
5733   * Search parameter: <b>subject</b>
5734   * <p>
5735   * Description: <b>The subject that the request orchestration is about</b><br>
5736   * Type: <b>reference</b><br>
5737   * Path: <b>RequestOrchestration.subject</b><br>
5738   * </p>
5739   */
5740  @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 } )
5741  public static final String SP_SUBJECT = "subject";
5742 /**
5743   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
5744   * <p>
5745   * Description: <b>The subject that the request orchestration is about</b><br>
5746   * Type: <b>reference</b><br>
5747   * Path: <b>RequestOrchestration.subject</b><br>
5748   * </p>
5749   */
5750  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
5751
5752/**
5753   * Constant for fluent queries to be used to add include statements. Specifies
5754   * the path value of "<b>RequestOrchestration:subject</b>".
5755   */
5756  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("RequestOrchestration:subject").toLocked();
5757
5758 /**
5759   * Search parameter: <b>code</b>
5760   * <p>
5761   * Description: <b>Multiple Resources: 
5762
5763* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
5764* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
5765* [AuditEvent](auditevent.html): More specific code for the event
5766* [Basic](basic.html): Kind of Resource
5767* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
5768* [Condition](condition.html): Code for the condition
5769* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
5770* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
5771* [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
5772* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
5773* [ImagingSelection](imagingselection.html): The imaging selection status
5774* [List](list.html): What the purpose of this list is
5775* [Medication](medication.html): Returns medications for a specific code
5776* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
5777* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
5778* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
5779* [MedicationStatement](medicationstatement.html): Return statements of this medication code
5780* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
5781* [Observation](observation.html): The code of the observation type
5782* [Procedure](procedure.html): A code to identify a  procedure
5783* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
5784* [Task](task.html): Search by task code
5785</b><br>
5786   * Type: <b>token</b><br>
5787   * 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>
5788   * </p>
5789   */
5790  @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" )
5791  public static final String SP_CODE = "code";
5792 /**
5793   * <b>Fluent Client</b> search parameter constant for <b>code</b>
5794   * <p>
5795   * Description: <b>Multiple Resources: 
5796
5797* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
5798* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
5799* [AuditEvent](auditevent.html): More specific code for the event
5800* [Basic](basic.html): Kind of Resource
5801* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
5802* [Condition](condition.html): Code for the condition
5803* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
5804* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
5805* [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
5806* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
5807* [ImagingSelection](imagingselection.html): The imaging selection status
5808* [List](list.html): What the purpose of this list is
5809* [Medication](medication.html): Returns medications for a specific code
5810* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
5811* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
5812* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
5813* [MedicationStatement](medicationstatement.html): Return statements of this medication code
5814* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
5815* [Observation](observation.html): The code of the observation type
5816* [Procedure](procedure.html): A code to identify a  procedure
5817* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
5818* [Task](task.html): Search by task code
5819</b><br>
5820   * Type: <b>token</b><br>
5821   * 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>
5822   * </p>
5823   */
5824  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
5825
5826 /**
5827   * Search parameter: <b>encounter</b>
5828   * <p>
5829   * Description: <b>Multiple Resources: 
5830
5831* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
5832* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
5833* [ChargeItem](chargeitem.html): Encounter associated with event
5834* [Claim](claim.html): Encounters associated with a billed line item
5835* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
5836* [Communication](communication.html): The Encounter during which this Communication was created
5837* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
5838* [Composition](composition.html): Context of the Composition
5839* [Condition](condition.html): The Encounter during which this Condition was created
5840* [DeviceRequest](devicerequest.html): Encounter during which request was created
5841* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
5842* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
5843* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
5844* [Flag](flag.html): Alert relevant during encounter
5845* [ImagingStudy](imagingstudy.html): The context of the study
5846* [List](list.html): Context in which list created
5847* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
5848* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
5849* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
5850* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
5851* [Observation](observation.html): Encounter related to the observation
5852* [Procedure](procedure.html): The Encounter during which this Procedure was created
5853* [Provenance](provenance.html): Encounter related to the Provenance
5854* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
5855* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
5856* [RiskAssessment](riskassessment.html): Where was assessment performed?
5857* [ServiceRequest](servicerequest.html): An encounter in which this request is made
5858* [Task](task.html): Search by encounter
5859* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
5860</b><br>
5861   * Type: <b>reference</b><br>
5862   * 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>
5863   * </p>
5864   */
5865  @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 } )
5866  public static final String SP_ENCOUNTER = "encounter";
5867 /**
5868   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
5869   * <p>
5870   * Description: <b>Multiple Resources: 
5871
5872* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
5873* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
5874* [ChargeItem](chargeitem.html): Encounter associated with event
5875* [Claim](claim.html): Encounters associated with a billed line item
5876* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
5877* [Communication](communication.html): The Encounter during which this Communication was created
5878* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
5879* [Composition](composition.html): Context of the Composition
5880* [Condition](condition.html): The Encounter during which this Condition was created
5881* [DeviceRequest](devicerequest.html): Encounter during which request was created
5882* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
5883* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
5884* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
5885* [Flag](flag.html): Alert relevant during encounter
5886* [ImagingStudy](imagingstudy.html): The context of the study
5887* [List](list.html): Context in which list created
5888* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
5889* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
5890* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
5891* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
5892* [Observation](observation.html): Encounter related to the observation
5893* [Procedure](procedure.html): The Encounter during which this Procedure was created
5894* [Provenance](provenance.html): Encounter related to the Provenance
5895* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
5896* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
5897* [RiskAssessment](riskassessment.html): Where was assessment performed?
5898* [ServiceRequest](servicerequest.html): An encounter in which this request is made
5899* [Task](task.html): Search by encounter
5900* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
5901</b><br>
5902   * Type: <b>reference</b><br>
5903   * 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>
5904   * </p>
5905   */
5906  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
5907
5908/**
5909   * Constant for fluent queries to be used to add include statements. Specifies
5910   * the path value of "<b>RequestOrchestration:encounter</b>".
5911   */
5912  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("RequestOrchestration:encounter").toLocked();
5913
5914 /**
5915   * Search parameter: <b>identifier</b>
5916   * <p>
5917   * Description: <b>Multiple Resources: 
5918
5919* [Account](account.html): Account number
5920* [AdverseEvent](adverseevent.html): Business identifier for the event
5921* [AllergyIntolerance](allergyintolerance.html): External ids for this item
5922* [Appointment](appointment.html): An Identifier of the Appointment
5923* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
5924* [Basic](basic.html): Business identifier
5925* [BodyStructure](bodystructure.html): Bodystructure identifier
5926* [CarePlan](careplan.html): External Ids for this plan
5927* [CareTeam](careteam.html): External Ids for this team
5928* [ChargeItem](chargeitem.html): Business Identifier for item
5929* [Claim](claim.html): The primary identifier of the financial resource
5930* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
5931* [ClinicalImpression](clinicalimpression.html): Business identifier
5932* [Communication](communication.html): Unique identifier
5933* [CommunicationRequest](communicationrequest.html): Unique identifier
5934* [Composition](composition.html): Version-independent identifier for the Composition
5935* [Condition](condition.html): A unique identifier of the condition record
5936* [Consent](consent.html): Identifier for this record (external references)
5937* [Contract](contract.html): The identity of the contract
5938* [Coverage](coverage.html): The primary identifier of the insured and the coverage
5939* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
5940* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
5941* [DetectedIssue](detectedissue.html): Unique id for the detected issue
5942* [DeviceRequest](devicerequest.html): Business identifier for request/order
5943* [DeviceUsage](deviceusage.html): Search by identifier
5944* [DiagnosticReport](diagnosticreport.html): An identifier for the report
5945* [DocumentReference](documentreference.html): Identifier of the attachment binary
5946* [Encounter](encounter.html): Identifier(s) by which this encounter is known
5947* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
5948* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
5949* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
5950* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
5951* [Flag](flag.html): Business identifier
5952* [Goal](goal.html): External Ids for this goal
5953* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
5954* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
5955* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
5956* [Immunization](immunization.html): Business identifier
5957* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
5958* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
5959* [Invoice](invoice.html): Business Identifier for item
5960* [List](list.html): Business identifier
5961* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
5962* [Medication](medication.html): Returns medications with this external identifier
5963* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
5964* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
5965* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
5966* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
5967* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
5968* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
5969* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
5970* [Observation](observation.html): The unique id for a particular observation
5971* [Person](person.html): A person Identifier
5972* [Procedure](procedure.html): A unique identifier for a procedure
5973* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
5974* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
5975* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
5976* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
5977* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
5978* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
5979* [Specimen](specimen.html): The unique identifier associated with the specimen
5980* [SupplyDelivery](supplydelivery.html): External identifier
5981* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
5982* [Task](task.html): Search for a task instance by its business identifier
5983* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
5984</b><br>
5985   * Type: <b>token</b><br>
5986   * 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>
5987   * </p>
5988   */
5989  @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" )
5990  public static final String SP_IDENTIFIER = "identifier";
5991 /**
5992   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5993   * <p>
5994   * Description: <b>Multiple Resources: 
5995
5996* [Account](account.html): Account number
5997* [AdverseEvent](adverseevent.html): Business identifier for the event
5998* [AllergyIntolerance](allergyintolerance.html): External ids for this item
5999* [Appointment](appointment.html): An Identifier of the Appointment
6000* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
6001* [Basic](basic.html): Business identifier
6002* [BodyStructure](bodystructure.html): Bodystructure identifier
6003* [CarePlan](careplan.html): External Ids for this plan
6004* [CareTeam](careteam.html): External Ids for this team
6005* [ChargeItem](chargeitem.html): Business Identifier for item
6006* [Claim](claim.html): The primary identifier of the financial resource
6007* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
6008* [ClinicalImpression](clinicalimpression.html): Business identifier
6009* [Communication](communication.html): Unique identifier
6010* [CommunicationRequest](communicationrequest.html): Unique identifier
6011* [Composition](composition.html): Version-independent identifier for the Composition
6012* [Condition](condition.html): A unique identifier of the condition record
6013* [Consent](consent.html): Identifier for this record (external references)
6014* [Contract](contract.html): The identity of the contract
6015* [Coverage](coverage.html): The primary identifier of the insured and the coverage
6016* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
6017* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
6018* [DetectedIssue](detectedissue.html): Unique id for the detected issue
6019* [DeviceRequest](devicerequest.html): Business identifier for request/order
6020* [DeviceUsage](deviceusage.html): Search by identifier
6021* [DiagnosticReport](diagnosticreport.html): An identifier for the report
6022* [DocumentReference](documentreference.html): Identifier of the attachment binary
6023* [Encounter](encounter.html): Identifier(s) by which this encounter is known
6024* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
6025* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
6026* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
6027* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
6028* [Flag](flag.html): Business identifier
6029* [Goal](goal.html): External Ids for this goal
6030* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
6031* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
6032* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
6033* [Immunization](immunization.html): Business identifier
6034* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
6035* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
6036* [Invoice](invoice.html): Business Identifier for item
6037* [List](list.html): Business identifier
6038* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
6039* [Medication](medication.html): Returns medications with this external identifier
6040* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
6041* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
6042* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
6043* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
6044* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
6045* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
6046* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
6047* [Observation](observation.html): The unique id for a particular observation
6048* [Person](person.html): A person Identifier
6049* [Procedure](procedure.html): A unique identifier for a procedure
6050* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
6051* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
6052* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
6053* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
6054* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
6055* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
6056* [Specimen](specimen.html): The unique identifier associated with the specimen
6057* [SupplyDelivery](supplydelivery.html): External identifier
6058* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
6059* [Task](task.html): Search for a task instance by its business identifier
6060* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
6061</b><br>
6062   * Type: <b>token</b><br>
6063   * 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>
6064   * </p>
6065   */
6066  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
6067
6068 /**
6069   * Search parameter: <b>patient</b>
6070   * <p>
6071   * Description: <b>Multiple Resources: 
6072
6073* [Account](account.html): The entity that caused the expenses
6074* [AdverseEvent](adverseevent.html): Subject impacted by event
6075* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
6076* [Appointment](appointment.html): One of the individuals of the appointment is this patient
6077* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
6078* [AuditEvent](auditevent.html): Where the activity involved patient data
6079* [Basic](basic.html): Identifies the focus of this resource
6080* [BodyStructure](bodystructure.html): Who this is about
6081* [CarePlan](careplan.html): Who the care plan is for
6082* [CareTeam](careteam.html): Who care team is for
6083* [ChargeItem](chargeitem.html): Individual service was done for/to
6084* [Claim](claim.html): Patient receiving the products or services
6085* [ClaimResponse](claimresponse.html): The subject of care
6086* [ClinicalImpression](clinicalimpression.html): Patient assessed
6087* [Communication](communication.html): Focus of message
6088* [CommunicationRequest](communicationrequest.html): Focus of message
6089* [Composition](composition.html): Who and/or what the composition is about
6090* [Condition](condition.html): Who has the condition?
6091* [Consent](consent.html): Who the consent applies to
6092* [Contract](contract.html): The identity of the subject of the contract (if a patient)
6093* [Coverage](coverage.html): Retrieve coverages for a patient
6094* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
6095* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
6096* [DetectedIssue](detectedissue.html): Associated patient
6097* [DeviceRequest](devicerequest.html): Individual the service is ordered for
6098* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
6099* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
6100* [DocumentReference](documentreference.html): Who/what is the subject of the document
6101* [Encounter](encounter.html): The patient present at the encounter
6102* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
6103* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
6104* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
6105* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
6106* [Flag](flag.html): The identity of a subject to list flags for
6107* [Goal](goal.html): Who this goal is intended for
6108* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
6109* [ImagingSelection](imagingselection.html): Who the study is about
6110* [ImagingStudy](imagingstudy.html): Who the study is about
6111* [Immunization](immunization.html): The patient for the vaccination record
6112* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
6113* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
6114* [Invoice](invoice.html): Recipient(s) of goods and services
6115* [List](list.html): If all resources have the same subject
6116* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
6117* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
6118* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
6119* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
6120* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
6121* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
6122* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
6123* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
6124* [Observation](observation.html): The subject that the observation is about (if patient)
6125* [Person](person.html): The Person links to this Patient
6126* [Procedure](procedure.html): Search by subject - a patient
6127* [Provenance](provenance.html): Where the activity involved patient data
6128* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
6129* [RelatedPerson](relatedperson.html): The patient this related person is related to
6130* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
6131* [ResearchSubject](researchsubject.html): Who or what is part of study
6132* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
6133* [ServiceRequest](servicerequest.html): Search by subject - a patient
6134* [Specimen](specimen.html): The patient the specimen comes from
6135* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
6136* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
6137* [Task](task.html): Search by patient
6138* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
6139</b><br>
6140   * Type: <b>reference</b><br>
6141   * 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>
6142   * </p>
6143   */
6144  @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 } )
6145  public static final String SP_PATIENT = "patient";
6146 /**
6147   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
6148   * <p>
6149   * Description: <b>Multiple Resources: 
6150
6151* [Account](account.html): The entity that caused the expenses
6152* [AdverseEvent](adverseevent.html): Subject impacted by event
6153* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
6154* [Appointment](appointment.html): One of the individuals of the appointment is this patient
6155* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
6156* [AuditEvent](auditevent.html): Where the activity involved patient data
6157* [Basic](basic.html): Identifies the focus of this resource
6158* [BodyStructure](bodystructure.html): Who this is about
6159* [CarePlan](careplan.html): Who the care plan is for
6160* [CareTeam](careteam.html): Who care team is for
6161* [ChargeItem](chargeitem.html): Individual service was done for/to
6162* [Claim](claim.html): Patient receiving the products or services
6163* [ClaimResponse](claimresponse.html): The subject of care
6164* [ClinicalImpression](clinicalimpression.html): Patient assessed
6165* [Communication](communication.html): Focus of message
6166* [CommunicationRequest](communicationrequest.html): Focus of message
6167* [Composition](composition.html): Who and/or what the composition is about
6168* [Condition](condition.html): Who has the condition?
6169* [Consent](consent.html): Who the consent applies to
6170* [Contract](contract.html): The identity of the subject of the contract (if a patient)
6171* [Coverage](coverage.html): Retrieve coverages for a patient
6172* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
6173* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
6174* [DetectedIssue](detectedissue.html): Associated patient
6175* [DeviceRequest](devicerequest.html): Individual the service is ordered for
6176* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
6177* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
6178* [DocumentReference](documentreference.html): Who/what is the subject of the document
6179* [Encounter](encounter.html): The patient present at the encounter
6180* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
6181* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
6182* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
6183* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
6184* [Flag](flag.html): The identity of a subject to list flags for
6185* [Goal](goal.html): Who this goal is intended for
6186* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
6187* [ImagingSelection](imagingselection.html): Who the study is about
6188* [ImagingStudy](imagingstudy.html): Who the study is about
6189* [Immunization](immunization.html): The patient for the vaccination record
6190* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
6191* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
6192* [Invoice](invoice.html): Recipient(s) of goods and services
6193* [List](list.html): If all resources have the same subject
6194* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
6195* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
6196* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
6197* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
6198* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
6199* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
6200* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
6201* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
6202* [Observation](observation.html): The subject that the observation is about (if patient)
6203* [Person](person.html): The Person links to this Patient
6204* [Procedure](procedure.html): Search by subject - a patient
6205* [Provenance](provenance.html): Where the activity involved patient data
6206* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
6207* [RelatedPerson](relatedperson.html): The patient this related person is related to
6208* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
6209* [ResearchSubject](researchsubject.html): Who or what is part of study
6210* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
6211* [ServiceRequest](servicerequest.html): Search by subject - a patient
6212* [Specimen](specimen.html): The patient the specimen comes from
6213* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
6214* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
6215* [Task](task.html): Search by patient
6216* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
6217</b><br>
6218   * Type: <b>reference</b><br>
6219   * 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>
6220   * </p>
6221   */
6222  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
6223
6224/**
6225   * Constant for fluent queries to be used to add include statements. Specifies
6226   * the path value of "<b>RequestOrchestration:patient</b>".
6227   */
6228  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("RequestOrchestration:patient").toLocked();
6229
6230
6231}
6232