001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 13, 2022 17:53+1100 for FHIR vcurrent
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 = {StringType.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 StringType 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 = {StringType.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 StringType 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 = 984278550L;
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 StringType 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 StringType(); // 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(StringType 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 StringType();
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 StringType 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 StringType(); // 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(StringType 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 StringType();
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 Error("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 Error("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", "string", "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", "string", "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", "string", "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", "string", "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}; // StringType
1699        case -900391049: /*textEquivalent*/ return this.textEquivalent == null ? new Base[0] : new Base[] {this.textEquivalent}; // StringType
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.castToString(value); // StringType
1741          return value;
1742        case -900391049: // textEquivalent
1743          this.textEquivalent = TypeConvertor.castToString(value); // StringType
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.castToString(value); // StringType
1832        } else if (name.equals("textEquivalent")) {
1833          this.textEquivalent = TypeConvertor.castToString(value); // StringType
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[] {"string"};
1933        case -900391049: /*textEquivalent*/ return new String[] {"string"};
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 primitive type RequestOrchestration.action.linkId");
1965        }
1966        else if (name.equals("prefix")) {
1967          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.prefix");
1968        }
1969        else if (name.equals("title")) {
1970          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.title");
1971        }
1972        else if (name.equals("description")) {
1973          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.description");
1974        }
1975        else if (name.equals("textEquivalent")) {
1976          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.textEquivalent");
1977        }
1978        else if (name.equals("priority")) {
1979          throw new FHIRException("Cannot call addChild on a primitive type 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 primitive type RequestOrchestration.action.groupingBehavior");
2039        }
2040        else if (name.equals("selectionBehavior")) {
2041          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.selectionBehavior");
2042        }
2043        else if (name.equals("requiredBehavior")) {
2044          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.requiredBehavior");
2045        }
2046        else if (name.equals("precheckBehavior")) {
2047          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.precheckBehavior");
2048        }
2049        else if (name.equals("cardinalityBehavior")) {
2050          throw new FHIRException("Cannot call addChild on a primitive type 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 primitive type 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 primitive type 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 primitive type 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 primitive type 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 primitive type 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 primitive type 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-start | before | before-end | concurrent-with-start | concurrent | concurrent-with-end | after-start | after | 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         * A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.
3049         */
3050        @Child(name = "offset", type = {Duration.class, Range.class}, order=3, min=0, max=1, modifier=false, summary=false)
3051        @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." )
3052        protected DataType offset;
3053
3054        private static final long serialVersionUID = -462773513L;
3055
3056    /**
3057     * Constructor
3058     */
3059      public RequestOrchestrationActionRelatedActionComponent() {
3060        super();
3061      }
3062
3063    /**
3064     * Constructor
3065     */
3066      public RequestOrchestrationActionRelatedActionComponent(String targetId, ActionRelationshipType relationship) {
3067        super();
3068        this.setTargetId(targetId);
3069        this.setRelationship(relationship);
3070      }
3071
3072        /**
3073         * @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
3074         */
3075        public IdType getTargetIdElement() { 
3076          if (this.targetId == null)
3077            if (Configuration.errorOnAutoCreate())
3078              throw new Error("Attempt to auto-create RequestOrchestrationActionRelatedActionComponent.targetId");
3079            else if (Configuration.doAutoCreate())
3080              this.targetId = new IdType(); // bb
3081          return this.targetId;
3082        }
3083
3084        public boolean hasTargetIdElement() { 
3085          return this.targetId != null && !this.targetId.isEmpty();
3086        }
3087
3088        public boolean hasTargetId() { 
3089          return this.targetId != null && !this.targetId.isEmpty();
3090        }
3091
3092        /**
3093         * @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
3094         */
3095        public RequestOrchestrationActionRelatedActionComponent setTargetIdElement(IdType value) { 
3096          this.targetId = value;
3097          return this;
3098        }
3099
3100        /**
3101         * @return The element id of the target related action.
3102         */
3103        public String getTargetId() { 
3104          return this.targetId == null ? null : this.targetId.getValue();
3105        }
3106
3107        /**
3108         * @param value The element id of the target related action.
3109         */
3110        public RequestOrchestrationActionRelatedActionComponent setTargetId(String value) { 
3111            if (this.targetId == null)
3112              this.targetId = new IdType();
3113            this.targetId.setValue(value);
3114          return this;
3115        }
3116
3117        /**
3118         * @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
3119         */
3120        public Enumeration<ActionRelationshipType> getRelationshipElement() { 
3121          if (this.relationship == null)
3122            if (Configuration.errorOnAutoCreate())
3123              throw new Error("Attempt to auto-create RequestOrchestrationActionRelatedActionComponent.relationship");
3124            else if (Configuration.doAutoCreate())
3125              this.relationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory()); // bb
3126          return this.relationship;
3127        }
3128
3129        public boolean hasRelationshipElement() { 
3130          return this.relationship != null && !this.relationship.isEmpty();
3131        }
3132
3133        public boolean hasRelationship() { 
3134          return this.relationship != null && !this.relationship.isEmpty();
3135        }
3136
3137        /**
3138         * @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
3139         */
3140        public RequestOrchestrationActionRelatedActionComponent setRelationshipElement(Enumeration<ActionRelationshipType> value) { 
3141          this.relationship = value;
3142          return this;
3143        }
3144
3145        /**
3146         * @return The relationship of this action to the related action.
3147         */
3148        public ActionRelationshipType getRelationship() { 
3149          return this.relationship == null ? null : this.relationship.getValue();
3150        }
3151
3152        /**
3153         * @param value The relationship of this action to the related action.
3154         */
3155        public RequestOrchestrationActionRelatedActionComponent setRelationship(ActionRelationshipType value) { 
3156            if (this.relationship == null)
3157              this.relationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory());
3158            this.relationship.setValue(value);
3159          return this;
3160        }
3161
3162        /**
3163         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3164         */
3165        public DataType getOffset() { 
3166          return this.offset;
3167        }
3168
3169        /**
3170         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3171         */
3172        public Duration getOffsetDuration() throws FHIRException { 
3173          if (this.offset == null)
3174            this.offset = new Duration();
3175          if (!(this.offset instanceof Duration))
3176            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.offset.getClass().getName()+" was encountered");
3177          return (Duration) this.offset;
3178        }
3179
3180        public boolean hasOffsetDuration() { 
3181          return this != null && this.offset instanceof Duration;
3182        }
3183
3184        /**
3185         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3186         */
3187        public Range getOffsetRange() throws FHIRException { 
3188          if (this.offset == null)
3189            this.offset = new Range();
3190          if (!(this.offset instanceof Range))
3191            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.offset.getClass().getName()+" was encountered");
3192          return (Range) this.offset;
3193        }
3194
3195        public boolean hasOffsetRange() { 
3196          return this != null && this.offset instanceof Range;
3197        }
3198
3199        public boolean hasOffset() { 
3200          return this.offset != null && !this.offset.isEmpty();
3201        }
3202
3203        /**
3204         * @param value {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3205         */
3206        public RequestOrchestrationActionRelatedActionComponent setOffset(DataType value) { 
3207          if (value != null && !(value instanceof Duration || value instanceof Range))
3208            throw new Error("Not the right type for RequestOrchestration.action.relatedAction.offset[x]: "+value.fhirType());
3209          this.offset = value;
3210          return this;
3211        }
3212
3213        protected void listChildren(List<Property> children) {
3214          super.listChildren(children);
3215          children.add(new Property("targetId", "id", "The element id of the target related action.", 0, 1, targetId));
3216          children.add(new Property("relationship", "code", "The relationship of this action to the related action.", 0, 1, relationship));
3217          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));
3218        }
3219
3220        @Override
3221        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3222          switch (_hash) {
3223          case -441951604: /*targetId*/  return new Property("targetId", "id", "The element id of the target related action.", 0, 1, targetId);
3224          case -261851592: /*relationship*/  return new Property("relationship", "code", "The relationship of this action to the related action.", 0, 1, relationship);
3225          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);
3226          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);
3227          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);
3228          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);
3229          default: return super.getNamedProperty(_hash, _name, _checkValid);
3230          }
3231
3232        }
3233
3234      @Override
3235      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3236        switch (hash) {
3237        case -441951604: /*targetId*/ return this.targetId == null ? new Base[0] : new Base[] {this.targetId}; // IdType
3238        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : new Base[] {this.relationship}; // Enumeration<ActionRelationshipType>
3239        case -1019779949: /*offset*/ return this.offset == null ? new Base[0] : new Base[] {this.offset}; // DataType
3240        default: return super.getProperty(hash, name, checkValid);
3241        }
3242
3243      }
3244
3245      @Override
3246      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3247        switch (hash) {
3248        case -441951604: // targetId
3249          this.targetId = TypeConvertor.castToId(value); // IdType
3250          return value;
3251        case -261851592: // relationship
3252          value = new ActionRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3253          this.relationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3254          return value;
3255        case -1019779949: // offset
3256          this.offset = TypeConvertor.castToType(value); // DataType
3257          return value;
3258        default: return super.setProperty(hash, name, value);
3259        }
3260
3261      }
3262
3263      @Override
3264      public Base setProperty(String name, Base value) throws FHIRException {
3265        if (name.equals("targetId")) {
3266          this.targetId = TypeConvertor.castToId(value); // IdType
3267        } else if (name.equals("relationship")) {
3268          value = new ActionRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3269          this.relationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3270        } else if (name.equals("offset[x]")) {
3271          this.offset = TypeConvertor.castToType(value); // DataType
3272        } else
3273          return super.setProperty(name, value);
3274        return value;
3275      }
3276
3277      @Override
3278      public Base makeProperty(int hash, String name) throws FHIRException {
3279        switch (hash) {
3280        case -441951604:  return getTargetIdElement();
3281        case -261851592:  return getRelationshipElement();
3282        case -1960684787:  return getOffset();
3283        case -1019779949:  return getOffset();
3284        default: return super.makeProperty(hash, name);
3285        }
3286
3287      }
3288
3289      @Override
3290      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3291        switch (hash) {
3292        case -441951604: /*targetId*/ return new String[] {"id"};
3293        case -261851592: /*relationship*/ return new String[] {"code"};
3294        case -1019779949: /*offset*/ return new String[] {"Duration", "Range"};
3295        default: return super.getTypesForProperty(hash, name);
3296        }
3297
3298      }
3299
3300      @Override
3301      public Base addChild(String name) throws FHIRException {
3302        if (name.equals("targetId")) {
3303          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.relatedAction.targetId");
3304        }
3305        else if (name.equals("relationship")) {
3306          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.relatedAction.relationship");
3307        }
3308        else if (name.equals("offsetDuration")) {
3309          this.offset = new Duration();
3310          return this.offset;
3311        }
3312        else if (name.equals("offsetRange")) {
3313          this.offset = new Range();
3314          return this.offset;
3315        }
3316        else
3317          return super.addChild(name);
3318      }
3319
3320      public RequestOrchestrationActionRelatedActionComponent copy() {
3321        RequestOrchestrationActionRelatedActionComponent dst = new RequestOrchestrationActionRelatedActionComponent();
3322        copyValues(dst);
3323        return dst;
3324      }
3325
3326      public void copyValues(RequestOrchestrationActionRelatedActionComponent dst) {
3327        super.copyValues(dst);
3328        dst.targetId = targetId == null ? null : targetId.copy();
3329        dst.relationship = relationship == null ? null : relationship.copy();
3330        dst.offset = offset == null ? null : offset.copy();
3331      }
3332
3333      @Override
3334      public boolean equalsDeep(Base other_) {
3335        if (!super.equalsDeep(other_))
3336          return false;
3337        if (!(other_ instanceof RequestOrchestrationActionRelatedActionComponent))
3338          return false;
3339        RequestOrchestrationActionRelatedActionComponent o = (RequestOrchestrationActionRelatedActionComponent) other_;
3340        return compareDeep(targetId, o.targetId, true) && compareDeep(relationship, o.relationship, true)
3341           && compareDeep(offset, o.offset, true);
3342      }
3343
3344      @Override
3345      public boolean equalsShallow(Base other_) {
3346        if (!super.equalsShallow(other_))
3347          return false;
3348        if (!(other_ instanceof RequestOrchestrationActionRelatedActionComponent))
3349          return false;
3350        RequestOrchestrationActionRelatedActionComponent o = (RequestOrchestrationActionRelatedActionComponent) other_;
3351        return compareValues(targetId, o.targetId, true) && compareValues(relationship, o.relationship, true)
3352          ;
3353      }
3354
3355      public boolean isEmpty() {
3356        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(targetId, relationship, offset
3357          );
3358      }
3359
3360  public String fhirType() {
3361    return "RequestOrchestration.action.relatedAction";
3362
3363  }
3364
3365  }
3366
3367    @Block()
3368    public static class RequestOrchestrationActionParticipantComponent extends BackboneElement implements IBaseBackboneElement {
3369        /**
3370         * The type of participant in the action.
3371         */
3372        @Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
3373        @Description(shortDefinition="careteam | device | group | healthcareservice | location | organization | patient | practitioner | practitionerrole | relatedperson", formalDefinition="The type of participant in the action." )
3374        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-participant-type")
3375        protected Enumeration<ActionParticipantType> type;
3376
3377        /**
3378         * The type of participant in the action.
3379         */
3380        @Child(name = "typeCanonical", type = {CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3381        @Description(shortDefinition="Who or what can participate", formalDefinition="The type of participant in the action." )
3382        protected CanonicalType typeCanonical;
3383
3384        /**
3385         * The type of participant in the action.
3386         */
3387        @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)
3388        @Description(shortDefinition="Who or what can participate", formalDefinition="The type of participant in the action." )
3389        protected Reference typeReference;
3390
3391        /**
3392         * The role the participant should play in performing the described action.
3393         */
3394        @Child(name = "role", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
3395        @Description(shortDefinition="E.g. Nurse, Surgeon, Parent, etc.", formalDefinition="The role the participant should play in performing the described action." )
3396        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/action-participant-role")
3397        protected CodeableConcept role;
3398
3399        /**
3400         * Indicates how the actor will be involved in the action - author, reviewer, witness, etc.
3401         */
3402        @Child(name = "function", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
3403        @Description(shortDefinition="E.g. Author, Reviewer, Witness, etc.", formalDefinition="Indicates how the actor will be involved in the action - author, reviewer, witness, etc." )
3404        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-participant-function")
3405        protected CodeableConcept function;
3406
3407        /**
3408         * A reference to the actual participant.
3409         */
3410        @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)
3411        @Description(shortDefinition="Who/what is participating?", formalDefinition="A reference to the actual participant." )
3412        protected DataType actor;
3413
3414        private static final long serialVersionUID = -147206285L;
3415
3416    /**
3417     * Constructor
3418     */
3419      public RequestOrchestrationActionParticipantComponent() {
3420        super();
3421      }
3422
3423        /**
3424         * @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
3425         */
3426        public Enumeration<ActionParticipantType> getTypeElement() { 
3427          if (this.type == null)
3428            if (Configuration.errorOnAutoCreate())
3429              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.type");
3430            else if (Configuration.doAutoCreate())
3431              this.type = new Enumeration<ActionParticipantType>(new ActionParticipantTypeEnumFactory()); // bb
3432          return this.type;
3433        }
3434
3435        public boolean hasTypeElement() { 
3436          return this.type != null && !this.type.isEmpty();
3437        }
3438
3439        public boolean hasType() { 
3440          return this.type != null && !this.type.isEmpty();
3441        }
3442
3443        /**
3444         * @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
3445         */
3446        public RequestOrchestrationActionParticipantComponent setTypeElement(Enumeration<ActionParticipantType> value) { 
3447          this.type = value;
3448          return this;
3449        }
3450
3451        /**
3452         * @return The type of participant in the action.
3453         */
3454        public ActionParticipantType getType() { 
3455          return this.type == null ? null : this.type.getValue();
3456        }
3457
3458        /**
3459         * @param value The type of participant in the action.
3460         */
3461        public RequestOrchestrationActionParticipantComponent setType(ActionParticipantType value) { 
3462          if (value == null)
3463            this.type = null;
3464          else {
3465            if (this.type == null)
3466              this.type = new Enumeration<ActionParticipantType>(new ActionParticipantTypeEnumFactory());
3467            this.type.setValue(value);
3468          }
3469          return this;
3470        }
3471
3472        /**
3473         * @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
3474         */
3475        public CanonicalType getTypeCanonicalElement() { 
3476          if (this.typeCanonical == null)
3477            if (Configuration.errorOnAutoCreate())
3478              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.typeCanonical");
3479            else if (Configuration.doAutoCreate())
3480              this.typeCanonical = new CanonicalType(); // bb
3481          return this.typeCanonical;
3482        }
3483
3484        public boolean hasTypeCanonicalElement() { 
3485          return this.typeCanonical != null && !this.typeCanonical.isEmpty();
3486        }
3487
3488        public boolean hasTypeCanonical() { 
3489          return this.typeCanonical != null && !this.typeCanonical.isEmpty();
3490        }
3491
3492        /**
3493         * @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
3494         */
3495        public RequestOrchestrationActionParticipantComponent setTypeCanonicalElement(CanonicalType value) { 
3496          this.typeCanonical = value;
3497          return this;
3498        }
3499
3500        /**
3501         * @return The type of participant in the action.
3502         */
3503        public String getTypeCanonical() { 
3504          return this.typeCanonical == null ? null : this.typeCanonical.getValue();
3505        }
3506
3507        /**
3508         * @param value The type of participant in the action.
3509         */
3510        public RequestOrchestrationActionParticipantComponent setTypeCanonical(String value) { 
3511          if (Utilities.noString(value))
3512            this.typeCanonical = null;
3513          else {
3514            if (this.typeCanonical == null)
3515              this.typeCanonical = new CanonicalType();
3516            this.typeCanonical.setValue(value);
3517          }
3518          return this;
3519        }
3520
3521        /**
3522         * @return {@link #typeReference} (The type of participant in the action.)
3523         */
3524        public Reference getTypeReference() { 
3525          if (this.typeReference == null)
3526            if (Configuration.errorOnAutoCreate())
3527              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.typeReference");
3528            else if (Configuration.doAutoCreate())
3529              this.typeReference = new Reference(); // cc
3530          return this.typeReference;
3531        }
3532
3533        public boolean hasTypeReference() { 
3534          return this.typeReference != null && !this.typeReference.isEmpty();
3535        }
3536
3537        /**
3538         * @param value {@link #typeReference} (The type of participant in the action.)
3539         */
3540        public RequestOrchestrationActionParticipantComponent setTypeReference(Reference value) { 
3541          this.typeReference = value;
3542          return this;
3543        }
3544
3545        /**
3546         * @return {@link #role} (The role the participant should play in performing the described action.)
3547         */
3548        public CodeableConcept getRole() { 
3549          if (this.role == null)
3550            if (Configuration.errorOnAutoCreate())
3551              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.role");
3552            else if (Configuration.doAutoCreate())
3553              this.role = new CodeableConcept(); // cc
3554          return this.role;
3555        }
3556
3557        public boolean hasRole() { 
3558          return this.role != null && !this.role.isEmpty();
3559        }
3560
3561        /**
3562         * @param value {@link #role} (The role the participant should play in performing the described action.)
3563         */
3564        public RequestOrchestrationActionParticipantComponent setRole(CodeableConcept value) { 
3565          this.role = value;
3566          return this;
3567        }
3568
3569        /**
3570         * @return {@link #function} (Indicates how the actor will be involved in the action - author, reviewer, witness, etc.)
3571         */
3572        public CodeableConcept getFunction() { 
3573          if (this.function == null)
3574            if (Configuration.errorOnAutoCreate())
3575              throw new Error("Attempt to auto-create RequestOrchestrationActionParticipantComponent.function");
3576            else if (Configuration.doAutoCreate())
3577              this.function = new CodeableConcept(); // cc
3578          return this.function;
3579        }
3580
3581        public boolean hasFunction() { 
3582          return this.function != null && !this.function.isEmpty();
3583        }
3584
3585        /**
3586         * @param value {@link #function} (Indicates how the actor will be involved in the action - author, reviewer, witness, etc.)
3587         */
3588        public RequestOrchestrationActionParticipantComponent setFunction(CodeableConcept value) { 
3589          this.function = value;
3590          return this;
3591        }
3592
3593        /**
3594         * @return {@link #actor} (A reference to the actual participant.)
3595         */
3596        public DataType getActor() { 
3597          return this.actor;
3598        }
3599
3600        /**
3601         * @return {@link #actor} (A reference to the actual participant.)
3602         */
3603        public CanonicalType getActorCanonicalType() throws FHIRException { 
3604          if (this.actor == null)
3605            this.actor = new CanonicalType();
3606          if (!(this.actor instanceof CanonicalType))
3607            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.actor.getClass().getName()+" was encountered");
3608          return (CanonicalType) this.actor;
3609        }
3610
3611        public boolean hasActorCanonicalType() { 
3612          return this != null && this.actor instanceof CanonicalType;
3613        }
3614
3615        /**
3616         * @return {@link #actor} (A reference to the actual participant.)
3617         */
3618        public Reference getActorReference() throws FHIRException { 
3619          if (this.actor == null)
3620            this.actor = new Reference();
3621          if (!(this.actor instanceof Reference))
3622            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.actor.getClass().getName()+" was encountered");
3623          return (Reference) this.actor;
3624        }
3625
3626        public boolean hasActorReference() { 
3627          return this != null && this.actor instanceof Reference;
3628        }
3629
3630        public boolean hasActor() { 
3631          return this.actor != null && !this.actor.isEmpty();
3632        }
3633
3634        /**
3635         * @param value {@link #actor} (A reference to the actual participant.)
3636         */
3637        public RequestOrchestrationActionParticipantComponent setActor(DataType value) { 
3638          if (value != null && !(value instanceof CanonicalType || value instanceof Reference))
3639            throw new Error("Not the right type for RequestOrchestration.action.participant.actor[x]: "+value.fhirType());
3640          this.actor = value;
3641          return this;
3642        }
3643
3644        protected void listChildren(List<Property> children) {
3645          super.listChildren(children);
3646          children.add(new Property("type", "code", "The type of participant in the action.", 0, 1, type));
3647          children.add(new Property("typeCanonical", "canonical(CapabilityStatement)", "The type of participant in the action.", 0, 1, typeCanonical));
3648          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));
3649          children.add(new Property("role", "CodeableConcept", "The role the participant should play in performing the described action.", 0, 1, role));
3650          children.add(new Property("function", "CodeableConcept", "Indicates how the actor will be involved in the action - author, reviewer, witness, etc.", 0, 1, function));
3651          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));
3652        }
3653
3654        @Override
3655        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3656          switch (_hash) {
3657          case 3575610: /*type*/  return new Property("type", "code", "The type of participant in the action.", 0, 1, type);
3658          case -466635046: /*typeCanonical*/  return new Property("typeCanonical", "canonical(CapabilityStatement)", "The type of participant in the action.", 0, 1, typeCanonical);
3659          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);
3660          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "The role the participant should play in performing the described action.", 0, 1, role);
3661          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);
3662          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);
3663          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);
3664          case 1323531903: /*actorCanonical*/  return new Property("actor[x]", "canonical(CapabilityStatement)", "A reference to the actual participant.", 0, 1, actor);
3665          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);
3666          default: return super.getNamedProperty(_hash, _name, _checkValid);
3667          }
3668
3669        }
3670
3671      @Override
3672      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3673        switch (hash) {
3674        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<ActionParticipantType>
3675        case -466635046: /*typeCanonical*/ return this.typeCanonical == null ? new Base[0] : new Base[] {this.typeCanonical}; // CanonicalType
3676        case 2074825009: /*typeReference*/ return this.typeReference == null ? new Base[0] : new Base[] {this.typeReference}; // Reference
3677        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
3678        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
3679        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // DataType
3680        default: return super.getProperty(hash, name, checkValid);
3681        }
3682
3683      }
3684
3685      @Override
3686      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3687        switch (hash) {
3688        case 3575610: // type
3689          value = new ActionParticipantTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3690          this.type = (Enumeration) value; // Enumeration<ActionParticipantType>
3691          return value;
3692        case -466635046: // typeCanonical
3693          this.typeCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
3694          return value;
3695        case 2074825009: // typeReference
3696          this.typeReference = TypeConvertor.castToReference(value); // Reference
3697          return value;
3698        case 3506294: // role
3699          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3700          return value;
3701        case 1380938712: // function
3702          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3703          return value;
3704        case 92645877: // actor
3705          this.actor = TypeConvertor.castToType(value); // DataType
3706          return value;
3707        default: return super.setProperty(hash, name, value);
3708        }
3709
3710      }
3711
3712      @Override
3713      public Base setProperty(String name, Base value) throws FHIRException {
3714        if (name.equals("type")) {
3715          value = new ActionParticipantTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
3716          this.type = (Enumeration) value; // Enumeration<ActionParticipantType>
3717        } else if (name.equals("typeCanonical")) {
3718          this.typeCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
3719        } else if (name.equals("typeReference")) {
3720          this.typeReference = TypeConvertor.castToReference(value); // Reference
3721        } else if (name.equals("role")) {
3722          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3723        } else if (name.equals("function")) {
3724          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3725        } else if (name.equals("actor[x]")) {
3726          this.actor = TypeConvertor.castToType(value); // DataType
3727        } else
3728          return super.setProperty(name, value);
3729        return value;
3730      }
3731
3732      @Override
3733      public Base makeProperty(int hash, String name) throws FHIRException {
3734        switch (hash) {
3735        case 3575610:  return getTypeElement();
3736        case -466635046:  return getTypeCanonicalElement();
3737        case 2074825009:  return getTypeReference();
3738        case 3506294:  return getRole();
3739        case 1380938712:  return getFunction();
3740        case -1650558357:  return getActor();
3741        case 92645877:  return getActor();
3742        default: return super.makeProperty(hash, name);
3743        }
3744
3745      }
3746
3747      @Override
3748      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3749        switch (hash) {
3750        case 3575610: /*type*/ return new String[] {"code"};
3751        case -466635046: /*typeCanonical*/ return new String[] {"canonical"};
3752        case 2074825009: /*typeReference*/ return new String[] {"Reference"};
3753        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
3754        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
3755        case 92645877: /*actor*/ return new String[] {"canonical", "Reference"};
3756        default: return super.getTypesForProperty(hash, name);
3757        }
3758
3759      }
3760
3761      @Override
3762      public Base addChild(String name) throws FHIRException {
3763        if (name.equals("type")) {
3764          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.participant.type");
3765        }
3766        else if (name.equals("typeCanonical")) {
3767          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.participant.typeCanonical");
3768        }
3769        else if (name.equals("typeReference")) {
3770          this.typeReference = new Reference();
3771          return this.typeReference;
3772        }
3773        else if (name.equals("role")) {
3774          this.role = new CodeableConcept();
3775          return this.role;
3776        }
3777        else if (name.equals("function")) {
3778          this.function = new CodeableConcept();
3779          return this.function;
3780        }
3781        else if (name.equals("actorCanonical")) {
3782          this.actor = new CanonicalType();
3783          return this.actor;
3784        }
3785        else if (name.equals("actorReference")) {
3786          this.actor = new Reference();
3787          return this.actor;
3788        }
3789        else
3790          return super.addChild(name);
3791      }
3792
3793      public RequestOrchestrationActionParticipantComponent copy() {
3794        RequestOrchestrationActionParticipantComponent dst = new RequestOrchestrationActionParticipantComponent();
3795        copyValues(dst);
3796        return dst;
3797      }
3798
3799      public void copyValues(RequestOrchestrationActionParticipantComponent dst) {
3800        super.copyValues(dst);
3801        dst.type = type == null ? null : type.copy();
3802        dst.typeCanonical = typeCanonical == null ? null : typeCanonical.copy();
3803        dst.typeReference = typeReference == null ? null : typeReference.copy();
3804        dst.role = role == null ? null : role.copy();
3805        dst.function = function == null ? null : function.copy();
3806        dst.actor = actor == null ? null : actor.copy();
3807      }
3808
3809      @Override
3810      public boolean equalsDeep(Base other_) {
3811        if (!super.equalsDeep(other_))
3812          return false;
3813        if (!(other_ instanceof RequestOrchestrationActionParticipantComponent))
3814          return false;
3815        RequestOrchestrationActionParticipantComponent o = (RequestOrchestrationActionParticipantComponent) other_;
3816        return compareDeep(type, o.type, true) && compareDeep(typeCanonical, o.typeCanonical, true) && compareDeep(typeReference, o.typeReference, true)
3817           && compareDeep(role, o.role, true) && compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true)
3818          ;
3819      }
3820
3821      @Override
3822      public boolean equalsShallow(Base other_) {
3823        if (!super.equalsShallow(other_))
3824          return false;
3825        if (!(other_ instanceof RequestOrchestrationActionParticipantComponent))
3826          return false;
3827        RequestOrchestrationActionParticipantComponent o = (RequestOrchestrationActionParticipantComponent) other_;
3828        return compareValues(type, o.type, true) && compareValues(typeCanonical, o.typeCanonical, true);
3829      }
3830
3831      public boolean isEmpty() {
3832        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, typeCanonical, typeReference
3833          , role, function, actor);
3834      }
3835
3836  public String fhirType() {
3837    return "RequestOrchestration.action.participant";
3838
3839  }
3840
3841  }
3842
3843    @Block()
3844    public static class RequestOrchestrationActionDynamicValueComponent extends BackboneElement implements IBaseBackboneElement {
3845        /**
3846         * 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 resolveable 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).
3847         */
3848        @Child(name = "path", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
3849        @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 resolveable 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)." )
3850        protected StringType path;
3851
3852        /**
3853         * An expression specifying the value of the customized element.
3854         */
3855        @Child(name = "expression", type = {Expression.class}, order=2, min=0, max=1, modifier=false, summary=false)
3856        @Description(shortDefinition="An expression that provides the dynamic value for the customization", formalDefinition="An expression specifying the value of the customized element." )
3857        protected Expression expression;
3858
3859        private static final long serialVersionUID = 1064529082L;
3860
3861    /**
3862     * Constructor
3863     */
3864      public RequestOrchestrationActionDynamicValueComponent() {
3865        super();
3866      }
3867
3868        /**
3869         * @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 resolveable 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
3870         */
3871        public StringType getPathElement() { 
3872          if (this.path == null)
3873            if (Configuration.errorOnAutoCreate())
3874              throw new Error("Attempt to auto-create RequestOrchestrationActionDynamicValueComponent.path");
3875            else if (Configuration.doAutoCreate())
3876              this.path = new StringType(); // bb
3877          return this.path;
3878        }
3879
3880        public boolean hasPathElement() { 
3881          return this.path != null && !this.path.isEmpty();
3882        }
3883
3884        public boolean hasPath() { 
3885          return this.path != null && !this.path.isEmpty();
3886        }
3887
3888        /**
3889         * @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 resolveable 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
3890         */
3891        public RequestOrchestrationActionDynamicValueComponent setPathElement(StringType value) { 
3892          this.path = value;
3893          return this;
3894        }
3895
3896        /**
3897         * @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 resolveable 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).
3898         */
3899        public String getPath() { 
3900          return this.path == null ? null : this.path.getValue();
3901        }
3902
3903        /**
3904         * @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 resolveable 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).
3905         */
3906        public RequestOrchestrationActionDynamicValueComponent setPath(String value) { 
3907          if (Utilities.noString(value))
3908            this.path = null;
3909          else {
3910            if (this.path == null)
3911              this.path = new StringType();
3912            this.path.setValue(value);
3913          }
3914          return this;
3915        }
3916
3917        /**
3918         * @return {@link #expression} (An expression specifying the value of the customized element.)
3919         */
3920        public Expression getExpression() { 
3921          if (this.expression == null)
3922            if (Configuration.errorOnAutoCreate())
3923              throw new Error("Attempt to auto-create RequestOrchestrationActionDynamicValueComponent.expression");
3924            else if (Configuration.doAutoCreate())
3925              this.expression = new Expression(); // cc
3926          return this.expression;
3927        }
3928
3929        public boolean hasExpression() { 
3930          return this.expression != null && !this.expression.isEmpty();
3931        }
3932
3933        /**
3934         * @param value {@link #expression} (An expression specifying the value of the customized element.)
3935         */
3936        public RequestOrchestrationActionDynamicValueComponent setExpression(Expression value) { 
3937          this.expression = value;
3938          return this;
3939        }
3940
3941        protected void listChildren(List<Property> children) {
3942          super.listChildren(children);
3943          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 resolveable 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));
3944          children.add(new Property("expression", "Expression", "An expression specifying the value of the customized element.", 0, 1, expression));
3945        }
3946
3947        @Override
3948        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3949          switch (_hash) {
3950          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 resolveable 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);
3951          case -1795452264: /*expression*/  return new Property("expression", "Expression", "An expression specifying the value of the customized element.", 0, 1, expression);
3952          default: return super.getNamedProperty(_hash, _name, _checkValid);
3953          }
3954
3955        }
3956
3957      @Override
3958      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3959        switch (hash) {
3960        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
3961        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // Expression
3962        default: return super.getProperty(hash, name, checkValid);
3963        }
3964
3965      }
3966
3967      @Override
3968      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3969        switch (hash) {
3970        case 3433509: // path
3971          this.path = TypeConvertor.castToString(value); // StringType
3972          return value;
3973        case -1795452264: // expression
3974          this.expression = TypeConvertor.castToExpression(value); // Expression
3975          return value;
3976        default: return super.setProperty(hash, name, value);
3977        }
3978
3979      }
3980
3981      @Override
3982      public Base setProperty(String name, Base value) throws FHIRException {
3983        if (name.equals("path")) {
3984          this.path = TypeConvertor.castToString(value); // StringType
3985        } else if (name.equals("expression")) {
3986          this.expression = TypeConvertor.castToExpression(value); // Expression
3987        } else
3988          return super.setProperty(name, value);
3989        return value;
3990      }
3991
3992      @Override
3993      public Base makeProperty(int hash, String name) throws FHIRException {
3994        switch (hash) {
3995        case 3433509:  return getPathElement();
3996        case -1795452264:  return getExpression();
3997        default: return super.makeProperty(hash, name);
3998        }
3999
4000      }
4001
4002      @Override
4003      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4004        switch (hash) {
4005        case 3433509: /*path*/ return new String[] {"string"};
4006        case -1795452264: /*expression*/ return new String[] {"Expression"};
4007        default: return super.getTypesForProperty(hash, name);
4008        }
4009
4010      }
4011
4012      @Override
4013      public Base addChild(String name) throws FHIRException {
4014        if (name.equals("path")) {
4015          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.action.dynamicValue.path");
4016        }
4017        else if (name.equals("expression")) {
4018          this.expression = new Expression();
4019          return this.expression;
4020        }
4021        else
4022          return super.addChild(name);
4023      }
4024
4025      public RequestOrchestrationActionDynamicValueComponent copy() {
4026        RequestOrchestrationActionDynamicValueComponent dst = new RequestOrchestrationActionDynamicValueComponent();
4027        copyValues(dst);
4028        return dst;
4029      }
4030
4031      public void copyValues(RequestOrchestrationActionDynamicValueComponent dst) {
4032        super.copyValues(dst);
4033        dst.path = path == null ? null : path.copy();
4034        dst.expression = expression == null ? null : expression.copy();
4035      }
4036
4037      @Override
4038      public boolean equalsDeep(Base other_) {
4039        if (!super.equalsDeep(other_))
4040          return false;
4041        if (!(other_ instanceof RequestOrchestrationActionDynamicValueComponent))
4042          return false;
4043        RequestOrchestrationActionDynamicValueComponent o = (RequestOrchestrationActionDynamicValueComponent) other_;
4044        return compareDeep(path, o.path, true) && compareDeep(expression, o.expression, true);
4045      }
4046
4047      @Override
4048      public boolean equalsShallow(Base other_) {
4049        if (!super.equalsShallow(other_))
4050          return false;
4051        if (!(other_ instanceof RequestOrchestrationActionDynamicValueComponent))
4052          return false;
4053        RequestOrchestrationActionDynamicValueComponent o = (RequestOrchestrationActionDynamicValueComponent) other_;
4054        return compareValues(path, o.path, true);
4055      }
4056
4057      public boolean isEmpty() {
4058        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(path, expression);
4059      }
4060
4061  public String fhirType() {
4062    return "RequestOrchestration.action.dynamicValue";
4063
4064  }
4065
4066  }
4067
4068    /**
4069     * Allows a service to provide a unique, business identifier for the request.
4070     */
4071    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4072    @Description(shortDefinition="Business identifier", formalDefinition="Allows a service to provide a unique, business identifier for the request." )
4073    protected List<Identifier> identifier;
4074
4075    /**
4076     * 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.
4077     */
4078    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4079    @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." )
4080    protected List<CanonicalType> instantiatesCanonical;
4081
4082    /**
4083     * A URL referencing an externally defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this request.
4084     */
4085    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
4086    @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." )
4087    protected List<UriType> instantiatesUri;
4088
4089    /**
4090     * A plan, proposal or order that is fulfilled in whole or in part by this request.
4091     */
4092    @Child(name = "basedOn", type = {Reference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4093    @Description(shortDefinition="Fulfills plan, proposal, or order", formalDefinition="A plan, proposal or order that is fulfilled in whole or in part by this request." )
4094    protected List<Reference> basedOn;
4095
4096    /**
4097     * Completed or terminated request(s) whose function is taken by this new request.
4098     */
4099    @Child(name = "replaces", type = {Reference.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4100    @Description(shortDefinition="Request(s) replaced by this request", formalDefinition="Completed or terminated request(s) whose function is taken by this new request." )
4101    protected List<Reference> replaces;
4102
4103    /**
4104     * A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form.
4105     */
4106    @Child(name = "groupIdentifier", type = {Identifier.class}, order=5, min=0, max=1, modifier=false, summary=true)
4107    @Description(shortDefinition="Composite request this is part of", formalDefinition="A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form." )
4108    protected Identifier groupIdentifier;
4109
4110    /**
4111     * The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
4112     */
4113    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
4114    @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." )
4115    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
4116    protected Enumeration<RequestStatus> status;
4117
4118    /**
4119     * Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4120     */
4121    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
4122    @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." )
4123    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
4124    protected Enumeration<RequestIntent> intent;
4125
4126    /**
4127     * Indicates how quickly the request should be addressed with respect to other requests.
4128     */
4129    @Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
4130    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the request should be addressed with respect to other requests." )
4131    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
4132    protected Enumeration<RequestPriority> priority;
4133
4134    /**
4135     * A code that identifies what the overall request orchestration is.
4136     */
4137    @Child(name = "code", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true)
4138    @Description(shortDefinition="What's being requested/ordered", formalDefinition="A code that identifies what the overall request orchestration is." )
4139    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-code")
4140    protected CodeableConcept code;
4141
4142    /**
4143     * The subject for which the request orchestration was created.
4144     */
4145    @Child(name = "subject", type = {Patient.class, Group.class}, order=10, min=0, max=1, modifier=false, summary=false)
4146    @Description(shortDefinition="Who the request orchestration is about", formalDefinition="The subject for which the request orchestration was created." )
4147    protected Reference subject;
4148
4149    /**
4150     * Describes the context of the request orchestration, if any.
4151     */
4152    @Child(name = "encounter", type = {Encounter.class}, order=11, min=0, max=1, modifier=false, summary=false)
4153    @Description(shortDefinition="Created as part of", formalDefinition="Describes the context of the request orchestration, if any." )
4154    protected Reference encounter;
4155
4156    /**
4157     * Indicates when the request orchestration was created.
4158     */
4159    @Child(name = "authoredOn", type = {DateTimeType.class}, order=12, min=0, max=1, modifier=false, summary=false)
4160    @Description(shortDefinition="When the request orchestration was authored", formalDefinition="Indicates when the request orchestration was created." )
4161    protected DateTimeType authoredOn;
4162
4163    /**
4164     * Provides a reference to the author of the request orchestration.
4165     */
4166    @Child(name = "author", type = {Device.class, Practitioner.class, PractitionerRole.class}, order=13, min=0, max=1, modifier=false, summary=false)
4167    @Description(shortDefinition="Device or practitioner that authored the request orchestration", formalDefinition="Provides a reference to the author of the request orchestration." )
4168    protected Reference author;
4169
4170    /**
4171     * Describes the reason for the request orchestration in coded or textual form.
4172     */
4173    @Child(name = "reason", type = {CodeableReference.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4174    @Description(shortDefinition="Why the request orchestration is needed", formalDefinition="Describes the reason for the request orchestration in coded or textual form." )
4175    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-reason-code")
4176    protected List<CodeableReference> reason;
4177
4178    /**
4179     * Goals that are intended to be achieved by following the requests in this RequestOrchestration.
4180     */
4181    @Child(name = "goal", type = {Goal.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4182    @Description(shortDefinition="What goals", formalDefinition="Goals that are intended to be achieved by following the requests in this RequestOrchestration." )
4183    protected List<Reference> goal;
4184
4185    /**
4186     * Provides a mechanism to communicate additional information about the response.
4187     */
4188    @Child(name = "note", type = {Annotation.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4189    @Description(shortDefinition="Additional notes about the response", formalDefinition="Provides a mechanism to communicate additional information about the response." )
4190    protected List<Annotation> note;
4191
4192    /**
4193     * The actions, if any, produced by the evaluation of the artifact.
4194     */
4195    @Child(name = "action", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4196    @Description(shortDefinition="Proposed actions, if any", formalDefinition="The actions, if any, produced by the evaluation of the artifact." )
4197    protected List<RequestOrchestrationActionComponent> action;
4198
4199    private static final long serialVersionUID = -683989911L;
4200
4201  /**
4202   * Constructor
4203   */
4204    public RequestOrchestration() {
4205      super();
4206    }
4207
4208  /**
4209   * Constructor
4210   */
4211    public RequestOrchestration(RequestStatus status, RequestIntent intent) {
4212      super();
4213      this.setStatus(status);
4214      this.setIntent(intent);
4215    }
4216
4217    /**
4218     * @return {@link #identifier} (Allows a service to provide a unique, business identifier for the request.)
4219     */
4220    public List<Identifier> getIdentifier() { 
4221      if (this.identifier == null)
4222        this.identifier = new ArrayList<Identifier>();
4223      return this.identifier;
4224    }
4225
4226    /**
4227     * @return Returns a reference to <code>this</code> for easy method chaining
4228     */
4229    public RequestOrchestration setIdentifier(List<Identifier> theIdentifier) { 
4230      this.identifier = theIdentifier;
4231      return this;
4232    }
4233
4234    public boolean hasIdentifier() { 
4235      if (this.identifier == null)
4236        return false;
4237      for (Identifier item : this.identifier)
4238        if (!item.isEmpty())
4239          return true;
4240      return false;
4241    }
4242
4243    public Identifier addIdentifier() { //3
4244      Identifier t = new Identifier();
4245      if (this.identifier == null)
4246        this.identifier = new ArrayList<Identifier>();
4247      this.identifier.add(t);
4248      return t;
4249    }
4250
4251    public RequestOrchestration addIdentifier(Identifier t) { //3
4252      if (t == null)
4253        return this;
4254      if (this.identifier == null)
4255        this.identifier = new ArrayList<Identifier>();
4256      this.identifier.add(t);
4257      return this;
4258    }
4259
4260    /**
4261     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
4262     */
4263    public Identifier getIdentifierFirstRep() { 
4264      if (getIdentifier().isEmpty()) {
4265        addIdentifier();
4266      }
4267      return getIdentifier().get(0);
4268    }
4269
4270    /**
4271     * @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.)
4272     */
4273    public List<CanonicalType> getInstantiatesCanonical() { 
4274      if (this.instantiatesCanonical == null)
4275        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4276      return this.instantiatesCanonical;
4277    }
4278
4279    /**
4280     * @return Returns a reference to <code>this</code> for easy method chaining
4281     */
4282    public RequestOrchestration setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
4283      this.instantiatesCanonical = theInstantiatesCanonical;
4284      return this;
4285    }
4286
4287    public boolean hasInstantiatesCanonical() { 
4288      if (this.instantiatesCanonical == null)
4289        return false;
4290      for (CanonicalType item : this.instantiatesCanonical)
4291        if (!item.isEmpty())
4292          return true;
4293      return false;
4294    }
4295
4296    /**
4297     * @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.)
4298     */
4299    public CanonicalType addInstantiatesCanonicalElement() {//2 
4300      CanonicalType t = new CanonicalType();
4301      if (this.instantiatesCanonical == null)
4302        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4303      this.instantiatesCanonical.add(t);
4304      return t;
4305    }
4306
4307    /**
4308     * @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.)
4309     */
4310    public RequestOrchestration addInstantiatesCanonical(String value) { //1
4311      CanonicalType t = new CanonicalType();
4312      t.setValue(value);
4313      if (this.instantiatesCanonical == null)
4314        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4315      this.instantiatesCanonical.add(t);
4316      return this;
4317    }
4318
4319    /**
4320     * @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.)
4321     */
4322    public boolean hasInstantiatesCanonical(String value) { 
4323      if (this.instantiatesCanonical == null)
4324        return false;
4325      for (CanonicalType v : this.instantiatesCanonical)
4326        if (v.getValue().equals(value)) // canonical
4327          return true;
4328      return false;
4329    }
4330
4331    /**
4332     * @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.)
4333     */
4334    public List<UriType> getInstantiatesUri() { 
4335      if (this.instantiatesUri == null)
4336        this.instantiatesUri = new ArrayList<UriType>();
4337      return this.instantiatesUri;
4338    }
4339
4340    /**
4341     * @return Returns a reference to <code>this</code> for easy method chaining
4342     */
4343    public RequestOrchestration setInstantiatesUri(List<UriType> theInstantiatesUri) { 
4344      this.instantiatesUri = theInstantiatesUri;
4345      return this;
4346    }
4347
4348    public boolean hasInstantiatesUri() { 
4349      if (this.instantiatesUri == null)
4350        return false;
4351      for (UriType item : this.instantiatesUri)
4352        if (!item.isEmpty())
4353          return true;
4354      return false;
4355    }
4356
4357    /**
4358     * @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.)
4359     */
4360    public UriType addInstantiatesUriElement() {//2 
4361      UriType t = new UriType();
4362      if (this.instantiatesUri == null)
4363        this.instantiatesUri = new ArrayList<UriType>();
4364      this.instantiatesUri.add(t);
4365      return t;
4366    }
4367
4368    /**
4369     * @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.)
4370     */
4371    public RequestOrchestration addInstantiatesUri(String value) { //1
4372      UriType t = new UriType();
4373      t.setValue(value);
4374      if (this.instantiatesUri == null)
4375        this.instantiatesUri = new ArrayList<UriType>();
4376      this.instantiatesUri.add(t);
4377      return this;
4378    }
4379
4380    /**
4381     * @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.)
4382     */
4383    public boolean hasInstantiatesUri(String value) { 
4384      if (this.instantiatesUri == null)
4385        return false;
4386      for (UriType v : this.instantiatesUri)
4387        if (v.getValue().equals(value)) // uri
4388          return true;
4389      return false;
4390    }
4391
4392    /**
4393     * @return {@link #basedOn} (A plan, proposal or order that is fulfilled in whole or in part by this request.)
4394     */
4395    public List<Reference> getBasedOn() { 
4396      if (this.basedOn == null)
4397        this.basedOn = new ArrayList<Reference>();
4398      return this.basedOn;
4399    }
4400
4401    /**
4402     * @return Returns a reference to <code>this</code> for easy method chaining
4403     */
4404    public RequestOrchestration setBasedOn(List<Reference> theBasedOn) { 
4405      this.basedOn = theBasedOn;
4406      return this;
4407    }
4408
4409    public boolean hasBasedOn() { 
4410      if (this.basedOn == null)
4411        return false;
4412      for (Reference item : this.basedOn)
4413        if (!item.isEmpty())
4414          return true;
4415      return false;
4416    }
4417
4418    public Reference addBasedOn() { //3
4419      Reference t = new Reference();
4420      if (this.basedOn == null)
4421        this.basedOn = new ArrayList<Reference>();
4422      this.basedOn.add(t);
4423      return t;
4424    }
4425
4426    public RequestOrchestration addBasedOn(Reference t) { //3
4427      if (t == null)
4428        return this;
4429      if (this.basedOn == null)
4430        this.basedOn = new ArrayList<Reference>();
4431      this.basedOn.add(t);
4432      return this;
4433    }
4434
4435    /**
4436     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
4437     */
4438    public Reference getBasedOnFirstRep() { 
4439      if (getBasedOn().isEmpty()) {
4440        addBasedOn();
4441      }
4442      return getBasedOn().get(0);
4443    }
4444
4445    /**
4446     * @return {@link #replaces} (Completed or terminated request(s) whose function is taken by this new request.)
4447     */
4448    public List<Reference> getReplaces() { 
4449      if (this.replaces == null)
4450        this.replaces = new ArrayList<Reference>();
4451      return this.replaces;
4452    }
4453
4454    /**
4455     * @return Returns a reference to <code>this</code> for easy method chaining
4456     */
4457    public RequestOrchestration setReplaces(List<Reference> theReplaces) { 
4458      this.replaces = theReplaces;
4459      return this;
4460    }
4461
4462    public boolean hasReplaces() { 
4463      if (this.replaces == null)
4464        return false;
4465      for (Reference item : this.replaces)
4466        if (!item.isEmpty())
4467          return true;
4468      return false;
4469    }
4470
4471    public Reference addReplaces() { //3
4472      Reference t = new Reference();
4473      if (this.replaces == null)
4474        this.replaces = new ArrayList<Reference>();
4475      this.replaces.add(t);
4476      return t;
4477    }
4478
4479    public RequestOrchestration addReplaces(Reference t) { //3
4480      if (t == null)
4481        return this;
4482      if (this.replaces == null)
4483        this.replaces = new ArrayList<Reference>();
4484      this.replaces.add(t);
4485      return this;
4486    }
4487
4488    /**
4489     * @return The first repetition of repeating field {@link #replaces}, creating it if it does not already exist {3}
4490     */
4491    public Reference getReplacesFirstRep() { 
4492      if (getReplaces().isEmpty()) {
4493        addReplaces();
4494      }
4495      return getReplaces().get(0);
4496    }
4497
4498    /**
4499     * @return {@link #groupIdentifier} (A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form.)
4500     */
4501    public Identifier getGroupIdentifier() { 
4502      if (this.groupIdentifier == null)
4503        if (Configuration.errorOnAutoCreate())
4504          throw new Error("Attempt to auto-create RequestOrchestration.groupIdentifier");
4505        else if (Configuration.doAutoCreate())
4506          this.groupIdentifier = new Identifier(); // cc
4507      return this.groupIdentifier;
4508    }
4509
4510    public boolean hasGroupIdentifier() { 
4511      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
4512    }
4513
4514    /**
4515     * @param value {@link #groupIdentifier} (A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form.)
4516     */
4517    public RequestOrchestration setGroupIdentifier(Identifier value) { 
4518      this.groupIdentifier = value;
4519      return this;
4520    }
4521
4522    /**
4523     * @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
4524     */
4525    public Enumeration<RequestStatus> getStatusElement() { 
4526      if (this.status == null)
4527        if (Configuration.errorOnAutoCreate())
4528          throw new Error("Attempt to auto-create RequestOrchestration.status");
4529        else if (Configuration.doAutoCreate())
4530          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
4531      return this.status;
4532    }
4533
4534    public boolean hasStatusElement() { 
4535      return this.status != null && !this.status.isEmpty();
4536    }
4537
4538    public boolean hasStatus() { 
4539      return this.status != null && !this.status.isEmpty();
4540    }
4541
4542    /**
4543     * @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
4544     */
4545    public RequestOrchestration setStatusElement(Enumeration<RequestStatus> value) { 
4546      this.status = value;
4547      return this;
4548    }
4549
4550    /**
4551     * @return The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
4552     */
4553    public RequestStatus getStatus() { 
4554      return this.status == null ? null : this.status.getValue();
4555    }
4556
4557    /**
4558     * @param value The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
4559     */
4560    public RequestOrchestration setStatus(RequestStatus value) { 
4561        if (this.status == null)
4562          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
4563        this.status.setValue(value);
4564      return this;
4565    }
4566
4567    /**
4568     * @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
4569     */
4570    public Enumeration<RequestIntent> getIntentElement() { 
4571      if (this.intent == null)
4572        if (Configuration.errorOnAutoCreate())
4573          throw new Error("Attempt to auto-create RequestOrchestration.intent");
4574        else if (Configuration.doAutoCreate())
4575          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
4576      return this.intent;
4577    }
4578
4579    public boolean hasIntentElement() { 
4580      return this.intent != null && !this.intent.isEmpty();
4581    }
4582
4583    public boolean hasIntent() { 
4584      return this.intent != null && !this.intent.isEmpty();
4585    }
4586
4587    /**
4588     * @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
4589     */
4590    public RequestOrchestration setIntentElement(Enumeration<RequestIntent> value) { 
4591      this.intent = value;
4592      return this;
4593    }
4594
4595    /**
4596     * @return Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4597     */
4598    public RequestIntent getIntent() { 
4599      return this.intent == null ? null : this.intent.getValue();
4600    }
4601
4602    /**
4603     * @param value Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4604     */
4605    public RequestOrchestration setIntent(RequestIntent value) { 
4606        if (this.intent == null)
4607          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
4608        this.intent.setValue(value);
4609      return this;
4610    }
4611
4612    /**
4613     * @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
4614     */
4615    public Enumeration<RequestPriority> getPriorityElement() { 
4616      if (this.priority == null)
4617        if (Configuration.errorOnAutoCreate())
4618          throw new Error("Attempt to auto-create RequestOrchestration.priority");
4619        else if (Configuration.doAutoCreate())
4620          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
4621      return this.priority;
4622    }
4623
4624    public boolean hasPriorityElement() { 
4625      return this.priority != null && !this.priority.isEmpty();
4626    }
4627
4628    public boolean hasPriority() { 
4629      return this.priority != null && !this.priority.isEmpty();
4630    }
4631
4632    /**
4633     * @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
4634     */
4635    public RequestOrchestration setPriorityElement(Enumeration<RequestPriority> value) { 
4636      this.priority = value;
4637      return this;
4638    }
4639
4640    /**
4641     * @return Indicates how quickly the request should be addressed with respect to other requests.
4642     */
4643    public RequestPriority getPriority() { 
4644      return this.priority == null ? null : this.priority.getValue();
4645    }
4646
4647    /**
4648     * @param value Indicates how quickly the request should be addressed with respect to other requests.
4649     */
4650    public RequestOrchestration setPriority(RequestPriority value) { 
4651      if (value == null)
4652        this.priority = null;
4653      else {
4654        if (this.priority == null)
4655          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
4656        this.priority.setValue(value);
4657      }
4658      return this;
4659    }
4660
4661    /**
4662     * @return {@link #code} (A code that identifies what the overall request orchestration is.)
4663     */
4664    public CodeableConcept getCode() { 
4665      if (this.code == null)
4666        if (Configuration.errorOnAutoCreate())
4667          throw new Error("Attempt to auto-create RequestOrchestration.code");
4668        else if (Configuration.doAutoCreate())
4669          this.code = new CodeableConcept(); // cc
4670      return this.code;
4671    }
4672
4673    public boolean hasCode() { 
4674      return this.code != null && !this.code.isEmpty();
4675    }
4676
4677    /**
4678     * @param value {@link #code} (A code that identifies what the overall request orchestration is.)
4679     */
4680    public RequestOrchestration setCode(CodeableConcept value) { 
4681      this.code = value;
4682      return this;
4683    }
4684
4685    /**
4686     * @return {@link #subject} (The subject for which the request orchestration was created.)
4687     */
4688    public Reference getSubject() { 
4689      if (this.subject == null)
4690        if (Configuration.errorOnAutoCreate())
4691          throw new Error("Attempt to auto-create RequestOrchestration.subject");
4692        else if (Configuration.doAutoCreate())
4693          this.subject = new Reference(); // cc
4694      return this.subject;
4695    }
4696
4697    public boolean hasSubject() { 
4698      return this.subject != null && !this.subject.isEmpty();
4699    }
4700
4701    /**
4702     * @param value {@link #subject} (The subject for which the request orchestration was created.)
4703     */
4704    public RequestOrchestration setSubject(Reference value) { 
4705      this.subject = value;
4706      return this;
4707    }
4708
4709    /**
4710     * @return {@link #encounter} (Describes the context of the request orchestration, if any.)
4711     */
4712    public Reference getEncounter() { 
4713      if (this.encounter == null)
4714        if (Configuration.errorOnAutoCreate())
4715          throw new Error("Attempt to auto-create RequestOrchestration.encounter");
4716        else if (Configuration.doAutoCreate())
4717          this.encounter = new Reference(); // cc
4718      return this.encounter;
4719    }
4720
4721    public boolean hasEncounter() { 
4722      return this.encounter != null && !this.encounter.isEmpty();
4723    }
4724
4725    /**
4726     * @param value {@link #encounter} (Describes the context of the request orchestration, if any.)
4727     */
4728    public RequestOrchestration setEncounter(Reference value) { 
4729      this.encounter = value;
4730      return this;
4731    }
4732
4733    /**
4734     * @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
4735     */
4736    public DateTimeType getAuthoredOnElement() { 
4737      if (this.authoredOn == null)
4738        if (Configuration.errorOnAutoCreate())
4739          throw new Error("Attempt to auto-create RequestOrchestration.authoredOn");
4740        else if (Configuration.doAutoCreate())
4741          this.authoredOn = new DateTimeType(); // bb
4742      return this.authoredOn;
4743    }
4744
4745    public boolean hasAuthoredOnElement() { 
4746      return this.authoredOn != null && !this.authoredOn.isEmpty();
4747    }
4748
4749    public boolean hasAuthoredOn() { 
4750      return this.authoredOn != null && !this.authoredOn.isEmpty();
4751    }
4752
4753    /**
4754     * @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
4755     */
4756    public RequestOrchestration setAuthoredOnElement(DateTimeType value) { 
4757      this.authoredOn = value;
4758      return this;
4759    }
4760
4761    /**
4762     * @return Indicates when the request orchestration was created.
4763     */
4764    public Date getAuthoredOn() { 
4765      return this.authoredOn == null ? null : this.authoredOn.getValue();
4766    }
4767
4768    /**
4769     * @param value Indicates when the request orchestration was created.
4770     */
4771    public RequestOrchestration setAuthoredOn(Date value) { 
4772      if (value == null)
4773        this.authoredOn = null;
4774      else {
4775        if (this.authoredOn == null)
4776          this.authoredOn = new DateTimeType();
4777        this.authoredOn.setValue(value);
4778      }
4779      return this;
4780    }
4781
4782    /**
4783     * @return {@link #author} (Provides a reference to the author of the request orchestration.)
4784     */
4785    public Reference getAuthor() { 
4786      if (this.author == null)
4787        if (Configuration.errorOnAutoCreate())
4788          throw new Error("Attempt to auto-create RequestOrchestration.author");
4789        else if (Configuration.doAutoCreate())
4790          this.author = new Reference(); // cc
4791      return this.author;
4792    }
4793
4794    public boolean hasAuthor() { 
4795      return this.author != null && !this.author.isEmpty();
4796    }
4797
4798    /**
4799     * @param value {@link #author} (Provides a reference to the author of the request orchestration.)
4800     */
4801    public RequestOrchestration setAuthor(Reference value) { 
4802      this.author = value;
4803      return this;
4804    }
4805
4806    /**
4807     * @return {@link #reason} (Describes the reason for the request orchestration in coded or textual form.)
4808     */
4809    public List<CodeableReference> getReason() { 
4810      if (this.reason == null)
4811        this.reason = new ArrayList<CodeableReference>();
4812      return this.reason;
4813    }
4814
4815    /**
4816     * @return Returns a reference to <code>this</code> for easy method chaining
4817     */
4818    public RequestOrchestration setReason(List<CodeableReference> theReason) { 
4819      this.reason = theReason;
4820      return this;
4821    }
4822
4823    public boolean hasReason() { 
4824      if (this.reason == null)
4825        return false;
4826      for (CodeableReference item : this.reason)
4827        if (!item.isEmpty())
4828          return true;
4829      return false;
4830    }
4831
4832    public CodeableReference addReason() { //3
4833      CodeableReference t = new CodeableReference();
4834      if (this.reason == null)
4835        this.reason = new ArrayList<CodeableReference>();
4836      this.reason.add(t);
4837      return t;
4838    }
4839
4840    public RequestOrchestration addReason(CodeableReference t) { //3
4841      if (t == null)
4842        return this;
4843      if (this.reason == null)
4844        this.reason = new ArrayList<CodeableReference>();
4845      this.reason.add(t);
4846      return this;
4847    }
4848
4849    /**
4850     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
4851     */
4852    public CodeableReference getReasonFirstRep() { 
4853      if (getReason().isEmpty()) {
4854        addReason();
4855      }
4856      return getReason().get(0);
4857    }
4858
4859    /**
4860     * @return {@link #goal} (Goals that are intended to be achieved by following the requests in this RequestOrchestration.)
4861     */
4862    public List<Reference> getGoal() { 
4863      if (this.goal == null)
4864        this.goal = new ArrayList<Reference>();
4865      return this.goal;
4866    }
4867
4868    /**
4869     * @return Returns a reference to <code>this</code> for easy method chaining
4870     */
4871    public RequestOrchestration setGoal(List<Reference> theGoal) { 
4872      this.goal = theGoal;
4873      return this;
4874    }
4875
4876    public boolean hasGoal() { 
4877      if (this.goal == null)
4878        return false;
4879      for (Reference item : this.goal)
4880        if (!item.isEmpty())
4881          return true;
4882      return false;
4883    }
4884
4885    public Reference addGoal() { //3
4886      Reference t = new Reference();
4887      if (this.goal == null)
4888        this.goal = new ArrayList<Reference>();
4889      this.goal.add(t);
4890      return t;
4891    }
4892
4893    public RequestOrchestration addGoal(Reference t) { //3
4894      if (t == null)
4895        return this;
4896      if (this.goal == null)
4897        this.goal = new ArrayList<Reference>();
4898      this.goal.add(t);
4899      return this;
4900    }
4901
4902    /**
4903     * @return The first repetition of repeating field {@link #goal}, creating it if it does not already exist {3}
4904     */
4905    public Reference getGoalFirstRep() { 
4906      if (getGoal().isEmpty()) {
4907        addGoal();
4908      }
4909      return getGoal().get(0);
4910    }
4911
4912    /**
4913     * @return {@link #note} (Provides a mechanism to communicate additional information about the response.)
4914     */
4915    public List<Annotation> getNote() { 
4916      if (this.note == null)
4917        this.note = new ArrayList<Annotation>();
4918      return this.note;
4919    }
4920
4921    /**
4922     * @return Returns a reference to <code>this</code> for easy method chaining
4923     */
4924    public RequestOrchestration setNote(List<Annotation> theNote) { 
4925      this.note = theNote;
4926      return this;
4927    }
4928
4929    public boolean hasNote() { 
4930      if (this.note == null)
4931        return false;
4932      for (Annotation item : this.note)
4933        if (!item.isEmpty())
4934          return true;
4935      return false;
4936    }
4937
4938    public Annotation addNote() { //3
4939      Annotation t = new Annotation();
4940      if (this.note == null)
4941        this.note = new ArrayList<Annotation>();
4942      this.note.add(t);
4943      return t;
4944    }
4945
4946    public RequestOrchestration addNote(Annotation t) { //3
4947      if (t == null)
4948        return this;
4949      if (this.note == null)
4950        this.note = new ArrayList<Annotation>();
4951      this.note.add(t);
4952      return this;
4953    }
4954
4955    /**
4956     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
4957     */
4958    public Annotation getNoteFirstRep() { 
4959      if (getNote().isEmpty()) {
4960        addNote();
4961      }
4962      return getNote().get(0);
4963    }
4964
4965    /**
4966     * @return {@link #action} (The actions, if any, produced by the evaluation of the artifact.)
4967     */
4968    public List<RequestOrchestrationActionComponent> getAction() { 
4969      if (this.action == null)
4970        this.action = new ArrayList<RequestOrchestrationActionComponent>();
4971      return this.action;
4972    }
4973
4974    /**
4975     * @return Returns a reference to <code>this</code> for easy method chaining
4976     */
4977    public RequestOrchestration setAction(List<RequestOrchestrationActionComponent> theAction) { 
4978      this.action = theAction;
4979      return this;
4980    }
4981
4982    public boolean hasAction() { 
4983      if (this.action == null)
4984        return false;
4985      for (RequestOrchestrationActionComponent item : this.action)
4986        if (!item.isEmpty())
4987          return true;
4988      return false;
4989    }
4990
4991    public RequestOrchestrationActionComponent addAction() { //3
4992      RequestOrchestrationActionComponent t = new RequestOrchestrationActionComponent();
4993      if (this.action == null)
4994        this.action = new ArrayList<RequestOrchestrationActionComponent>();
4995      this.action.add(t);
4996      return t;
4997    }
4998
4999    public RequestOrchestration addAction(RequestOrchestrationActionComponent t) { //3
5000      if (t == null)
5001        return this;
5002      if (this.action == null)
5003        this.action = new ArrayList<RequestOrchestrationActionComponent>();
5004      this.action.add(t);
5005      return this;
5006    }
5007
5008    /**
5009     * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
5010     */
5011    public RequestOrchestrationActionComponent getActionFirstRep() { 
5012      if (getAction().isEmpty()) {
5013        addAction();
5014      }
5015      return getAction().get(0);
5016    }
5017
5018      protected void listChildren(List<Property> children) {
5019        super.listChildren(children);
5020        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));
5021        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));
5022        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));
5023        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));
5024        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));
5025        children.add(new Property("groupIdentifier", "Identifier", "A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form.", 0, 1, groupIdentifier));
5026        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));
5027        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));
5028        children.add(new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority));
5029        children.add(new Property("code", "CodeableConcept", "A code that identifies what the overall request orchestration is.", 0, 1, code));
5030        children.add(new Property("subject", "Reference(Patient|Group)", "The subject for which the request orchestration was created.", 0, 1, subject));
5031        children.add(new Property("encounter", "Reference(Encounter)", "Describes the context of the request orchestration, if any.", 0, 1, encounter));
5032        children.add(new Property("authoredOn", "dateTime", "Indicates when the request orchestration was created.", 0, 1, authoredOn));
5033        children.add(new Property("author", "Reference(Device|Practitioner|PractitionerRole)", "Provides a reference to the author of the request orchestration.", 0, 1, author));
5034        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));
5035        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));
5036        children.add(new Property("note", "Annotation", "Provides a mechanism to communicate additional information about the response.", 0, java.lang.Integer.MAX_VALUE, note));
5037        children.add(new Property("action", "", "The actions, if any, produced by the evaluation of the artifact.", 0, java.lang.Integer.MAX_VALUE, action));
5038      }
5039
5040      @Override
5041      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5042        switch (_hash) {
5043        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);
5044        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);
5045        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);
5046        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);
5047        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);
5048        case -445338488: /*groupIdentifier*/  return new Property("groupIdentifier", "Identifier", "A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form.", 0, 1, groupIdentifier);
5049        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);
5050        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);
5051        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority);
5052        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A code that identifies what the overall request orchestration is.", 0, 1, code);
5053        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The subject for which the request orchestration was created.", 0, 1, subject);
5054        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "Describes the context of the request orchestration, if any.", 0, 1, encounter);
5055        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "Indicates when the request orchestration was created.", 0, 1, authoredOn);
5056        case -1406328437: /*author*/  return new Property("author", "Reference(Device|Practitioner|PractitionerRole)", "Provides a reference to the author of the request orchestration.", 0, 1, author);
5057        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);
5058        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);
5059        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);
5060        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);
5061        default: return super.getNamedProperty(_hash, _name, _checkValid);
5062        }
5063
5064      }
5065
5066      @Override
5067      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5068        switch (hash) {
5069        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
5070        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
5071        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
5072        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
5073        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // Reference
5074        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
5075        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
5076        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
5077        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
5078        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
5079        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
5080        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
5081        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
5082        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
5083        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
5084        case 3178259: /*goal*/ return this.goal == null ? new Base[0] : this.goal.toArray(new Base[this.goal.size()]); // Reference
5085        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
5086        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // RequestOrchestrationActionComponent
5087        default: return super.getProperty(hash, name, checkValid);
5088        }
5089
5090      }
5091
5092      @Override
5093      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5094        switch (hash) {
5095        case -1618432855: // identifier
5096          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
5097          return value;
5098        case 8911915: // instantiatesCanonical
5099          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
5100          return value;
5101        case -1926393373: // instantiatesUri
5102          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
5103          return value;
5104        case -332612366: // basedOn
5105          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
5106          return value;
5107        case -430332865: // replaces
5108          this.getReplaces().add(TypeConvertor.castToReference(value)); // Reference
5109          return value;
5110        case -445338488: // groupIdentifier
5111          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5112          return value;
5113        case -892481550: // status
5114          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5115          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5116          return value;
5117        case -1183762788: // intent
5118          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5119          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5120          return value;
5121        case -1165461084: // priority
5122          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5123          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5124          return value;
5125        case 3059181: // code
5126          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5127          return value;
5128        case -1867885268: // subject
5129          this.subject = TypeConvertor.castToReference(value); // Reference
5130          return value;
5131        case 1524132147: // encounter
5132          this.encounter = TypeConvertor.castToReference(value); // Reference
5133          return value;
5134        case -1500852503: // authoredOn
5135          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
5136          return value;
5137        case -1406328437: // author
5138          this.author = TypeConvertor.castToReference(value); // Reference
5139          return value;
5140        case -934964668: // reason
5141          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
5142          return value;
5143        case 3178259: // goal
5144          this.getGoal().add(TypeConvertor.castToReference(value)); // Reference
5145          return value;
5146        case 3387378: // note
5147          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
5148          return value;
5149        case -1422950858: // action
5150          this.getAction().add((RequestOrchestrationActionComponent) value); // RequestOrchestrationActionComponent
5151          return value;
5152        default: return super.setProperty(hash, name, value);
5153        }
5154
5155      }
5156
5157      @Override
5158      public Base setProperty(String name, Base value) throws FHIRException {
5159        if (name.equals("identifier")) {
5160          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
5161        } else if (name.equals("instantiatesCanonical")) {
5162          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
5163        } else if (name.equals("instantiatesUri")) {
5164          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
5165        } else if (name.equals("basedOn")) {
5166          this.getBasedOn().add(TypeConvertor.castToReference(value));
5167        } else if (name.equals("replaces")) {
5168          this.getReplaces().add(TypeConvertor.castToReference(value));
5169        } else if (name.equals("groupIdentifier")) {
5170          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5171        } else if (name.equals("status")) {
5172          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5173          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5174        } else if (name.equals("intent")) {
5175          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5176          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5177        } else if (name.equals("priority")) {
5178          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5179          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5180        } else if (name.equals("code")) {
5181          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5182        } else if (name.equals("subject")) {
5183          this.subject = TypeConvertor.castToReference(value); // Reference
5184        } else if (name.equals("encounter")) {
5185          this.encounter = TypeConvertor.castToReference(value); // Reference
5186        } else if (name.equals("authoredOn")) {
5187          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
5188        } else if (name.equals("author")) {
5189          this.author = TypeConvertor.castToReference(value); // Reference
5190        } else if (name.equals("reason")) {
5191          this.getReason().add(TypeConvertor.castToCodeableReference(value));
5192        } else if (name.equals("goal")) {
5193          this.getGoal().add(TypeConvertor.castToReference(value));
5194        } else if (name.equals("note")) {
5195          this.getNote().add(TypeConvertor.castToAnnotation(value));
5196        } else if (name.equals("action")) {
5197          this.getAction().add((RequestOrchestrationActionComponent) value);
5198        } else
5199          return super.setProperty(name, value);
5200        return value;
5201      }
5202
5203      @Override
5204      public Base makeProperty(int hash, String name) throws FHIRException {
5205        switch (hash) {
5206        case -1618432855:  return addIdentifier(); 
5207        case 8911915:  return addInstantiatesCanonicalElement();
5208        case -1926393373:  return addInstantiatesUriElement();
5209        case -332612366:  return addBasedOn(); 
5210        case -430332865:  return addReplaces(); 
5211        case -445338488:  return getGroupIdentifier();
5212        case -892481550:  return getStatusElement();
5213        case -1183762788:  return getIntentElement();
5214        case -1165461084:  return getPriorityElement();
5215        case 3059181:  return getCode();
5216        case -1867885268:  return getSubject();
5217        case 1524132147:  return getEncounter();
5218        case -1500852503:  return getAuthoredOnElement();
5219        case -1406328437:  return getAuthor();
5220        case -934964668:  return addReason(); 
5221        case 3178259:  return addGoal(); 
5222        case 3387378:  return addNote(); 
5223        case -1422950858:  return addAction(); 
5224        default: return super.makeProperty(hash, name);
5225        }
5226
5227      }
5228
5229      @Override
5230      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5231        switch (hash) {
5232        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
5233        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
5234        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
5235        case -332612366: /*basedOn*/ return new String[] {"Reference"};
5236        case -430332865: /*replaces*/ return new String[] {"Reference"};
5237        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
5238        case -892481550: /*status*/ return new String[] {"code"};
5239        case -1183762788: /*intent*/ return new String[] {"code"};
5240        case -1165461084: /*priority*/ return new String[] {"code"};
5241        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
5242        case -1867885268: /*subject*/ return new String[] {"Reference"};
5243        case 1524132147: /*encounter*/ return new String[] {"Reference"};
5244        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
5245        case -1406328437: /*author*/ return new String[] {"Reference"};
5246        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
5247        case 3178259: /*goal*/ return new String[] {"Reference"};
5248        case 3387378: /*note*/ return new String[] {"Annotation"};
5249        case -1422950858: /*action*/ return new String[] {};
5250        default: return super.getTypesForProperty(hash, name);
5251        }
5252
5253      }
5254
5255      @Override
5256      public Base addChild(String name) throws FHIRException {
5257        if (name.equals("identifier")) {
5258          return addIdentifier();
5259        }
5260        else if (name.equals("instantiatesCanonical")) {
5261          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.instantiatesCanonical");
5262        }
5263        else if (name.equals("instantiatesUri")) {
5264          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.instantiatesUri");
5265        }
5266        else if (name.equals("basedOn")) {
5267          return addBasedOn();
5268        }
5269        else if (name.equals("replaces")) {
5270          return addReplaces();
5271        }
5272        else if (name.equals("groupIdentifier")) {
5273          this.groupIdentifier = new Identifier();
5274          return this.groupIdentifier;
5275        }
5276        else if (name.equals("status")) {
5277          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.status");
5278        }
5279        else if (name.equals("intent")) {
5280          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.intent");
5281        }
5282        else if (name.equals("priority")) {
5283          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.priority");
5284        }
5285        else if (name.equals("code")) {
5286          this.code = new CodeableConcept();
5287          return this.code;
5288        }
5289        else if (name.equals("subject")) {
5290          this.subject = new Reference();
5291          return this.subject;
5292        }
5293        else if (name.equals("encounter")) {
5294          this.encounter = new Reference();
5295          return this.encounter;
5296        }
5297        else if (name.equals("authoredOn")) {
5298          throw new FHIRException("Cannot call addChild on a primitive type RequestOrchestration.authoredOn");
5299        }
5300        else if (name.equals("author")) {
5301          this.author = new Reference();
5302          return this.author;
5303        }
5304        else if (name.equals("reason")) {
5305          return addReason();
5306        }
5307        else if (name.equals("goal")) {
5308          return addGoal();
5309        }
5310        else if (name.equals("note")) {
5311          return addNote();
5312        }
5313        else if (name.equals("action")) {
5314          return addAction();
5315        }
5316        else
5317          return super.addChild(name);
5318      }
5319
5320  public String fhirType() {
5321    return "RequestOrchestration";
5322
5323  }
5324
5325      public RequestOrchestration copy() {
5326        RequestOrchestration dst = new RequestOrchestration();
5327        copyValues(dst);
5328        return dst;
5329      }
5330
5331      public void copyValues(RequestOrchestration dst) {
5332        super.copyValues(dst);
5333        if (identifier != null) {
5334          dst.identifier = new ArrayList<Identifier>();
5335          for (Identifier i : identifier)
5336            dst.identifier.add(i.copy());
5337        };
5338        if (instantiatesCanonical != null) {
5339          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
5340          for (CanonicalType i : instantiatesCanonical)
5341            dst.instantiatesCanonical.add(i.copy());
5342        };
5343        if (instantiatesUri != null) {
5344          dst.instantiatesUri = new ArrayList<UriType>();
5345          for (UriType i : instantiatesUri)
5346            dst.instantiatesUri.add(i.copy());
5347        };
5348        if (basedOn != null) {
5349          dst.basedOn = new ArrayList<Reference>();
5350          for (Reference i : basedOn)
5351            dst.basedOn.add(i.copy());
5352        };
5353        if (replaces != null) {
5354          dst.replaces = new ArrayList<Reference>();
5355          for (Reference i : replaces)
5356            dst.replaces.add(i.copy());
5357        };
5358        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
5359        dst.status = status == null ? null : status.copy();
5360        dst.intent = intent == null ? null : intent.copy();
5361        dst.priority = priority == null ? null : priority.copy();
5362        dst.code = code == null ? null : code.copy();
5363        dst.subject = subject == null ? null : subject.copy();
5364        dst.encounter = encounter == null ? null : encounter.copy();
5365        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
5366        dst.author = author == null ? null : author.copy();
5367        if (reason != null) {
5368          dst.reason = new ArrayList<CodeableReference>();
5369          for (CodeableReference i : reason)
5370            dst.reason.add(i.copy());
5371        };
5372        if (goal != null) {
5373          dst.goal = new ArrayList<Reference>();
5374          for (Reference i : goal)
5375            dst.goal.add(i.copy());
5376        };
5377        if (note != null) {
5378          dst.note = new ArrayList<Annotation>();
5379          for (Annotation i : note)
5380            dst.note.add(i.copy());
5381        };
5382        if (action != null) {
5383          dst.action = new ArrayList<RequestOrchestrationActionComponent>();
5384          for (RequestOrchestrationActionComponent i : action)
5385            dst.action.add(i.copy());
5386        };
5387      }
5388
5389      protected RequestOrchestration typedCopy() {
5390        return copy();
5391      }
5392
5393      @Override
5394      public boolean equalsDeep(Base other_) {
5395        if (!super.equalsDeep(other_))
5396          return false;
5397        if (!(other_ instanceof RequestOrchestration))
5398          return false;
5399        RequestOrchestration o = (RequestOrchestration) other_;
5400        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
5401           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
5402           && compareDeep(replaces, o.replaces, true) && compareDeep(groupIdentifier, o.groupIdentifier, true)
5403           && compareDeep(status, o.status, true) && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
5404           && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true)
5405           && compareDeep(authoredOn, o.authoredOn, true) && compareDeep(author, o.author, true) && compareDeep(reason, o.reason, true)
5406           && compareDeep(goal, o.goal, true) && compareDeep(note, o.note, true) && compareDeep(action, o.action, true)
5407          ;
5408      }
5409
5410      @Override
5411      public boolean equalsShallow(Base other_) {
5412        if (!super.equalsShallow(other_))
5413          return false;
5414        if (!(other_ instanceof RequestOrchestration))
5415          return false;
5416        RequestOrchestration o = (RequestOrchestration) other_;
5417        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
5418           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
5419           && compareValues(authoredOn, o.authoredOn, true);
5420      }
5421
5422      public boolean isEmpty() {
5423        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
5424          , instantiatesUri, basedOn, replaces, groupIdentifier, status, intent, priority
5425          , code, subject, encounter, authoredOn, author, reason, goal, note, action
5426          );
5427      }
5428
5429  @Override
5430  public ResourceType getResourceType() {
5431    return ResourceType.RequestOrchestration;
5432   }
5433
5434 /**
5435   * Search parameter: <b>author</b>
5436   * <p>
5437   * Description: <b>The author of the request orchestration</b><br>
5438   * Type: <b>reference</b><br>
5439   * Path: <b>RequestOrchestration.author</b><br>
5440   * </p>
5441   */
5442  @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 } )
5443  public static final String SP_AUTHOR = "author";
5444 /**
5445   * <b>Fluent Client</b> search parameter constant for <b>author</b>
5446   * <p>
5447   * Description: <b>The author of the request orchestration</b><br>
5448   * Type: <b>reference</b><br>
5449   * Path: <b>RequestOrchestration.author</b><br>
5450   * </p>
5451   */
5452  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
5453
5454/**
5455   * Constant for fluent queries to be used to add include statements. Specifies
5456   * the path value of "<b>RequestOrchestration:author</b>".
5457   */
5458  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("RequestOrchestration:author").toLocked();
5459
5460 /**
5461   * Search parameter: <b>authored</b>
5462   * <p>
5463   * Description: <b>The date the request orchestration was authored</b><br>
5464   * Type: <b>date</b><br>
5465   * Path: <b>RequestOrchestration.authoredOn</b><br>
5466   * </p>
5467   */
5468  @SearchParamDefinition(name="authored", path="RequestOrchestration.authoredOn", description="The date the request orchestration was authored", type="date" )
5469  public static final String SP_AUTHORED = "authored";
5470 /**
5471   * <b>Fluent Client</b> search parameter constant for <b>authored</b>
5472   * <p>
5473   * Description: <b>The date the request orchestration was authored</b><br>
5474   * Type: <b>date</b><br>
5475   * Path: <b>RequestOrchestration.authoredOn</b><br>
5476   * </p>
5477   */
5478  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED);
5479
5480 /**
5481   * Search parameter: <b>code</b>
5482   * <p>
5483   * Description: <b>The code of the request orchestration</b><br>
5484   * Type: <b>token</b><br>
5485   * Path: <b>RequestOrchestration.code</b><br>
5486   * </p>
5487   */
5488  @SearchParamDefinition(name="code", path="RequestOrchestration.code", description="The code of the request orchestration", type="token" )
5489  public static final String SP_CODE = "code";
5490 /**
5491   * <b>Fluent Client</b> search parameter constant for <b>code</b>
5492   * <p>
5493   * Description: <b>The code of the request orchestration</b><br>
5494   * Type: <b>token</b><br>
5495   * Path: <b>RequestOrchestration.code</b><br>
5496   * </p>
5497   */
5498  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
5499
5500 /**
5501   * Search parameter: <b>encounter</b>
5502   * <p>
5503   * Description: <b>The encounter the request orchestration applies to</b><br>
5504   * Type: <b>reference</b><br>
5505   * Path: <b>RequestOrchestration.encounter</b><br>
5506   * </p>
5507   */
5508  @SearchParamDefinition(name="encounter", path="RequestOrchestration.encounter", description="The encounter the request orchestration applies to", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
5509  public static final String SP_ENCOUNTER = "encounter";
5510 /**
5511   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
5512   * <p>
5513   * Description: <b>The encounter the request orchestration applies to</b><br>
5514   * Type: <b>reference</b><br>
5515   * Path: <b>RequestOrchestration.encounter</b><br>
5516   * </p>
5517   */
5518  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
5519
5520/**
5521   * Constant for fluent queries to be used to add include statements. Specifies
5522   * the path value of "<b>RequestOrchestration:encounter</b>".
5523   */
5524  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("RequestOrchestration:encounter").toLocked();
5525
5526 /**
5527   * Search parameter: <b>group-identifier</b>
5528   * <p>
5529   * Description: <b>The group identifier for the request orchestration</b><br>
5530   * Type: <b>token</b><br>
5531   * Path: <b>RequestOrchestration.groupIdentifier</b><br>
5532   * </p>
5533   */
5534  @SearchParamDefinition(name="group-identifier", path="RequestOrchestration.groupIdentifier", description="The group identifier for the request orchestration", type="token" )
5535  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
5536 /**
5537   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
5538   * <p>
5539   * Description: <b>The group identifier for the request orchestration</b><br>
5540   * Type: <b>token</b><br>
5541   * Path: <b>RequestOrchestration.groupIdentifier</b><br>
5542   * </p>
5543   */
5544  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
5545
5546 /**
5547   * Search parameter: <b>identifier</b>
5548   * <p>
5549   * Description: <b>External identifiers for the request orchestration</b><br>
5550   * Type: <b>token</b><br>
5551   * Path: <b>RequestOrchestration.identifier</b><br>
5552   * </p>
5553   */
5554  @SearchParamDefinition(name="identifier", path="RequestOrchestration.identifier", description="External identifiers for the request orchestration", type="token" )
5555  public static final String SP_IDENTIFIER = "identifier";
5556 /**
5557   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5558   * <p>
5559   * Description: <b>External identifiers for the request orchestration</b><br>
5560   * Type: <b>token</b><br>
5561   * Path: <b>RequestOrchestration.identifier</b><br>
5562   * </p>
5563   */
5564  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5565
5566 /**
5567   * Search parameter: <b>instantiates-canonical</b>
5568   * <p>
5569   * Description: <b>The FHIR-based definition from which the request orchestration is realized</b><br>
5570   * Type: <b>reference</b><br>
5571   * Path: <b>RequestOrchestration.instantiatesCanonical</b><br>
5572   * </p>
5573   */
5574  @SearchParamDefinition(name="instantiates-canonical", path="RequestOrchestration.instantiatesCanonical", description="The FHIR-based definition from which the request orchestration is realized", type="reference" )
5575  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
5576 /**
5577   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
5578   * <p>
5579   * Description: <b>The FHIR-based definition from which the request orchestration is realized</b><br>
5580   * Type: <b>reference</b><br>
5581   * Path: <b>RequestOrchestration.instantiatesCanonical</b><br>
5582   * </p>
5583   */
5584  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
5585
5586/**
5587   * Constant for fluent queries to be used to add include statements. Specifies
5588   * the path value of "<b>RequestOrchestration:instantiates-canonical</b>".
5589   */
5590  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("RequestOrchestration:instantiates-canonical").toLocked();
5591
5592 /**
5593   * Search parameter: <b>instantiates-uri</b>
5594   * <p>
5595   * Description: <b>The external definition from which the request orchestration is realized</b><br>
5596   * Type: <b>uri</b><br>
5597   * Path: <b>RequestOrchestration.instantiatesUri</b><br>
5598   * </p>
5599   */
5600  @SearchParamDefinition(name="instantiates-uri", path="RequestOrchestration.instantiatesUri", description="The external definition from which the request orchestration is realized", type="uri" )
5601  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
5602 /**
5603   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
5604   * <p>
5605   * Description: <b>The external definition from which the request orchestration is realized</b><br>
5606   * Type: <b>uri</b><br>
5607   * Path: <b>RequestOrchestration.instantiatesUri</b><br>
5608   * </p>
5609   */
5610  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
5611
5612 /**
5613   * Search parameter: <b>intent</b>
5614   * <p>
5615   * Description: <b>The intent of the request orchestration</b><br>
5616   * Type: <b>token</b><br>
5617   * Path: <b>RequestOrchestration.intent</b><br>
5618   * </p>
5619   */
5620  @SearchParamDefinition(name="intent", path="RequestOrchestration.intent", description="The intent of the request orchestration", type="token" )
5621  public static final String SP_INTENT = "intent";
5622 /**
5623   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
5624   * <p>
5625   * Description: <b>The intent of the request orchestration</b><br>
5626   * Type: <b>token</b><br>
5627   * Path: <b>RequestOrchestration.intent</b><br>
5628   * </p>
5629   */
5630  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
5631
5632 /**
5633   * Search parameter: <b>participant</b>
5634   * <p>
5635   * Description: <b>The participant in the requests in the orchestration</b><br>
5636   * Type: <b>reference</b><br>
5637   * Path: <b>RequestOrchestration.action.participant.actor.as(Reference) | RequestOrchestration.action.participant.actor.as(canonical)</b><br>
5638   * </p>
5639   */
5640  @SearchParamDefinition(name="participant", path="RequestOrchestration.action.participant.actor.as(Reference) | RequestOrchestration.action.participant.actor.as(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 } )
5641  public static final String SP_PARTICIPANT = "participant";
5642 /**
5643   * <b>Fluent Client</b> search parameter constant for <b>participant</b>
5644   * <p>
5645   * Description: <b>The participant in the requests in the orchestration</b><br>
5646   * Type: <b>reference</b><br>
5647   * Path: <b>RequestOrchestration.action.participant.actor.as(Reference) | RequestOrchestration.action.participant.actor.as(canonical)</b><br>
5648   * </p>
5649   */
5650  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTICIPANT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARTICIPANT);
5651
5652/**
5653   * Constant for fluent queries to be used to add include statements. Specifies
5654   * the path value of "<b>RequestOrchestration:participant</b>".
5655   */
5656  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTICIPANT = new ca.uhn.fhir.model.api.Include("RequestOrchestration:participant").toLocked();
5657
5658 /**
5659   * Search parameter: <b>patient</b>
5660   * <p>
5661   * Description: <b>The identity of a patient to search for request orchestrations</b><br>
5662   * Type: <b>reference</b><br>
5663   * Path: <b>RequestOrchestration.subject.where(resolve() is Patient)</b><br>
5664   * </p>
5665   */
5666  @SearchParamDefinition(name="patient", path="RequestOrchestration.subject.where(resolve() is Patient)", description="The identity of a patient to search for request orchestrations", type="reference", target={Patient.class } )
5667  public static final String SP_PATIENT = "patient";
5668 /**
5669   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
5670   * <p>
5671   * Description: <b>The identity of a patient to search for request orchestrations</b><br>
5672   * Type: <b>reference</b><br>
5673   * Path: <b>RequestOrchestration.subject.where(resolve() is Patient)</b><br>
5674   * </p>
5675   */
5676  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
5677
5678/**
5679   * Constant for fluent queries to be used to add include statements. Specifies
5680   * the path value of "<b>RequestOrchestration:patient</b>".
5681   */
5682  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("RequestOrchestration:patient").toLocked();
5683
5684 /**
5685   * Search parameter: <b>priority</b>
5686   * <p>
5687   * Description: <b>The priority of the request orchestration</b><br>
5688   * Type: <b>token</b><br>
5689   * Path: <b>RequestOrchestration.priority</b><br>
5690   * </p>
5691   */
5692  @SearchParamDefinition(name="priority", path="RequestOrchestration.priority", description="The priority of the request orchestration", type="token" )
5693  public static final String SP_PRIORITY = "priority";
5694 /**
5695   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
5696   * <p>
5697   * Description: <b>The priority of the request orchestration</b><br>
5698   * Type: <b>token</b><br>
5699   * Path: <b>RequestOrchestration.priority</b><br>
5700   * </p>
5701   */
5702  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
5703
5704 /**
5705   * Search parameter: <b>status</b>
5706   * <p>
5707   * Description: <b>The status of the request orchestration</b><br>
5708   * Type: <b>token</b><br>
5709   * Path: <b>RequestOrchestration.status</b><br>
5710   * </p>
5711   */
5712  @SearchParamDefinition(name="status", path="RequestOrchestration.status", description="The status of the request orchestration", type="token" )
5713  public static final String SP_STATUS = "status";
5714 /**
5715   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5716   * <p>
5717   * Description: <b>The status of the request orchestration</b><br>
5718   * Type: <b>token</b><br>
5719   * Path: <b>RequestOrchestration.status</b><br>
5720   * </p>
5721   */
5722  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5723
5724 /**
5725   * Search parameter: <b>subject</b>
5726   * <p>
5727   * Description: <b>The subject that the request orchestration is about</b><br>
5728   * Type: <b>reference</b><br>
5729   * Path: <b>RequestOrchestration.subject</b><br>
5730   * </p>
5731   */
5732  @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={Group.class, Patient.class } )
5733  public static final String SP_SUBJECT = "subject";
5734 /**
5735   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
5736   * <p>
5737   * Description: <b>The subject that the request orchestration is about</b><br>
5738   * Type: <b>reference</b><br>
5739   * Path: <b>RequestOrchestration.subject</b><br>
5740   * </p>
5741   */
5742  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
5743
5744/**
5745   * Constant for fluent queries to be used to add include statements. Specifies
5746   * the path value of "<b>RequestOrchestration:subject</b>".
5747   */
5748  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("RequestOrchestration:subject").toLocked();
5749
5750
5751}
5752