001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Thu, Sep 13, 2018 09:04-0400 for FHIR v3.5.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import ca.uhn.fhir.model.api.annotation.ResourceDef;
038import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.ChildOrder;
041import ca.uhn.fhir.model.api.annotation.Description;
042import ca.uhn.fhir.model.api.annotation.Block;
043import org.hl7.fhir.instance.model.api.*;
044import org.hl7.fhir.exceptions.FHIRException;
045/**
046 * A group of related requests that can be used to capture intended activities that have inter-dependencies such as "give this medication after that one".
047 */
048@ResourceDef(name="RequestGroup", profile="http://hl7.org/fhir/StructureDefinition/RequestGroup")
049public class RequestGroup extends DomainResource {
050
051    public enum RequestStatus {
052        /**
053         * The request has been created but is not yet complete or ready for action.
054         */
055        DRAFT, 
056        /**
057         * The request is in force and ready to be acted upon.
058         */
059        ACTIVE, 
060        /**
061         * The authorization/request to act has been temporarily withdrawn but is expected to resume in the future.
062         */
063        ONHOLD, 
064        /**
065         * The authorization/request to act has been terminated prior to the known full completion of the intended actions.  No further activity should occur.
066         */
067        REVOKED, 
068        /**
069         * Activity against the request has been sufficiently completed to the satisfaction of the requester.
070         */
071        COMPLETED, 
072        /**
073         * This electronic record should never have existed, though it is possible that real-world decisions were based on it.  (If real-world activity has occurred, the status should be "cancelled" rather than "entered-in-error".).
074         */
075        ENTEREDINERROR, 
076        /**
077         * The authoring system does not know which of the status values currently applies for this request.  Note: This concept is not to be used for "other" . One of the listed statuses is presumed to apply,  but the system creating the request does not know.
078         */
079        UNKNOWN, 
080        /**
081         * added to help the parsers with the generic types
082         */
083        NULL;
084        public static RequestStatus fromCode(String codeString) throws FHIRException {
085            if (codeString == null || "".equals(codeString))
086                return null;
087        if ("draft".equals(codeString))
088          return DRAFT;
089        if ("active".equals(codeString))
090          return ACTIVE;
091        if ("on-hold".equals(codeString))
092          return ONHOLD;
093        if ("revoked".equals(codeString))
094          return REVOKED;
095        if ("completed".equals(codeString))
096          return COMPLETED;
097        if ("entered-in-error".equals(codeString))
098          return ENTEREDINERROR;
099        if ("unknown".equals(codeString))
100          return UNKNOWN;
101        if (Configuration.isAcceptInvalidEnums())
102          return null;
103        else
104          throw new FHIRException("Unknown RequestStatus code '"+codeString+"'");
105        }
106        public String toCode() {
107          switch (this) {
108            case DRAFT: return "draft";
109            case ACTIVE: return "active";
110            case ONHOLD: return "on-hold";
111            case REVOKED: return "revoked";
112            case COMPLETED: return "completed";
113            case ENTEREDINERROR: return "entered-in-error";
114            case UNKNOWN: return "unknown";
115            default: return "?";
116          }
117        }
118        public String getSystem() {
119          switch (this) {
120            case DRAFT: return "http://hl7.org/fhir/request-status";
121            case ACTIVE: return "http://hl7.org/fhir/request-status";
122            case ONHOLD: return "http://hl7.org/fhir/request-status";
123            case REVOKED: return "http://hl7.org/fhir/request-status";
124            case COMPLETED: return "http://hl7.org/fhir/request-status";
125            case ENTEREDINERROR: return "http://hl7.org/fhir/request-status";
126            case UNKNOWN: return "http://hl7.org/fhir/request-status";
127            default: return "?";
128          }
129        }
130        public String getDefinition() {
131          switch (this) {
132            case DRAFT: return "The request has been created but is not yet complete or ready for action.";
133            case ACTIVE: return "The request is in force and ready to be acted upon.";
134            case ONHOLD: return "The authorization/request to act has been temporarily withdrawn but is expected to resume in the future.";
135            case REVOKED: return "The authorization/request to act has been terminated prior to the known full completion of the intended actions.  No further activity should occur.";
136            case COMPLETED: return "Activity against the request has been sufficiently completed to the satisfaction of the requester.";
137            case ENTEREDINERROR: return "This electronic record should never have existed, though it is possible that real-world decisions were based on it.  (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".).";
138            case UNKNOWN: return "The authoring system does not know which of the status values currently applies for this request.  Note: This concept is not to be used for \"other\" . One of the listed statuses is presumed to apply,  but the system creating the request does not know.";
139            default: return "?";
140          }
141        }
142        public String getDisplay() {
143          switch (this) {
144            case DRAFT: return "Draft";
145            case ACTIVE: return "Active";
146            case ONHOLD: return "On Hold";
147            case REVOKED: return "Revoked";
148            case COMPLETED: return "Completed";
149            case ENTEREDINERROR: return "Entered in Error";
150            case UNKNOWN: return "Unknown";
151            default: return "?";
152          }
153        }
154    }
155
156  public static class RequestStatusEnumFactory implements EnumFactory<RequestStatus> {
157    public RequestStatus fromCode(String codeString) throws IllegalArgumentException {
158      if (codeString == null || "".equals(codeString))
159            if (codeString == null || "".equals(codeString))
160                return null;
161        if ("draft".equals(codeString))
162          return RequestStatus.DRAFT;
163        if ("active".equals(codeString))
164          return RequestStatus.ACTIVE;
165        if ("on-hold".equals(codeString))
166          return RequestStatus.ONHOLD;
167        if ("revoked".equals(codeString))
168          return RequestStatus.REVOKED;
169        if ("completed".equals(codeString))
170          return RequestStatus.COMPLETED;
171        if ("entered-in-error".equals(codeString))
172          return RequestStatus.ENTEREDINERROR;
173        if ("unknown".equals(codeString))
174          return RequestStatus.UNKNOWN;
175        throw new IllegalArgumentException("Unknown RequestStatus code '"+codeString+"'");
176        }
177        public Enumeration<RequestStatus> fromType(Base code) throws FHIRException {
178          if (code == null)
179            return null;
180          if (code.isEmpty())
181            return new Enumeration<RequestStatus>(this);
182          String codeString = ((PrimitiveType) code).asStringValue();
183          if (codeString == null || "".equals(codeString))
184            return null;
185        if ("draft".equals(codeString))
186          return new Enumeration<RequestStatus>(this, RequestStatus.DRAFT);
187        if ("active".equals(codeString))
188          return new Enumeration<RequestStatus>(this, RequestStatus.ACTIVE);
189        if ("on-hold".equals(codeString))
190          return new Enumeration<RequestStatus>(this, RequestStatus.ONHOLD);
191        if ("revoked".equals(codeString))
192          return new Enumeration<RequestStatus>(this, RequestStatus.REVOKED);
193        if ("completed".equals(codeString))
194          return new Enumeration<RequestStatus>(this, RequestStatus.COMPLETED);
195        if ("entered-in-error".equals(codeString))
196          return new Enumeration<RequestStatus>(this, RequestStatus.ENTEREDINERROR);
197        if ("unknown".equals(codeString))
198          return new Enumeration<RequestStatus>(this, RequestStatus.UNKNOWN);
199        throw new FHIRException("Unknown RequestStatus code '"+codeString+"'");
200        }
201    public String toCode(RequestStatus code) {
202      if (code == RequestStatus.DRAFT)
203        return "draft";
204      if (code == RequestStatus.ACTIVE)
205        return "active";
206      if (code == RequestStatus.ONHOLD)
207        return "on-hold";
208      if (code == RequestStatus.REVOKED)
209        return "revoked";
210      if (code == RequestStatus.COMPLETED)
211        return "completed";
212      if (code == RequestStatus.ENTEREDINERROR)
213        return "entered-in-error";
214      if (code == RequestStatus.UNKNOWN)
215        return "unknown";
216      return "?";
217      }
218    public String toSystem(RequestStatus code) {
219      return code.getSystem();
220      }
221    }
222
223    public enum RequestIntent {
224        /**
225         * The request is a suggestion made by someone/something that does not have an intention to ensure it occurs and without providing an authorization to act.
226         */
227        PROPOSAL, 
228        /**
229         * The request represents an intention to ensure something occurs without providing an authorization for others to act.
230         */
231        PLAN, 
232        /**
233         * The request represents a request/demand and authorization for action.
234         */
235        ORDER, 
236        /**
237         * The request represents an original authorization for action.
238         */
239        ORIGINALORDER, 
240        /**
241         * The request represents an automatically generated supplemental authorization for action based on a parent authorization together with initial results of the action taken against that parent authorization.
242         */
243        REFLEXORDER, 
244        /**
245         * The request represents the view of an authorization instantiated by a fulfilling system representing the details of the fulfiller's intention to act upon a submitted order.
246         */
247        FILLERORDER, 
248        /**
249         * An order created in fulfillment of a broader order that represents the authorization for a single activity occurrence.  E.g. The administration of a single dose of a drug.
250         */
251        INSTANCEORDER, 
252        /**
253         * The request represents a component or option for a RequestGroup that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestGroup]]] for additional information on how this status is used.
254         */
255        OPTION, 
256        /**
257         * added to help the parsers with the generic types
258         */
259        NULL;
260        public static RequestIntent fromCode(String codeString) throws FHIRException {
261            if (codeString == null || "".equals(codeString))
262                return null;
263        if ("proposal".equals(codeString))
264          return PROPOSAL;
265        if ("plan".equals(codeString))
266          return PLAN;
267        if ("order".equals(codeString))
268          return ORDER;
269        if ("original-order".equals(codeString))
270          return ORIGINALORDER;
271        if ("reflex-order".equals(codeString))
272          return REFLEXORDER;
273        if ("filler-order".equals(codeString))
274          return FILLERORDER;
275        if ("instance-order".equals(codeString))
276          return INSTANCEORDER;
277        if ("option".equals(codeString))
278          return OPTION;
279        if (Configuration.isAcceptInvalidEnums())
280          return null;
281        else
282          throw new FHIRException("Unknown RequestIntent code '"+codeString+"'");
283        }
284        public String toCode() {
285          switch (this) {
286            case PROPOSAL: return "proposal";
287            case PLAN: return "plan";
288            case ORDER: return "order";
289            case ORIGINALORDER: return "original-order";
290            case REFLEXORDER: return "reflex-order";
291            case FILLERORDER: return "filler-order";
292            case INSTANCEORDER: return "instance-order";
293            case OPTION: return "option";
294            default: return "?";
295          }
296        }
297        public String getSystem() {
298          switch (this) {
299            case PROPOSAL: return "http://hl7.org/fhir/request-intent";
300            case PLAN: return "http://hl7.org/fhir/request-intent";
301            case ORDER: return "http://hl7.org/fhir/request-intent";
302            case ORIGINALORDER: return "http://hl7.org/fhir/request-intent";
303            case REFLEXORDER: return "http://hl7.org/fhir/request-intent";
304            case FILLERORDER: return "http://hl7.org/fhir/request-intent";
305            case INSTANCEORDER: return "http://hl7.org/fhir/request-intent";
306            case OPTION: return "http://hl7.org/fhir/request-intent";
307            default: return "?";
308          }
309        }
310        public String getDefinition() {
311          switch (this) {
312            case PROPOSAL: return "The request is a suggestion made by someone/something that does not have an intention to ensure it occurs and without providing an authorization to act.";
313            case PLAN: return "The request represents an intention to ensure something occurs without providing an authorization for others to act.";
314            case ORDER: return "The request represents a request/demand and authorization for action.";
315            case ORIGINALORDER: return "The request represents an original authorization for action.";
316            case REFLEXORDER: return "The request represents an automatically generated supplemental authorization for action based on a parent authorization together with initial results of the action taken against that parent authorization.";
317            case FILLERORDER: return "The request represents the view of an authorization instantiated by a fulfilling system representing the details of the fulfiller's intention to act upon a submitted order.";
318            case INSTANCEORDER: return "An order created in fulfillment of a broader order that represents the authorization for a single activity occurrence.  E.g. The administration of a single dose of a drug.";
319            case OPTION: return "The request represents a component or option for a RequestGroup that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestGroup]]] for additional information on how this status is used.";
320            default: return "?";
321          }
322        }
323        public String getDisplay() {
324          switch (this) {
325            case PROPOSAL: return "Proposal";
326            case PLAN: return "Plan";
327            case ORDER: return "Order";
328            case ORIGINALORDER: return "Original Order";
329            case REFLEXORDER: return "Reflex Order";
330            case FILLERORDER: return "Filler Order";
331            case INSTANCEORDER: return "Instance Order";
332            case OPTION: return "Option";
333            default: return "?";
334          }
335        }
336    }
337
338  public static class RequestIntentEnumFactory implements EnumFactory<RequestIntent> {
339    public RequestIntent fromCode(String codeString) throws IllegalArgumentException {
340      if (codeString == null || "".equals(codeString))
341            if (codeString == null || "".equals(codeString))
342                return null;
343        if ("proposal".equals(codeString))
344          return RequestIntent.PROPOSAL;
345        if ("plan".equals(codeString))
346          return RequestIntent.PLAN;
347        if ("order".equals(codeString))
348          return RequestIntent.ORDER;
349        if ("original-order".equals(codeString))
350          return RequestIntent.ORIGINALORDER;
351        if ("reflex-order".equals(codeString))
352          return RequestIntent.REFLEXORDER;
353        if ("filler-order".equals(codeString))
354          return RequestIntent.FILLERORDER;
355        if ("instance-order".equals(codeString))
356          return RequestIntent.INSTANCEORDER;
357        if ("option".equals(codeString))
358          return RequestIntent.OPTION;
359        throw new IllegalArgumentException("Unknown RequestIntent code '"+codeString+"'");
360        }
361        public Enumeration<RequestIntent> fromType(Base code) throws FHIRException {
362          if (code == null)
363            return null;
364          if (code.isEmpty())
365            return new Enumeration<RequestIntent>(this);
366          String codeString = ((PrimitiveType) code).asStringValue();
367          if (codeString == null || "".equals(codeString))
368            return null;
369        if ("proposal".equals(codeString))
370          return new Enumeration<RequestIntent>(this, RequestIntent.PROPOSAL);
371        if ("plan".equals(codeString))
372          return new Enumeration<RequestIntent>(this, RequestIntent.PLAN);
373        if ("order".equals(codeString))
374          return new Enumeration<RequestIntent>(this, RequestIntent.ORDER);
375        if ("original-order".equals(codeString))
376          return new Enumeration<RequestIntent>(this, RequestIntent.ORIGINALORDER);
377        if ("reflex-order".equals(codeString))
378          return new Enumeration<RequestIntent>(this, RequestIntent.REFLEXORDER);
379        if ("filler-order".equals(codeString))
380          return new Enumeration<RequestIntent>(this, RequestIntent.FILLERORDER);
381        if ("instance-order".equals(codeString))
382          return new Enumeration<RequestIntent>(this, RequestIntent.INSTANCEORDER);
383        if ("option".equals(codeString))
384          return new Enumeration<RequestIntent>(this, RequestIntent.OPTION);
385        throw new FHIRException("Unknown RequestIntent code '"+codeString+"'");
386        }
387    public String toCode(RequestIntent code) {
388      if (code == RequestIntent.PROPOSAL)
389        return "proposal";
390      if (code == RequestIntent.PLAN)
391        return "plan";
392      if (code == RequestIntent.ORDER)
393        return "order";
394      if (code == RequestIntent.ORIGINALORDER)
395        return "original-order";
396      if (code == RequestIntent.REFLEXORDER)
397        return "reflex-order";
398      if (code == RequestIntent.FILLERORDER)
399        return "filler-order";
400      if (code == RequestIntent.INSTANCEORDER)
401        return "instance-order";
402      if (code == RequestIntent.OPTION)
403        return "option";
404      return "?";
405      }
406    public String toSystem(RequestIntent code) {
407      return code.getSystem();
408      }
409    }
410
411    public enum RequestPriority {
412        /**
413         * The request has normal priority.
414         */
415        ROUTINE, 
416        /**
417         * The request should be actioned promptly - higher priority than routine.
418         */
419        URGENT, 
420        /**
421         * The request should be actioned as soon as possible - higher priority than urgent.
422         */
423        ASAP, 
424        /**
425         * The request should be actioned immediately - highest possible priority.  E.g. an emergency.
426         */
427        STAT, 
428        /**
429         * added to help the parsers with the generic types
430         */
431        NULL;
432        public static RequestPriority fromCode(String codeString) throws FHIRException {
433            if (codeString == null || "".equals(codeString))
434                return null;
435        if ("routine".equals(codeString))
436          return ROUTINE;
437        if ("urgent".equals(codeString))
438          return URGENT;
439        if ("asap".equals(codeString))
440          return ASAP;
441        if ("stat".equals(codeString))
442          return STAT;
443        if (Configuration.isAcceptInvalidEnums())
444          return null;
445        else
446          throw new FHIRException("Unknown RequestPriority code '"+codeString+"'");
447        }
448        public String toCode() {
449          switch (this) {
450            case ROUTINE: return "routine";
451            case URGENT: return "urgent";
452            case ASAP: return "asap";
453            case STAT: return "stat";
454            default: return "?";
455          }
456        }
457        public String getSystem() {
458          switch (this) {
459            case ROUTINE: return "http://hl7.org/fhir/request-priority";
460            case URGENT: return "http://hl7.org/fhir/request-priority";
461            case ASAP: return "http://hl7.org/fhir/request-priority";
462            case STAT: return "http://hl7.org/fhir/request-priority";
463            default: return "?";
464          }
465        }
466        public String getDefinition() {
467          switch (this) {
468            case ROUTINE: return "The request has normal priority.";
469            case URGENT: return "The request should be actioned promptly - higher priority than routine.";
470            case ASAP: return "The request should be actioned as soon as possible - higher priority than urgent.";
471            case STAT: return "The request should be actioned immediately - highest possible priority.  E.g. an emergency.";
472            default: return "?";
473          }
474        }
475        public String getDisplay() {
476          switch (this) {
477            case ROUTINE: return "Routine";
478            case URGENT: return "Urgent";
479            case ASAP: return "ASAP";
480            case STAT: return "STAT";
481            default: return "?";
482          }
483        }
484    }
485
486  public static class RequestPriorityEnumFactory implements EnumFactory<RequestPriority> {
487    public RequestPriority fromCode(String codeString) throws IllegalArgumentException {
488      if (codeString == null || "".equals(codeString))
489            if (codeString == null || "".equals(codeString))
490                return null;
491        if ("routine".equals(codeString))
492          return RequestPriority.ROUTINE;
493        if ("urgent".equals(codeString))
494          return RequestPriority.URGENT;
495        if ("asap".equals(codeString))
496          return RequestPriority.ASAP;
497        if ("stat".equals(codeString))
498          return RequestPriority.STAT;
499        throw new IllegalArgumentException("Unknown RequestPriority code '"+codeString+"'");
500        }
501        public Enumeration<RequestPriority> fromType(Base code) throws FHIRException {
502          if (code == null)
503            return null;
504          if (code.isEmpty())
505            return new Enumeration<RequestPriority>(this);
506          String codeString = ((PrimitiveType) code).asStringValue();
507          if (codeString == null || "".equals(codeString))
508            return null;
509        if ("routine".equals(codeString))
510          return new Enumeration<RequestPriority>(this, RequestPriority.ROUTINE);
511        if ("urgent".equals(codeString))
512          return new Enumeration<RequestPriority>(this, RequestPriority.URGENT);
513        if ("asap".equals(codeString))
514          return new Enumeration<RequestPriority>(this, RequestPriority.ASAP);
515        if ("stat".equals(codeString))
516          return new Enumeration<RequestPriority>(this, RequestPriority.STAT);
517        throw new FHIRException("Unknown RequestPriority code '"+codeString+"'");
518        }
519    public String toCode(RequestPriority code) {
520      if (code == RequestPriority.ROUTINE)
521        return "routine";
522      if (code == RequestPriority.URGENT)
523        return "urgent";
524      if (code == RequestPriority.ASAP)
525        return "asap";
526      if (code == RequestPriority.STAT)
527        return "stat";
528      return "?";
529      }
530    public String toSystem(RequestPriority code) {
531      return code.getSystem();
532      }
533    }
534
535    public enum ActionConditionKind {
536        /**
537         * The condition describes whether or not a given action is applicable.
538         */
539        APPLICABILITY, 
540        /**
541         * The condition is a starting condition for the action.
542         */
543        START, 
544        /**
545         * The condition is a stop, or exit condition for the action.
546         */
547        STOP, 
548        /**
549         * added to help the parsers with the generic types
550         */
551        NULL;
552        public static ActionConditionKind fromCode(String codeString) throws FHIRException {
553            if (codeString == null || "".equals(codeString))
554                return null;
555        if ("applicability".equals(codeString))
556          return APPLICABILITY;
557        if ("start".equals(codeString))
558          return START;
559        if ("stop".equals(codeString))
560          return STOP;
561        if (Configuration.isAcceptInvalidEnums())
562          return null;
563        else
564          throw new FHIRException("Unknown ActionConditionKind code '"+codeString+"'");
565        }
566        public String toCode() {
567          switch (this) {
568            case APPLICABILITY: return "applicability";
569            case START: return "start";
570            case STOP: return "stop";
571            default: return "?";
572          }
573        }
574        public String getSystem() {
575          switch (this) {
576            case APPLICABILITY: return "http://hl7.org/fhir/action-condition-kind";
577            case START: return "http://hl7.org/fhir/action-condition-kind";
578            case STOP: return "http://hl7.org/fhir/action-condition-kind";
579            default: return "?";
580          }
581        }
582        public String getDefinition() {
583          switch (this) {
584            case APPLICABILITY: return "The condition describes whether or not a given action is applicable.";
585            case START: return "The condition is a starting condition for the action.";
586            case STOP: return "The condition is a stop, or exit condition for the action.";
587            default: return "?";
588          }
589        }
590        public String getDisplay() {
591          switch (this) {
592            case APPLICABILITY: return "Applicability";
593            case START: return "Start";
594            case STOP: return "Stop";
595            default: return "?";
596          }
597        }
598    }
599
600  public static class ActionConditionKindEnumFactory implements EnumFactory<ActionConditionKind> {
601    public ActionConditionKind fromCode(String codeString) throws IllegalArgumentException {
602      if (codeString == null || "".equals(codeString))
603            if (codeString == null || "".equals(codeString))
604                return null;
605        if ("applicability".equals(codeString))
606          return ActionConditionKind.APPLICABILITY;
607        if ("start".equals(codeString))
608          return ActionConditionKind.START;
609        if ("stop".equals(codeString))
610          return ActionConditionKind.STOP;
611        throw new IllegalArgumentException("Unknown ActionConditionKind code '"+codeString+"'");
612        }
613        public Enumeration<ActionConditionKind> fromType(Base code) throws FHIRException {
614          if (code == null)
615            return null;
616          if (code.isEmpty())
617            return new Enumeration<ActionConditionKind>(this);
618          String codeString = ((PrimitiveType) code).asStringValue();
619          if (codeString == null || "".equals(codeString))
620            return null;
621        if ("applicability".equals(codeString))
622          return new Enumeration<ActionConditionKind>(this, ActionConditionKind.APPLICABILITY);
623        if ("start".equals(codeString))
624          return new Enumeration<ActionConditionKind>(this, ActionConditionKind.START);
625        if ("stop".equals(codeString))
626          return new Enumeration<ActionConditionKind>(this, ActionConditionKind.STOP);
627        throw new FHIRException("Unknown ActionConditionKind code '"+codeString+"'");
628        }
629    public String toCode(ActionConditionKind code) {
630      if (code == ActionConditionKind.APPLICABILITY)
631        return "applicability";
632      if (code == ActionConditionKind.START)
633        return "start";
634      if (code == ActionConditionKind.STOP)
635        return "stop";
636      return "?";
637      }
638    public String toSystem(ActionConditionKind code) {
639      return code.getSystem();
640      }
641    }
642
643    public enum ActionRelationshipType {
644        /**
645         * The action must be performed before the start of the related action.
646         */
647        BEFORESTART, 
648        /**
649         * The action must be performed before the related action.
650         */
651        BEFORE, 
652        /**
653         * The action must be performed before the end of the related action.
654         */
655        BEFOREEND, 
656        /**
657         * The action must be performed concurrent with the start of the related action.
658         */
659        CONCURRENTWITHSTART, 
660        /**
661         * The action must be performed concurrent with the related action.
662         */
663        CONCURRENT, 
664        /**
665         * The action must be performed concurrent with the end of the related action.
666         */
667        CONCURRENTWITHEND, 
668        /**
669         * The action must be performed after the start of the related action.
670         */
671        AFTERSTART, 
672        /**
673         * The action must be performed after the related action.
674         */
675        AFTER, 
676        /**
677         * The action must be performed after the end of the related action.
678         */
679        AFTEREND, 
680        /**
681         * added to help the parsers with the generic types
682         */
683        NULL;
684        public static ActionRelationshipType fromCode(String codeString) throws FHIRException {
685            if (codeString == null || "".equals(codeString))
686                return null;
687        if ("before-start".equals(codeString))
688          return BEFORESTART;
689        if ("before".equals(codeString))
690          return BEFORE;
691        if ("before-end".equals(codeString))
692          return BEFOREEND;
693        if ("concurrent-with-start".equals(codeString))
694          return CONCURRENTWITHSTART;
695        if ("concurrent".equals(codeString))
696          return CONCURRENT;
697        if ("concurrent-with-end".equals(codeString))
698          return CONCURRENTWITHEND;
699        if ("after-start".equals(codeString))
700          return AFTERSTART;
701        if ("after".equals(codeString))
702          return AFTER;
703        if ("after-end".equals(codeString))
704          return AFTEREND;
705        if (Configuration.isAcceptInvalidEnums())
706          return null;
707        else
708          throw new FHIRException("Unknown ActionRelationshipType code '"+codeString+"'");
709        }
710        public String toCode() {
711          switch (this) {
712            case BEFORESTART: return "before-start";
713            case BEFORE: return "before";
714            case BEFOREEND: return "before-end";
715            case CONCURRENTWITHSTART: return "concurrent-with-start";
716            case CONCURRENT: return "concurrent";
717            case CONCURRENTWITHEND: return "concurrent-with-end";
718            case AFTERSTART: return "after-start";
719            case AFTER: return "after";
720            case AFTEREND: return "after-end";
721            default: return "?";
722          }
723        }
724        public String getSystem() {
725          switch (this) {
726            case BEFORESTART: return "http://hl7.org/fhir/action-relationship-type";
727            case BEFORE: return "http://hl7.org/fhir/action-relationship-type";
728            case BEFOREEND: return "http://hl7.org/fhir/action-relationship-type";
729            case CONCURRENTWITHSTART: return "http://hl7.org/fhir/action-relationship-type";
730            case CONCURRENT: return "http://hl7.org/fhir/action-relationship-type";
731            case CONCURRENTWITHEND: return "http://hl7.org/fhir/action-relationship-type";
732            case AFTERSTART: return "http://hl7.org/fhir/action-relationship-type";
733            case AFTER: return "http://hl7.org/fhir/action-relationship-type";
734            case AFTEREND: return "http://hl7.org/fhir/action-relationship-type";
735            default: return "?";
736          }
737        }
738        public String getDefinition() {
739          switch (this) {
740            case BEFORESTART: return "The action must be performed before the start of the related action.";
741            case BEFORE: return "The action must be performed before the related action.";
742            case BEFOREEND: return "The action must be performed before the end of the related action.";
743            case CONCURRENTWITHSTART: return "The action must be performed concurrent with the start of the related action.";
744            case CONCURRENT: return "The action must be performed concurrent with the related action.";
745            case CONCURRENTWITHEND: return "The action must be performed concurrent with the end of the related action.";
746            case AFTERSTART: return "The action must be performed after the start of the related action.";
747            case AFTER: return "The action must be performed after the related action.";
748            case AFTEREND: return "The action must be performed after the end of the related action.";
749            default: return "?";
750          }
751        }
752        public String getDisplay() {
753          switch (this) {
754            case BEFORESTART: return "Before Start";
755            case BEFORE: return "Before";
756            case BEFOREEND: return "Before End";
757            case CONCURRENTWITHSTART: return "Concurrent With Start";
758            case CONCURRENT: return "Concurrent";
759            case CONCURRENTWITHEND: return "Concurrent With End";
760            case AFTERSTART: return "After Start";
761            case AFTER: return "After";
762            case AFTEREND: return "After End";
763            default: return "?";
764          }
765        }
766    }
767
768  public static class ActionRelationshipTypeEnumFactory implements EnumFactory<ActionRelationshipType> {
769    public ActionRelationshipType fromCode(String codeString) throws IllegalArgumentException {
770      if (codeString == null || "".equals(codeString))
771            if (codeString == null || "".equals(codeString))
772                return null;
773        if ("before-start".equals(codeString))
774          return ActionRelationshipType.BEFORESTART;
775        if ("before".equals(codeString))
776          return ActionRelationshipType.BEFORE;
777        if ("before-end".equals(codeString))
778          return ActionRelationshipType.BEFOREEND;
779        if ("concurrent-with-start".equals(codeString))
780          return ActionRelationshipType.CONCURRENTWITHSTART;
781        if ("concurrent".equals(codeString))
782          return ActionRelationshipType.CONCURRENT;
783        if ("concurrent-with-end".equals(codeString))
784          return ActionRelationshipType.CONCURRENTWITHEND;
785        if ("after-start".equals(codeString))
786          return ActionRelationshipType.AFTERSTART;
787        if ("after".equals(codeString))
788          return ActionRelationshipType.AFTER;
789        if ("after-end".equals(codeString))
790          return ActionRelationshipType.AFTEREND;
791        throw new IllegalArgumentException("Unknown ActionRelationshipType code '"+codeString+"'");
792        }
793        public Enumeration<ActionRelationshipType> fromType(Base code) throws FHIRException {
794          if (code == null)
795            return null;
796          if (code.isEmpty())
797            return new Enumeration<ActionRelationshipType>(this);
798          String codeString = ((PrimitiveType) code).asStringValue();
799          if (codeString == null || "".equals(codeString))
800            return null;
801        if ("before-start".equals(codeString))
802          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.BEFORESTART);
803        if ("before".equals(codeString))
804          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.BEFORE);
805        if ("before-end".equals(codeString))
806          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.BEFOREEND);
807        if ("concurrent-with-start".equals(codeString))
808          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.CONCURRENTWITHSTART);
809        if ("concurrent".equals(codeString))
810          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.CONCURRENT);
811        if ("concurrent-with-end".equals(codeString))
812          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.CONCURRENTWITHEND);
813        if ("after-start".equals(codeString))
814          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.AFTERSTART);
815        if ("after".equals(codeString))
816          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.AFTER);
817        if ("after-end".equals(codeString))
818          return new Enumeration<ActionRelationshipType>(this, ActionRelationshipType.AFTEREND);
819        throw new FHIRException("Unknown ActionRelationshipType code '"+codeString+"'");
820        }
821    public String toCode(ActionRelationshipType code) {
822      if (code == ActionRelationshipType.BEFORESTART)
823        return "before-start";
824      if (code == ActionRelationshipType.BEFORE)
825        return "before";
826      if (code == ActionRelationshipType.BEFOREEND)
827        return "before-end";
828      if (code == ActionRelationshipType.CONCURRENTWITHSTART)
829        return "concurrent-with-start";
830      if (code == ActionRelationshipType.CONCURRENT)
831        return "concurrent";
832      if (code == ActionRelationshipType.CONCURRENTWITHEND)
833        return "concurrent-with-end";
834      if (code == ActionRelationshipType.AFTERSTART)
835        return "after-start";
836      if (code == ActionRelationshipType.AFTER)
837        return "after";
838      if (code == ActionRelationshipType.AFTEREND)
839        return "after-end";
840      return "?";
841      }
842    public String toSystem(ActionRelationshipType code) {
843      return code.getSystem();
844      }
845    }
846
847    public enum ActionGroupingBehavior {
848        /**
849         * Any group marked with this behavior should be displayed as a visual group to the end user.
850         */
851        VISUALGROUP, 
852        /**
853         * A group with this behavior logically groups its sub-elements, and may be shown as a visual group to the end user, but it is not required to do so.
854         */
855        LOGICALGROUP, 
856        /**
857         * A group of related alternative actions is a sentence group if the target referenced by the action is the same in all the actions and each action simply constitutes a different variation on how to specify the details for the target. For example, two actions that could be in a SentenceGroup are "aspirin, 500 mg, 2 times per day" and "aspirin, 300 mg, 3 times per day". In both cases, aspirin is the target referenced by the action, and the two actions represent different options for how aspirin might be ordered for the patient. Note that a SentenceGroup would almost always have an associated selection behavior of "AtMostOne", unless it's a required action, in which case, it would be "ExactlyOne".
858         */
859        SENTENCEGROUP, 
860        /**
861         * added to help the parsers with the generic types
862         */
863        NULL;
864        public static ActionGroupingBehavior fromCode(String codeString) throws FHIRException {
865            if (codeString == null || "".equals(codeString))
866                return null;
867        if ("visual-group".equals(codeString))
868          return VISUALGROUP;
869        if ("logical-group".equals(codeString))
870          return LOGICALGROUP;
871        if ("sentence-group".equals(codeString))
872          return SENTENCEGROUP;
873        if (Configuration.isAcceptInvalidEnums())
874          return null;
875        else
876          throw new FHIRException("Unknown ActionGroupingBehavior code '"+codeString+"'");
877        }
878        public String toCode() {
879          switch (this) {
880            case VISUALGROUP: return "visual-group";
881            case LOGICALGROUP: return "logical-group";
882            case SENTENCEGROUP: return "sentence-group";
883            default: return "?";
884          }
885        }
886        public String getSystem() {
887          switch (this) {
888            case VISUALGROUP: return "http://hl7.org/fhir/action-grouping-behavior";
889            case LOGICALGROUP: return "http://hl7.org/fhir/action-grouping-behavior";
890            case SENTENCEGROUP: return "http://hl7.org/fhir/action-grouping-behavior";
891            default: return "?";
892          }
893        }
894        public String getDefinition() {
895          switch (this) {
896            case VISUALGROUP: return "Any group marked with this behavior should be displayed as a visual group to the end user.";
897            case LOGICALGROUP: return "A group with this behavior logically groups its sub-elements, and may be shown as a visual group to the end user, but it is not required to do so.";
898            case SENTENCEGROUP: return "A group of related alternative actions is a sentence group if the target referenced by the action is the same in all the actions and each action simply constitutes a different variation on how to specify the details for the target. For example, two actions that could be in a SentenceGroup are \"aspirin, 500 mg, 2 times per day\" and \"aspirin, 300 mg, 3 times per day\". In both cases, aspirin is the target referenced by the action, and the two actions represent different options for how aspirin might be ordered for the patient. Note that a SentenceGroup would almost always have an associated selection behavior of \"AtMostOne\", unless it's a required action, in which case, it would be \"ExactlyOne\".";
899            default: return "?";
900          }
901        }
902        public String getDisplay() {
903          switch (this) {
904            case VISUALGROUP: return "Visual Group";
905            case LOGICALGROUP: return "Logical Group";
906            case SENTENCEGROUP: return "Sentence Group";
907            default: return "?";
908          }
909        }
910    }
911
912  public static class ActionGroupingBehaviorEnumFactory implements EnumFactory<ActionGroupingBehavior> {
913    public ActionGroupingBehavior fromCode(String codeString) throws IllegalArgumentException {
914      if (codeString == null || "".equals(codeString))
915            if (codeString == null || "".equals(codeString))
916                return null;
917        if ("visual-group".equals(codeString))
918          return ActionGroupingBehavior.VISUALGROUP;
919        if ("logical-group".equals(codeString))
920          return ActionGroupingBehavior.LOGICALGROUP;
921        if ("sentence-group".equals(codeString))
922          return ActionGroupingBehavior.SENTENCEGROUP;
923        throw new IllegalArgumentException("Unknown ActionGroupingBehavior code '"+codeString+"'");
924        }
925        public Enumeration<ActionGroupingBehavior> fromType(Base code) throws FHIRException {
926          if (code == null)
927            return null;
928          if (code.isEmpty())
929            return new Enumeration<ActionGroupingBehavior>(this);
930          String codeString = ((PrimitiveType) code).asStringValue();
931          if (codeString == null || "".equals(codeString))
932            return null;
933        if ("visual-group".equals(codeString))
934          return new Enumeration<ActionGroupingBehavior>(this, ActionGroupingBehavior.VISUALGROUP);
935        if ("logical-group".equals(codeString))
936          return new Enumeration<ActionGroupingBehavior>(this, ActionGroupingBehavior.LOGICALGROUP);
937        if ("sentence-group".equals(codeString))
938          return new Enumeration<ActionGroupingBehavior>(this, ActionGroupingBehavior.SENTENCEGROUP);
939        throw new FHIRException("Unknown ActionGroupingBehavior code '"+codeString+"'");
940        }
941    public String toCode(ActionGroupingBehavior code) {
942      if (code == ActionGroupingBehavior.VISUALGROUP)
943        return "visual-group";
944      if (code == ActionGroupingBehavior.LOGICALGROUP)
945        return "logical-group";
946      if (code == ActionGroupingBehavior.SENTENCEGROUP)
947        return "sentence-group";
948      return "?";
949      }
950    public String toSystem(ActionGroupingBehavior code) {
951      return code.getSystem();
952      }
953    }
954
955    public enum ActionSelectionBehavior {
956        /**
957         * Any number of the actions in the group may be chosen, from zero to all.
958         */
959        ANY, 
960        /**
961         * All the actions in the group must be selected as a single unit.
962         */
963        ALL, 
964        /**
965         * All the actions in the group are meant to be chosen as a single unit: either all must be selected by the end user, or none may be selected.
966         */
967        ALLORNONE, 
968        /**
969         * The end user must choose one and only one of the selectable actions in the group. The user SHALL NOT choose none of the actions in the group.
970         */
971        EXACTLYONE, 
972        /**
973         * The end user may choose zero or at most one of the actions in the group.
974         */
975        ATMOSTONE, 
976        /**
977         * The end user must choose a minimum of one, and as many additional as desired.
978         */
979        ONEORMORE, 
980        /**
981         * added to help the parsers with the generic types
982         */
983        NULL;
984        public static ActionSelectionBehavior fromCode(String codeString) throws FHIRException {
985            if (codeString == null || "".equals(codeString))
986                return null;
987        if ("any".equals(codeString))
988          return ANY;
989        if ("all".equals(codeString))
990          return ALL;
991        if ("all-or-none".equals(codeString))
992          return ALLORNONE;
993        if ("exactly-one".equals(codeString))
994          return EXACTLYONE;
995        if ("at-most-one".equals(codeString))
996          return ATMOSTONE;
997        if ("one-or-more".equals(codeString))
998          return ONEORMORE;
999        if (Configuration.isAcceptInvalidEnums())
1000          return null;
1001        else
1002          throw new FHIRException("Unknown ActionSelectionBehavior code '"+codeString+"'");
1003        }
1004        public String toCode() {
1005          switch (this) {
1006            case ANY: return "any";
1007            case ALL: return "all";
1008            case ALLORNONE: return "all-or-none";
1009            case EXACTLYONE: return "exactly-one";
1010            case ATMOSTONE: return "at-most-one";
1011            case ONEORMORE: return "one-or-more";
1012            default: return "?";
1013          }
1014        }
1015        public String getSystem() {
1016          switch (this) {
1017            case ANY: return "http://hl7.org/fhir/action-selection-behavior";
1018            case ALL: return "http://hl7.org/fhir/action-selection-behavior";
1019            case ALLORNONE: return "http://hl7.org/fhir/action-selection-behavior";
1020            case EXACTLYONE: return "http://hl7.org/fhir/action-selection-behavior";
1021            case ATMOSTONE: return "http://hl7.org/fhir/action-selection-behavior";
1022            case ONEORMORE: return "http://hl7.org/fhir/action-selection-behavior";
1023            default: return "?";
1024          }
1025        }
1026        public String getDefinition() {
1027          switch (this) {
1028            case ANY: return "Any number of the actions in the group may be chosen, from zero to all.";
1029            case ALL: return "All the actions in the group must be selected as a single unit.";
1030            case ALLORNONE: return "All the actions in the group are meant to be chosen as a single unit: either all must be selected by the end user, or none may be selected.";
1031            case EXACTLYONE: return "The end user must choose one and only one of the selectable actions in the group. The user SHALL NOT choose none of the actions in the group.";
1032            case ATMOSTONE: return "The end user may choose zero or at most one of the actions in the group.";
1033            case ONEORMORE: return "The end user must choose a minimum of one, and as many additional as desired.";
1034            default: return "?";
1035          }
1036        }
1037        public String getDisplay() {
1038          switch (this) {
1039            case ANY: return "Any";
1040            case ALL: return "All";
1041            case ALLORNONE: return "All Or None";
1042            case EXACTLYONE: return "Exactly One";
1043            case ATMOSTONE: return "At Most One";
1044            case ONEORMORE: return "One Or More";
1045            default: return "?";
1046          }
1047        }
1048    }
1049
1050  public static class ActionSelectionBehaviorEnumFactory implements EnumFactory<ActionSelectionBehavior> {
1051    public ActionSelectionBehavior fromCode(String codeString) throws IllegalArgumentException {
1052      if (codeString == null || "".equals(codeString))
1053            if (codeString == null || "".equals(codeString))
1054                return null;
1055        if ("any".equals(codeString))
1056          return ActionSelectionBehavior.ANY;
1057        if ("all".equals(codeString))
1058          return ActionSelectionBehavior.ALL;
1059        if ("all-or-none".equals(codeString))
1060          return ActionSelectionBehavior.ALLORNONE;
1061        if ("exactly-one".equals(codeString))
1062          return ActionSelectionBehavior.EXACTLYONE;
1063        if ("at-most-one".equals(codeString))
1064          return ActionSelectionBehavior.ATMOSTONE;
1065        if ("one-or-more".equals(codeString))
1066          return ActionSelectionBehavior.ONEORMORE;
1067        throw new IllegalArgumentException("Unknown ActionSelectionBehavior code '"+codeString+"'");
1068        }
1069        public Enumeration<ActionSelectionBehavior> fromType(Base code) throws FHIRException {
1070          if (code == null)
1071            return null;
1072          if (code.isEmpty())
1073            return new Enumeration<ActionSelectionBehavior>(this);
1074          String codeString = ((PrimitiveType) code).asStringValue();
1075          if (codeString == null || "".equals(codeString))
1076            return null;
1077        if ("any".equals(codeString))
1078          return new Enumeration<ActionSelectionBehavior>(this, ActionSelectionBehavior.ANY);
1079        if ("all".equals(codeString))
1080          return new Enumeration<ActionSelectionBehavior>(this, ActionSelectionBehavior.ALL);
1081        if ("all-or-none".equals(codeString))
1082          return new Enumeration<ActionSelectionBehavior>(this, ActionSelectionBehavior.ALLORNONE);
1083        if ("exactly-one".equals(codeString))
1084          return new Enumeration<ActionSelectionBehavior>(this, ActionSelectionBehavior.EXACTLYONE);
1085        if ("at-most-one".equals(codeString))
1086          return new Enumeration<ActionSelectionBehavior>(this, ActionSelectionBehavior.ATMOSTONE);
1087        if ("one-or-more".equals(codeString))
1088          return new Enumeration<ActionSelectionBehavior>(this, ActionSelectionBehavior.ONEORMORE);
1089        throw new FHIRException("Unknown ActionSelectionBehavior code '"+codeString+"'");
1090        }
1091    public String toCode(ActionSelectionBehavior code) {
1092      if (code == ActionSelectionBehavior.ANY)
1093        return "any";
1094      if (code == ActionSelectionBehavior.ALL)
1095        return "all";
1096      if (code == ActionSelectionBehavior.ALLORNONE)
1097        return "all-or-none";
1098      if (code == ActionSelectionBehavior.EXACTLYONE)
1099        return "exactly-one";
1100      if (code == ActionSelectionBehavior.ATMOSTONE)
1101        return "at-most-one";
1102      if (code == ActionSelectionBehavior.ONEORMORE)
1103        return "one-or-more";
1104      return "?";
1105      }
1106    public String toSystem(ActionSelectionBehavior code) {
1107      return code.getSystem();
1108      }
1109    }
1110
1111    public enum ActionRequiredBehavior {
1112        /**
1113         * An action with this behavior must be included in the actions processed by the end user; the end user SHALL NOT choose not to include this action.
1114         */
1115        MUST, 
1116        /**
1117         * An action with this behavior may be included in the set of actions processed by the end user.
1118         */
1119        COULD, 
1120        /**
1121         * An action with this behavior must be included in the set of actions processed by the end user, unless the end user provides documentation as to why the action was not included.
1122         */
1123        MUSTUNLESSDOCUMENTED, 
1124        /**
1125         * added to help the parsers with the generic types
1126         */
1127        NULL;
1128        public static ActionRequiredBehavior fromCode(String codeString) throws FHIRException {
1129            if (codeString == null || "".equals(codeString))
1130                return null;
1131        if ("must".equals(codeString))
1132          return MUST;
1133        if ("could".equals(codeString))
1134          return COULD;
1135        if ("must-unless-documented".equals(codeString))
1136          return MUSTUNLESSDOCUMENTED;
1137        if (Configuration.isAcceptInvalidEnums())
1138          return null;
1139        else
1140          throw new FHIRException("Unknown ActionRequiredBehavior code '"+codeString+"'");
1141        }
1142        public String toCode() {
1143          switch (this) {
1144            case MUST: return "must";
1145            case COULD: return "could";
1146            case MUSTUNLESSDOCUMENTED: return "must-unless-documented";
1147            default: return "?";
1148          }
1149        }
1150        public String getSystem() {
1151          switch (this) {
1152            case MUST: return "http://hl7.org/fhir/action-required-behavior";
1153            case COULD: return "http://hl7.org/fhir/action-required-behavior";
1154            case MUSTUNLESSDOCUMENTED: return "http://hl7.org/fhir/action-required-behavior";
1155            default: return "?";
1156          }
1157        }
1158        public String getDefinition() {
1159          switch (this) {
1160            case MUST: return "An action with this behavior must be included in the actions processed by the end user; the end user SHALL NOT choose not to include this action.";
1161            case COULD: return "An action with this behavior may be included in the set of actions processed by the end user.";
1162            case MUSTUNLESSDOCUMENTED: return "An action with this behavior must be included in the set of actions processed by the end user, unless the end user provides documentation as to why the action was not included.";
1163            default: return "?";
1164          }
1165        }
1166        public String getDisplay() {
1167          switch (this) {
1168            case MUST: return "Must";
1169            case COULD: return "Could";
1170            case MUSTUNLESSDOCUMENTED: return "Must Unless Documented";
1171            default: return "?";
1172          }
1173        }
1174    }
1175
1176  public static class ActionRequiredBehaviorEnumFactory implements EnumFactory<ActionRequiredBehavior> {
1177    public ActionRequiredBehavior fromCode(String codeString) throws IllegalArgumentException {
1178      if (codeString == null || "".equals(codeString))
1179            if (codeString == null || "".equals(codeString))
1180                return null;
1181        if ("must".equals(codeString))
1182          return ActionRequiredBehavior.MUST;
1183        if ("could".equals(codeString))
1184          return ActionRequiredBehavior.COULD;
1185        if ("must-unless-documented".equals(codeString))
1186          return ActionRequiredBehavior.MUSTUNLESSDOCUMENTED;
1187        throw new IllegalArgumentException("Unknown ActionRequiredBehavior code '"+codeString+"'");
1188        }
1189        public Enumeration<ActionRequiredBehavior> fromType(Base code) throws FHIRException {
1190          if (code == null)
1191            return null;
1192          if (code.isEmpty())
1193            return new Enumeration<ActionRequiredBehavior>(this);
1194          String codeString = ((PrimitiveType) code).asStringValue();
1195          if (codeString == null || "".equals(codeString))
1196            return null;
1197        if ("must".equals(codeString))
1198          return new Enumeration<ActionRequiredBehavior>(this, ActionRequiredBehavior.MUST);
1199        if ("could".equals(codeString))
1200          return new Enumeration<ActionRequiredBehavior>(this, ActionRequiredBehavior.COULD);
1201        if ("must-unless-documented".equals(codeString))
1202          return new Enumeration<ActionRequiredBehavior>(this, ActionRequiredBehavior.MUSTUNLESSDOCUMENTED);
1203        throw new FHIRException("Unknown ActionRequiredBehavior code '"+codeString+"'");
1204        }
1205    public String toCode(ActionRequiredBehavior code) {
1206      if (code == ActionRequiredBehavior.MUST)
1207        return "must";
1208      if (code == ActionRequiredBehavior.COULD)
1209        return "could";
1210      if (code == ActionRequiredBehavior.MUSTUNLESSDOCUMENTED)
1211        return "must-unless-documented";
1212      return "?";
1213      }
1214    public String toSystem(ActionRequiredBehavior code) {
1215      return code.getSystem();
1216      }
1217    }
1218
1219    public enum ActionPrecheckBehavior {
1220        /**
1221         * An action with this behavior is one of the most frequent action that is, or should be, included by an end user, for the particular context in which the action occurs. The system displaying the action to the end user should consider "pre-checking" such an action as a convenience for the user.
1222         */
1223        YES, 
1224        /**
1225         * An action with this behavior is one of the less frequent actions included by the end user, for the particular context in which the action occurs. The system displaying the actions to the end user would typically not "pre-check" such an action.
1226         */
1227        NO, 
1228        /**
1229         * added to help the parsers with the generic types
1230         */
1231        NULL;
1232        public static ActionPrecheckBehavior fromCode(String codeString) throws FHIRException {
1233            if (codeString == null || "".equals(codeString))
1234                return null;
1235        if ("yes".equals(codeString))
1236          return YES;
1237        if ("no".equals(codeString))
1238          return NO;
1239        if (Configuration.isAcceptInvalidEnums())
1240          return null;
1241        else
1242          throw new FHIRException("Unknown ActionPrecheckBehavior code '"+codeString+"'");
1243        }
1244        public String toCode() {
1245          switch (this) {
1246            case YES: return "yes";
1247            case NO: return "no";
1248            default: return "?";
1249          }
1250        }
1251        public String getSystem() {
1252          switch (this) {
1253            case YES: return "http://hl7.org/fhir/action-precheck-behavior";
1254            case NO: return "http://hl7.org/fhir/action-precheck-behavior";
1255            default: return "?";
1256          }
1257        }
1258        public String getDefinition() {
1259          switch (this) {
1260            case YES: return "An action with this behavior is one of the most frequent action that is, or should be, included by an end user, for the particular context in which the action occurs. The system displaying the action to the end user should consider \"pre-checking\" such an action as a convenience for the user.";
1261            case NO: return "An action with this behavior is one of the less frequent actions included by the end user, for the particular context in which the action occurs. The system displaying the actions to the end user would typically not \"pre-check\" such an action.";
1262            default: return "?";
1263          }
1264        }
1265        public String getDisplay() {
1266          switch (this) {
1267            case YES: return "Yes";
1268            case NO: return "No";
1269            default: return "?";
1270          }
1271        }
1272    }
1273
1274  public static class ActionPrecheckBehaviorEnumFactory implements EnumFactory<ActionPrecheckBehavior> {
1275    public ActionPrecheckBehavior fromCode(String codeString) throws IllegalArgumentException {
1276      if (codeString == null || "".equals(codeString))
1277            if (codeString == null || "".equals(codeString))
1278                return null;
1279        if ("yes".equals(codeString))
1280          return ActionPrecheckBehavior.YES;
1281        if ("no".equals(codeString))
1282          return ActionPrecheckBehavior.NO;
1283        throw new IllegalArgumentException("Unknown ActionPrecheckBehavior code '"+codeString+"'");
1284        }
1285        public Enumeration<ActionPrecheckBehavior> fromType(Base code) throws FHIRException {
1286          if (code == null)
1287            return null;
1288          if (code.isEmpty())
1289            return new Enumeration<ActionPrecheckBehavior>(this);
1290          String codeString = ((PrimitiveType) code).asStringValue();
1291          if (codeString == null || "".equals(codeString))
1292            return null;
1293        if ("yes".equals(codeString))
1294          return new Enumeration<ActionPrecheckBehavior>(this, ActionPrecheckBehavior.YES);
1295        if ("no".equals(codeString))
1296          return new Enumeration<ActionPrecheckBehavior>(this, ActionPrecheckBehavior.NO);
1297        throw new FHIRException("Unknown ActionPrecheckBehavior code '"+codeString+"'");
1298        }
1299    public String toCode(ActionPrecheckBehavior code) {
1300      if (code == ActionPrecheckBehavior.YES)
1301        return "yes";
1302      if (code == ActionPrecheckBehavior.NO)
1303        return "no";
1304      return "?";
1305      }
1306    public String toSystem(ActionPrecheckBehavior code) {
1307      return code.getSystem();
1308      }
1309    }
1310
1311    public enum ActionCardinalityBehavior {
1312        /**
1313         * The action may only be selected one time.
1314         */
1315        SINGLE, 
1316        /**
1317         * The action may be selected multiple times.
1318         */
1319        MULTIPLE, 
1320        /**
1321         * added to help the parsers with the generic types
1322         */
1323        NULL;
1324        public static ActionCardinalityBehavior fromCode(String codeString) throws FHIRException {
1325            if (codeString == null || "".equals(codeString))
1326                return null;
1327        if ("single".equals(codeString))
1328          return SINGLE;
1329        if ("multiple".equals(codeString))
1330          return MULTIPLE;
1331        if (Configuration.isAcceptInvalidEnums())
1332          return null;
1333        else
1334          throw new FHIRException("Unknown ActionCardinalityBehavior code '"+codeString+"'");
1335        }
1336        public String toCode() {
1337          switch (this) {
1338            case SINGLE: return "single";
1339            case MULTIPLE: return "multiple";
1340            default: return "?";
1341          }
1342        }
1343        public String getSystem() {
1344          switch (this) {
1345            case SINGLE: return "http://hl7.org/fhir/action-cardinality-behavior";
1346            case MULTIPLE: return "http://hl7.org/fhir/action-cardinality-behavior";
1347            default: return "?";
1348          }
1349        }
1350        public String getDefinition() {
1351          switch (this) {
1352            case SINGLE: return "The action may only be selected one time.";
1353            case MULTIPLE: return "The action may be selected multiple times.";
1354            default: return "?";
1355          }
1356        }
1357        public String getDisplay() {
1358          switch (this) {
1359            case SINGLE: return "Single";
1360            case MULTIPLE: return "Multiple";
1361            default: return "?";
1362          }
1363        }
1364    }
1365
1366  public static class ActionCardinalityBehaviorEnumFactory implements EnumFactory<ActionCardinalityBehavior> {
1367    public ActionCardinalityBehavior fromCode(String codeString) throws IllegalArgumentException {
1368      if (codeString == null || "".equals(codeString))
1369            if (codeString == null || "".equals(codeString))
1370                return null;
1371        if ("single".equals(codeString))
1372          return ActionCardinalityBehavior.SINGLE;
1373        if ("multiple".equals(codeString))
1374          return ActionCardinalityBehavior.MULTIPLE;
1375        throw new IllegalArgumentException("Unknown ActionCardinalityBehavior code '"+codeString+"'");
1376        }
1377        public Enumeration<ActionCardinalityBehavior> fromType(Base code) throws FHIRException {
1378          if (code == null)
1379            return null;
1380          if (code.isEmpty())
1381            return new Enumeration<ActionCardinalityBehavior>(this);
1382          String codeString = ((PrimitiveType) code).asStringValue();
1383          if (codeString == null || "".equals(codeString))
1384            return null;
1385        if ("single".equals(codeString))
1386          return new Enumeration<ActionCardinalityBehavior>(this, ActionCardinalityBehavior.SINGLE);
1387        if ("multiple".equals(codeString))
1388          return new Enumeration<ActionCardinalityBehavior>(this, ActionCardinalityBehavior.MULTIPLE);
1389        throw new FHIRException("Unknown ActionCardinalityBehavior code '"+codeString+"'");
1390        }
1391    public String toCode(ActionCardinalityBehavior code) {
1392      if (code == ActionCardinalityBehavior.SINGLE)
1393        return "single";
1394      if (code == ActionCardinalityBehavior.MULTIPLE)
1395        return "multiple";
1396      return "?";
1397      }
1398    public String toSystem(ActionCardinalityBehavior code) {
1399      return code.getSystem();
1400      }
1401    }
1402
1403    @Block()
1404    public static class RequestGroupActionComponent extends BackboneElement implements IBaseBackboneElement {
1405        /**
1406         * A user-visible prefix for the action.
1407         */
1408        @Child(name = "prefix", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1409        @Description(shortDefinition="User-visible prefix for the action (e.g. 1. or A.)", formalDefinition="A user-visible prefix for the action." )
1410        protected StringType prefix;
1411
1412        /**
1413         * The title of the action displayed to a user.
1414         */
1415        @Child(name = "title", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1416        @Description(shortDefinition="User-visible title", formalDefinition="The title of the action displayed to a user." )
1417        protected StringType title;
1418
1419        /**
1420         * A short description of the action used to provide a summary to display to the user.
1421         */
1422        @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
1423        @Description(shortDefinition="Short description of the action", formalDefinition="A short description of the action used to provide a summary to display to the user." )
1424        protected StringType description;
1425
1426        /**
1427         * 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.
1428         */
1429        @Child(name = "textEquivalent", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1430        @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." )
1431        protected StringType textEquivalent;
1432
1433        /**
1434         * Indicates how quickly the action should be addressed with respect to other actions.
1435         */
1436        @Child(name = "priority", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=false)
1437        @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the action should be addressed with respect to other actions." )
1438        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
1439        protected Enumeration<RequestPriority> priority;
1440
1441        /**
1442         * A code that provides meaning for the action or action group. For example, a section may have a LOINC code for a the section of a documentation template.
1443         */
1444        @Child(name = "code", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1445        @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 the section of a documentation template." )
1446        protected List<CodeableConcept> code;
1447
1448        /**
1449         * 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.
1450         */
1451        @Child(name = "documentation", type = {RelatedArtifact.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1452        @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." )
1453        protected List<RelatedArtifact> documentation;
1454
1455        /**
1456         * An expression that describes applicability criteria, or start/stop conditions for the action.
1457         */
1458        @Child(name = "condition", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1459        @Description(shortDefinition="Whether or not the action is applicable", formalDefinition="An expression that describes applicability criteria, or start/stop conditions for the action." )
1460        protected List<RequestGroupActionConditionComponent> condition;
1461
1462        /**
1463         * A relationship to another action such as "before" or "30-60 minutes after start of".
1464         */
1465        @Child(name = "relatedAction", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1466        @Description(shortDefinition="Relationship to another action", formalDefinition="A relationship to another action such as \"before\" or \"30-60 minutes after start of\"." )
1467        protected List<RequestGroupActionRelatedActionComponent> relatedAction;
1468
1469        /**
1470         * An optional value describing when the action should be performed.
1471         */
1472        @Child(name = "timing", type = {DateTimeType.class, Age.class, Period.class, Duration.class, Range.class, Timing.class}, order=10, min=0, max=1, modifier=false, summary=false)
1473        @Description(shortDefinition="When the action should take place", formalDefinition="An optional value describing when the action should be performed." )
1474        protected Type timing;
1475
1476        /**
1477         * The participant that should perform or be responsible for this action.
1478         */
1479        @Child(name = "participant", type = {Patient.class, Practitioner.class, RelatedPerson.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1480        @Description(shortDefinition="Who should perform the action", formalDefinition="The participant that should perform or be responsible for this action." )
1481        protected List<Reference> participant;
1482        /**
1483         * The actual objects that are the target of the reference (The participant that should perform or be responsible for this action.)
1484         */
1485        protected List<Resource> participantTarget;
1486
1487
1488        /**
1489         * The type of action to perform (create, update, remove).
1490         */
1491        @Child(name = "type", type = {CodeableConcept.class}, order=12, min=0, max=1, modifier=false, summary=false)
1492        @Description(shortDefinition="create | update | remove | fire-event", formalDefinition="The type of action to perform (create, update, remove)." )
1493        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-type")
1494        protected CodeableConcept type;
1495
1496        /**
1497         * Defines the grouping behavior for the action and its children.
1498         */
1499        @Child(name = "groupingBehavior", type = {CodeType.class}, order=13, min=0, max=1, modifier=false, summary=false)
1500        @Description(shortDefinition="visual-group | logical-group | sentence-group", formalDefinition="Defines the grouping behavior for the action and its children." )
1501        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-grouping-behavior")
1502        protected Enumeration<ActionGroupingBehavior> groupingBehavior;
1503
1504        /**
1505         * Defines the selection behavior for the action and its children.
1506         */
1507        @Child(name = "selectionBehavior", type = {CodeType.class}, order=14, min=0, max=1, modifier=false, summary=false)
1508        @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." )
1509        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-selection-behavior")
1510        protected Enumeration<ActionSelectionBehavior> selectionBehavior;
1511
1512        /**
1513         * Defines the requiredness behavior for the action.
1514         */
1515        @Child(name = "requiredBehavior", type = {CodeType.class}, order=15, min=0, max=1, modifier=false, summary=false)
1516        @Description(shortDefinition="must | could | must-unless-documented", formalDefinition="Defines the requiredness behavior for the action." )
1517        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-required-behavior")
1518        protected Enumeration<ActionRequiredBehavior> requiredBehavior;
1519
1520        /**
1521         * Defines whether the action should usually be preselected.
1522         */
1523        @Child(name = "precheckBehavior", type = {CodeType.class}, order=16, min=0, max=1, modifier=false, summary=false)
1524        @Description(shortDefinition="yes | no", formalDefinition="Defines whether the action should usually be preselected." )
1525        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-precheck-behavior")
1526        protected Enumeration<ActionPrecheckBehavior> precheckBehavior;
1527
1528        /**
1529         * Defines whether the action can be selected multiple times.
1530         */
1531        @Child(name = "cardinalityBehavior", type = {CodeType.class}, order=17, min=0, max=1, modifier=false, summary=false)
1532        @Description(shortDefinition="single | multiple", formalDefinition="Defines whether the action can be selected multiple times." )
1533        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-cardinality-behavior")
1534        protected Enumeration<ActionCardinalityBehavior> cardinalityBehavior;
1535
1536        /**
1537         * The resource that is the target of the action (e.g. CommunicationRequest).
1538         */
1539        @Child(name = "resource", type = {Reference.class}, order=18, min=0, max=1, modifier=false, summary=false)
1540        @Description(shortDefinition="The target of the action", formalDefinition="The resource that is the target of the action (e.g. CommunicationRequest)." )
1541        protected Reference resource;
1542
1543        /**
1544         * The actual object that is the target of the reference (The resource that is the target of the action (e.g. CommunicationRequest).)
1545         */
1546        protected Resource resourceTarget;
1547
1548        /**
1549         * Sub actions.
1550         */
1551        @Child(name = "action", type = {RequestGroupActionComponent.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1552        @Description(shortDefinition="Sub action", formalDefinition="Sub actions." )
1553        protected List<RequestGroupActionComponent> action;
1554
1555        private static final long serialVersionUID = 296752321L;
1556
1557    /**
1558     * Constructor
1559     */
1560      public RequestGroupActionComponent() {
1561        super();
1562      }
1563
1564        /**
1565         * @return {@link #prefix} (A user-visible prefix for the action.). This is the underlying object with id, value and extensions. The accessor "getPrefix" gives direct access to the value
1566         */
1567        public StringType getPrefixElement() { 
1568          if (this.prefix == null)
1569            if (Configuration.errorOnAutoCreate())
1570              throw new Error("Attempt to auto-create RequestGroupActionComponent.prefix");
1571            else if (Configuration.doAutoCreate())
1572              this.prefix = new StringType(); // bb
1573          return this.prefix;
1574        }
1575
1576        public boolean hasPrefixElement() { 
1577          return this.prefix != null && !this.prefix.isEmpty();
1578        }
1579
1580        public boolean hasPrefix() { 
1581          return this.prefix != null && !this.prefix.isEmpty();
1582        }
1583
1584        /**
1585         * @param value {@link #prefix} (A user-visible prefix for the action.). This is the underlying object with id, value and extensions. The accessor "getPrefix" gives direct access to the value
1586         */
1587        public RequestGroupActionComponent setPrefixElement(StringType value) { 
1588          this.prefix = value;
1589          return this;
1590        }
1591
1592        /**
1593         * @return A user-visible prefix for the action.
1594         */
1595        public String getPrefix() { 
1596          return this.prefix == null ? null : this.prefix.getValue();
1597        }
1598
1599        /**
1600         * @param value A user-visible prefix for the action.
1601         */
1602        public RequestGroupActionComponent setPrefix(String value) { 
1603          if (Utilities.noString(value))
1604            this.prefix = null;
1605          else {
1606            if (this.prefix == null)
1607              this.prefix = new StringType();
1608            this.prefix.setValue(value);
1609          }
1610          return this;
1611        }
1612
1613        /**
1614         * @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
1615         */
1616        public StringType getTitleElement() { 
1617          if (this.title == null)
1618            if (Configuration.errorOnAutoCreate())
1619              throw new Error("Attempt to auto-create RequestGroupActionComponent.title");
1620            else if (Configuration.doAutoCreate())
1621              this.title = new StringType(); // bb
1622          return this.title;
1623        }
1624
1625        public boolean hasTitleElement() { 
1626          return this.title != null && !this.title.isEmpty();
1627        }
1628
1629        public boolean hasTitle() { 
1630          return this.title != null && !this.title.isEmpty();
1631        }
1632
1633        /**
1634         * @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
1635         */
1636        public RequestGroupActionComponent setTitleElement(StringType value) { 
1637          this.title = value;
1638          return this;
1639        }
1640
1641        /**
1642         * @return The title of the action displayed to a user.
1643         */
1644        public String getTitle() { 
1645          return this.title == null ? null : this.title.getValue();
1646        }
1647
1648        /**
1649         * @param value The title of the action displayed to a user.
1650         */
1651        public RequestGroupActionComponent setTitle(String value) { 
1652          if (Utilities.noString(value))
1653            this.title = null;
1654          else {
1655            if (this.title == null)
1656              this.title = new StringType();
1657            this.title.setValue(value);
1658          }
1659          return this;
1660        }
1661
1662        /**
1663         * @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
1664         */
1665        public StringType getDescriptionElement() { 
1666          if (this.description == null)
1667            if (Configuration.errorOnAutoCreate())
1668              throw new Error("Attempt to auto-create RequestGroupActionComponent.description");
1669            else if (Configuration.doAutoCreate())
1670              this.description = new StringType(); // bb
1671          return this.description;
1672        }
1673
1674        public boolean hasDescriptionElement() { 
1675          return this.description != null && !this.description.isEmpty();
1676        }
1677
1678        public boolean hasDescription() { 
1679          return this.description != null && !this.description.isEmpty();
1680        }
1681
1682        /**
1683         * @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
1684         */
1685        public RequestGroupActionComponent setDescriptionElement(StringType value) { 
1686          this.description = value;
1687          return this;
1688        }
1689
1690        /**
1691         * @return A short description of the action used to provide a summary to display to the user.
1692         */
1693        public String getDescription() { 
1694          return this.description == null ? null : this.description.getValue();
1695        }
1696
1697        /**
1698         * @param value A short description of the action used to provide a summary to display to the user.
1699         */
1700        public RequestGroupActionComponent setDescription(String value) { 
1701          if (Utilities.noString(value))
1702            this.description = null;
1703          else {
1704            if (this.description == null)
1705              this.description = new StringType();
1706            this.description.setValue(value);
1707          }
1708          return this;
1709        }
1710
1711        /**
1712         * @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
1713         */
1714        public StringType getTextEquivalentElement() { 
1715          if (this.textEquivalent == null)
1716            if (Configuration.errorOnAutoCreate())
1717              throw new Error("Attempt to auto-create RequestGroupActionComponent.textEquivalent");
1718            else if (Configuration.doAutoCreate())
1719              this.textEquivalent = new StringType(); // bb
1720          return this.textEquivalent;
1721        }
1722
1723        public boolean hasTextEquivalentElement() { 
1724          return this.textEquivalent != null && !this.textEquivalent.isEmpty();
1725        }
1726
1727        public boolean hasTextEquivalent() { 
1728          return this.textEquivalent != null && !this.textEquivalent.isEmpty();
1729        }
1730
1731        /**
1732         * @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
1733         */
1734        public RequestGroupActionComponent setTextEquivalentElement(StringType value) { 
1735          this.textEquivalent = value;
1736          return this;
1737        }
1738
1739        /**
1740         * @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.
1741         */
1742        public String getTextEquivalent() { 
1743          return this.textEquivalent == null ? null : this.textEquivalent.getValue();
1744        }
1745
1746        /**
1747         * @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.
1748         */
1749        public RequestGroupActionComponent setTextEquivalent(String value) { 
1750          if (Utilities.noString(value))
1751            this.textEquivalent = null;
1752          else {
1753            if (this.textEquivalent == null)
1754              this.textEquivalent = new StringType();
1755            this.textEquivalent.setValue(value);
1756          }
1757          return this;
1758        }
1759
1760        /**
1761         * @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
1762         */
1763        public Enumeration<RequestPriority> getPriorityElement() { 
1764          if (this.priority == null)
1765            if (Configuration.errorOnAutoCreate())
1766              throw new Error("Attempt to auto-create RequestGroupActionComponent.priority");
1767            else if (Configuration.doAutoCreate())
1768              this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
1769          return this.priority;
1770        }
1771
1772        public boolean hasPriorityElement() { 
1773          return this.priority != null && !this.priority.isEmpty();
1774        }
1775
1776        public boolean hasPriority() { 
1777          return this.priority != null && !this.priority.isEmpty();
1778        }
1779
1780        /**
1781         * @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
1782         */
1783        public RequestGroupActionComponent setPriorityElement(Enumeration<RequestPriority> value) { 
1784          this.priority = value;
1785          return this;
1786        }
1787
1788        /**
1789         * @return Indicates how quickly the action should be addressed with respect to other actions.
1790         */
1791        public RequestPriority getPriority() { 
1792          return this.priority == null ? null : this.priority.getValue();
1793        }
1794
1795        /**
1796         * @param value Indicates how quickly the action should be addressed with respect to other actions.
1797         */
1798        public RequestGroupActionComponent setPriority(RequestPriority value) { 
1799          if (value == null)
1800            this.priority = null;
1801          else {
1802            if (this.priority == null)
1803              this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
1804            this.priority.setValue(value);
1805          }
1806          return this;
1807        }
1808
1809        /**
1810         * @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 the section of a documentation template.)
1811         */
1812        public List<CodeableConcept> getCode() { 
1813          if (this.code == null)
1814            this.code = new ArrayList<CodeableConcept>();
1815          return this.code;
1816        }
1817
1818        /**
1819         * @return Returns a reference to <code>this</code> for easy method chaining
1820         */
1821        public RequestGroupActionComponent setCode(List<CodeableConcept> theCode) { 
1822          this.code = theCode;
1823          return this;
1824        }
1825
1826        public boolean hasCode() { 
1827          if (this.code == null)
1828            return false;
1829          for (CodeableConcept item : this.code)
1830            if (!item.isEmpty())
1831              return true;
1832          return false;
1833        }
1834
1835        public CodeableConcept addCode() { //3
1836          CodeableConcept t = new CodeableConcept();
1837          if (this.code == null)
1838            this.code = new ArrayList<CodeableConcept>();
1839          this.code.add(t);
1840          return t;
1841        }
1842
1843        public RequestGroupActionComponent addCode(CodeableConcept t) { //3
1844          if (t == null)
1845            return this;
1846          if (this.code == null)
1847            this.code = new ArrayList<CodeableConcept>();
1848          this.code.add(t);
1849          return this;
1850        }
1851
1852        /**
1853         * @return The first repetition of repeating field {@link #code}, creating it if it does not already exist
1854         */
1855        public CodeableConcept getCodeFirstRep() { 
1856          if (getCode().isEmpty()) {
1857            addCode();
1858          }
1859          return getCode().get(0);
1860        }
1861
1862        /**
1863         * @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.)
1864         */
1865        public List<RelatedArtifact> getDocumentation() { 
1866          if (this.documentation == null)
1867            this.documentation = new ArrayList<RelatedArtifact>();
1868          return this.documentation;
1869        }
1870
1871        /**
1872         * @return Returns a reference to <code>this</code> for easy method chaining
1873         */
1874        public RequestGroupActionComponent setDocumentation(List<RelatedArtifact> theDocumentation) { 
1875          this.documentation = theDocumentation;
1876          return this;
1877        }
1878
1879        public boolean hasDocumentation() { 
1880          if (this.documentation == null)
1881            return false;
1882          for (RelatedArtifact item : this.documentation)
1883            if (!item.isEmpty())
1884              return true;
1885          return false;
1886        }
1887
1888        public RelatedArtifact addDocumentation() { //3
1889          RelatedArtifact t = new RelatedArtifact();
1890          if (this.documentation == null)
1891            this.documentation = new ArrayList<RelatedArtifact>();
1892          this.documentation.add(t);
1893          return t;
1894        }
1895
1896        public RequestGroupActionComponent addDocumentation(RelatedArtifact t) { //3
1897          if (t == null)
1898            return this;
1899          if (this.documentation == null)
1900            this.documentation = new ArrayList<RelatedArtifact>();
1901          this.documentation.add(t);
1902          return this;
1903        }
1904
1905        /**
1906         * @return The first repetition of repeating field {@link #documentation}, creating it if it does not already exist
1907         */
1908        public RelatedArtifact getDocumentationFirstRep() { 
1909          if (getDocumentation().isEmpty()) {
1910            addDocumentation();
1911          }
1912          return getDocumentation().get(0);
1913        }
1914
1915        /**
1916         * @return {@link #condition} (An expression that describes applicability criteria, or start/stop conditions for the action.)
1917         */
1918        public List<RequestGroupActionConditionComponent> getCondition() { 
1919          if (this.condition == null)
1920            this.condition = new ArrayList<RequestGroupActionConditionComponent>();
1921          return this.condition;
1922        }
1923
1924        /**
1925         * @return Returns a reference to <code>this</code> for easy method chaining
1926         */
1927        public RequestGroupActionComponent setCondition(List<RequestGroupActionConditionComponent> theCondition) { 
1928          this.condition = theCondition;
1929          return this;
1930        }
1931
1932        public boolean hasCondition() { 
1933          if (this.condition == null)
1934            return false;
1935          for (RequestGroupActionConditionComponent item : this.condition)
1936            if (!item.isEmpty())
1937              return true;
1938          return false;
1939        }
1940
1941        public RequestGroupActionConditionComponent addCondition() { //3
1942          RequestGroupActionConditionComponent t = new RequestGroupActionConditionComponent();
1943          if (this.condition == null)
1944            this.condition = new ArrayList<RequestGroupActionConditionComponent>();
1945          this.condition.add(t);
1946          return t;
1947        }
1948
1949        public RequestGroupActionComponent addCondition(RequestGroupActionConditionComponent t) { //3
1950          if (t == null)
1951            return this;
1952          if (this.condition == null)
1953            this.condition = new ArrayList<RequestGroupActionConditionComponent>();
1954          this.condition.add(t);
1955          return this;
1956        }
1957
1958        /**
1959         * @return The first repetition of repeating field {@link #condition}, creating it if it does not already exist
1960         */
1961        public RequestGroupActionConditionComponent getConditionFirstRep() { 
1962          if (getCondition().isEmpty()) {
1963            addCondition();
1964          }
1965          return getCondition().get(0);
1966        }
1967
1968        /**
1969         * @return {@link #relatedAction} (A relationship to another action such as "before" or "30-60 minutes after start of".)
1970         */
1971        public List<RequestGroupActionRelatedActionComponent> getRelatedAction() { 
1972          if (this.relatedAction == null)
1973            this.relatedAction = new ArrayList<RequestGroupActionRelatedActionComponent>();
1974          return this.relatedAction;
1975        }
1976
1977        /**
1978         * @return Returns a reference to <code>this</code> for easy method chaining
1979         */
1980        public RequestGroupActionComponent setRelatedAction(List<RequestGroupActionRelatedActionComponent> theRelatedAction) { 
1981          this.relatedAction = theRelatedAction;
1982          return this;
1983        }
1984
1985        public boolean hasRelatedAction() { 
1986          if (this.relatedAction == null)
1987            return false;
1988          for (RequestGroupActionRelatedActionComponent item : this.relatedAction)
1989            if (!item.isEmpty())
1990              return true;
1991          return false;
1992        }
1993
1994        public RequestGroupActionRelatedActionComponent addRelatedAction() { //3
1995          RequestGroupActionRelatedActionComponent t = new RequestGroupActionRelatedActionComponent();
1996          if (this.relatedAction == null)
1997            this.relatedAction = new ArrayList<RequestGroupActionRelatedActionComponent>();
1998          this.relatedAction.add(t);
1999          return t;
2000        }
2001
2002        public RequestGroupActionComponent addRelatedAction(RequestGroupActionRelatedActionComponent t) { //3
2003          if (t == null)
2004            return this;
2005          if (this.relatedAction == null)
2006            this.relatedAction = new ArrayList<RequestGroupActionRelatedActionComponent>();
2007          this.relatedAction.add(t);
2008          return this;
2009        }
2010
2011        /**
2012         * @return The first repetition of repeating field {@link #relatedAction}, creating it if it does not already exist
2013         */
2014        public RequestGroupActionRelatedActionComponent getRelatedActionFirstRep() { 
2015          if (getRelatedAction().isEmpty()) {
2016            addRelatedAction();
2017          }
2018          return getRelatedAction().get(0);
2019        }
2020
2021        /**
2022         * @return {@link #timing} (An optional value describing when the action should be performed.)
2023         */
2024        public Type getTiming() { 
2025          return this.timing;
2026        }
2027
2028        /**
2029         * @return {@link #timing} (An optional value describing when the action should be performed.)
2030         */
2031        public DateTimeType getTimingDateTimeType() throws FHIRException { 
2032          if (this.timing == null)
2033            return null;
2034          if (!(this.timing instanceof DateTimeType))
2035            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.timing.getClass().getName()+" was encountered");
2036          return (DateTimeType) this.timing;
2037        }
2038
2039        public boolean hasTimingDateTimeType() { 
2040          return this != null && this.timing instanceof DateTimeType;
2041        }
2042
2043        /**
2044         * @return {@link #timing} (An optional value describing when the action should be performed.)
2045         */
2046        public Age getTimingAge() throws FHIRException { 
2047          if (this.timing == null)
2048            return null;
2049          if (!(this.timing instanceof Age))
2050            throw new FHIRException("Type mismatch: the type Age was expected, but "+this.timing.getClass().getName()+" was encountered");
2051          return (Age) this.timing;
2052        }
2053
2054        public boolean hasTimingAge() { 
2055          return this != null && this.timing instanceof Age;
2056        }
2057
2058        /**
2059         * @return {@link #timing} (An optional value describing when the action should be performed.)
2060         */
2061        public Period getTimingPeriod() throws FHIRException { 
2062          if (this.timing == null)
2063            return null;
2064          if (!(this.timing instanceof Period))
2065            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.timing.getClass().getName()+" was encountered");
2066          return (Period) this.timing;
2067        }
2068
2069        public boolean hasTimingPeriod() { 
2070          return this != null && this.timing instanceof Period;
2071        }
2072
2073        /**
2074         * @return {@link #timing} (An optional value describing when the action should be performed.)
2075         */
2076        public Duration getTimingDuration() throws FHIRException { 
2077          if (this.timing == null)
2078            return null;
2079          if (!(this.timing instanceof Duration))
2080            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.timing.getClass().getName()+" was encountered");
2081          return (Duration) this.timing;
2082        }
2083
2084        public boolean hasTimingDuration() { 
2085          return this != null && this.timing instanceof Duration;
2086        }
2087
2088        /**
2089         * @return {@link #timing} (An optional value describing when the action should be performed.)
2090         */
2091        public Range getTimingRange() throws FHIRException { 
2092          if (this.timing == null)
2093            return null;
2094          if (!(this.timing instanceof Range))
2095            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.timing.getClass().getName()+" was encountered");
2096          return (Range) this.timing;
2097        }
2098
2099        public boolean hasTimingRange() { 
2100          return this != null && this.timing instanceof Range;
2101        }
2102
2103        /**
2104         * @return {@link #timing} (An optional value describing when the action should be performed.)
2105         */
2106        public Timing getTimingTiming() throws FHIRException { 
2107          if (this.timing == null)
2108            return null;
2109          if (!(this.timing instanceof Timing))
2110            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.timing.getClass().getName()+" was encountered");
2111          return (Timing) this.timing;
2112        }
2113
2114        public boolean hasTimingTiming() { 
2115          return this != null && this.timing instanceof Timing;
2116        }
2117
2118        public boolean hasTiming() { 
2119          return this.timing != null && !this.timing.isEmpty();
2120        }
2121
2122        /**
2123         * @param value {@link #timing} (An optional value describing when the action should be performed.)
2124         */
2125        public RequestGroupActionComponent setTiming(Type value) { 
2126          if (value != null && !(value instanceof DateTimeType || value instanceof Age || value instanceof Period || value instanceof Duration || value instanceof Range || value instanceof Timing))
2127            throw new Error("Not the right type for RequestGroup.action.timing[x]: "+value.fhirType());
2128          this.timing = value;
2129          return this;
2130        }
2131
2132        /**
2133         * @return {@link #participant} (The participant that should perform or be responsible for this action.)
2134         */
2135        public List<Reference> getParticipant() { 
2136          if (this.participant == null)
2137            this.participant = new ArrayList<Reference>();
2138          return this.participant;
2139        }
2140
2141        /**
2142         * @return Returns a reference to <code>this</code> for easy method chaining
2143         */
2144        public RequestGroupActionComponent setParticipant(List<Reference> theParticipant) { 
2145          this.participant = theParticipant;
2146          return this;
2147        }
2148
2149        public boolean hasParticipant() { 
2150          if (this.participant == null)
2151            return false;
2152          for (Reference item : this.participant)
2153            if (!item.isEmpty())
2154              return true;
2155          return false;
2156        }
2157
2158        public Reference addParticipant() { //3
2159          Reference t = new Reference();
2160          if (this.participant == null)
2161            this.participant = new ArrayList<Reference>();
2162          this.participant.add(t);
2163          return t;
2164        }
2165
2166        public RequestGroupActionComponent addParticipant(Reference t) { //3
2167          if (t == null)
2168            return this;
2169          if (this.participant == null)
2170            this.participant = new ArrayList<Reference>();
2171          this.participant.add(t);
2172          return this;
2173        }
2174
2175        /**
2176         * @return The first repetition of repeating field {@link #participant}, creating it if it does not already exist
2177         */
2178        public Reference getParticipantFirstRep() { 
2179          if (getParticipant().isEmpty()) {
2180            addParticipant();
2181          }
2182          return getParticipant().get(0);
2183        }
2184
2185        /**
2186         * @deprecated Use Reference#setResource(IBaseResource) instead
2187         */
2188        @Deprecated
2189        public List<Resource> getParticipantTarget() { 
2190          if (this.participantTarget == null)
2191            this.participantTarget = new ArrayList<Resource>();
2192          return this.participantTarget;
2193        }
2194
2195        /**
2196         * @return {@link #type} (The type of action to perform (create, update, remove).)
2197         */
2198        public CodeableConcept getType() { 
2199          if (this.type == null)
2200            if (Configuration.errorOnAutoCreate())
2201              throw new Error("Attempt to auto-create RequestGroupActionComponent.type");
2202            else if (Configuration.doAutoCreate())
2203              this.type = new CodeableConcept(); // cc
2204          return this.type;
2205        }
2206
2207        public boolean hasType() { 
2208          return this.type != null && !this.type.isEmpty();
2209        }
2210
2211        /**
2212         * @param value {@link #type} (The type of action to perform (create, update, remove).)
2213         */
2214        public RequestGroupActionComponent setType(CodeableConcept value) { 
2215          this.type = value;
2216          return this;
2217        }
2218
2219        /**
2220         * @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
2221         */
2222        public Enumeration<ActionGroupingBehavior> getGroupingBehaviorElement() { 
2223          if (this.groupingBehavior == null)
2224            if (Configuration.errorOnAutoCreate())
2225              throw new Error("Attempt to auto-create RequestGroupActionComponent.groupingBehavior");
2226            else if (Configuration.doAutoCreate())
2227              this.groupingBehavior = new Enumeration<ActionGroupingBehavior>(new ActionGroupingBehaviorEnumFactory()); // bb
2228          return this.groupingBehavior;
2229        }
2230
2231        public boolean hasGroupingBehaviorElement() { 
2232          return this.groupingBehavior != null && !this.groupingBehavior.isEmpty();
2233        }
2234
2235        public boolean hasGroupingBehavior() { 
2236          return this.groupingBehavior != null && !this.groupingBehavior.isEmpty();
2237        }
2238
2239        /**
2240         * @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
2241         */
2242        public RequestGroupActionComponent setGroupingBehaviorElement(Enumeration<ActionGroupingBehavior> value) { 
2243          this.groupingBehavior = value;
2244          return this;
2245        }
2246
2247        /**
2248         * @return Defines the grouping behavior for the action and its children.
2249         */
2250        public ActionGroupingBehavior getGroupingBehavior() { 
2251          return this.groupingBehavior == null ? null : this.groupingBehavior.getValue();
2252        }
2253
2254        /**
2255         * @param value Defines the grouping behavior for the action and its children.
2256         */
2257        public RequestGroupActionComponent setGroupingBehavior(ActionGroupingBehavior value) { 
2258          if (value == null)
2259            this.groupingBehavior = null;
2260          else {
2261            if (this.groupingBehavior == null)
2262              this.groupingBehavior = new Enumeration<ActionGroupingBehavior>(new ActionGroupingBehaviorEnumFactory());
2263            this.groupingBehavior.setValue(value);
2264          }
2265          return this;
2266        }
2267
2268        /**
2269         * @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
2270         */
2271        public Enumeration<ActionSelectionBehavior> getSelectionBehaviorElement() { 
2272          if (this.selectionBehavior == null)
2273            if (Configuration.errorOnAutoCreate())
2274              throw new Error("Attempt to auto-create RequestGroupActionComponent.selectionBehavior");
2275            else if (Configuration.doAutoCreate())
2276              this.selectionBehavior = new Enumeration<ActionSelectionBehavior>(new ActionSelectionBehaviorEnumFactory()); // bb
2277          return this.selectionBehavior;
2278        }
2279
2280        public boolean hasSelectionBehaviorElement() { 
2281          return this.selectionBehavior != null && !this.selectionBehavior.isEmpty();
2282        }
2283
2284        public boolean hasSelectionBehavior() { 
2285          return this.selectionBehavior != null && !this.selectionBehavior.isEmpty();
2286        }
2287
2288        /**
2289         * @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
2290         */
2291        public RequestGroupActionComponent setSelectionBehaviorElement(Enumeration<ActionSelectionBehavior> value) { 
2292          this.selectionBehavior = value;
2293          return this;
2294        }
2295
2296        /**
2297         * @return Defines the selection behavior for the action and its children.
2298         */
2299        public ActionSelectionBehavior getSelectionBehavior() { 
2300          return this.selectionBehavior == null ? null : this.selectionBehavior.getValue();
2301        }
2302
2303        /**
2304         * @param value Defines the selection behavior for the action and its children.
2305         */
2306        public RequestGroupActionComponent setSelectionBehavior(ActionSelectionBehavior value) { 
2307          if (value == null)
2308            this.selectionBehavior = null;
2309          else {
2310            if (this.selectionBehavior == null)
2311              this.selectionBehavior = new Enumeration<ActionSelectionBehavior>(new ActionSelectionBehaviorEnumFactory());
2312            this.selectionBehavior.setValue(value);
2313          }
2314          return this;
2315        }
2316
2317        /**
2318         * @return {@link #requiredBehavior} (Defines the requiredness behavior for the action.). This is the underlying object with id, value and extensions. The accessor "getRequiredBehavior" gives direct access to the value
2319         */
2320        public Enumeration<ActionRequiredBehavior> getRequiredBehaviorElement() { 
2321          if (this.requiredBehavior == null)
2322            if (Configuration.errorOnAutoCreate())
2323              throw new Error("Attempt to auto-create RequestGroupActionComponent.requiredBehavior");
2324            else if (Configuration.doAutoCreate())
2325              this.requiredBehavior = new Enumeration<ActionRequiredBehavior>(new ActionRequiredBehaviorEnumFactory()); // bb
2326          return this.requiredBehavior;
2327        }
2328
2329        public boolean hasRequiredBehaviorElement() { 
2330          return this.requiredBehavior != null && !this.requiredBehavior.isEmpty();
2331        }
2332
2333        public boolean hasRequiredBehavior() { 
2334          return this.requiredBehavior != null && !this.requiredBehavior.isEmpty();
2335        }
2336
2337        /**
2338         * @param value {@link #requiredBehavior} (Defines the requiredness behavior for the action.). This is the underlying object with id, value and extensions. The accessor "getRequiredBehavior" gives direct access to the value
2339         */
2340        public RequestGroupActionComponent setRequiredBehaviorElement(Enumeration<ActionRequiredBehavior> value) { 
2341          this.requiredBehavior = value;
2342          return this;
2343        }
2344
2345        /**
2346         * @return Defines the requiredness behavior for the action.
2347         */
2348        public ActionRequiredBehavior getRequiredBehavior() { 
2349          return this.requiredBehavior == null ? null : this.requiredBehavior.getValue();
2350        }
2351
2352        /**
2353         * @param value Defines the requiredness behavior for the action.
2354         */
2355        public RequestGroupActionComponent setRequiredBehavior(ActionRequiredBehavior value) { 
2356          if (value == null)
2357            this.requiredBehavior = null;
2358          else {
2359            if (this.requiredBehavior == null)
2360              this.requiredBehavior = new Enumeration<ActionRequiredBehavior>(new ActionRequiredBehaviorEnumFactory());
2361            this.requiredBehavior.setValue(value);
2362          }
2363          return this;
2364        }
2365
2366        /**
2367         * @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
2368         */
2369        public Enumeration<ActionPrecheckBehavior> getPrecheckBehaviorElement() { 
2370          if (this.precheckBehavior == null)
2371            if (Configuration.errorOnAutoCreate())
2372              throw new Error("Attempt to auto-create RequestGroupActionComponent.precheckBehavior");
2373            else if (Configuration.doAutoCreate())
2374              this.precheckBehavior = new Enumeration<ActionPrecheckBehavior>(new ActionPrecheckBehaviorEnumFactory()); // bb
2375          return this.precheckBehavior;
2376        }
2377
2378        public boolean hasPrecheckBehaviorElement() { 
2379          return this.precheckBehavior != null && !this.precheckBehavior.isEmpty();
2380        }
2381
2382        public boolean hasPrecheckBehavior() { 
2383          return this.precheckBehavior != null && !this.precheckBehavior.isEmpty();
2384        }
2385
2386        /**
2387         * @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
2388         */
2389        public RequestGroupActionComponent setPrecheckBehaviorElement(Enumeration<ActionPrecheckBehavior> value) { 
2390          this.precheckBehavior = value;
2391          return this;
2392        }
2393
2394        /**
2395         * @return Defines whether the action should usually be preselected.
2396         */
2397        public ActionPrecheckBehavior getPrecheckBehavior() { 
2398          return this.precheckBehavior == null ? null : this.precheckBehavior.getValue();
2399        }
2400
2401        /**
2402         * @param value Defines whether the action should usually be preselected.
2403         */
2404        public RequestGroupActionComponent setPrecheckBehavior(ActionPrecheckBehavior value) { 
2405          if (value == null)
2406            this.precheckBehavior = null;
2407          else {
2408            if (this.precheckBehavior == null)
2409              this.precheckBehavior = new Enumeration<ActionPrecheckBehavior>(new ActionPrecheckBehaviorEnumFactory());
2410            this.precheckBehavior.setValue(value);
2411          }
2412          return this;
2413        }
2414
2415        /**
2416         * @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
2417         */
2418        public Enumeration<ActionCardinalityBehavior> getCardinalityBehaviorElement() { 
2419          if (this.cardinalityBehavior == null)
2420            if (Configuration.errorOnAutoCreate())
2421              throw new Error("Attempt to auto-create RequestGroupActionComponent.cardinalityBehavior");
2422            else if (Configuration.doAutoCreate())
2423              this.cardinalityBehavior = new Enumeration<ActionCardinalityBehavior>(new ActionCardinalityBehaviorEnumFactory()); // bb
2424          return this.cardinalityBehavior;
2425        }
2426
2427        public boolean hasCardinalityBehaviorElement() { 
2428          return this.cardinalityBehavior != null && !this.cardinalityBehavior.isEmpty();
2429        }
2430
2431        public boolean hasCardinalityBehavior() { 
2432          return this.cardinalityBehavior != null && !this.cardinalityBehavior.isEmpty();
2433        }
2434
2435        /**
2436         * @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
2437         */
2438        public RequestGroupActionComponent setCardinalityBehaviorElement(Enumeration<ActionCardinalityBehavior> value) { 
2439          this.cardinalityBehavior = value;
2440          return this;
2441        }
2442
2443        /**
2444         * @return Defines whether the action can be selected multiple times.
2445         */
2446        public ActionCardinalityBehavior getCardinalityBehavior() { 
2447          return this.cardinalityBehavior == null ? null : this.cardinalityBehavior.getValue();
2448        }
2449
2450        /**
2451         * @param value Defines whether the action can be selected multiple times.
2452         */
2453        public RequestGroupActionComponent setCardinalityBehavior(ActionCardinalityBehavior value) { 
2454          if (value == null)
2455            this.cardinalityBehavior = null;
2456          else {
2457            if (this.cardinalityBehavior == null)
2458              this.cardinalityBehavior = new Enumeration<ActionCardinalityBehavior>(new ActionCardinalityBehaviorEnumFactory());
2459            this.cardinalityBehavior.setValue(value);
2460          }
2461          return this;
2462        }
2463
2464        /**
2465         * @return {@link #resource} (The resource that is the target of the action (e.g. CommunicationRequest).)
2466         */
2467        public Reference getResource() { 
2468          if (this.resource == null)
2469            if (Configuration.errorOnAutoCreate())
2470              throw new Error("Attempt to auto-create RequestGroupActionComponent.resource");
2471            else if (Configuration.doAutoCreate())
2472              this.resource = new Reference(); // cc
2473          return this.resource;
2474        }
2475
2476        public boolean hasResource() { 
2477          return this.resource != null && !this.resource.isEmpty();
2478        }
2479
2480        /**
2481         * @param value {@link #resource} (The resource that is the target of the action (e.g. CommunicationRequest).)
2482         */
2483        public RequestGroupActionComponent setResource(Reference value) { 
2484          this.resource = value;
2485          return this;
2486        }
2487
2488        /**
2489         * @return {@link #resource} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The resource that is the target of the action (e.g. CommunicationRequest).)
2490         */
2491        public Resource getResourceTarget() { 
2492          return this.resourceTarget;
2493        }
2494
2495        /**
2496         * @param value {@link #resource} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The resource that is the target of the action (e.g. CommunicationRequest).)
2497         */
2498        public RequestGroupActionComponent setResourceTarget(Resource value) { 
2499          this.resourceTarget = value;
2500          return this;
2501        }
2502
2503        /**
2504         * @return {@link #action} (Sub actions.)
2505         */
2506        public List<RequestGroupActionComponent> getAction() { 
2507          if (this.action == null)
2508            this.action = new ArrayList<RequestGroupActionComponent>();
2509          return this.action;
2510        }
2511
2512        /**
2513         * @return Returns a reference to <code>this</code> for easy method chaining
2514         */
2515        public RequestGroupActionComponent setAction(List<RequestGroupActionComponent> theAction) { 
2516          this.action = theAction;
2517          return this;
2518        }
2519
2520        public boolean hasAction() { 
2521          if (this.action == null)
2522            return false;
2523          for (RequestGroupActionComponent item : this.action)
2524            if (!item.isEmpty())
2525              return true;
2526          return false;
2527        }
2528
2529        public RequestGroupActionComponent addAction() { //3
2530          RequestGroupActionComponent t = new RequestGroupActionComponent();
2531          if (this.action == null)
2532            this.action = new ArrayList<RequestGroupActionComponent>();
2533          this.action.add(t);
2534          return t;
2535        }
2536
2537        public RequestGroupActionComponent addAction(RequestGroupActionComponent t) { //3
2538          if (t == null)
2539            return this;
2540          if (this.action == null)
2541            this.action = new ArrayList<RequestGroupActionComponent>();
2542          this.action.add(t);
2543          return this;
2544        }
2545
2546        /**
2547         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist
2548         */
2549        public RequestGroupActionComponent getActionFirstRep() { 
2550          if (getAction().isEmpty()) {
2551            addAction();
2552          }
2553          return getAction().get(0);
2554        }
2555
2556        protected void listChildren(List<Property> children) {
2557          super.listChildren(children);
2558          children.add(new Property("prefix", "string", "A user-visible prefix for the action.", 0, 1, prefix));
2559          children.add(new Property("title", "string", "The title of the action displayed to a user.", 0, 1, title));
2560          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));
2561          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));
2562          children.add(new Property("priority", "code", "Indicates how quickly the action should be addressed with respect to other actions.", 0, 1, priority));
2563          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 the section of a documentation template.", 0, java.lang.Integer.MAX_VALUE, code));
2564          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));
2565          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));
2566          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));
2567          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));
2568          children.add(new Property("participant", "Reference(Patient|Practitioner|RelatedPerson)", "The participant that should perform or be responsible for this action.", 0, java.lang.Integer.MAX_VALUE, participant));
2569          children.add(new Property("type", "CodeableConcept", "The type of action to perform (create, update, remove).", 0, 1, type));
2570          children.add(new Property("groupingBehavior", "code", "Defines the grouping behavior for the action and its children.", 0, 1, groupingBehavior));
2571          children.add(new Property("selectionBehavior", "code", "Defines the selection behavior for the action and its children.", 0, 1, selectionBehavior));
2572          children.add(new Property("requiredBehavior", "code", "Defines the requiredness behavior for the action.", 0, 1, requiredBehavior));
2573          children.add(new Property("precheckBehavior", "code", "Defines whether the action should usually be preselected.", 0, 1, precheckBehavior));
2574          children.add(new Property("cardinalityBehavior", "code", "Defines whether the action can be selected multiple times.", 0, 1, cardinalityBehavior));
2575          children.add(new Property("resource", "Reference(Any)", "The resource that is the target of the action (e.g. CommunicationRequest).", 0, 1, resource));
2576          children.add(new Property("action", "@RequestGroup.action", "Sub actions.", 0, java.lang.Integer.MAX_VALUE, action));
2577        }
2578
2579        @Override
2580        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2581          switch (_hash) {
2582          case -980110702: /*prefix*/  return new Property("prefix", "string", "A user-visible prefix for the action.", 0, 1, prefix);
2583          case 110371416: /*title*/  return new Property("title", "string", "The title of the action displayed to a user.", 0, 1, title);
2584          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);
2585          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);
2586          case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the action should be addressed with respect to other actions.", 0, 1, priority);
2587          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 the section of a documentation template.", 0, java.lang.Integer.MAX_VALUE, code);
2588          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);
2589          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);
2590          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);
2591          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);
2592          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);
2593          case -1837458939: /*timingDateTime*/  return new Property("timing[x]", "dateTime|Age|Period|Duration|Range|Timing", "An optional value describing when the action should be performed.", 0, 1, timing);
2594          case 164607061: /*timingAge*/  return new Property("timing[x]", "dateTime|Age|Period|Duration|Range|Timing", "An optional value describing when the action should be performed.", 0, 1, timing);
2595          case -615615829: /*timingPeriod*/  return new Property("timing[x]", "dateTime|Age|Period|Duration|Range|Timing", "An optional value describing when the action should be performed.", 0, 1, timing);
2596          case -1327253506: /*timingDuration*/  return new Property("timing[x]", "dateTime|Age|Period|Duration|Range|Timing", "An optional value describing when the action should be performed.", 0, 1, timing);
2597          case -710871277: /*timingRange*/  return new Property("timing[x]", "dateTime|Age|Period|Duration|Range|Timing", "An optional value describing when the action should be performed.", 0, 1, timing);
2598          case -497554124: /*timingTiming*/  return new Property("timing[x]", "dateTime|Age|Period|Duration|Range|Timing", "An optional value describing when the action should be performed.", 0, 1, timing);
2599          case 767422259: /*participant*/  return new Property("participant", "Reference(Patient|Practitioner|RelatedPerson)", "The participant that should perform or be responsible for this action.", 0, java.lang.Integer.MAX_VALUE, participant);
2600          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The type of action to perform (create, update, remove).", 0, 1, type);
2601          case 586678389: /*groupingBehavior*/  return new Property("groupingBehavior", "code", "Defines the grouping behavior for the action and its children.", 0, 1, groupingBehavior);
2602          case 168639486: /*selectionBehavior*/  return new Property("selectionBehavior", "code", "Defines the selection behavior for the action and its children.", 0, 1, selectionBehavior);
2603          case -1163906287: /*requiredBehavior*/  return new Property("requiredBehavior", "code", "Defines the requiredness behavior for the action.", 0, 1, requiredBehavior);
2604          case -1174249033: /*precheckBehavior*/  return new Property("precheckBehavior", "code", "Defines whether the action should usually be preselected.", 0, 1, precheckBehavior);
2605          case -922577408: /*cardinalityBehavior*/  return new Property("cardinalityBehavior", "code", "Defines whether the action can be selected multiple times.", 0, 1, cardinalityBehavior);
2606          case -341064690: /*resource*/  return new Property("resource", "Reference(Any)", "The resource that is the target of the action (e.g. CommunicationRequest).", 0, 1, resource);
2607          case -1422950858: /*action*/  return new Property("action", "@RequestGroup.action", "Sub actions.", 0, java.lang.Integer.MAX_VALUE, action);
2608          default: return super.getNamedProperty(_hash, _name, _checkValid);
2609          }
2610
2611        }
2612
2613      @Override
2614      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2615        switch (hash) {
2616        case -980110702: /*prefix*/ return this.prefix == null ? new Base[0] : new Base[] {this.prefix}; // StringType
2617        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2618        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
2619        case -900391049: /*textEquivalent*/ return this.textEquivalent == null ? new Base[0] : new Base[] {this.textEquivalent}; // StringType
2620        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
2621        case 3059181: /*code*/ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept
2622        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : this.documentation.toArray(new Base[this.documentation.size()]); // RelatedArtifact
2623        case -861311717: /*condition*/ return this.condition == null ? new Base[0] : this.condition.toArray(new Base[this.condition.size()]); // RequestGroupActionConditionComponent
2624        case -384107967: /*relatedAction*/ return this.relatedAction == null ? new Base[0] : this.relatedAction.toArray(new Base[this.relatedAction.size()]); // RequestGroupActionRelatedActionComponent
2625        case -873664438: /*timing*/ return this.timing == null ? new Base[0] : new Base[] {this.timing}; // Type
2626        case 767422259: /*participant*/ return this.participant == null ? new Base[0] : this.participant.toArray(new Base[this.participant.size()]); // Reference
2627        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
2628        case 586678389: /*groupingBehavior*/ return this.groupingBehavior == null ? new Base[0] : new Base[] {this.groupingBehavior}; // Enumeration<ActionGroupingBehavior>
2629        case 168639486: /*selectionBehavior*/ return this.selectionBehavior == null ? new Base[0] : new Base[] {this.selectionBehavior}; // Enumeration<ActionSelectionBehavior>
2630        case -1163906287: /*requiredBehavior*/ return this.requiredBehavior == null ? new Base[0] : new Base[] {this.requiredBehavior}; // Enumeration<ActionRequiredBehavior>
2631        case -1174249033: /*precheckBehavior*/ return this.precheckBehavior == null ? new Base[0] : new Base[] {this.precheckBehavior}; // Enumeration<ActionPrecheckBehavior>
2632        case -922577408: /*cardinalityBehavior*/ return this.cardinalityBehavior == null ? new Base[0] : new Base[] {this.cardinalityBehavior}; // Enumeration<ActionCardinalityBehavior>
2633        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // Reference
2634        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // RequestGroupActionComponent
2635        default: return super.getProperty(hash, name, checkValid);
2636        }
2637
2638      }
2639
2640      @Override
2641      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2642        switch (hash) {
2643        case -980110702: // prefix
2644          this.prefix = castToString(value); // StringType
2645          return value;
2646        case 110371416: // title
2647          this.title = castToString(value); // StringType
2648          return value;
2649        case -1724546052: // description
2650          this.description = castToString(value); // StringType
2651          return value;
2652        case -900391049: // textEquivalent
2653          this.textEquivalent = castToString(value); // StringType
2654          return value;
2655        case -1165461084: // priority
2656          value = new RequestPriorityEnumFactory().fromType(castToCode(value));
2657          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
2658          return value;
2659        case 3059181: // code
2660          this.getCode().add(castToCodeableConcept(value)); // CodeableConcept
2661          return value;
2662        case 1587405498: // documentation
2663          this.getDocumentation().add(castToRelatedArtifact(value)); // RelatedArtifact
2664          return value;
2665        case -861311717: // condition
2666          this.getCondition().add((RequestGroupActionConditionComponent) value); // RequestGroupActionConditionComponent
2667          return value;
2668        case -384107967: // relatedAction
2669          this.getRelatedAction().add((RequestGroupActionRelatedActionComponent) value); // RequestGroupActionRelatedActionComponent
2670          return value;
2671        case -873664438: // timing
2672          this.timing = castToType(value); // Type
2673          return value;
2674        case 767422259: // participant
2675          this.getParticipant().add(castToReference(value)); // Reference
2676          return value;
2677        case 3575610: // type
2678          this.type = castToCodeableConcept(value); // CodeableConcept
2679          return value;
2680        case 586678389: // groupingBehavior
2681          value = new ActionGroupingBehaviorEnumFactory().fromType(castToCode(value));
2682          this.groupingBehavior = (Enumeration) value; // Enumeration<ActionGroupingBehavior>
2683          return value;
2684        case 168639486: // selectionBehavior
2685          value = new ActionSelectionBehaviorEnumFactory().fromType(castToCode(value));
2686          this.selectionBehavior = (Enumeration) value; // Enumeration<ActionSelectionBehavior>
2687          return value;
2688        case -1163906287: // requiredBehavior
2689          value = new ActionRequiredBehaviorEnumFactory().fromType(castToCode(value));
2690          this.requiredBehavior = (Enumeration) value; // Enumeration<ActionRequiredBehavior>
2691          return value;
2692        case -1174249033: // precheckBehavior
2693          value = new ActionPrecheckBehaviorEnumFactory().fromType(castToCode(value));
2694          this.precheckBehavior = (Enumeration) value; // Enumeration<ActionPrecheckBehavior>
2695          return value;
2696        case -922577408: // cardinalityBehavior
2697          value = new ActionCardinalityBehaviorEnumFactory().fromType(castToCode(value));
2698          this.cardinalityBehavior = (Enumeration) value; // Enumeration<ActionCardinalityBehavior>
2699          return value;
2700        case -341064690: // resource
2701          this.resource = castToReference(value); // Reference
2702          return value;
2703        case -1422950858: // action
2704          this.getAction().add((RequestGroupActionComponent) value); // RequestGroupActionComponent
2705          return value;
2706        default: return super.setProperty(hash, name, value);
2707        }
2708
2709      }
2710
2711      @Override
2712      public Base setProperty(String name, Base value) throws FHIRException {
2713        if (name.equals("prefix")) {
2714          this.prefix = castToString(value); // StringType
2715        } else if (name.equals("title")) {
2716          this.title = castToString(value); // StringType
2717        } else if (name.equals("description")) {
2718          this.description = castToString(value); // StringType
2719        } else if (name.equals("textEquivalent")) {
2720          this.textEquivalent = castToString(value); // StringType
2721        } else if (name.equals("priority")) {
2722          value = new RequestPriorityEnumFactory().fromType(castToCode(value));
2723          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
2724        } else if (name.equals("code")) {
2725          this.getCode().add(castToCodeableConcept(value));
2726        } else if (name.equals("documentation")) {
2727          this.getDocumentation().add(castToRelatedArtifact(value));
2728        } else if (name.equals("condition")) {
2729          this.getCondition().add((RequestGroupActionConditionComponent) value);
2730        } else if (name.equals("relatedAction")) {
2731          this.getRelatedAction().add((RequestGroupActionRelatedActionComponent) value);
2732        } else if (name.equals("timing[x]")) {
2733          this.timing = castToType(value); // Type
2734        } else if (name.equals("participant")) {
2735          this.getParticipant().add(castToReference(value));
2736        } else if (name.equals("type")) {
2737          this.type = castToCodeableConcept(value); // CodeableConcept
2738        } else if (name.equals("groupingBehavior")) {
2739          value = new ActionGroupingBehaviorEnumFactory().fromType(castToCode(value));
2740          this.groupingBehavior = (Enumeration) value; // Enumeration<ActionGroupingBehavior>
2741        } else if (name.equals("selectionBehavior")) {
2742          value = new ActionSelectionBehaviorEnumFactory().fromType(castToCode(value));
2743          this.selectionBehavior = (Enumeration) value; // Enumeration<ActionSelectionBehavior>
2744        } else if (name.equals("requiredBehavior")) {
2745          value = new ActionRequiredBehaviorEnumFactory().fromType(castToCode(value));
2746          this.requiredBehavior = (Enumeration) value; // Enumeration<ActionRequiredBehavior>
2747        } else if (name.equals("precheckBehavior")) {
2748          value = new ActionPrecheckBehaviorEnumFactory().fromType(castToCode(value));
2749          this.precheckBehavior = (Enumeration) value; // Enumeration<ActionPrecheckBehavior>
2750        } else if (name.equals("cardinalityBehavior")) {
2751          value = new ActionCardinalityBehaviorEnumFactory().fromType(castToCode(value));
2752          this.cardinalityBehavior = (Enumeration) value; // Enumeration<ActionCardinalityBehavior>
2753        } else if (name.equals("resource")) {
2754          this.resource = castToReference(value); // Reference
2755        } else if (name.equals("action")) {
2756          this.getAction().add((RequestGroupActionComponent) value);
2757        } else
2758          return super.setProperty(name, value);
2759        return value;
2760      }
2761
2762      @Override
2763      public Base makeProperty(int hash, String name) throws FHIRException {
2764        switch (hash) {
2765        case -980110702:  return getPrefixElement();
2766        case 110371416:  return getTitleElement();
2767        case -1724546052:  return getDescriptionElement();
2768        case -900391049:  return getTextEquivalentElement();
2769        case -1165461084:  return getPriorityElement();
2770        case 3059181:  return addCode(); 
2771        case 1587405498:  return addDocumentation(); 
2772        case -861311717:  return addCondition(); 
2773        case -384107967:  return addRelatedAction(); 
2774        case 164632566:  return getTiming(); 
2775        case -873664438:  return getTiming(); 
2776        case 767422259:  return addParticipant(); 
2777        case 3575610:  return getType(); 
2778        case 586678389:  return getGroupingBehaviorElement();
2779        case 168639486:  return getSelectionBehaviorElement();
2780        case -1163906287:  return getRequiredBehaviorElement();
2781        case -1174249033:  return getPrecheckBehaviorElement();
2782        case -922577408:  return getCardinalityBehaviorElement();
2783        case -341064690:  return getResource(); 
2784        case -1422950858:  return addAction(); 
2785        default: return super.makeProperty(hash, name);
2786        }
2787
2788      }
2789
2790      @Override
2791      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2792        switch (hash) {
2793        case -980110702: /*prefix*/ return new String[] {"string"};
2794        case 110371416: /*title*/ return new String[] {"string"};
2795        case -1724546052: /*description*/ return new String[] {"string"};
2796        case -900391049: /*textEquivalent*/ return new String[] {"string"};
2797        case -1165461084: /*priority*/ return new String[] {"code"};
2798        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
2799        case 1587405498: /*documentation*/ return new String[] {"RelatedArtifact"};
2800        case -861311717: /*condition*/ return new String[] {};
2801        case -384107967: /*relatedAction*/ return new String[] {};
2802        case -873664438: /*timing*/ return new String[] {"dateTime", "Age", "Period", "Duration", "Range", "Timing"};
2803        case 767422259: /*participant*/ return new String[] {"Reference"};
2804        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
2805        case 586678389: /*groupingBehavior*/ return new String[] {"code"};
2806        case 168639486: /*selectionBehavior*/ return new String[] {"code"};
2807        case -1163906287: /*requiredBehavior*/ return new String[] {"code"};
2808        case -1174249033: /*precheckBehavior*/ return new String[] {"code"};
2809        case -922577408: /*cardinalityBehavior*/ return new String[] {"code"};
2810        case -341064690: /*resource*/ return new String[] {"Reference"};
2811        case -1422950858: /*action*/ return new String[] {"@RequestGroup.action"};
2812        default: return super.getTypesForProperty(hash, name);
2813        }
2814
2815      }
2816
2817      @Override
2818      public Base addChild(String name) throws FHIRException {
2819        if (name.equals("prefix")) {
2820          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.prefix");
2821        }
2822        else if (name.equals("title")) {
2823          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.title");
2824        }
2825        else if (name.equals("description")) {
2826          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.description");
2827        }
2828        else if (name.equals("textEquivalent")) {
2829          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.textEquivalent");
2830        }
2831        else if (name.equals("priority")) {
2832          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.priority");
2833        }
2834        else if (name.equals("code")) {
2835          return addCode();
2836        }
2837        else if (name.equals("documentation")) {
2838          return addDocumentation();
2839        }
2840        else if (name.equals("condition")) {
2841          return addCondition();
2842        }
2843        else if (name.equals("relatedAction")) {
2844          return addRelatedAction();
2845        }
2846        else if (name.equals("timingDateTime")) {
2847          this.timing = new DateTimeType();
2848          return this.timing;
2849        }
2850        else if (name.equals("timingAge")) {
2851          this.timing = new Age();
2852          return this.timing;
2853        }
2854        else if (name.equals("timingPeriod")) {
2855          this.timing = new Period();
2856          return this.timing;
2857        }
2858        else if (name.equals("timingDuration")) {
2859          this.timing = new Duration();
2860          return this.timing;
2861        }
2862        else if (name.equals("timingRange")) {
2863          this.timing = new Range();
2864          return this.timing;
2865        }
2866        else if (name.equals("timingTiming")) {
2867          this.timing = new Timing();
2868          return this.timing;
2869        }
2870        else if (name.equals("participant")) {
2871          return addParticipant();
2872        }
2873        else if (name.equals("type")) {
2874          this.type = new CodeableConcept();
2875          return this.type;
2876        }
2877        else if (name.equals("groupingBehavior")) {
2878          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.groupingBehavior");
2879        }
2880        else if (name.equals("selectionBehavior")) {
2881          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.selectionBehavior");
2882        }
2883        else if (name.equals("requiredBehavior")) {
2884          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.requiredBehavior");
2885        }
2886        else if (name.equals("precheckBehavior")) {
2887          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.precheckBehavior");
2888        }
2889        else if (name.equals("cardinalityBehavior")) {
2890          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.cardinalityBehavior");
2891        }
2892        else if (name.equals("resource")) {
2893          this.resource = new Reference();
2894          return this.resource;
2895        }
2896        else if (name.equals("action")) {
2897          return addAction();
2898        }
2899        else
2900          return super.addChild(name);
2901      }
2902
2903      public RequestGroupActionComponent copy() {
2904        RequestGroupActionComponent dst = new RequestGroupActionComponent();
2905        copyValues(dst);
2906        dst.prefix = prefix == null ? null : prefix.copy();
2907        dst.title = title == null ? null : title.copy();
2908        dst.description = description == null ? null : description.copy();
2909        dst.textEquivalent = textEquivalent == null ? null : textEquivalent.copy();
2910        dst.priority = priority == null ? null : priority.copy();
2911        if (code != null) {
2912          dst.code = new ArrayList<CodeableConcept>();
2913          for (CodeableConcept i : code)
2914            dst.code.add(i.copy());
2915        };
2916        if (documentation != null) {
2917          dst.documentation = new ArrayList<RelatedArtifact>();
2918          for (RelatedArtifact i : documentation)
2919            dst.documentation.add(i.copy());
2920        };
2921        if (condition != null) {
2922          dst.condition = new ArrayList<RequestGroupActionConditionComponent>();
2923          for (RequestGroupActionConditionComponent i : condition)
2924            dst.condition.add(i.copy());
2925        };
2926        if (relatedAction != null) {
2927          dst.relatedAction = new ArrayList<RequestGroupActionRelatedActionComponent>();
2928          for (RequestGroupActionRelatedActionComponent i : relatedAction)
2929            dst.relatedAction.add(i.copy());
2930        };
2931        dst.timing = timing == null ? null : timing.copy();
2932        if (participant != null) {
2933          dst.participant = new ArrayList<Reference>();
2934          for (Reference i : participant)
2935            dst.participant.add(i.copy());
2936        };
2937        dst.type = type == null ? null : type.copy();
2938        dst.groupingBehavior = groupingBehavior == null ? null : groupingBehavior.copy();
2939        dst.selectionBehavior = selectionBehavior == null ? null : selectionBehavior.copy();
2940        dst.requiredBehavior = requiredBehavior == null ? null : requiredBehavior.copy();
2941        dst.precheckBehavior = precheckBehavior == null ? null : precheckBehavior.copy();
2942        dst.cardinalityBehavior = cardinalityBehavior == null ? null : cardinalityBehavior.copy();
2943        dst.resource = resource == null ? null : resource.copy();
2944        if (action != null) {
2945          dst.action = new ArrayList<RequestGroupActionComponent>();
2946          for (RequestGroupActionComponent i : action)
2947            dst.action.add(i.copy());
2948        };
2949        return dst;
2950      }
2951
2952      @Override
2953      public boolean equalsDeep(Base other_) {
2954        if (!super.equalsDeep(other_))
2955          return false;
2956        if (!(other_ instanceof RequestGroupActionComponent))
2957          return false;
2958        RequestGroupActionComponent o = (RequestGroupActionComponent) other_;
2959        return compareDeep(prefix, o.prefix, true) && compareDeep(title, o.title, true) && compareDeep(description, o.description, true)
2960           && compareDeep(textEquivalent, o.textEquivalent, true) && compareDeep(priority, o.priority, true)
2961           && compareDeep(code, o.code, true) && compareDeep(documentation, o.documentation, true) && compareDeep(condition, o.condition, true)
2962           && compareDeep(relatedAction, o.relatedAction, true) && compareDeep(timing, o.timing, true) && compareDeep(participant, o.participant, true)
2963           && compareDeep(type, o.type, true) && compareDeep(groupingBehavior, o.groupingBehavior, true) && compareDeep(selectionBehavior, o.selectionBehavior, true)
2964           && compareDeep(requiredBehavior, o.requiredBehavior, true) && compareDeep(precheckBehavior, o.precheckBehavior, true)
2965           && compareDeep(cardinalityBehavior, o.cardinalityBehavior, true) && compareDeep(resource, o.resource, true)
2966           && compareDeep(action, o.action, true);
2967      }
2968
2969      @Override
2970      public boolean equalsShallow(Base other_) {
2971        if (!super.equalsShallow(other_))
2972          return false;
2973        if (!(other_ instanceof RequestGroupActionComponent))
2974          return false;
2975        RequestGroupActionComponent o = (RequestGroupActionComponent) other_;
2976        return compareValues(prefix, o.prefix, true) && compareValues(title, o.title, true) && compareValues(description, o.description, true)
2977           && compareValues(textEquivalent, o.textEquivalent, true) && compareValues(priority, o.priority, true)
2978           && compareValues(groupingBehavior, o.groupingBehavior, true) && compareValues(selectionBehavior, o.selectionBehavior, true)
2979           && compareValues(requiredBehavior, o.requiredBehavior, true) && compareValues(precheckBehavior, o.precheckBehavior, true)
2980           && compareValues(cardinalityBehavior, o.cardinalityBehavior, true);
2981      }
2982
2983      public boolean isEmpty() {
2984        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(prefix, title, description
2985          , textEquivalent, priority, code, documentation, condition, relatedAction, timing
2986          , participant, type, groupingBehavior, selectionBehavior, requiredBehavior, precheckBehavior
2987          , cardinalityBehavior, resource, action);
2988      }
2989
2990  public String fhirType() {
2991    return "RequestGroup.action";
2992
2993  }
2994
2995  }
2996
2997    @Block()
2998    public static class RequestGroupActionConditionComponent extends BackboneElement implements IBaseBackboneElement {
2999        /**
3000         * The kind of condition.
3001         */
3002        @Child(name = "kind", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
3003        @Description(shortDefinition="applicability | start | stop", formalDefinition="The kind of condition." )
3004        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-condition-kind")
3005        protected Enumeration<ActionConditionKind> kind;
3006
3007        /**
3008         * A brief, natural language description of the condition that effectively communicates the intended semantics.
3009         */
3010        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3011        @Description(shortDefinition="Natural language description of the condition", formalDefinition="A brief, natural language description of the condition that effectively communicates the intended semantics." )
3012        protected StringType description;
3013
3014        /**
3015         * The media type of the language for the expression.
3016         */
3017        @Child(name = "language", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
3018        @Description(shortDefinition="Language of the expression", formalDefinition="The media type of the language for the expression." )
3019        protected StringType language;
3020
3021        /**
3022         * An expression that returns true or false, indicating whether or not the condition is satisfied.
3023         */
3024        @Child(name = "expression", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
3025        @Description(shortDefinition="Boolean-valued expression", formalDefinition="An expression that returns true or false, indicating whether or not the condition is satisfied." )
3026        protected StringType expression;
3027
3028        private static final long serialVersionUID = 944300105L;
3029
3030    /**
3031     * Constructor
3032     */
3033      public RequestGroupActionConditionComponent() {
3034        super();
3035      }
3036
3037    /**
3038     * Constructor
3039     */
3040      public RequestGroupActionConditionComponent(Enumeration<ActionConditionKind> kind) {
3041        super();
3042        this.kind = kind;
3043      }
3044
3045        /**
3046         * @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
3047         */
3048        public Enumeration<ActionConditionKind> getKindElement() { 
3049          if (this.kind == null)
3050            if (Configuration.errorOnAutoCreate())
3051              throw new Error("Attempt to auto-create RequestGroupActionConditionComponent.kind");
3052            else if (Configuration.doAutoCreate())
3053              this.kind = new Enumeration<ActionConditionKind>(new ActionConditionKindEnumFactory()); // bb
3054          return this.kind;
3055        }
3056
3057        public boolean hasKindElement() { 
3058          return this.kind != null && !this.kind.isEmpty();
3059        }
3060
3061        public boolean hasKind() { 
3062          return this.kind != null && !this.kind.isEmpty();
3063        }
3064
3065        /**
3066         * @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
3067         */
3068        public RequestGroupActionConditionComponent setKindElement(Enumeration<ActionConditionKind> value) { 
3069          this.kind = value;
3070          return this;
3071        }
3072
3073        /**
3074         * @return The kind of condition.
3075         */
3076        public ActionConditionKind getKind() { 
3077          return this.kind == null ? null : this.kind.getValue();
3078        }
3079
3080        /**
3081         * @param value The kind of condition.
3082         */
3083        public RequestGroupActionConditionComponent setKind(ActionConditionKind value) { 
3084            if (this.kind == null)
3085              this.kind = new Enumeration<ActionConditionKind>(new ActionConditionKindEnumFactory());
3086            this.kind.setValue(value);
3087          return this;
3088        }
3089
3090        /**
3091         * @return {@link #description} (A brief, natural language description of the condition that effectively communicates the intended semantics.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3092         */
3093        public StringType getDescriptionElement() { 
3094          if (this.description == null)
3095            if (Configuration.errorOnAutoCreate())
3096              throw new Error("Attempt to auto-create RequestGroupActionConditionComponent.description");
3097            else if (Configuration.doAutoCreate())
3098              this.description = new StringType(); // bb
3099          return this.description;
3100        }
3101
3102        public boolean hasDescriptionElement() { 
3103          return this.description != null && !this.description.isEmpty();
3104        }
3105
3106        public boolean hasDescription() { 
3107          return this.description != null && !this.description.isEmpty();
3108        }
3109
3110        /**
3111         * @param value {@link #description} (A brief, natural language description of the condition that effectively communicates the intended semantics.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3112         */
3113        public RequestGroupActionConditionComponent setDescriptionElement(StringType value) { 
3114          this.description = value;
3115          return this;
3116        }
3117
3118        /**
3119         * @return A brief, natural language description of the condition that effectively communicates the intended semantics.
3120         */
3121        public String getDescription() { 
3122          return this.description == null ? null : this.description.getValue();
3123        }
3124
3125        /**
3126         * @param value A brief, natural language description of the condition that effectively communicates the intended semantics.
3127         */
3128        public RequestGroupActionConditionComponent setDescription(String value) { 
3129          if (Utilities.noString(value))
3130            this.description = null;
3131          else {
3132            if (this.description == null)
3133              this.description = new StringType();
3134            this.description.setValue(value);
3135          }
3136          return this;
3137        }
3138
3139        /**
3140         * @return {@link #language} (The media type of the language for the expression.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
3141         */
3142        public StringType getLanguageElement() { 
3143          if (this.language == null)
3144            if (Configuration.errorOnAutoCreate())
3145              throw new Error("Attempt to auto-create RequestGroupActionConditionComponent.language");
3146            else if (Configuration.doAutoCreate())
3147              this.language = new StringType(); // bb
3148          return this.language;
3149        }
3150
3151        public boolean hasLanguageElement() { 
3152          return this.language != null && !this.language.isEmpty();
3153        }
3154
3155        public boolean hasLanguage() { 
3156          return this.language != null && !this.language.isEmpty();
3157        }
3158
3159        /**
3160         * @param value {@link #language} (The media type of the language for the expression.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
3161         */
3162        public RequestGroupActionConditionComponent setLanguageElement(StringType value) { 
3163          this.language = value;
3164          return this;
3165        }
3166
3167        /**
3168         * @return The media type of the language for the expression.
3169         */
3170        public String getLanguage() { 
3171          return this.language == null ? null : this.language.getValue();
3172        }
3173
3174        /**
3175         * @param value The media type of the language for the expression.
3176         */
3177        public RequestGroupActionConditionComponent setLanguage(String value) { 
3178          if (Utilities.noString(value))
3179            this.language = null;
3180          else {
3181            if (this.language == null)
3182              this.language = new StringType();
3183            this.language.setValue(value);
3184          }
3185          return this;
3186        }
3187
3188        /**
3189         * @return {@link #expression} (An expression that returns true or false, indicating whether or not the condition is satisfied.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
3190         */
3191        public StringType getExpressionElement() { 
3192          if (this.expression == null)
3193            if (Configuration.errorOnAutoCreate())
3194              throw new Error("Attempt to auto-create RequestGroupActionConditionComponent.expression");
3195            else if (Configuration.doAutoCreate())
3196              this.expression = new StringType(); // bb
3197          return this.expression;
3198        }
3199
3200        public boolean hasExpressionElement() { 
3201          return this.expression != null && !this.expression.isEmpty();
3202        }
3203
3204        public boolean hasExpression() { 
3205          return this.expression != null && !this.expression.isEmpty();
3206        }
3207
3208        /**
3209         * @param value {@link #expression} (An expression that returns true or false, indicating whether or not the condition is satisfied.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
3210         */
3211        public RequestGroupActionConditionComponent setExpressionElement(StringType value) { 
3212          this.expression = value;
3213          return this;
3214        }
3215
3216        /**
3217         * @return An expression that returns true or false, indicating whether or not the condition is satisfied.
3218         */
3219        public String getExpression() { 
3220          return this.expression == null ? null : this.expression.getValue();
3221        }
3222
3223        /**
3224         * @param value An expression that returns true or false, indicating whether or not the condition is satisfied.
3225         */
3226        public RequestGroupActionConditionComponent setExpression(String value) { 
3227          if (Utilities.noString(value))
3228            this.expression = null;
3229          else {
3230            if (this.expression == null)
3231              this.expression = new StringType();
3232            this.expression.setValue(value);
3233          }
3234          return this;
3235        }
3236
3237        protected void listChildren(List<Property> children) {
3238          super.listChildren(children);
3239          children.add(new Property("kind", "code", "The kind of condition.", 0, 1, kind));
3240          children.add(new Property("description", "string", "A brief, natural language description of the condition that effectively communicates the intended semantics.", 0, 1, description));
3241          children.add(new Property("language", "string", "The media type of the language for the expression.", 0, 1, language));
3242          children.add(new Property("expression", "string", "An expression that returns true or false, indicating whether or not the condition is satisfied.", 0, 1, expression));
3243        }
3244
3245        @Override
3246        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3247          switch (_hash) {
3248          case 3292052: /*kind*/  return new Property("kind", "code", "The kind of condition.", 0, 1, kind);
3249          case -1724546052: /*description*/  return new Property("description", "string", "A brief, natural language description of the condition that effectively communicates the intended semantics.", 0, 1, description);
3250          case -1613589672: /*language*/  return new Property("language", "string", "The media type of the language for the expression.", 0, 1, language);
3251          case -1795452264: /*expression*/  return new Property("expression", "string", "An expression that returns true or false, indicating whether or not the condition is satisfied.", 0, 1, expression);
3252          default: return super.getNamedProperty(_hash, _name, _checkValid);
3253          }
3254
3255        }
3256
3257      @Override
3258      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3259        switch (hash) {
3260        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<ActionConditionKind>
3261        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
3262        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // StringType
3263        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
3264        default: return super.getProperty(hash, name, checkValid);
3265        }
3266
3267      }
3268
3269      @Override
3270      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3271        switch (hash) {
3272        case 3292052: // kind
3273          value = new ActionConditionKindEnumFactory().fromType(castToCode(value));
3274          this.kind = (Enumeration) value; // Enumeration<ActionConditionKind>
3275          return value;
3276        case -1724546052: // description
3277          this.description = castToString(value); // StringType
3278          return value;
3279        case -1613589672: // language
3280          this.language = castToString(value); // StringType
3281          return value;
3282        case -1795452264: // expression
3283          this.expression = castToString(value); // StringType
3284          return value;
3285        default: return super.setProperty(hash, name, value);
3286        }
3287
3288      }
3289
3290      @Override
3291      public Base setProperty(String name, Base value) throws FHIRException {
3292        if (name.equals("kind")) {
3293          value = new ActionConditionKindEnumFactory().fromType(castToCode(value));
3294          this.kind = (Enumeration) value; // Enumeration<ActionConditionKind>
3295        } else if (name.equals("description")) {
3296          this.description = castToString(value); // StringType
3297        } else if (name.equals("language")) {
3298          this.language = castToString(value); // StringType
3299        } else if (name.equals("expression")) {
3300          this.expression = castToString(value); // StringType
3301        } else
3302          return super.setProperty(name, value);
3303        return value;
3304      }
3305
3306      @Override
3307      public Base makeProperty(int hash, String name) throws FHIRException {
3308        switch (hash) {
3309        case 3292052:  return getKindElement();
3310        case -1724546052:  return getDescriptionElement();
3311        case -1613589672:  return getLanguageElement();
3312        case -1795452264:  return getExpressionElement();
3313        default: return super.makeProperty(hash, name);
3314        }
3315
3316      }
3317
3318      @Override
3319      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3320        switch (hash) {
3321        case 3292052: /*kind*/ return new String[] {"code"};
3322        case -1724546052: /*description*/ return new String[] {"string"};
3323        case -1613589672: /*language*/ return new String[] {"string"};
3324        case -1795452264: /*expression*/ return new String[] {"string"};
3325        default: return super.getTypesForProperty(hash, name);
3326        }
3327
3328      }
3329
3330      @Override
3331      public Base addChild(String name) throws FHIRException {
3332        if (name.equals("kind")) {
3333          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.kind");
3334        }
3335        else if (name.equals("description")) {
3336          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.description");
3337        }
3338        else if (name.equals("language")) {
3339          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.language");
3340        }
3341        else if (name.equals("expression")) {
3342          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.expression");
3343        }
3344        else
3345          return super.addChild(name);
3346      }
3347
3348      public RequestGroupActionConditionComponent copy() {
3349        RequestGroupActionConditionComponent dst = new RequestGroupActionConditionComponent();
3350        copyValues(dst);
3351        dst.kind = kind == null ? null : kind.copy();
3352        dst.description = description == null ? null : description.copy();
3353        dst.language = language == null ? null : language.copy();
3354        dst.expression = expression == null ? null : expression.copy();
3355        return dst;
3356      }
3357
3358      @Override
3359      public boolean equalsDeep(Base other_) {
3360        if (!super.equalsDeep(other_))
3361          return false;
3362        if (!(other_ instanceof RequestGroupActionConditionComponent))
3363          return false;
3364        RequestGroupActionConditionComponent o = (RequestGroupActionConditionComponent) other_;
3365        return compareDeep(kind, o.kind, true) && compareDeep(description, o.description, true) && compareDeep(language, o.language, true)
3366           && compareDeep(expression, o.expression, true);
3367      }
3368
3369      @Override
3370      public boolean equalsShallow(Base other_) {
3371        if (!super.equalsShallow(other_))
3372          return false;
3373        if (!(other_ instanceof RequestGroupActionConditionComponent))
3374          return false;
3375        RequestGroupActionConditionComponent o = (RequestGroupActionConditionComponent) other_;
3376        return compareValues(kind, o.kind, true) && compareValues(description, o.description, true) && compareValues(language, o.language, true)
3377           && compareValues(expression, o.expression, true);
3378      }
3379
3380      public boolean isEmpty() {
3381        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(kind, description, language
3382          , expression);
3383      }
3384
3385  public String fhirType() {
3386    return "RequestGroup.action.condition";
3387
3388  }
3389
3390  }
3391
3392    @Block()
3393    public static class RequestGroupActionRelatedActionComponent extends BackboneElement implements IBaseBackboneElement {
3394        /**
3395         * The element id of the action this is related to.
3396         */
3397        @Child(name = "actionId", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=false)
3398        @Description(shortDefinition="What action this is related to", formalDefinition="The element id of the action this is related to." )
3399        protected IdType actionId;
3400
3401        /**
3402         * The relationship of this action to the related action.
3403         */
3404        @Child(name = "relationship", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
3405        @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." )
3406        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-relationship-type")
3407        protected Enumeration<ActionRelationshipType> relationship;
3408
3409        /**
3410         * A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.
3411         */
3412        @Child(name = "offset", type = {Duration.class, Range.class}, order=3, min=0, max=1, modifier=false, summary=false)
3413        @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." )
3414        protected Type offset;
3415
3416        private static final long serialVersionUID = 1063306770L;
3417
3418    /**
3419     * Constructor
3420     */
3421      public RequestGroupActionRelatedActionComponent() {
3422        super();
3423      }
3424
3425    /**
3426     * Constructor
3427     */
3428      public RequestGroupActionRelatedActionComponent(IdType actionId, Enumeration<ActionRelationshipType> relationship) {
3429        super();
3430        this.actionId = actionId;
3431        this.relationship = relationship;
3432      }
3433
3434        /**
3435         * @return {@link #actionId} (The element id of the action this is related to.). This is the underlying object with id, value and extensions. The accessor "getActionId" gives direct access to the value
3436         */
3437        public IdType getActionIdElement() { 
3438          if (this.actionId == null)
3439            if (Configuration.errorOnAutoCreate())
3440              throw new Error("Attempt to auto-create RequestGroupActionRelatedActionComponent.actionId");
3441            else if (Configuration.doAutoCreate())
3442              this.actionId = new IdType(); // bb
3443          return this.actionId;
3444        }
3445
3446        public boolean hasActionIdElement() { 
3447          return this.actionId != null && !this.actionId.isEmpty();
3448        }
3449
3450        public boolean hasActionId() { 
3451          return this.actionId != null && !this.actionId.isEmpty();
3452        }
3453
3454        /**
3455         * @param value {@link #actionId} (The element id of the action this is related to.). This is the underlying object with id, value and extensions. The accessor "getActionId" gives direct access to the value
3456         */
3457        public RequestGroupActionRelatedActionComponent setActionIdElement(IdType value) { 
3458          this.actionId = value;
3459          return this;
3460        }
3461
3462        /**
3463         * @return The element id of the action this is related to.
3464         */
3465        public String getActionId() { 
3466          return this.actionId == null ? null : this.actionId.getValue();
3467        }
3468
3469        /**
3470         * @param value The element id of the action this is related to.
3471         */
3472        public RequestGroupActionRelatedActionComponent setActionId(String value) { 
3473            if (this.actionId == null)
3474              this.actionId = new IdType();
3475            this.actionId.setValue(value);
3476          return this;
3477        }
3478
3479        /**
3480         * @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
3481         */
3482        public Enumeration<ActionRelationshipType> getRelationshipElement() { 
3483          if (this.relationship == null)
3484            if (Configuration.errorOnAutoCreate())
3485              throw new Error("Attempt to auto-create RequestGroupActionRelatedActionComponent.relationship");
3486            else if (Configuration.doAutoCreate())
3487              this.relationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory()); // bb
3488          return this.relationship;
3489        }
3490
3491        public boolean hasRelationshipElement() { 
3492          return this.relationship != null && !this.relationship.isEmpty();
3493        }
3494
3495        public boolean hasRelationship() { 
3496          return this.relationship != null && !this.relationship.isEmpty();
3497        }
3498
3499        /**
3500         * @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
3501         */
3502        public RequestGroupActionRelatedActionComponent setRelationshipElement(Enumeration<ActionRelationshipType> value) { 
3503          this.relationship = value;
3504          return this;
3505        }
3506
3507        /**
3508         * @return The relationship of this action to the related action.
3509         */
3510        public ActionRelationshipType getRelationship() { 
3511          return this.relationship == null ? null : this.relationship.getValue();
3512        }
3513
3514        /**
3515         * @param value The relationship of this action to the related action.
3516         */
3517        public RequestGroupActionRelatedActionComponent setRelationship(ActionRelationshipType value) { 
3518            if (this.relationship == null)
3519              this.relationship = new Enumeration<ActionRelationshipType>(new ActionRelationshipTypeEnumFactory());
3520            this.relationship.setValue(value);
3521          return this;
3522        }
3523
3524        /**
3525         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3526         */
3527        public Type getOffset() { 
3528          return this.offset;
3529        }
3530
3531        /**
3532         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3533         */
3534        public Duration getOffsetDuration() throws FHIRException { 
3535          if (this.offset == null)
3536            return null;
3537          if (!(this.offset instanceof Duration))
3538            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.offset.getClass().getName()+" was encountered");
3539          return (Duration) this.offset;
3540        }
3541
3542        public boolean hasOffsetDuration() { 
3543          return this != null && this.offset instanceof Duration;
3544        }
3545
3546        /**
3547         * @return {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3548         */
3549        public Range getOffsetRange() throws FHIRException { 
3550          if (this.offset == null)
3551            return null;
3552          if (!(this.offset instanceof Range))
3553            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.offset.getClass().getName()+" was encountered");
3554          return (Range) this.offset;
3555        }
3556
3557        public boolean hasOffsetRange() { 
3558          return this != null && this.offset instanceof Range;
3559        }
3560
3561        public boolean hasOffset() { 
3562          return this.offset != null && !this.offset.isEmpty();
3563        }
3564
3565        /**
3566         * @param value {@link #offset} (A duration or range of durations to apply to the relationship. For example, 30-60 minutes before.)
3567         */
3568        public RequestGroupActionRelatedActionComponent setOffset(Type value) { 
3569          if (value != null && !(value instanceof Duration || value instanceof Range))
3570            throw new Error("Not the right type for RequestGroup.action.relatedAction.offset[x]: "+value.fhirType());
3571          this.offset = value;
3572          return this;
3573        }
3574
3575        protected void listChildren(List<Property> children) {
3576          super.listChildren(children);
3577          children.add(new Property("actionId", "id", "The element id of the action this is related to.", 0, 1, actionId));
3578          children.add(new Property("relationship", "code", "The relationship of this action to the related action.", 0, 1, relationship));
3579          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));
3580        }
3581
3582        @Override
3583        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3584          switch (_hash) {
3585          case -1656172047: /*actionId*/  return new Property("actionId", "id", "The element id of the action this is related to.", 0, 1, actionId);
3586          case -261851592: /*relationship*/  return new Property("relationship", "code", "The relationship of this action to the related action.", 0, 1, relationship);
3587          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);
3588          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);
3589          case 134075207: /*offsetDuration*/  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);
3590          case 1263585386: /*offsetRange*/  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);
3591          default: return super.getNamedProperty(_hash, _name, _checkValid);
3592          }
3593
3594        }
3595
3596      @Override
3597      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3598        switch (hash) {
3599        case -1656172047: /*actionId*/ return this.actionId == null ? new Base[0] : new Base[] {this.actionId}; // IdType
3600        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : new Base[] {this.relationship}; // Enumeration<ActionRelationshipType>
3601        case -1019779949: /*offset*/ return this.offset == null ? new Base[0] : new Base[] {this.offset}; // Type
3602        default: return super.getProperty(hash, name, checkValid);
3603        }
3604
3605      }
3606
3607      @Override
3608      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3609        switch (hash) {
3610        case -1656172047: // actionId
3611          this.actionId = castToId(value); // IdType
3612          return value;
3613        case -261851592: // relationship
3614          value = new ActionRelationshipTypeEnumFactory().fromType(castToCode(value));
3615          this.relationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3616          return value;
3617        case -1019779949: // offset
3618          this.offset = castToType(value); // Type
3619          return value;
3620        default: return super.setProperty(hash, name, value);
3621        }
3622
3623      }
3624
3625      @Override
3626      public Base setProperty(String name, Base value) throws FHIRException {
3627        if (name.equals("actionId")) {
3628          this.actionId = castToId(value); // IdType
3629        } else if (name.equals("relationship")) {
3630          value = new ActionRelationshipTypeEnumFactory().fromType(castToCode(value));
3631          this.relationship = (Enumeration) value; // Enumeration<ActionRelationshipType>
3632        } else if (name.equals("offset[x]")) {
3633          this.offset = castToType(value); // Type
3634        } else
3635          return super.setProperty(name, value);
3636        return value;
3637      }
3638
3639      @Override
3640      public Base makeProperty(int hash, String name) throws FHIRException {
3641        switch (hash) {
3642        case -1656172047:  return getActionIdElement();
3643        case -261851592:  return getRelationshipElement();
3644        case -1960684787:  return getOffset(); 
3645        case -1019779949:  return getOffset(); 
3646        default: return super.makeProperty(hash, name);
3647        }
3648
3649      }
3650
3651      @Override
3652      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3653        switch (hash) {
3654        case -1656172047: /*actionId*/ return new String[] {"id"};
3655        case -261851592: /*relationship*/ return new String[] {"code"};
3656        case -1019779949: /*offset*/ return new String[] {"Duration", "Range"};
3657        default: return super.getTypesForProperty(hash, name);
3658        }
3659
3660      }
3661
3662      @Override
3663      public Base addChild(String name) throws FHIRException {
3664        if (name.equals("actionId")) {
3665          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.actionId");
3666        }
3667        else if (name.equals("relationship")) {
3668          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.relationship");
3669        }
3670        else if (name.equals("offsetDuration")) {
3671          this.offset = new Duration();
3672          return this.offset;
3673        }
3674        else if (name.equals("offsetRange")) {
3675          this.offset = new Range();
3676          return this.offset;
3677        }
3678        else
3679          return super.addChild(name);
3680      }
3681
3682      public RequestGroupActionRelatedActionComponent copy() {
3683        RequestGroupActionRelatedActionComponent dst = new RequestGroupActionRelatedActionComponent();
3684        copyValues(dst);
3685        dst.actionId = actionId == null ? null : actionId.copy();
3686        dst.relationship = relationship == null ? null : relationship.copy();
3687        dst.offset = offset == null ? null : offset.copy();
3688        return dst;
3689      }
3690
3691      @Override
3692      public boolean equalsDeep(Base other_) {
3693        if (!super.equalsDeep(other_))
3694          return false;
3695        if (!(other_ instanceof RequestGroupActionRelatedActionComponent))
3696          return false;
3697        RequestGroupActionRelatedActionComponent o = (RequestGroupActionRelatedActionComponent) other_;
3698        return compareDeep(actionId, o.actionId, true) && compareDeep(relationship, o.relationship, true)
3699           && compareDeep(offset, o.offset, true);
3700      }
3701
3702      @Override
3703      public boolean equalsShallow(Base other_) {
3704        if (!super.equalsShallow(other_))
3705          return false;
3706        if (!(other_ instanceof RequestGroupActionRelatedActionComponent))
3707          return false;
3708        RequestGroupActionRelatedActionComponent o = (RequestGroupActionRelatedActionComponent) other_;
3709        return compareValues(actionId, o.actionId, true) && compareValues(relationship, o.relationship, true)
3710          ;
3711      }
3712
3713      public boolean isEmpty() {
3714        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(actionId, relationship, offset
3715          );
3716      }
3717
3718  public String fhirType() {
3719    return "RequestGroup.action.relatedAction";
3720
3721  }
3722
3723  }
3724
3725    /**
3726     * Allows a service to provide a unique, business identifier for the request.
3727     */
3728    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3729    @Description(shortDefinition="Business identifier", formalDefinition="Allows a service to provide a unique, business identifier for the request." )
3730    protected List<Identifier> identifier;
3731
3732    /**
3733     * 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.
3734     */
3735    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3736    @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." )
3737    protected List<CanonicalType> instantiatesCanonical;
3738
3739    /**
3740     * A URL referencing an externally defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this request.
3741     */
3742    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3743    @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." )
3744    protected List<UriType> instantiatesUri;
3745
3746    /**
3747     * A plan, proposal or order that is fulfilled in whole or in part by this request.
3748     */
3749    @Child(name = "basedOn", type = {Reference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3750    @Description(shortDefinition="Fulfills plan, proposal, or order", formalDefinition="A plan, proposal or order that is fulfilled in whole or in part by this request." )
3751    protected List<Reference> basedOn;
3752    /**
3753     * The actual objects that are the target of the reference (A plan, proposal or order that is fulfilled in whole or in part by this request.)
3754     */
3755    protected List<Resource> basedOnTarget;
3756
3757
3758    /**
3759     * Completed or terminated request(s) whose function is taken by this new request.
3760     */
3761    @Child(name = "replaces", type = {Reference.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3762    @Description(shortDefinition="Request(s) replaced by this request", formalDefinition="Completed or terminated request(s) whose function is taken by this new request." )
3763    protected List<Reference> replaces;
3764    /**
3765     * The actual objects that are the target of the reference (Completed or terminated request(s) whose function is taken by this new request.)
3766     */
3767    protected List<Resource> replacesTarget;
3768
3769
3770    /**
3771     * 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.
3772     */
3773    @Child(name = "groupIdentifier", type = {Identifier.class}, order=5, min=0, max=1, modifier=false, summary=true)
3774    @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." )
3775    protected Identifier groupIdentifier;
3776
3777    /**
3778     * The current state of the request. For request groups, the status reflects the status of all the requests in the group.
3779     */
3780    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
3781    @Description(shortDefinition="draft | active | suspended | cancelled | completed | entered-in-error | unknown", formalDefinition="The current state of the request. For request groups, the status reflects the status of all the requests in the group." )
3782    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
3783    protected Enumeration<RequestStatus> status;
3784
3785    /**
3786     * Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
3787     */
3788    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
3789    @Description(shortDefinition="proposal | plan | order", formalDefinition="Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." )
3790    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
3791    protected Enumeration<RequestIntent> intent;
3792
3793    /**
3794     * Indicates how quickly the request should be addressed with respect to other requests.
3795     */
3796    @Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
3797    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the request should be addressed with respect to other requests." )
3798    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
3799    protected Enumeration<RequestPriority> priority;
3800
3801    /**
3802     * A code that identifies what the overall request group is.
3803     */
3804    @Child(name = "code", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true)
3805    @Description(shortDefinition="What's being requested/ordered", formalDefinition="A code that identifies what the overall request group is." )
3806    protected CodeableConcept code;
3807
3808    /**
3809     * The subject for which the request group was created.
3810     */
3811    @Child(name = "subject", type = {Patient.class, Group.class}, order=10, min=0, max=1, modifier=false, summary=false)
3812    @Description(shortDefinition="Who the request group is about", formalDefinition="The subject for which the request group was created." )
3813    protected Reference subject;
3814
3815    /**
3816     * The actual object that is the target of the reference (The subject for which the request group was created.)
3817     */
3818    protected Resource subjectTarget;
3819
3820    /**
3821     * Describes the context of the request group, if any.
3822     */
3823    @Child(name = "context", type = {Encounter.class, EpisodeOfCare.class}, order=11, min=0, max=1, modifier=false, summary=false)
3824    @Description(shortDefinition="Encounter or Episode for the request group", formalDefinition="Describes the context of the request group, if any." )
3825    protected Reference context;
3826
3827    /**
3828     * The actual object that is the target of the reference (Describes the context of the request group, if any.)
3829     */
3830    protected Resource contextTarget;
3831
3832    /**
3833     * Indicates when the request group was created.
3834     */
3835    @Child(name = "authoredOn", type = {DateTimeType.class}, order=12, min=0, max=1, modifier=false, summary=false)
3836    @Description(shortDefinition="When the request group was authored", formalDefinition="Indicates when the request group was created." )
3837    protected DateTimeType authoredOn;
3838
3839    /**
3840     * Provides a reference to the author of the request group.
3841     */
3842    @Child(name = "author", type = {Device.class, Practitioner.class}, order=13, min=0, max=1, modifier=false, summary=false)
3843    @Description(shortDefinition="Device or practitioner that authored the request group", formalDefinition="Provides a reference to the author of the request group." )
3844    protected Reference author;
3845
3846    /**
3847     * The actual object that is the target of the reference (Provides a reference to the author of the request group.)
3848     */
3849    protected Resource authorTarget;
3850
3851    /**
3852     * Describes the reason for the request group in coded or textual form.
3853     */
3854    @Child(name = "reasonCode", type = {CodeableConcept.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3855    @Description(shortDefinition="Why the request group is needed", formalDefinition="Describes the reason for the request group in coded or textual form." )
3856    protected List<CodeableConcept> reasonCode;
3857
3858    /**
3859     * Indicates another resource whose existence justifies this request group.
3860     */
3861    @Child(name = "reasonReference", type = {Condition.class, Observation.class, DiagnosticReport.class, DocumentReference.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3862    @Description(shortDefinition="Why the request group is needed", formalDefinition="Indicates another resource whose existence justifies this request group." )
3863    protected List<Reference> reasonReference;
3864    /**
3865     * The actual objects that are the target of the reference (Indicates another resource whose existence justifies this request group.)
3866     */
3867    protected List<Resource> reasonReferenceTarget;
3868
3869
3870    /**
3871     * Provides a mechanism to communicate additional information about the response.
3872     */
3873    @Child(name = "note", type = {Annotation.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3874    @Description(shortDefinition="Additional notes about the response", formalDefinition="Provides a mechanism to communicate additional information about the response." )
3875    protected List<Annotation> note;
3876
3877    /**
3878     * The actions, if any, produced by the evaluation of the artifact.
3879     */
3880    @Child(name = "action", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3881    @Description(shortDefinition="Proposed actions, if any", formalDefinition="The actions, if any, produced by the evaluation of the artifact." )
3882    protected List<RequestGroupActionComponent> action;
3883
3884    private static final long serialVersionUID = 1622280601L;
3885
3886  /**
3887   * Constructor
3888   */
3889    public RequestGroup() {
3890      super();
3891    }
3892
3893  /**
3894   * Constructor
3895   */
3896    public RequestGroup(Enumeration<RequestStatus> status, Enumeration<RequestIntent> intent) {
3897      super();
3898      this.status = status;
3899      this.intent = intent;
3900    }
3901
3902    /**
3903     * @return {@link #identifier} (Allows a service to provide a unique, business identifier for the request.)
3904     */
3905    public List<Identifier> getIdentifier() { 
3906      if (this.identifier == null)
3907        this.identifier = new ArrayList<Identifier>();
3908      return this.identifier;
3909    }
3910
3911    /**
3912     * @return Returns a reference to <code>this</code> for easy method chaining
3913     */
3914    public RequestGroup setIdentifier(List<Identifier> theIdentifier) { 
3915      this.identifier = theIdentifier;
3916      return this;
3917    }
3918
3919    public boolean hasIdentifier() { 
3920      if (this.identifier == null)
3921        return false;
3922      for (Identifier item : this.identifier)
3923        if (!item.isEmpty())
3924          return true;
3925      return false;
3926    }
3927
3928    public Identifier addIdentifier() { //3
3929      Identifier t = new Identifier();
3930      if (this.identifier == null)
3931        this.identifier = new ArrayList<Identifier>();
3932      this.identifier.add(t);
3933      return t;
3934    }
3935
3936    public RequestGroup addIdentifier(Identifier t) { //3
3937      if (t == null)
3938        return this;
3939      if (this.identifier == null)
3940        this.identifier = new ArrayList<Identifier>();
3941      this.identifier.add(t);
3942      return this;
3943    }
3944
3945    /**
3946     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
3947     */
3948    public Identifier getIdentifierFirstRep() { 
3949      if (getIdentifier().isEmpty()) {
3950        addIdentifier();
3951      }
3952      return getIdentifier().get(0);
3953    }
3954
3955    /**
3956     * @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.)
3957     */
3958    public List<CanonicalType> getInstantiatesCanonical() { 
3959      if (this.instantiatesCanonical == null)
3960        this.instantiatesCanonical = new ArrayList<CanonicalType>();
3961      return this.instantiatesCanonical;
3962    }
3963
3964    /**
3965     * @return Returns a reference to <code>this</code> for easy method chaining
3966     */
3967    public RequestGroup setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
3968      this.instantiatesCanonical = theInstantiatesCanonical;
3969      return this;
3970    }
3971
3972    public boolean hasInstantiatesCanonical() { 
3973      if (this.instantiatesCanonical == null)
3974        return false;
3975      for (CanonicalType item : this.instantiatesCanonical)
3976        if (!item.isEmpty())
3977          return true;
3978      return false;
3979    }
3980
3981    /**
3982     * @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.)
3983     */
3984    public CanonicalType addInstantiatesCanonicalElement() {//2 
3985      CanonicalType t = new CanonicalType();
3986      if (this.instantiatesCanonical == null)
3987        this.instantiatesCanonical = new ArrayList<CanonicalType>();
3988      this.instantiatesCanonical.add(t);
3989      return t;
3990    }
3991
3992    /**
3993     * @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.)
3994     */
3995    public RequestGroup addInstantiatesCanonical(String value) { //1
3996      CanonicalType t = new CanonicalType();
3997      t.setValue(value);
3998      if (this.instantiatesCanonical == null)
3999        this.instantiatesCanonical = new ArrayList<CanonicalType>();
4000      this.instantiatesCanonical.add(t);
4001      return this;
4002    }
4003
4004    /**
4005     * @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.)
4006     */
4007    public boolean hasInstantiatesCanonical(String value) { 
4008      if (this.instantiatesCanonical == null)
4009        return false;
4010      for (CanonicalType v : this.instantiatesCanonical)
4011        if (v.getValue().equals(value)) // canonical
4012          return true;
4013      return false;
4014    }
4015
4016    /**
4017     * @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.)
4018     */
4019    public List<UriType> getInstantiatesUri() { 
4020      if (this.instantiatesUri == null)
4021        this.instantiatesUri = new ArrayList<UriType>();
4022      return this.instantiatesUri;
4023    }
4024
4025    /**
4026     * @return Returns a reference to <code>this</code> for easy method chaining
4027     */
4028    public RequestGroup setInstantiatesUri(List<UriType> theInstantiatesUri) { 
4029      this.instantiatesUri = theInstantiatesUri;
4030      return this;
4031    }
4032
4033    public boolean hasInstantiatesUri() { 
4034      if (this.instantiatesUri == null)
4035        return false;
4036      for (UriType item : this.instantiatesUri)
4037        if (!item.isEmpty())
4038          return true;
4039      return false;
4040    }
4041
4042    /**
4043     * @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.)
4044     */
4045    public UriType addInstantiatesUriElement() {//2 
4046      UriType t = new UriType();
4047      if (this.instantiatesUri == null)
4048        this.instantiatesUri = new ArrayList<UriType>();
4049      this.instantiatesUri.add(t);
4050      return t;
4051    }
4052
4053    /**
4054     * @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.)
4055     */
4056    public RequestGroup addInstantiatesUri(String value) { //1
4057      UriType t = new UriType();
4058      t.setValue(value);
4059      if (this.instantiatesUri == null)
4060        this.instantiatesUri = new ArrayList<UriType>();
4061      this.instantiatesUri.add(t);
4062      return this;
4063    }
4064
4065    /**
4066     * @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.)
4067     */
4068    public boolean hasInstantiatesUri(String value) { 
4069      if (this.instantiatesUri == null)
4070        return false;
4071      for (UriType v : this.instantiatesUri)
4072        if (v.getValue().equals(value)) // uri
4073          return true;
4074      return false;
4075    }
4076
4077    /**
4078     * @return {@link #basedOn} (A plan, proposal or order that is fulfilled in whole or in part by this request.)
4079     */
4080    public List<Reference> getBasedOn() { 
4081      if (this.basedOn == null)
4082        this.basedOn = new ArrayList<Reference>();
4083      return this.basedOn;
4084    }
4085
4086    /**
4087     * @return Returns a reference to <code>this</code> for easy method chaining
4088     */
4089    public RequestGroup setBasedOn(List<Reference> theBasedOn) { 
4090      this.basedOn = theBasedOn;
4091      return this;
4092    }
4093
4094    public boolean hasBasedOn() { 
4095      if (this.basedOn == null)
4096        return false;
4097      for (Reference item : this.basedOn)
4098        if (!item.isEmpty())
4099          return true;
4100      return false;
4101    }
4102
4103    public Reference addBasedOn() { //3
4104      Reference t = new Reference();
4105      if (this.basedOn == null)
4106        this.basedOn = new ArrayList<Reference>();
4107      this.basedOn.add(t);
4108      return t;
4109    }
4110
4111    public RequestGroup addBasedOn(Reference t) { //3
4112      if (t == null)
4113        return this;
4114      if (this.basedOn == null)
4115        this.basedOn = new ArrayList<Reference>();
4116      this.basedOn.add(t);
4117      return this;
4118    }
4119
4120    /**
4121     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist
4122     */
4123    public Reference getBasedOnFirstRep() { 
4124      if (getBasedOn().isEmpty()) {
4125        addBasedOn();
4126      }
4127      return getBasedOn().get(0);
4128    }
4129
4130    /**
4131     * @deprecated Use Reference#setResource(IBaseResource) instead
4132     */
4133    @Deprecated
4134    public List<Resource> getBasedOnTarget() { 
4135      if (this.basedOnTarget == null)
4136        this.basedOnTarget = new ArrayList<Resource>();
4137      return this.basedOnTarget;
4138    }
4139
4140    /**
4141     * @return {@link #replaces} (Completed or terminated request(s) whose function is taken by this new request.)
4142     */
4143    public List<Reference> getReplaces() { 
4144      if (this.replaces == null)
4145        this.replaces = new ArrayList<Reference>();
4146      return this.replaces;
4147    }
4148
4149    /**
4150     * @return Returns a reference to <code>this</code> for easy method chaining
4151     */
4152    public RequestGroup setReplaces(List<Reference> theReplaces) { 
4153      this.replaces = theReplaces;
4154      return this;
4155    }
4156
4157    public boolean hasReplaces() { 
4158      if (this.replaces == null)
4159        return false;
4160      for (Reference item : this.replaces)
4161        if (!item.isEmpty())
4162          return true;
4163      return false;
4164    }
4165
4166    public Reference addReplaces() { //3
4167      Reference t = new Reference();
4168      if (this.replaces == null)
4169        this.replaces = new ArrayList<Reference>();
4170      this.replaces.add(t);
4171      return t;
4172    }
4173
4174    public RequestGroup addReplaces(Reference t) { //3
4175      if (t == null)
4176        return this;
4177      if (this.replaces == null)
4178        this.replaces = new ArrayList<Reference>();
4179      this.replaces.add(t);
4180      return this;
4181    }
4182
4183    /**
4184     * @return The first repetition of repeating field {@link #replaces}, creating it if it does not already exist
4185     */
4186    public Reference getReplacesFirstRep() { 
4187      if (getReplaces().isEmpty()) {
4188        addReplaces();
4189      }
4190      return getReplaces().get(0);
4191    }
4192
4193    /**
4194     * @deprecated Use Reference#setResource(IBaseResource) instead
4195     */
4196    @Deprecated
4197    public List<Resource> getReplacesTarget() { 
4198      if (this.replacesTarget == null)
4199        this.replacesTarget = new ArrayList<Resource>();
4200      return this.replacesTarget;
4201    }
4202
4203    /**
4204     * @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.)
4205     */
4206    public Identifier getGroupIdentifier() { 
4207      if (this.groupIdentifier == null)
4208        if (Configuration.errorOnAutoCreate())
4209          throw new Error("Attempt to auto-create RequestGroup.groupIdentifier");
4210        else if (Configuration.doAutoCreate())
4211          this.groupIdentifier = new Identifier(); // cc
4212      return this.groupIdentifier;
4213    }
4214
4215    public boolean hasGroupIdentifier() { 
4216      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
4217    }
4218
4219    /**
4220     * @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.)
4221     */
4222    public RequestGroup setGroupIdentifier(Identifier value) { 
4223      this.groupIdentifier = value;
4224      return this;
4225    }
4226
4227    /**
4228     * @return {@link #status} (The current state of the request. For request groups, the status reflects the status of all the requests in the group.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
4229     */
4230    public Enumeration<RequestStatus> getStatusElement() { 
4231      if (this.status == null)
4232        if (Configuration.errorOnAutoCreate())
4233          throw new Error("Attempt to auto-create RequestGroup.status");
4234        else if (Configuration.doAutoCreate())
4235          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
4236      return this.status;
4237    }
4238
4239    public boolean hasStatusElement() { 
4240      return this.status != null && !this.status.isEmpty();
4241    }
4242
4243    public boolean hasStatus() { 
4244      return this.status != null && !this.status.isEmpty();
4245    }
4246
4247    /**
4248     * @param value {@link #status} (The current state of the request. For request groups, the status reflects the status of all the requests in the group.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
4249     */
4250    public RequestGroup setStatusElement(Enumeration<RequestStatus> value) { 
4251      this.status = value;
4252      return this;
4253    }
4254
4255    /**
4256     * @return The current state of the request. For request groups, the status reflects the status of all the requests in the group.
4257     */
4258    public RequestStatus getStatus() { 
4259      return this.status == null ? null : this.status.getValue();
4260    }
4261
4262    /**
4263     * @param value The current state of the request. For request groups, the status reflects the status of all the requests in the group.
4264     */
4265    public RequestGroup setStatus(RequestStatus value) { 
4266        if (this.status == null)
4267          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
4268        this.status.setValue(value);
4269      return this;
4270    }
4271
4272    /**
4273     * @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
4274     */
4275    public Enumeration<RequestIntent> getIntentElement() { 
4276      if (this.intent == null)
4277        if (Configuration.errorOnAutoCreate())
4278          throw new Error("Attempt to auto-create RequestGroup.intent");
4279        else if (Configuration.doAutoCreate())
4280          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
4281      return this.intent;
4282    }
4283
4284    public boolean hasIntentElement() { 
4285      return this.intent != null && !this.intent.isEmpty();
4286    }
4287
4288    public boolean hasIntent() { 
4289      return this.intent != null && !this.intent.isEmpty();
4290    }
4291
4292    /**
4293     * @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
4294     */
4295    public RequestGroup setIntentElement(Enumeration<RequestIntent> value) { 
4296      this.intent = value;
4297      return this;
4298    }
4299
4300    /**
4301     * @return Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4302     */
4303    public RequestIntent getIntent() { 
4304      return this.intent == null ? null : this.intent.getValue();
4305    }
4306
4307    /**
4308     * @param value Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
4309     */
4310    public RequestGroup setIntent(RequestIntent value) { 
4311        if (this.intent == null)
4312          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
4313        this.intent.setValue(value);
4314      return this;
4315    }
4316
4317    /**
4318     * @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
4319     */
4320    public Enumeration<RequestPriority> getPriorityElement() { 
4321      if (this.priority == null)
4322        if (Configuration.errorOnAutoCreate())
4323          throw new Error("Attempt to auto-create RequestGroup.priority");
4324        else if (Configuration.doAutoCreate())
4325          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
4326      return this.priority;
4327    }
4328
4329    public boolean hasPriorityElement() { 
4330      return this.priority != null && !this.priority.isEmpty();
4331    }
4332
4333    public boolean hasPriority() { 
4334      return this.priority != null && !this.priority.isEmpty();
4335    }
4336
4337    /**
4338     * @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
4339     */
4340    public RequestGroup setPriorityElement(Enumeration<RequestPriority> value) { 
4341      this.priority = value;
4342      return this;
4343    }
4344
4345    /**
4346     * @return Indicates how quickly the request should be addressed with respect to other requests.
4347     */
4348    public RequestPriority getPriority() { 
4349      return this.priority == null ? null : this.priority.getValue();
4350    }
4351
4352    /**
4353     * @param value Indicates how quickly the request should be addressed with respect to other requests.
4354     */
4355    public RequestGroup setPriority(RequestPriority value) { 
4356      if (value == null)
4357        this.priority = null;
4358      else {
4359        if (this.priority == null)
4360          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
4361        this.priority.setValue(value);
4362      }
4363      return this;
4364    }
4365
4366    /**
4367     * @return {@link #code} (A code that identifies what the overall request group is.)
4368     */
4369    public CodeableConcept getCode() { 
4370      if (this.code == null)
4371        if (Configuration.errorOnAutoCreate())
4372          throw new Error("Attempt to auto-create RequestGroup.code");
4373        else if (Configuration.doAutoCreate())
4374          this.code = new CodeableConcept(); // cc
4375      return this.code;
4376    }
4377
4378    public boolean hasCode() { 
4379      return this.code != null && !this.code.isEmpty();
4380    }
4381
4382    /**
4383     * @param value {@link #code} (A code that identifies what the overall request group is.)
4384     */
4385    public RequestGroup setCode(CodeableConcept value) { 
4386      this.code = value;
4387      return this;
4388    }
4389
4390    /**
4391     * @return {@link #subject} (The subject for which the request group was created.)
4392     */
4393    public Reference getSubject() { 
4394      if (this.subject == null)
4395        if (Configuration.errorOnAutoCreate())
4396          throw new Error("Attempt to auto-create RequestGroup.subject");
4397        else if (Configuration.doAutoCreate())
4398          this.subject = new Reference(); // cc
4399      return this.subject;
4400    }
4401
4402    public boolean hasSubject() { 
4403      return this.subject != null && !this.subject.isEmpty();
4404    }
4405
4406    /**
4407     * @param value {@link #subject} (The subject for which the request group was created.)
4408     */
4409    public RequestGroup setSubject(Reference value) { 
4410      this.subject = value;
4411      return this;
4412    }
4413
4414    /**
4415     * @return {@link #subject} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The subject for which the request group was created.)
4416     */
4417    public Resource getSubjectTarget() { 
4418      return this.subjectTarget;
4419    }
4420
4421    /**
4422     * @param value {@link #subject} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The subject for which the request group was created.)
4423     */
4424    public RequestGroup setSubjectTarget(Resource value) { 
4425      this.subjectTarget = value;
4426      return this;
4427    }
4428
4429    /**
4430     * @return {@link #context} (Describes the context of the request group, if any.)
4431     */
4432    public Reference getContext() { 
4433      if (this.context == null)
4434        if (Configuration.errorOnAutoCreate())
4435          throw new Error("Attempt to auto-create RequestGroup.context");
4436        else if (Configuration.doAutoCreate())
4437          this.context = new Reference(); // cc
4438      return this.context;
4439    }
4440
4441    public boolean hasContext() { 
4442      return this.context != null && !this.context.isEmpty();
4443    }
4444
4445    /**
4446     * @param value {@link #context} (Describes the context of the request group, if any.)
4447     */
4448    public RequestGroup setContext(Reference value) { 
4449      this.context = value;
4450      return this;
4451    }
4452
4453    /**
4454     * @return {@link #context} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Describes the context of the request group, if any.)
4455     */
4456    public Resource getContextTarget() { 
4457      return this.contextTarget;
4458    }
4459
4460    /**
4461     * @param value {@link #context} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Describes the context of the request group, if any.)
4462     */
4463    public RequestGroup setContextTarget(Resource value) { 
4464      this.contextTarget = value;
4465      return this;
4466    }
4467
4468    /**
4469     * @return {@link #authoredOn} (Indicates when the request group was created.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
4470     */
4471    public DateTimeType getAuthoredOnElement() { 
4472      if (this.authoredOn == null)
4473        if (Configuration.errorOnAutoCreate())
4474          throw new Error("Attempt to auto-create RequestGroup.authoredOn");
4475        else if (Configuration.doAutoCreate())
4476          this.authoredOn = new DateTimeType(); // bb
4477      return this.authoredOn;
4478    }
4479
4480    public boolean hasAuthoredOnElement() { 
4481      return this.authoredOn != null && !this.authoredOn.isEmpty();
4482    }
4483
4484    public boolean hasAuthoredOn() { 
4485      return this.authoredOn != null && !this.authoredOn.isEmpty();
4486    }
4487
4488    /**
4489     * @param value {@link #authoredOn} (Indicates when the request group was created.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
4490     */
4491    public RequestGroup setAuthoredOnElement(DateTimeType value) { 
4492      this.authoredOn = value;
4493      return this;
4494    }
4495
4496    /**
4497     * @return Indicates when the request group was created.
4498     */
4499    public Date getAuthoredOn() { 
4500      return this.authoredOn == null ? null : this.authoredOn.getValue();
4501    }
4502
4503    /**
4504     * @param value Indicates when the request group was created.
4505     */
4506    public RequestGroup setAuthoredOn(Date value) { 
4507      if (value == null)
4508        this.authoredOn = null;
4509      else {
4510        if (this.authoredOn == null)
4511          this.authoredOn = new DateTimeType();
4512        this.authoredOn.setValue(value);
4513      }
4514      return this;
4515    }
4516
4517    /**
4518     * @return {@link #author} (Provides a reference to the author of the request group.)
4519     */
4520    public Reference getAuthor() { 
4521      if (this.author == null)
4522        if (Configuration.errorOnAutoCreate())
4523          throw new Error("Attempt to auto-create RequestGroup.author");
4524        else if (Configuration.doAutoCreate())
4525          this.author = new Reference(); // cc
4526      return this.author;
4527    }
4528
4529    public boolean hasAuthor() { 
4530      return this.author != null && !this.author.isEmpty();
4531    }
4532
4533    /**
4534     * @param value {@link #author} (Provides a reference to the author of the request group.)
4535     */
4536    public RequestGroup setAuthor(Reference value) { 
4537      this.author = value;
4538      return this;
4539    }
4540
4541    /**
4542     * @return {@link #author} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Provides a reference to the author of the request group.)
4543     */
4544    public Resource getAuthorTarget() { 
4545      return this.authorTarget;
4546    }
4547
4548    /**
4549     * @param value {@link #author} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Provides a reference to the author of the request group.)
4550     */
4551    public RequestGroup setAuthorTarget(Resource value) { 
4552      this.authorTarget = value;
4553      return this;
4554    }
4555
4556    /**
4557     * @return {@link #reasonCode} (Describes the reason for the request group in coded or textual form.)
4558     */
4559    public List<CodeableConcept> getReasonCode() { 
4560      if (this.reasonCode == null)
4561        this.reasonCode = new ArrayList<CodeableConcept>();
4562      return this.reasonCode;
4563    }
4564
4565    /**
4566     * @return Returns a reference to <code>this</code> for easy method chaining
4567     */
4568    public RequestGroup setReasonCode(List<CodeableConcept> theReasonCode) { 
4569      this.reasonCode = theReasonCode;
4570      return this;
4571    }
4572
4573    public boolean hasReasonCode() { 
4574      if (this.reasonCode == null)
4575        return false;
4576      for (CodeableConcept item : this.reasonCode)
4577        if (!item.isEmpty())
4578          return true;
4579      return false;
4580    }
4581
4582    public CodeableConcept addReasonCode() { //3
4583      CodeableConcept t = new CodeableConcept();
4584      if (this.reasonCode == null)
4585        this.reasonCode = new ArrayList<CodeableConcept>();
4586      this.reasonCode.add(t);
4587      return t;
4588    }
4589
4590    public RequestGroup addReasonCode(CodeableConcept t) { //3
4591      if (t == null)
4592        return this;
4593      if (this.reasonCode == null)
4594        this.reasonCode = new ArrayList<CodeableConcept>();
4595      this.reasonCode.add(t);
4596      return this;
4597    }
4598
4599    /**
4600     * @return The first repetition of repeating field {@link #reasonCode}, creating it if it does not already exist
4601     */
4602    public CodeableConcept getReasonCodeFirstRep() { 
4603      if (getReasonCode().isEmpty()) {
4604        addReasonCode();
4605      }
4606      return getReasonCode().get(0);
4607    }
4608
4609    /**
4610     * @return {@link #reasonReference} (Indicates another resource whose existence justifies this request group.)
4611     */
4612    public List<Reference> getReasonReference() { 
4613      if (this.reasonReference == null)
4614        this.reasonReference = new ArrayList<Reference>();
4615      return this.reasonReference;
4616    }
4617
4618    /**
4619     * @return Returns a reference to <code>this</code> for easy method chaining
4620     */
4621    public RequestGroup setReasonReference(List<Reference> theReasonReference) { 
4622      this.reasonReference = theReasonReference;
4623      return this;
4624    }
4625
4626    public boolean hasReasonReference() { 
4627      if (this.reasonReference == null)
4628        return false;
4629      for (Reference item : this.reasonReference)
4630        if (!item.isEmpty())
4631          return true;
4632      return false;
4633    }
4634
4635    public Reference addReasonReference() { //3
4636      Reference t = new Reference();
4637      if (this.reasonReference == null)
4638        this.reasonReference = new ArrayList<Reference>();
4639      this.reasonReference.add(t);
4640      return t;
4641    }
4642
4643    public RequestGroup addReasonReference(Reference t) { //3
4644      if (t == null)
4645        return this;
4646      if (this.reasonReference == null)
4647        this.reasonReference = new ArrayList<Reference>();
4648      this.reasonReference.add(t);
4649      return this;
4650    }
4651
4652    /**
4653     * @return The first repetition of repeating field {@link #reasonReference}, creating it if it does not already exist
4654     */
4655    public Reference getReasonReferenceFirstRep() { 
4656      if (getReasonReference().isEmpty()) {
4657        addReasonReference();
4658      }
4659      return getReasonReference().get(0);
4660    }
4661
4662    /**
4663     * @deprecated Use Reference#setResource(IBaseResource) instead
4664     */
4665    @Deprecated
4666    public List<Resource> getReasonReferenceTarget() { 
4667      if (this.reasonReferenceTarget == null)
4668        this.reasonReferenceTarget = new ArrayList<Resource>();
4669      return this.reasonReferenceTarget;
4670    }
4671
4672    /**
4673     * @return {@link #note} (Provides a mechanism to communicate additional information about the response.)
4674     */
4675    public List<Annotation> getNote() { 
4676      if (this.note == null)
4677        this.note = new ArrayList<Annotation>();
4678      return this.note;
4679    }
4680
4681    /**
4682     * @return Returns a reference to <code>this</code> for easy method chaining
4683     */
4684    public RequestGroup setNote(List<Annotation> theNote) { 
4685      this.note = theNote;
4686      return this;
4687    }
4688
4689    public boolean hasNote() { 
4690      if (this.note == null)
4691        return false;
4692      for (Annotation item : this.note)
4693        if (!item.isEmpty())
4694          return true;
4695      return false;
4696    }
4697
4698    public Annotation addNote() { //3
4699      Annotation t = new Annotation();
4700      if (this.note == null)
4701        this.note = new ArrayList<Annotation>();
4702      this.note.add(t);
4703      return t;
4704    }
4705
4706    public RequestGroup addNote(Annotation t) { //3
4707      if (t == null)
4708        return this;
4709      if (this.note == null)
4710        this.note = new ArrayList<Annotation>();
4711      this.note.add(t);
4712      return this;
4713    }
4714
4715    /**
4716     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist
4717     */
4718    public Annotation getNoteFirstRep() { 
4719      if (getNote().isEmpty()) {
4720        addNote();
4721      }
4722      return getNote().get(0);
4723    }
4724
4725    /**
4726     * @return {@link #action} (The actions, if any, produced by the evaluation of the artifact.)
4727     */
4728    public List<RequestGroupActionComponent> getAction() { 
4729      if (this.action == null)
4730        this.action = new ArrayList<RequestGroupActionComponent>();
4731      return this.action;
4732    }
4733
4734    /**
4735     * @return Returns a reference to <code>this</code> for easy method chaining
4736     */
4737    public RequestGroup setAction(List<RequestGroupActionComponent> theAction) { 
4738      this.action = theAction;
4739      return this;
4740    }
4741
4742    public boolean hasAction() { 
4743      if (this.action == null)
4744        return false;
4745      for (RequestGroupActionComponent item : this.action)
4746        if (!item.isEmpty())
4747          return true;
4748      return false;
4749    }
4750
4751    public RequestGroupActionComponent addAction() { //3
4752      RequestGroupActionComponent t = new RequestGroupActionComponent();
4753      if (this.action == null)
4754        this.action = new ArrayList<RequestGroupActionComponent>();
4755      this.action.add(t);
4756      return t;
4757    }
4758
4759    public RequestGroup addAction(RequestGroupActionComponent t) { //3
4760      if (t == null)
4761        return this;
4762      if (this.action == null)
4763        this.action = new ArrayList<RequestGroupActionComponent>();
4764      this.action.add(t);
4765      return this;
4766    }
4767
4768    /**
4769     * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist
4770     */
4771    public RequestGroupActionComponent getActionFirstRep() { 
4772      if (getAction().isEmpty()) {
4773        addAction();
4774      }
4775      return getAction().get(0);
4776    }
4777
4778      protected void listChildren(List<Property> children) {
4779        super.listChildren(children);
4780        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));
4781        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));
4782        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));
4783        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));
4784        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));
4785        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));
4786        children.add(new Property("status", "code", "The current state of the request. For request groups, the status reflects the status of all the requests in the group.", 0, 1, status));
4787        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));
4788        children.add(new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority));
4789        children.add(new Property("code", "CodeableConcept", "A code that identifies what the overall request group is.", 0, 1, code));
4790        children.add(new Property("subject", "Reference(Patient|Group)", "The subject for which the request group was created.", 0, 1, subject));
4791        children.add(new Property("context", "Reference(Encounter|EpisodeOfCare)", "Describes the context of the request group, if any.", 0, 1, context));
4792        children.add(new Property("authoredOn", "dateTime", "Indicates when the request group was created.", 0, 1, authoredOn));
4793        children.add(new Property("author", "Reference(Device|Practitioner)", "Provides a reference to the author of the request group.", 0, 1, author));
4794        children.add(new Property("reasonCode", "CodeableConcept", "Describes the reason for the request group in coded or textual form.", 0, java.lang.Integer.MAX_VALUE, reasonCode));
4795        children.add(new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Indicates another resource whose existence justifies this request group.", 0, java.lang.Integer.MAX_VALUE, reasonReference));
4796        children.add(new Property("note", "Annotation", "Provides a mechanism to communicate additional information about the response.", 0, java.lang.Integer.MAX_VALUE, note));
4797        children.add(new Property("action", "", "The actions, if any, produced by the evaluation of the artifact.", 0, java.lang.Integer.MAX_VALUE, action));
4798      }
4799
4800      @Override
4801      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4802        switch (_hash) {
4803        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);
4804        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);
4805        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);
4806        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);
4807        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);
4808        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);
4809        case -892481550: /*status*/  return new Property("status", "code", "The current state of the request. For request groups, the status reflects the status of all the requests in the group.", 0, 1, status);
4810        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);
4811        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority);
4812        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A code that identifies what the overall request group is.", 0, 1, code);
4813        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The subject for which the request group was created.", 0, 1, subject);
4814        case 951530927: /*context*/  return new Property("context", "Reference(Encounter|EpisodeOfCare)", "Describes the context of the request group, if any.", 0, 1, context);
4815        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "Indicates when the request group was created.", 0, 1, authoredOn);
4816        case -1406328437: /*author*/  return new Property("author", "Reference(Device|Practitioner)", "Provides a reference to the author of the request group.", 0, 1, author);
4817        case 722137681: /*reasonCode*/  return new Property("reasonCode", "CodeableConcept", "Describes the reason for the request group in coded or textual form.", 0, java.lang.Integer.MAX_VALUE, reasonCode);
4818        case -1146218137: /*reasonReference*/  return new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Indicates another resource whose existence justifies this request group.", 0, java.lang.Integer.MAX_VALUE, reasonReference);
4819        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);
4820        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);
4821        default: return super.getNamedProperty(_hash, _name, _checkValid);
4822        }
4823
4824      }
4825
4826      @Override
4827      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4828        switch (hash) {
4829        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4830        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
4831        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
4832        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
4833        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // Reference
4834        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
4835        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
4836        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
4837        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
4838        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
4839        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
4840        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // Reference
4841        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
4842        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
4843        case 722137681: /*reasonCode*/ return this.reasonCode == null ? new Base[0] : this.reasonCode.toArray(new Base[this.reasonCode.size()]); // CodeableConcept
4844        case -1146218137: /*reasonReference*/ return this.reasonReference == null ? new Base[0] : this.reasonReference.toArray(new Base[this.reasonReference.size()]); // Reference
4845        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
4846        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // RequestGroupActionComponent
4847        default: return super.getProperty(hash, name, checkValid);
4848        }
4849
4850      }
4851
4852      @Override
4853      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4854        switch (hash) {
4855        case -1618432855: // identifier
4856          this.getIdentifier().add(castToIdentifier(value)); // Identifier
4857          return value;
4858        case 8911915: // instantiatesCanonical
4859          this.getInstantiatesCanonical().add(castToCanonical(value)); // CanonicalType
4860          return value;
4861        case -1926393373: // instantiatesUri
4862          this.getInstantiatesUri().add(castToUri(value)); // UriType
4863          return value;
4864        case -332612366: // basedOn
4865          this.getBasedOn().add(castToReference(value)); // Reference
4866          return value;
4867        case -430332865: // replaces
4868          this.getReplaces().add(castToReference(value)); // Reference
4869          return value;
4870        case -445338488: // groupIdentifier
4871          this.groupIdentifier = castToIdentifier(value); // Identifier
4872          return value;
4873        case -892481550: // status
4874          value = new RequestStatusEnumFactory().fromType(castToCode(value));
4875          this.status = (Enumeration) value; // Enumeration<RequestStatus>
4876          return value;
4877        case -1183762788: // intent
4878          value = new RequestIntentEnumFactory().fromType(castToCode(value));
4879          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
4880          return value;
4881        case -1165461084: // priority
4882          value = new RequestPriorityEnumFactory().fromType(castToCode(value));
4883          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
4884          return value;
4885        case 3059181: // code
4886          this.code = castToCodeableConcept(value); // CodeableConcept
4887          return value;
4888        case -1867885268: // subject
4889          this.subject = castToReference(value); // Reference
4890          return value;
4891        case 951530927: // context
4892          this.context = castToReference(value); // Reference
4893          return value;
4894        case -1500852503: // authoredOn
4895          this.authoredOn = castToDateTime(value); // DateTimeType
4896          return value;
4897        case -1406328437: // author
4898          this.author = castToReference(value); // Reference
4899          return value;
4900        case 722137681: // reasonCode
4901          this.getReasonCode().add(castToCodeableConcept(value)); // CodeableConcept
4902          return value;
4903        case -1146218137: // reasonReference
4904          this.getReasonReference().add(castToReference(value)); // Reference
4905          return value;
4906        case 3387378: // note
4907          this.getNote().add(castToAnnotation(value)); // Annotation
4908          return value;
4909        case -1422950858: // action
4910          this.getAction().add((RequestGroupActionComponent) value); // RequestGroupActionComponent
4911          return value;
4912        default: return super.setProperty(hash, name, value);
4913        }
4914
4915      }
4916
4917      @Override
4918      public Base setProperty(String name, Base value) throws FHIRException {
4919        if (name.equals("identifier")) {
4920          this.getIdentifier().add(castToIdentifier(value));
4921        } else if (name.equals("instantiatesCanonical")) {
4922          this.getInstantiatesCanonical().add(castToCanonical(value));
4923        } else if (name.equals("instantiatesUri")) {
4924          this.getInstantiatesUri().add(castToUri(value));
4925        } else if (name.equals("basedOn")) {
4926          this.getBasedOn().add(castToReference(value));
4927        } else if (name.equals("replaces")) {
4928          this.getReplaces().add(castToReference(value));
4929        } else if (name.equals("groupIdentifier")) {
4930          this.groupIdentifier = castToIdentifier(value); // Identifier
4931        } else if (name.equals("status")) {
4932          value = new RequestStatusEnumFactory().fromType(castToCode(value));
4933          this.status = (Enumeration) value; // Enumeration<RequestStatus>
4934        } else if (name.equals("intent")) {
4935          value = new RequestIntentEnumFactory().fromType(castToCode(value));
4936          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
4937        } else if (name.equals("priority")) {
4938          value = new RequestPriorityEnumFactory().fromType(castToCode(value));
4939          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
4940        } else if (name.equals("code")) {
4941          this.code = castToCodeableConcept(value); // CodeableConcept
4942        } else if (name.equals("subject")) {
4943          this.subject = castToReference(value); // Reference
4944        } else if (name.equals("context")) {
4945          this.context = castToReference(value); // Reference
4946        } else if (name.equals("authoredOn")) {
4947          this.authoredOn = castToDateTime(value); // DateTimeType
4948        } else if (name.equals("author")) {
4949          this.author = castToReference(value); // Reference
4950        } else if (name.equals("reasonCode")) {
4951          this.getReasonCode().add(castToCodeableConcept(value));
4952        } else if (name.equals("reasonReference")) {
4953          this.getReasonReference().add(castToReference(value));
4954        } else if (name.equals("note")) {
4955          this.getNote().add(castToAnnotation(value));
4956        } else if (name.equals("action")) {
4957          this.getAction().add((RequestGroupActionComponent) value);
4958        } else
4959          return super.setProperty(name, value);
4960        return value;
4961      }
4962
4963      @Override
4964      public Base makeProperty(int hash, String name) throws FHIRException {
4965        switch (hash) {
4966        case -1618432855:  return addIdentifier(); 
4967        case 8911915:  return addInstantiatesCanonicalElement();
4968        case -1926393373:  return addInstantiatesUriElement();
4969        case -332612366:  return addBasedOn(); 
4970        case -430332865:  return addReplaces(); 
4971        case -445338488:  return getGroupIdentifier(); 
4972        case -892481550:  return getStatusElement();
4973        case -1183762788:  return getIntentElement();
4974        case -1165461084:  return getPriorityElement();
4975        case 3059181:  return getCode(); 
4976        case -1867885268:  return getSubject(); 
4977        case 951530927:  return getContext(); 
4978        case -1500852503:  return getAuthoredOnElement();
4979        case -1406328437:  return getAuthor(); 
4980        case 722137681:  return addReasonCode(); 
4981        case -1146218137:  return addReasonReference(); 
4982        case 3387378:  return addNote(); 
4983        case -1422950858:  return addAction(); 
4984        default: return super.makeProperty(hash, name);
4985        }
4986
4987      }
4988
4989      @Override
4990      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4991        switch (hash) {
4992        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4993        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
4994        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
4995        case -332612366: /*basedOn*/ return new String[] {"Reference"};
4996        case -430332865: /*replaces*/ return new String[] {"Reference"};
4997        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
4998        case -892481550: /*status*/ return new String[] {"code"};
4999        case -1183762788: /*intent*/ return new String[] {"code"};
5000        case -1165461084: /*priority*/ return new String[] {"code"};
5001        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
5002        case -1867885268: /*subject*/ return new String[] {"Reference"};
5003        case 951530927: /*context*/ return new String[] {"Reference"};
5004        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
5005        case -1406328437: /*author*/ return new String[] {"Reference"};
5006        case 722137681: /*reasonCode*/ return new String[] {"CodeableConcept"};
5007        case -1146218137: /*reasonReference*/ return new String[] {"Reference"};
5008        case 3387378: /*note*/ return new String[] {"Annotation"};
5009        case -1422950858: /*action*/ return new String[] {};
5010        default: return super.getTypesForProperty(hash, name);
5011        }
5012
5013      }
5014
5015      @Override
5016      public Base addChild(String name) throws FHIRException {
5017        if (name.equals("identifier")) {
5018          return addIdentifier();
5019        }
5020        else if (name.equals("instantiatesCanonical")) {
5021          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.instantiatesCanonical");
5022        }
5023        else if (name.equals("instantiatesUri")) {
5024          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.instantiatesUri");
5025        }
5026        else if (name.equals("basedOn")) {
5027          return addBasedOn();
5028        }
5029        else if (name.equals("replaces")) {
5030          return addReplaces();
5031        }
5032        else if (name.equals("groupIdentifier")) {
5033          this.groupIdentifier = new Identifier();
5034          return this.groupIdentifier;
5035        }
5036        else if (name.equals("status")) {
5037          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.status");
5038        }
5039        else if (name.equals("intent")) {
5040          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.intent");
5041        }
5042        else if (name.equals("priority")) {
5043          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.priority");
5044        }
5045        else if (name.equals("code")) {
5046          this.code = new CodeableConcept();
5047          return this.code;
5048        }
5049        else if (name.equals("subject")) {
5050          this.subject = new Reference();
5051          return this.subject;
5052        }
5053        else if (name.equals("context")) {
5054          this.context = new Reference();
5055          return this.context;
5056        }
5057        else if (name.equals("authoredOn")) {
5058          throw new FHIRException("Cannot call addChild on a primitive type RequestGroup.authoredOn");
5059        }
5060        else if (name.equals("author")) {
5061          this.author = new Reference();
5062          return this.author;
5063        }
5064        else if (name.equals("reasonCode")) {
5065          return addReasonCode();
5066        }
5067        else if (name.equals("reasonReference")) {
5068          return addReasonReference();
5069        }
5070        else if (name.equals("note")) {
5071          return addNote();
5072        }
5073        else if (name.equals("action")) {
5074          return addAction();
5075        }
5076        else
5077          return super.addChild(name);
5078      }
5079
5080  public String fhirType() {
5081    return "RequestGroup";
5082
5083  }
5084
5085      public RequestGroup copy() {
5086        RequestGroup dst = new RequestGroup();
5087        copyValues(dst);
5088        if (identifier != null) {
5089          dst.identifier = new ArrayList<Identifier>();
5090          for (Identifier i : identifier)
5091            dst.identifier.add(i.copy());
5092        };
5093        if (instantiatesCanonical != null) {
5094          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
5095          for (CanonicalType i : instantiatesCanonical)
5096            dst.instantiatesCanonical.add(i.copy());
5097        };
5098        if (instantiatesUri != null) {
5099          dst.instantiatesUri = new ArrayList<UriType>();
5100          for (UriType i : instantiatesUri)
5101            dst.instantiatesUri.add(i.copy());
5102        };
5103        if (basedOn != null) {
5104          dst.basedOn = new ArrayList<Reference>();
5105          for (Reference i : basedOn)
5106            dst.basedOn.add(i.copy());
5107        };
5108        if (replaces != null) {
5109          dst.replaces = new ArrayList<Reference>();
5110          for (Reference i : replaces)
5111            dst.replaces.add(i.copy());
5112        };
5113        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
5114        dst.status = status == null ? null : status.copy();
5115        dst.intent = intent == null ? null : intent.copy();
5116        dst.priority = priority == null ? null : priority.copy();
5117        dst.code = code == null ? null : code.copy();
5118        dst.subject = subject == null ? null : subject.copy();
5119        dst.context = context == null ? null : context.copy();
5120        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
5121        dst.author = author == null ? null : author.copy();
5122        if (reasonCode != null) {
5123          dst.reasonCode = new ArrayList<CodeableConcept>();
5124          for (CodeableConcept i : reasonCode)
5125            dst.reasonCode.add(i.copy());
5126        };
5127        if (reasonReference != null) {
5128          dst.reasonReference = new ArrayList<Reference>();
5129          for (Reference i : reasonReference)
5130            dst.reasonReference.add(i.copy());
5131        };
5132        if (note != null) {
5133          dst.note = new ArrayList<Annotation>();
5134          for (Annotation i : note)
5135            dst.note.add(i.copy());
5136        };
5137        if (action != null) {
5138          dst.action = new ArrayList<RequestGroupActionComponent>();
5139          for (RequestGroupActionComponent i : action)
5140            dst.action.add(i.copy());
5141        };
5142        return dst;
5143      }
5144
5145      protected RequestGroup typedCopy() {
5146        return copy();
5147      }
5148
5149      @Override
5150      public boolean equalsDeep(Base other_) {
5151        if (!super.equalsDeep(other_))
5152          return false;
5153        if (!(other_ instanceof RequestGroup))
5154          return false;
5155        RequestGroup o = (RequestGroup) other_;
5156        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
5157           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
5158           && compareDeep(replaces, o.replaces, true) && compareDeep(groupIdentifier, o.groupIdentifier, true)
5159           && compareDeep(status, o.status, true) && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
5160           && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true) && compareDeep(context, o.context, true)
5161           && compareDeep(authoredOn, o.authoredOn, true) && compareDeep(author, o.author, true) && compareDeep(reasonCode, o.reasonCode, true)
5162           && compareDeep(reasonReference, o.reasonReference, true) && compareDeep(note, o.note, true) && compareDeep(action, o.action, true)
5163          ;
5164      }
5165
5166      @Override
5167      public boolean equalsShallow(Base other_) {
5168        if (!super.equalsShallow(other_))
5169          return false;
5170        if (!(other_ instanceof RequestGroup))
5171          return false;
5172        RequestGroup o = (RequestGroup) other_;
5173        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
5174           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
5175           && compareValues(authoredOn, o.authoredOn, true);
5176      }
5177
5178      public boolean isEmpty() {
5179        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
5180          , instantiatesUri, basedOn, replaces, groupIdentifier, status, intent, priority
5181          , code, subject, context, authoredOn, author, reasonCode, reasonReference, note
5182          , action);
5183      }
5184
5185  @Override
5186  public ResourceType getResourceType() {
5187    return ResourceType.RequestGroup;
5188   }
5189
5190 /**
5191   * Search parameter: <b>authored</b>
5192   * <p>
5193   * Description: <b>The date the request group was authored</b><br>
5194   * Type: <b>date</b><br>
5195   * Path: <b>RequestGroup.authoredOn</b><br>
5196   * </p>
5197   */
5198  @SearchParamDefinition(name="authored", path="RequestGroup.authoredOn", description="The date the request group was authored", type="date" )
5199  public static final String SP_AUTHORED = "authored";
5200 /**
5201   * <b>Fluent Client</b> search parameter constant for <b>authored</b>
5202   * <p>
5203   * Description: <b>The date the request group was authored</b><br>
5204   * Type: <b>date</b><br>
5205   * Path: <b>RequestGroup.authoredOn</b><br>
5206   * </p>
5207   */
5208  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED);
5209
5210 /**
5211   * Search parameter: <b>identifier</b>
5212   * <p>
5213   * Description: <b>External identifiers for the request group</b><br>
5214   * Type: <b>token</b><br>
5215   * Path: <b>RequestGroup.identifier</b><br>
5216   * </p>
5217   */
5218  @SearchParamDefinition(name="identifier", path="RequestGroup.identifier", description="External identifiers for the request group", type="token" )
5219  public static final String SP_IDENTIFIER = "identifier";
5220 /**
5221   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5222   * <p>
5223   * Description: <b>External identifiers for the request group</b><br>
5224   * Type: <b>token</b><br>
5225   * Path: <b>RequestGroup.identifier</b><br>
5226   * </p>
5227   */
5228  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5229
5230 /**
5231   * Search parameter: <b>code</b>
5232   * <p>
5233   * Description: <b>The code of the request group</b><br>
5234   * Type: <b>token</b><br>
5235   * Path: <b>RequestGroup.code</b><br>
5236   * </p>
5237   */
5238  @SearchParamDefinition(name="code", path="RequestGroup.code", description="The code of the request group", type="token" )
5239  public static final String SP_CODE = "code";
5240 /**
5241   * <b>Fluent Client</b> search parameter constant for <b>code</b>
5242   * <p>
5243   * Description: <b>The code of the request group</b><br>
5244   * Type: <b>token</b><br>
5245   * Path: <b>RequestGroup.code</b><br>
5246   * </p>
5247   */
5248  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
5249
5250 /**
5251   * Search parameter: <b>subject</b>
5252   * <p>
5253   * Description: <b>The subject that the request group is about</b><br>
5254   * Type: <b>reference</b><br>
5255   * Path: <b>RequestGroup.subject</b><br>
5256   * </p>
5257   */
5258  @SearchParamDefinition(name="subject", path="RequestGroup.subject", description="The subject that the request group is about", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Group.class, Patient.class } )
5259  public static final String SP_SUBJECT = "subject";
5260 /**
5261   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
5262   * <p>
5263   * Description: <b>The subject that the request group is about</b><br>
5264   * Type: <b>reference</b><br>
5265   * Path: <b>RequestGroup.subject</b><br>
5266   * </p>
5267   */
5268  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
5269
5270/**
5271   * Constant for fluent queries to be used to add include statements. Specifies
5272   * the path value of "<b>RequestGroup:subject</b>".
5273   */
5274  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("RequestGroup:subject").toLocked();
5275
5276 /**
5277   * Search parameter: <b>author</b>
5278   * <p>
5279   * Description: <b>The author of the request group</b><br>
5280   * Type: <b>reference</b><br>
5281   * Path: <b>RequestGroup.author</b><br>
5282   * </p>
5283   */
5284  @SearchParamDefinition(name="author", path="RequestGroup.author", description="The author of the request group", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner") }, target={Device.class, Practitioner.class } )
5285  public static final String SP_AUTHOR = "author";
5286 /**
5287   * <b>Fluent Client</b> search parameter constant for <b>author</b>
5288   * <p>
5289   * Description: <b>The author of the request group</b><br>
5290   * Type: <b>reference</b><br>
5291   * Path: <b>RequestGroup.author</b><br>
5292   * </p>
5293   */
5294  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
5295
5296/**
5297   * Constant for fluent queries to be used to add include statements. Specifies
5298   * the path value of "<b>RequestGroup:author</b>".
5299   */
5300  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("RequestGroup:author").toLocked();
5301
5302 /**
5303   * Search parameter: <b>instantiates-canonical</b>
5304   * <p>
5305   * Description: <b>The FHIR-based definition from which the request group is realized</b><br>
5306   * Type: <b>reference</b><br>
5307   * Path: <b>RequestGroup.instantiatesCanonical</b><br>
5308   * </p>
5309   */
5310  @SearchParamDefinition(name="instantiates-canonical", path="RequestGroup.instantiatesCanonical", description="The FHIR-based definition from which the request group is realized", type="reference" )
5311  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
5312 /**
5313   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
5314   * <p>
5315   * Description: <b>The FHIR-based definition from which the request group is realized</b><br>
5316   * Type: <b>reference</b><br>
5317   * Path: <b>RequestGroup.instantiatesCanonical</b><br>
5318   * </p>
5319   */
5320  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
5321
5322/**
5323   * Constant for fluent queries to be used to add include statements. Specifies
5324   * the path value of "<b>RequestGroup:instantiates-canonical</b>".
5325   */
5326  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("RequestGroup:instantiates-canonical").toLocked();
5327
5328 /**
5329   * Search parameter: <b>encounter</b>
5330   * <p>
5331   * Description: <b>The encounter the request group applies to</b><br>
5332   * Type: <b>reference</b><br>
5333   * Path: <b>RequestGroup.context</b><br>
5334   * </p>
5335   */
5336  @SearchParamDefinition(name="encounter", path="RequestGroup.context.where(resolve() is Encounter)", description="The encounter the request group applies to", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Encounter") }, target={Encounter.class } )
5337  public static final String SP_ENCOUNTER = "encounter";
5338 /**
5339   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
5340   * <p>
5341   * Description: <b>The encounter the request group applies to</b><br>
5342   * Type: <b>reference</b><br>
5343   * Path: <b>RequestGroup.context</b><br>
5344   * </p>
5345   */
5346  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
5347
5348/**
5349   * Constant for fluent queries to be used to add include statements. Specifies
5350   * the path value of "<b>RequestGroup:encounter</b>".
5351   */
5352  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("RequestGroup:encounter").toLocked();
5353
5354 /**
5355   * Search parameter: <b>priority</b>
5356   * <p>
5357   * Description: <b>The priority of the request group</b><br>
5358   * Type: <b>token</b><br>
5359   * Path: <b>RequestGroup.priority</b><br>
5360   * </p>
5361   */
5362  @SearchParamDefinition(name="priority", path="RequestGroup.priority", description="The priority of the request group", type="token" )
5363  public static final String SP_PRIORITY = "priority";
5364 /**
5365   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
5366   * <p>
5367   * Description: <b>The priority of the request group</b><br>
5368   * Type: <b>token</b><br>
5369   * Path: <b>RequestGroup.priority</b><br>
5370   * </p>
5371   */
5372  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
5373
5374 /**
5375   * Search parameter: <b>intent</b>
5376   * <p>
5377   * Description: <b>The intent of the request group</b><br>
5378   * Type: <b>token</b><br>
5379   * Path: <b>RequestGroup.intent</b><br>
5380   * </p>
5381   */
5382  @SearchParamDefinition(name="intent", path="RequestGroup.intent", description="The intent of the request group", type="token" )
5383  public static final String SP_INTENT = "intent";
5384 /**
5385   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
5386   * <p>
5387   * Description: <b>The intent of the request group</b><br>
5388   * Type: <b>token</b><br>
5389   * Path: <b>RequestGroup.intent</b><br>
5390   * </p>
5391   */
5392  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
5393
5394 /**
5395   * Search parameter: <b>participant</b>
5396   * <p>
5397   * Description: <b>The participant in the requests in the group</b><br>
5398   * Type: <b>reference</b><br>
5399   * Path: <b>RequestGroup.action.participant</b><br>
5400   * </p>
5401   */
5402  @SearchParamDefinition(name="participant", path="RequestGroup.action.participant", description="The participant in the requests in the group", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="RelatedPerson") }, target={Patient.class, Practitioner.class, RelatedPerson.class } )
5403  public static final String SP_PARTICIPANT = "participant";
5404 /**
5405   * <b>Fluent Client</b> search parameter constant for <b>participant</b>
5406   * <p>
5407   * Description: <b>The participant in the requests in the group</b><br>
5408   * Type: <b>reference</b><br>
5409   * Path: <b>RequestGroup.action.participant</b><br>
5410   * </p>
5411   */
5412  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTICIPANT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARTICIPANT);
5413
5414/**
5415   * Constant for fluent queries to be used to add include statements. Specifies
5416   * the path value of "<b>RequestGroup:participant</b>".
5417   */
5418  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTICIPANT = new ca.uhn.fhir.model.api.Include("RequestGroup:participant").toLocked();
5419
5420 /**
5421   * Search parameter: <b>group-identifier</b>
5422   * <p>
5423   * Description: <b>The group identifier for the request group</b><br>
5424   * Type: <b>token</b><br>
5425   * Path: <b>RequestGroup.groupIdentifier</b><br>
5426   * </p>
5427   */
5428  @SearchParamDefinition(name="group-identifier", path="RequestGroup.groupIdentifier", description="The group identifier for the request group", type="token" )
5429  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
5430 /**
5431   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
5432   * <p>
5433   * Description: <b>The group identifier for the request group</b><br>
5434   * Type: <b>token</b><br>
5435   * Path: <b>RequestGroup.groupIdentifier</b><br>
5436   * </p>
5437   */
5438  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
5439
5440 /**
5441   * Search parameter: <b>patient</b>
5442   * <p>
5443   * Description: <b>The identity of a patient to search for request groups</b><br>
5444   * Type: <b>reference</b><br>
5445   * Path: <b>RequestGroup.subject</b><br>
5446   * </p>
5447   */
5448  @SearchParamDefinition(name="patient", path="RequestGroup.subject.where(resolve() is Patient)", description="The identity of a patient to search for request groups", type="reference", target={Patient.class } )
5449  public static final String SP_PATIENT = "patient";
5450 /**
5451   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
5452   * <p>
5453   * Description: <b>The identity of a patient to search for request groups</b><br>
5454   * Type: <b>reference</b><br>
5455   * Path: <b>RequestGroup.subject</b><br>
5456   * </p>
5457   */
5458  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
5459
5460/**
5461   * Constant for fluent queries to be used to add include statements. Specifies
5462   * the path value of "<b>RequestGroup:patient</b>".
5463   */
5464  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("RequestGroup:patient").toLocked();
5465
5466 /**
5467   * Search parameter: <b>context</b>
5468   * <p>
5469   * Description: <b>The context the request group applies to</b><br>
5470   * Type: <b>reference</b><br>
5471   * Path: <b>RequestGroup.context</b><br>
5472   * </p>
5473   */
5474  @SearchParamDefinition(name="context", path="RequestGroup.context", description="The context the request group applies to", type="reference", target={Encounter.class, EpisodeOfCare.class } )
5475  public static final String SP_CONTEXT = "context";
5476 /**
5477   * <b>Fluent Client</b> search parameter constant for <b>context</b>
5478   * <p>
5479   * Description: <b>The context the request group applies to</b><br>
5480   * Type: <b>reference</b><br>
5481   * Path: <b>RequestGroup.context</b><br>
5482   * </p>
5483   */
5484  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CONTEXT);
5485
5486/**
5487   * Constant for fluent queries to be used to add include statements. Specifies
5488   * the path value of "<b>RequestGroup:context</b>".
5489   */
5490  public static final ca.uhn.fhir.model.api.Include INCLUDE_CONTEXT = new ca.uhn.fhir.model.api.Include("RequestGroup:context").toLocked();
5491
5492 /**
5493   * Search parameter: <b>instantiates-uri</b>
5494   * <p>
5495   * Description: <b>The external definition from which the request group is realized</b><br>
5496   * Type: <b>uri</b><br>
5497   * Path: <b>RequestGroup.instantiatesUri</b><br>
5498   * </p>
5499   */
5500  @SearchParamDefinition(name="instantiates-uri", path="RequestGroup.instantiatesUri", description="The external definition from which the request group is realized", type="uri" )
5501  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
5502 /**
5503   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
5504   * <p>
5505   * Description: <b>The external definition from which the request group is realized</b><br>
5506   * Type: <b>uri</b><br>
5507   * Path: <b>RequestGroup.instantiatesUri</b><br>
5508   * </p>
5509   */
5510  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
5511
5512 /**
5513   * Search parameter: <b>status</b>
5514   * <p>
5515   * Description: <b>The status of the request group</b><br>
5516   * Type: <b>token</b><br>
5517   * Path: <b>RequestGroup.status</b><br>
5518   * </p>
5519   */
5520  @SearchParamDefinition(name="status", path="RequestGroup.status", description="The status of the request group", type="token" )
5521  public static final String SP_STATUS = "status";
5522 /**
5523   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5524   * <p>
5525   * Description: <b>The status of the request group</b><br>
5526   * Type: <b>token</b><br>
5527   * Path: <b>RequestGroup.status</b><br>
5528   * </p>
5529   */
5530  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5531
5532
5533}
5534