001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Example of workflow instance.
052 */
053@ResourceDef(name="ExampleScenario", profile="http://hl7.org/fhir/StructureDefinition/ExampleScenario")
054public class ExampleScenario extends CanonicalResource {
055
056    public enum ExampleScenarioActorType {
057        /**
058         * A person.
059         */
060        PERSON, 
061        /**
062         * A system.
063         */
064        ENTITY, 
065        /**
066         * added to help the parsers with the generic types
067         */
068        NULL;
069        public static ExampleScenarioActorType fromCode(String codeString) throws FHIRException {
070            if (codeString == null || "".equals(codeString))
071                return null;
072        if ("person".equals(codeString))
073          return PERSON;
074        if ("entity".equals(codeString))
075          return ENTITY;
076        if (Configuration.isAcceptInvalidEnums())
077          return null;
078        else
079          throw new FHIRException("Unknown ExampleScenarioActorType code '"+codeString+"'");
080        }
081        public String toCode() {
082          switch (this) {
083            case PERSON: return "person";
084            case ENTITY: return "entity";
085            case NULL: return null;
086            default: return "?";
087          }
088        }
089        public String getSystem() {
090          switch (this) {
091            case PERSON: return "http://hl7.org/fhir/examplescenario-actor-type";
092            case ENTITY: return "http://hl7.org/fhir/examplescenario-actor-type";
093            case NULL: return null;
094            default: return "?";
095          }
096        }
097        public String getDefinition() {
098          switch (this) {
099            case PERSON: return "A person.";
100            case ENTITY: return "A system.";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDisplay() {
106          switch (this) {
107            case PERSON: return "Person";
108            case ENTITY: return "System";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113    }
114
115  public static class ExampleScenarioActorTypeEnumFactory implements EnumFactory<ExampleScenarioActorType> {
116    public ExampleScenarioActorType fromCode(String codeString) throws IllegalArgumentException {
117      if (codeString == null || "".equals(codeString))
118            if (codeString == null || "".equals(codeString))
119                return null;
120        if ("person".equals(codeString))
121          return ExampleScenarioActorType.PERSON;
122        if ("entity".equals(codeString))
123          return ExampleScenarioActorType.ENTITY;
124        throw new IllegalArgumentException("Unknown ExampleScenarioActorType code '"+codeString+"'");
125        }
126        public Enumeration<ExampleScenarioActorType> fromType(Base code) throws FHIRException {
127          if (code == null)
128            return null;
129          if (code.isEmpty())
130            return new Enumeration<ExampleScenarioActorType>(this);
131          String codeString = ((PrimitiveType) code).asStringValue();
132          if (codeString == null || "".equals(codeString))
133            return null;
134        if ("person".equals(codeString))
135          return new Enumeration<ExampleScenarioActorType>(this, ExampleScenarioActorType.PERSON);
136        if ("entity".equals(codeString))
137          return new Enumeration<ExampleScenarioActorType>(this, ExampleScenarioActorType.ENTITY);
138        throw new FHIRException("Unknown ExampleScenarioActorType code '"+codeString+"'");
139        }
140    public String toCode(ExampleScenarioActorType code) {
141      if (code == ExampleScenarioActorType.PERSON)
142        return "person";
143      if (code == ExampleScenarioActorType.ENTITY)
144        return "entity";
145      return "?";
146      }
147    public String toSystem(ExampleScenarioActorType code) {
148      return code.getSystem();
149      }
150    }
151
152    @Block()
153    public static class ExampleScenarioActorComponent extends BackboneElement implements IBaseBackboneElement {
154        /**
155         * ID or acronym of actor.
156         */
157        @Child(name = "actorId", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
158        @Description(shortDefinition="ID or acronym of the actor", formalDefinition="ID or acronym of actor." )
159        protected StringType actorId;
160
161        /**
162         * The type of actor - person or system.
163         */
164        @Child(name = "type", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
165        @Description(shortDefinition="person | entity", formalDefinition="The type of actor - person or system." )
166        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/examplescenario-actor-type")
167        protected Enumeration<ExampleScenarioActorType> type;
168
169        /**
170         * The name of the actor as shown in the page.
171         */
172        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
173        @Description(shortDefinition="The name of the actor as shown in the page", formalDefinition="The name of the actor as shown in the page." )
174        protected StringType name;
175
176        /**
177         * The description of the actor.
178         */
179        @Child(name = "description", type = {MarkdownType.class}, order=4, min=0, max=1, modifier=false, summary=false)
180        @Description(shortDefinition="The description of the actor", formalDefinition="The description of the actor." )
181        protected MarkdownType description;
182
183        private static final long serialVersionUID = 1348364162L;
184
185    /**
186     * Constructor
187     */
188      public ExampleScenarioActorComponent() {
189        super();
190      }
191
192    /**
193     * Constructor
194     */
195      public ExampleScenarioActorComponent(String actorId, ExampleScenarioActorType type) {
196        super();
197        this.setActorId(actorId);
198        this.setType(type);
199      }
200
201        /**
202         * @return {@link #actorId} (ID or acronym of actor.). This is the underlying object with id, value and extensions. The accessor "getActorId" gives direct access to the value
203         */
204        public StringType getActorIdElement() { 
205          if (this.actorId == null)
206            if (Configuration.errorOnAutoCreate())
207              throw new Error("Attempt to auto-create ExampleScenarioActorComponent.actorId");
208            else if (Configuration.doAutoCreate())
209              this.actorId = new StringType(); // bb
210          return this.actorId;
211        }
212
213        public boolean hasActorIdElement() { 
214          return this.actorId != null && !this.actorId.isEmpty();
215        }
216
217        public boolean hasActorId() { 
218          return this.actorId != null && !this.actorId.isEmpty();
219        }
220
221        /**
222         * @param value {@link #actorId} (ID or acronym of actor.). This is the underlying object with id, value and extensions. The accessor "getActorId" gives direct access to the value
223         */
224        public ExampleScenarioActorComponent setActorIdElement(StringType value) { 
225          this.actorId = value;
226          return this;
227        }
228
229        /**
230         * @return ID or acronym of actor.
231         */
232        public String getActorId() { 
233          return this.actorId == null ? null : this.actorId.getValue();
234        }
235
236        /**
237         * @param value ID or acronym of actor.
238         */
239        public ExampleScenarioActorComponent setActorId(String value) { 
240            if (this.actorId == null)
241              this.actorId = new StringType();
242            this.actorId.setValue(value);
243          return this;
244        }
245
246        /**
247         * @return {@link #type} (The type of actor - person or system.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
248         */
249        public Enumeration<ExampleScenarioActorType> getTypeElement() { 
250          if (this.type == null)
251            if (Configuration.errorOnAutoCreate())
252              throw new Error("Attempt to auto-create ExampleScenarioActorComponent.type");
253            else if (Configuration.doAutoCreate())
254              this.type = new Enumeration<ExampleScenarioActorType>(new ExampleScenarioActorTypeEnumFactory()); // bb
255          return this.type;
256        }
257
258        public boolean hasTypeElement() { 
259          return this.type != null && !this.type.isEmpty();
260        }
261
262        public boolean hasType() { 
263          return this.type != null && !this.type.isEmpty();
264        }
265
266        /**
267         * @param value {@link #type} (The type of actor - person or system.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
268         */
269        public ExampleScenarioActorComponent setTypeElement(Enumeration<ExampleScenarioActorType> value) { 
270          this.type = value;
271          return this;
272        }
273
274        /**
275         * @return The type of actor - person or system.
276         */
277        public ExampleScenarioActorType getType() { 
278          return this.type == null ? null : this.type.getValue();
279        }
280
281        /**
282         * @param value The type of actor - person or system.
283         */
284        public ExampleScenarioActorComponent setType(ExampleScenarioActorType value) { 
285            if (this.type == null)
286              this.type = new Enumeration<ExampleScenarioActorType>(new ExampleScenarioActorTypeEnumFactory());
287            this.type.setValue(value);
288          return this;
289        }
290
291        /**
292         * @return {@link #name} (The name of the actor as shown in the page.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
293         */
294        public StringType getNameElement() { 
295          if (this.name == null)
296            if (Configuration.errorOnAutoCreate())
297              throw new Error("Attempt to auto-create ExampleScenarioActorComponent.name");
298            else if (Configuration.doAutoCreate())
299              this.name = new StringType(); // bb
300          return this.name;
301        }
302
303        public boolean hasNameElement() { 
304          return this.name != null && !this.name.isEmpty();
305        }
306
307        public boolean hasName() { 
308          return this.name != null && !this.name.isEmpty();
309        }
310
311        /**
312         * @param value {@link #name} (The name of the actor as shown in the page.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
313         */
314        public ExampleScenarioActorComponent setNameElement(StringType value) { 
315          this.name = value;
316          return this;
317        }
318
319        /**
320         * @return The name of the actor as shown in the page.
321         */
322        public String getName() { 
323          return this.name == null ? null : this.name.getValue();
324        }
325
326        /**
327         * @param value The name of the actor as shown in the page.
328         */
329        public ExampleScenarioActorComponent setName(String value) { 
330          if (Utilities.noString(value))
331            this.name = null;
332          else {
333            if (this.name == null)
334              this.name = new StringType();
335            this.name.setValue(value);
336          }
337          return this;
338        }
339
340        /**
341         * @return {@link #description} (The description of the actor.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
342         */
343        public MarkdownType getDescriptionElement() { 
344          if (this.description == null)
345            if (Configuration.errorOnAutoCreate())
346              throw new Error("Attempt to auto-create ExampleScenarioActorComponent.description");
347            else if (Configuration.doAutoCreate())
348              this.description = new MarkdownType(); // bb
349          return this.description;
350        }
351
352        public boolean hasDescriptionElement() { 
353          return this.description != null && !this.description.isEmpty();
354        }
355
356        public boolean hasDescription() { 
357          return this.description != null && !this.description.isEmpty();
358        }
359
360        /**
361         * @param value {@link #description} (The description of the actor.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
362         */
363        public ExampleScenarioActorComponent setDescriptionElement(MarkdownType value) { 
364          this.description = value;
365          return this;
366        }
367
368        /**
369         * @return The description of the actor.
370         */
371        public String getDescription() { 
372          return this.description == null ? null : this.description.getValue();
373        }
374
375        /**
376         * @param value The description of the actor.
377         */
378        public ExampleScenarioActorComponent setDescription(String value) { 
379          if (value == null)
380            this.description = null;
381          else {
382            if (this.description == null)
383              this.description = new MarkdownType();
384            this.description.setValue(value);
385          }
386          return this;
387        }
388
389        protected void listChildren(List<Property> children) {
390          super.listChildren(children);
391          children.add(new Property("actorId", "string", "ID or acronym of actor.", 0, 1, actorId));
392          children.add(new Property("type", "code", "The type of actor - person or system.", 0, 1, type));
393          children.add(new Property("name", "string", "The name of the actor as shown in the page.", 0, 1, name));
394          children.add(new Property("description", "markdown", "The description of the actor.", 0, 1, description));
395        }
396
397        @Override
398        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
399          switch (_hash) {
400          case -1161623056: /*actorId*/  return new Property("actorId", "string", "ID or acronym of actor.", 0, 1, actorId);
401          case 3575610: /*type*/  return new Property("type", "code", "The type of actor - person or system.", 0, 1, type);
402          case 3373707: /*name*/  return new Property("name", "string", "The name of the actor as shown in the page.", 0, 1, name);
403          case -1724546052: /*description*/  return new Property("description", "markdown", "The description of the actor.", 0, 1, description);
404          default: return super.getNamedProperty(_hash, _name, _checkValid);
405          }
406
407        }
408
409      @Override
410      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
411        switch (hash) {
412        case -1161623056: /*actorId*/ return this.actorId == null ? new Base[0] : new Base[] {this.actorId}; // StringType
413        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<ExampleScenarioActorType>
414        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
415        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
416        default: return super.getProperty(hash, name, checkValid);
417        }
418
419      }
420
421      @Override
422      public Base setProperty(int hash, String name, Base value) throws FHIRException {
423        switch (hash) {
424        case -1161623056: // actorId
425          this.actorId = TypeConvertor.castToString(value); // StringType
426          return value;
427        case 3575610: // type
428          value = new ExampleScenarioActorTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
429          this.type = (Enumeration) value; // Enumeration<ExampleScenarioActorType>
430          return value;
431        case 3373707: // name
432          this.name = TypeConvertor.castToString(value); // StringType
433          return value;
434        case -1724546052: // description
435          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
436          return value;
437        default: return super.setProperty(hash, name, value);
438        }
439
440      }
441
442      @Override
443      public Base setProperty(String name, Base value) throws FHIRException {
444        if (name.equals("actorId")) {
445          this.actorId = TypeConvertor.castToString(value); // StringType
446        } else if (name.equals("type")) {
447          value = new ExampleScenarioActorTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
448          this.type = (Enumeration) value; // Enumeration<ExampleScenarioActorType>
449        } else if (name.equals("name")) {
450          this.name = TypeConvertor.castToString(value); // StringType
451        } else if (name.equals("description")) {
452          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
453        } else
454          return super.setProperty(name, value);
455        return value;
456      }
457
458      @Override
459      public Base makeProperty(int hash, String name) throws FHIRException {
460        switch (hash) {
461        case -1161623056:  return getActorIdElement();
462        case 3575610:  return getTypeElement();
463        case 3373707:  return getNameElement();
464        case -1724546052:  return getDescriptionElement();
465        default: return super.makeProperty(hash, name);
466        }
467
468      }
469
470      @Override
471      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
472        switch (hash) {
473        case -1161623056: /*actorId*/ return new String[] {"string"};
474        case 3575610: /*type*/ return new String[] {"code"};
475        case 3373707: /*name*/ return new String[] {"string"};
476        case -1724546052: /*description*/ return new String[] {"markdown"};
477        default: return super.getTypesForProperty(hash, name);
478        }
479
480      }
481
482      @Override
483      public Base addChild(String name) throws FHIRException {
484        if (name.equals("actorId")) {
485          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.actor.actorId");
486        }
487        else if (name.equals("type")) {
488          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.actor.type");
489        }
490        else if (name.equals("name")) {
491          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.actor.name");
492        }
493        else if (name.equals("description")) {
494          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.actor.description");
495        }
496        else
497          return super.addChild(name);
498      }
499
500      public ExampleScenarioActorComponent copy() {
501        ExampleScenarioActorComponent dst = new ExampleScenarioActorComponent();
502        copyValues(dst);
503        return dst;
504      }
505
506      public void copyValues(ExampleScenarioActorComponent dst) {
507        super.copyValues(dst);
508        dst.actorId = actorId == null ? null : actorId.copy();
509        dst.type = type == null ? null : type.copy();
510        dst.name = name == null ? null : name.copy();
511        dst.description = description == null ? null : description.copy();
512      }
513
514      @Override
515      public boolean equalsDeep(Base other_) {
516        if (!super.equalsDeep(other_))
517          return false;
518        if (!(other_ instanceof ExampleScenarioActorComponent))
519          return false;
520        ExampleScenarioActorComponent o = (ExampleScenarioActorComponent) other_;
521        return compareDeep(actorId, o.actorId, true) && compareDeep(type, o.type, true) && compareDeep(name, o.name, true)
522           && compareDeep(description, o.description, true);
523      }
524
525      @Override
526      public boolean equalsShallow(Base other_) {
527        if (!super.equalsShallow(other_))
528          return false;
529        if (!(other_ instanceof ExampleScenarioActorComponent))
530          return false;
531        ExampleScenarioActorComponent o = (ExampleScenarioActorComponent) other_;
532        return compareValues(actorId, o.actorId, true) && compareValues(type, o.type, true) && compareValues(name, o.name, true)
533           && compareValues(description, o.description, true);
534      }
535
536      public boolean isEmpty() {
537        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(actorId, type, name, description
538          );
539      }
540
541  public String fhirType() {
542    return "ExampleScenario.actor";
543
544  }
545
546  }
547
548    @Block()
549    public static class ExampleScenarioInstanceComponent extends BackboneElement implements IBaseBackboneElement {
550        /**
551         * The id of the resource for referencing.
552         */
553        @Child(name = "resourceId", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
554        @Description(shortDefinition="The id of the resource for referencing", formalDefinition="The id of the resource for referencing." )
555        protected StringType resourceId;
556
557        /**
558         * The type of the resource.
559         */
560        @Child(name = "type", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
561        @Description(shortDefinition="The type of the resource", formalDefinition="The type of the resource." )
562        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
563        protected CodeType type;
564
565        /**
566         * A short name for the resource instance.
567         */
568        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
569        @Description(shortDefinition="A short name for the resource instance", formalDefinition="A short name for the resource instance." )
570        protected StringType name;
571
572        /**
573         * Human-friendly description of the resource instance.
574         */
575        @Child(name = "description", type = {MarkdownType.class}, order=4, min=0, max=1, modifier=false, summary=false)
576        @Description(shortDefinition="Human-friendly description of the resource instance", formalDefinition="Human-friendly description of the resource instance." )
577        protected MarkdownType description;
578
579        /**
580         * A specific version of the resource.
581         */
582        @Child(name = "version", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
583        @Description(shortDefinition="A specific version of the resource", formalDefinition="A specific version of the resource." )
584        protected List<ExampleScenarioInstanceVersionComponent> version;
585
586        /**
587         * Resources contained in the instance (e.g. the observations contained in a bundle).
588         */
589        @Child(name = "containedInstance", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
590        @Description(shortDefinition="Resources contained in the instance", formalDefinition="Resources contained in the instance (e.g. the observations contained in a bundle)." )
591        protected List<ExampleScenarioInstanceContainedInstanceComponent> containedInstance;
592
593        private static final long serialVersionUID = 869705192L;
594
595    /**
596     * Constructor
597     */
598      public ExampleScenarioInstanceComponent() {
599        super();
600      }
601
602    /**
603     * Constructor
604     */
605      public ExampleScenarioInstanceComponent(String resourceId, String type) {
606        super();
607        this.setResourceId(resourceId);
608        this.setType(type);
609      }
610
611        /**
612         * @return {@link #resourceId} (The id of the resource for referencing.). This is the underlying object with id, value and extensions. The accessor "getResourceId" gives direct access to the value
613         */
614        public StringType getResourceIdElement() { 
615          if (this.resourceId == null)
616            if (Configuration.errorOnAutoCreate())
617              throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.resourceId");
618            else if (Configuration.doAutoCreate())
619              this.resourceId = new StringType(); // bb
620          return this.resourceId;
621        }
622
623        public boolean hasResourceIdElement() { 
624          return this.resourceId != null && !this.resourceId.isEmpty();
625        }
626
627        public boolean hasResourceId() { 
628          return this.resourceId != null && !this.resourceId.isEmpty();
629        }
630
631        /**
632         * @param value {@link #resourceId} (The id of the resource for referencing.). This is the underlying object with id, value and extensions. The accessor "getResourceId" gives direct access to the value
633         */
634        public ExampleScenarioInstanceComponent setResourceIdElement(StringType value) { 
635          this.resourceId = value;
636          return this;
637        }
638
639        /**
640         * @return The id of the resource for referencing.
641         */
642        public String getResourceId() { 
643          return this.resourceId == null ? null : this.resourceId.getValue();
644        }
645
646        /**
647         * @param value The id of the resource for referencing.
648         */
649        public ExampleScenarioInstanceComponent setResourceId(String value) { 
650            if (this.resourceId == null)
651              this.resourceId = new StringType();
652            this.resourceId.setValue(value);
653          return this;
654        }
655
656        /**
657         * @return {@link #type} (The type of the resource.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
658         */
659        public CodeType getTypeElement() { 
660          if (this.type == null)
661            if (Configuration.errorOnAutoCreate())
662              throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.type");
663            else if (Configuration.doAutoCreate())
664              this.type = new CodeType(); // bb
665          return this.type;
666        }
667
668        public boolean hasTypeElement() { 
669          return this.type != null && !this.type.isEmpty();
670        }
671
672        public boolean hasType() { 
673          return this.type != null && !this.type.isEmpty();
674        }
675
676        /**
677         * @param value {@link #type} (The type of the resource.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
678         */
679        public ExampleScenarioInstanceComponent setTypeElement(CodeType value) { 
680          this.type = value;
681          return this;
682        }
683
684        /**
685         * @return The type of the resource.
686         */
687        public String getType() { 
688          return this.type == null ? null : this.type.getValue();
689        }
690
691        /**
692         * @param value The type of the resource.
693         */
694        public ExampleScenarioInstanceComponent setType(String value) { 
695            if (this.type == null)
696              this.type = new CodeType();
697            this.type.setValue(value);
698          return this;
699        }
700
701        /**
702         * @return {@link #name} (A short name for the resource instance.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
703         */
704        public StringType getNameElement() { 
705          if (this.name == null)
706            if (Configuration.errorOnAutoCreate())
707              throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.name");
708            else if (Configuration.doAutoCreate())
709              this.name = new StringType(); // bb
710          return this.name;
711        }
712
713        public boolean hasNameElement() { 
714          return this.name != null && !this.name.isEmpty();
715        }
716
717        public boolean hasName() { 
718          return this.name != null && !this.name.isEmpty();
719        }
720
721        /**
722         * @param value {@link #name} (A short name for the resource instance.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
723         */
724        public ExampleScenarioInstanceComponent setNameElement(StringType value) { 
725          this.name = value;
726          return this;
727        }
728
729        /**
730         * @return A short name for the resource instance.
731         */
732        public String getName() { 
733          return this.name == null ? null : this.name.getValue();
734        }
735
736        /**
737         * @param value A short name for the resource instance.
738         */
739        public ExampleScenarioInstanceComponent setName(String value) { 
740          if (Utilities.noString(value))
741            this.name = null;
742          else {
743            if (this.name == null)
744              this.name = new StringType();
745            this.name.setValue(value);
746          }
747          return this;
748        }
749
750        /**
751         * @return {@link #description} (Human-friendly description of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
752         */
753        public MarkdownType getDescriptionElement() { 
754          if (this.description == null)
755            if (Configuration.errorOnAutoCreate())
756              throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.description");
757            else if (Configuration.doAutoCreate())
758              this.description = new MarkdownType(); // bb
759          return this.description;
760        }
761
762        public boolean hasDescriptionElement() { 
763          return this.description != null && !this.description.isEmpty();
764        }
765
766        public boolean hasDescription() { 
767          return this.description != null && !this.description.isEmpty();
768        }
769
770        /**
771         * @param value {@link #description} (Human-friendly description of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
772         */
773        public ExampleScenarioInstanceComponent setDescriptionElement(MarkdownType value) { 
774          this.description = value;
775          return this;
776        }
777
778        /**
779         * @return Human-friendly description of the resource instance.
780         */
781        public String getDescription() { 
782          return this.description == null ? null : this.description.getValue();
783        }
784
785        /**
786         * @param value Human-friendly description of the resource instance.
787         */
788        public ExampleScenarioInstanceComponent setDescription(String value) { 
789          if (value == null)
790            this.description = null;
791          else {
792            if (this.description == null)
793              this.description = new MarkdownType();
794            this.description.setValue(value);
795          }
796          return this;
797        }
798
799        /**
800         * @return {@link #version} (A specific version of the resource.)
801         */
802        public List<ExampleScenarioInstanceVersionComponent> getVersion() { 
803          if (this.version == null)
804            this.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
805          return this.version;
806        }
807
808        /**
809         * @return Returns a reference to <code>this</code> for easy method chaining
810         */
811        public ExampleScenarioInstanceComponent setVersion(List<ExampleScenarioInstanceVersionComponent> theVersion) { 
812          this.version = theVersion;
813          return this;
814        }
815
816        public boolean hasVersion() { 
817          if (this.version == null)
818            return false;
819          for (ExampleScenarioInstanceVersionComponent item : this.version)
820            if (!item.isEmpty())
821              return true;
822          return false;
823        }
824
825        public ExampleScenarioInstanceVersionComponent addVersion() { //3
826          ExampleScenarioInstanceVersionComponent t = new ExampleScenarioInstanceVersionComponent();
827          if (this.version == null)
828            this.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
829          this.version.add(t);
830          return t;
831        }
832
833        public ExampleScenarioInstanceComponent addVersion(ExampleScenarioInstanceVersionComponent t) { //3
834          if (t == null)
835            return this;
836          if (this.version == null)
837            this.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
838          this.version.add(t);
839          return this;
840        }
841
842        /**
843         * @return The first repetition of repeating field {@link #version}, creating it if it does not already exist {3}
844         */
845        public ExampleScenarioInstanceVersionComponent getVersionFirstRep() { 
846          if (getVersion().isEmpty()) {
847            addVersion();
848          }
849          return getVersion().get(0);
850        }
851
852        /**
853         * @return {@link #containedInstance} (Resources contained in the instance (e.g. the observations contained in a bundle).)
854         */
855        public List<ExampleScenarioInstanceContainedInstanceComponent> getContainedInstance() { 
856          if (this.containedInstance == null)
857            this.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
858          return this.containedInstance;
859        }
860
861        /**
862         * @return Returns a reference to <code>this</code> for easy method chaining
863         */
864        public ExampleScenarioInstanceComponent setContainedInstance(List<ExampleScenarioInstanceContainedInstanceComponent> theContainedInstance) { 
865          this.containedInstance = theContainedInstance;
866          return this;
867        }
868
869        public boolean hasContainedInstance() { 
870          if (this.containedInstance == null)
871            return false;
872          for (ExampleScenarioInstanceContainedInstanceComponent item : this.containedInstance)
873            if (!item.isEmpty())
874              return true;
875          return false;
876        }
877
878        public ExampleScenarioInstanceContainedInstanceComponent addContainedInstance() { //3
879          ExampleScenarioInstanceContainedInstanceComponent t = new ExampleScenarioInstanceContainedInstanceComponent();
880          if (this.containedInstance == null)
881            this.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
882          this.containedInstance.add(t);
883          return t;
884        }
885
886        public ExampleScenarioInstanceComponent addContainedInstance(ExampleScenarioInstanceContainedInstanceComponent t) { //3
887          if (t == null)
888            return this;
889          if (this.containedInstance == null)
890            this.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
891          this.containedInstance.add(t);
892          return this;
893        }
894
895        /**
896         * @return The first repetition of repeating field {@link #containedInstance}, creating it if it does not already exist {3}
897         */
898        public ExampleScenarioInstanceContainedInstanceComponent getContainedInstanceFirstRep() { 
899          if (getContainedInstance().isEmpty()) {
900            addContainedInstance();
901          }
902          return getContainedInstance().get(0);
903        }
904
905        protected void listChildren(List<Property> children) {
906          super.listChildren(children);
907          children.add(new Property("resourceId", "string", "The id of the resource for referencing.", 0, 1, resourceId));
908          children.add(new Property("type", "code", "The type of the resource.", 0, 1, type));
909          children.add(new Property("name", "string", "A short name for the resource instance.", 0, 1, name));
910          children.add(new Property("description", "markdown", "Human-friendly description of the resource instance.", 0, 1, description));
911          children.add(new Property("version", "", "A specific version of the resource.", 0, java.lang.Integer.MAX_VALUE, version));
912          children.add(new Property("containedInstance", "", "Resources contained in the instance (e.g. the observations contained in a bundle).", 0, java.lang.Integer.MAX_VALUE, containedInstance));
913        }
914
915        @Override
916        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
917          switch (_hash) {
918          case -1345650231: /*resourceId*/  return new Property("resourceId", "string", "The id of the resource for referencing.", 0, 1, resourceId);
919          case 3575610: /*type*/  return new Property("type", "code", "The type of the resource.", 0, 1, type);
920          case 3373707: /*name*/  return new Property("name", "string", "A short name for the resource instance.", 0, 1, name);
921          case -1724546052: /*description*/  return new Property("description", "markdown", "Human-friendly description of the resource instance.", 0, 1, description);
922          case 351608024: /*version*/  return new Property("version", "", "A specific version of the resource.", 0, java.lang.Integer.MAX_VALUE, version);
923          case -417062360: /*containedInstance*/  return new Property("containedInstance", "", "Resources contained in the instance (e.g. the observations contained in a bundle).", 0, java.lang.Integer.MAX_VALUE, containedInstance);
924          default: return super.getNamedProperty(_hash, _name, _checkValid);
925          }
926
927        }
928
929      @Override
930      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
931        switch (hash) {
932        case -1345650231: /*resourceId*/ return this.resourceId == null ? new Base[0] : new Base[] {this.resourceId}; // StringType
933        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeType
934        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
935        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
936        case 351608024: /*version*/ return this.version == null ? new Base[0] : this.version.toArray(new Base[this.version.size()]); // ExampleScenarioInstanceVersionComponent
937        case -417062360: /*containedInstance*/ return this.containedInstance == null ? new Base[0] : this.containedInstance.toArray(new Base[this.containedInstance.size()]); // ExampleScenarioInstanceContainedInstanceComponent
938        default: return super.getProperty(hash, name, checkValid);
939        }
940
941      }
942
943      @Override
944      public Base setProperty(int hash, String name, Base value) throws FHIRException {
945        switch (hash) {
946        case -1345650231: // resourceId
947          this.resourceId = TypeConvertor.castToString(value); // StringType
948          return value;
949        case 3575610: // type
950          this.type = TypeConvertor.castToCode(value); // CodeType
951          return value;
952        case 3373707: // name
953          this.name = TypeConvertor.castToString(value); // StringType
954          return value;
955        case -1724546052: // description
956          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
957          return value;
958        case 351608024: // version
959          this.getVersion().add((ExampleScenarioInstanceVersionComponent) value); // ExampleScenarioInstanceVersionComponent
960          return value;
961        case -417062360: // containedInstance
962          this.getContainedInstance().add((ExampleScenarioInstanceContainedInstanceComponent) value); // ExampleScenarioInstanceContainedInstanceComponent
963          return value;
964        default: return super.setProperty(hash, name, value);
965        }
966
967      }
968
969      @Override
970      public Base setProperty(String name, Base value) throws FHIRException {
971        if (name.equals("resourceId")) {
972          this.resourceId = TypeConvertor.castToString(value); // StringType
973        } else if (name.equals("type")) {
974          this.type = TypeConvertor.castToCode(value); // CodeType
975        } else if (name.equals("name")) {
976          this.name = TypeConvertor.castToString(value); // StringType
977        } else if (name.equals("description")) {
978          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
979        } else if (name.equals("version")) {
980          this.getVersion().add((ExampleScenarioInstanceVersionComponent) value);
981        } else if (name.equals("containedInstance")) {
982          this.getContainedInstance().add((ExampleScenarioInstanceContainedInstanceComponent) value);
983        } else
984          return super.setProperty(name, value);
985        return value;
986      }
987
988      @Override
989      public Base makeProperty(int hash, String name) throws FHIRException {
990        switch (hash) {
991        case -1345650231:  return getResourceIdElement();
992        case 3575610:  return getTypeElement();
993        case 3373707:  return getNameElement();
994        case -1724546052:  return getDescriptionElement();
995        case 351608024:  return addVersion(); 
996        case -417062360:  return addContainedInstance(); 
997        default: return super.makeProperty(hash, name);
998        }
999
1000      }
1001
1002      @Override
1003      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1004        switch (hash) {
1005        case -1345650231: /*resourceId*/ return new String[] {"string"};
1006        case 3575610: /*type*/ return new String[] {"code"};
1007        case 3373707: /*name*/ return new String[] {"string"};
1008        case -1724546052: /*description*/ return new String[] {"markdown"};
1009        case 351608024: /*version*/ return new String[] {};
1010        case -417062360: /*containedInstance*/ return new String[] {};
1011        default: return super.getTypesForProperty(hash, name);
1012        }
1013
1014      }
1015
1016      @Override
1017      public Base addChild(String name) throws FHIRException {
1018        if (name.equals("resourceId")) {
1019          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.resourceId");
1020        }
1021        else if (name.equals("type")) {
1022          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.type");
1023        }
1024        else if (name.equals("name")) {
1025          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.name");
1026        }
1027        else if (name.equals("description")) {
1028          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.description");
1029        }
1030        else if (name.equals("version")) {
1031          return addVersion();
1032        }
1033        else if (name.equals("containedInstance")) {
1034          return addContainedInstance();
1035        }
1036        else
1037          return super.addChild(name);
1038      }
1039
1040      public ExampleScenarioInstanceComponent copy() {
1041        ExampleScenarioInstanceComponent dst = new ExampleScenarioInstanceComponent();
1042        copyValues(dst);
1043        return dst;
1044      }
1045
1046      public void copyValues(ExampleScenarioInstanceComponent dst) {
1047        super.copyValues(dst);
1048        dst.resourceId = resourceId == null ? null : resourceId.copy();
1049        dst.type = type == null ? null : type.copy();
1050        dst.name = name == null ? null : name.copy();
1051        dst.description = description == null ? null : description.copy();
1052        if (version != null) {
1053          dst.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
1054          for (ExampleScenarioInstanceVersionComponent i : version)
1055            dst.version.add(i.copy());
1056        };
1057        if (containedInstance != null) {
1058          dst.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
1059          for (ExampleScenarioInstanceContainedInstanceComponent i : containedInstance)
1060            dst.containedInstance.add(i.copy());
1061        };
1062      }
1063
1064      @Override
1065      public boolean equalsDeep(Base other_) {
1066        if (!super.equalsDeep(other_))
1067          return false;
1068        if (!(other_ instanceof ExampleScenarioInstanceComponent))
1069          return false;
1070        ExampleScenarioInstanceComponent o = (ExampleScenarioInstanceComponent) other_;
1071        return compareDeep(resourceId, o.resourceId, true) && compareDeep(type, o.type, true) && compareDeep(name, o.name, true)
1072           && compareDeep(description, o.description, true) && compareDeep(version, o.version, true) && compareDeep(containedInstance, o.containedInstance, true)
1073          ;
1074      }
1075
1076      @Override
1077      public boolean equalsShallow(Base other_) {
1078        if (!super.equalsShallow(other_))
1079          return false;
1080        if (!(other_ instanceof ExampleScenarioInstanceComponent))
1081          return false;
1082        ExampleScenarioInstanceComponent o = (ExampleScenarioInstanceComponent) other_;
1083        return compareValues(resourceId, o.resourceId, true) && compareValues(type, o.type, true) && compareValues(name, o.name, true)
1084           && compareValues(description, o.description, true);
1085      }
1086
1087      public boolean isEmpty() {
1088        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(resourceId, type, name, description
1089          , version, containedInstance);
1090      }
1091
1092  public String fhirType() {
1093    return "ExampleScenario.instance";
1094
1095  }
1096
1097  }
1098
1099    @Block()
1100    public static class ExampleScenarioInstanceVersionComponent extends BackboneElement implements IBaseBackboneElement {
1101        /**
1102         * The identifier of a specific version of a resource.
1103         */
1104        @Child(name = "versionId", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1105        @Description(shortDefinition="The identifier of a specific version of a resource", formalDefinition="The identifier of a specific version of a resource." )
1106        protected StringType versionId;
1107
1108        /**
1109         * The description of the resource version.
1110         */
1111        @Child(name = "description", type = {MarkdownType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1112        @Description(shortDefinition="The description of the resource version", formalDefinition="The description of the resource version." )
1113        protected MarkdownType description;
1114
1115        private static final long serialVersionUID = 960821913L;
1116
1117    /**
1118     * Constructor
1119     */
1120      public ExampleScenarioInstanceVersionComponent() {
1121        super();
1122      }
1123
1124    /**
1125     * Constructor
1126     */
1127      public ExampleScenarioInstanceVersionComponent(String versionId, String description) {
1128        super();
1129        this.setVersionId(versionId);
1130        this.setDescription(description);
1131      }
1132
1133        /**
1134         * @return {@link #versionId} (The identifier of a specific version of a resource.). This is the underlying object with id, value and extensions. The accessor "getVersionId" gives direct access to the value
1135         */
1136        public StringType getVersionIdElement() { 
1137          if (this.versionId == null)
1138            if (Configuration.errorOnAutoCreate())
1139              throw new Error("Attempt to auto-create ExampleScenarioInstanceVersionComponent.versionId");
1140            else if (Configuration.doAutoCreate())
1141              this.versionId = new StringType(); // bb
1142          return this.versionId;
1143        }
1144
1145        public boolean hasVersionIdElement() { 
1146          return this.versionId != null && !this.versionId.isEmpty();
1147        }
1148
1149        public boolean hasVersionId() { 
1150          return this.versionId != null && !this.versionId.isEmpty();
1151        }
1152
1153        /**
1154         * @param value {@link #versionId} (The identifier of a specific version of a resource.). This is the underlying object with id, value and extensions. The accessor "getVersionId" gives direct access to the value
1155         */
1156        public ExampleScenarioInstanceVersionComponent setVersionIdElement(StringType value) { 
1157          this.versionId = value;
1158          return this;
1159        }
1160
1161        /**
1162         * @return The identifier of a specific version of a resource.
1163         */
1164        public String getVersionId() { 
1165          return this.versionId == null ? null : this.versionId.getValue();
1166        }
1167
1168        /**
1169         * @param value The identifier of a specific version of a resource.
1170         */
1171        public ExampleScenarioInstanceVersionComponent setVersionId(String value) { 
1172            if (this.versionId == null)
1173              this.versionId = new StringType();
1174            this.versionId.setValue(value);
1175          return this;
1176        }
1177
1178        /**
1179         * @return {@link #description} (The description of the resource version.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1180         */
1181        public MarkdownType getDescriptionElement() { 
1182          if (this.description == null)
1183            if (Configuration.errorOnAutoCreate())
1184              throw new Error("Attempt to auto-create ExampleScenarioInstanceVersionComponent.description");
1185            else if (Configuration.doAutoCreate())
1186              this.description = new MarkdownType(); // bb
1187          return this.description;
1188        }
1189
1190        public boolean hasDescriptionElement() { 
1191          return this.description != null && !this.description.isEmpty();
1192        }
1193
1194        public boolean hasDescription() { 
1195          return this.description != null && !this.description.isEmpty();
1196        }
1197
1198        /**
1199         * @param value {@link #description} (The description of the resource version.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1200         */
1201        public ExampleScenarioInstanceVersionComponent setDescriptionElement(MarkdownType value) { 
1202          this.description = value;
1203          return this;
1204        }
1205
1206        /**
1207         * @return The description of the resource version.
1208         */
1209        public String getDescription() { 
1210          return this.description == null ? null : this.description.getValue();
1211        }
1212
1213        /**
1214         * @param value The description of the resource version.
1215         */
1216        public ExampleScenarioInstanceVersionComponent setDescription(String value) { 
1217            if (this.description == null)
1218              this.description = new MarkdownType();
1219            this.description.setValue(value);
1220          return this;
1221        }
1222
1223        protected void listChildren(List<Property> children) {
1224          super.listChildren(children);
1225          children.add(new Property("versionId", "string", "The identifier of a specific version of a resource.", 0, 1, versionId));
1226          children.add(new Property("description", "markdown", "The description of the resource version.", 0, 1, description));
1227        }
1228
1229        @Override
1230        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1231          switch (_hash) {
1232          case -1407102957: /*versionId*/  return new Property("versionId", "string", "The identifier of a specific version of a resource.", 0, 1, versionId);
1233          case -1724546052: /*description*/  return new Property("description", "markdown", "The description of the resource version.", 0, 1, description);
1234          default: return super.getNamedProperty(_hash, _name, _checkValid);
1235          }
1236
1237        }
1238
1239      @Override
1240      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1241        switch (hash) {
1242        case -1407102957: /*versionId*/ return this.versionId == null ? new Base[0] : new Base[] {this.versionId}; // StringType
1243        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1244        default: return super.getProperty(hash, name, checkValid);
1245        }
1246
1247      }
1248
1249      @Override
1250      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1251        switch (hash) {
1252        case -1407102957: // versionId
1253          this.versionId = TypeConvertor.castToString(value); // StringType
1254          return value;
1255        case -1724546052: // description
1256          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1257          return value;
1258        default: return super.setProperty(hash, name, value);
1259        }
1260
1261      }
1262
1263      @Override
1264      public Base setProperty(String name, Base value) throws FHIRException {
1265        if (name.equals("versionId")) {
1266          this.versionId = TypeConvertor.castToString(value); // StringType
1267        } else if (name.equals("description")) {
1268          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1269        } else
1270          return super.setProperty(name, value);
1271        return value;
1272      }
1273
1274      @Override
1275      public Base makeProperty(int hash, String name) throws FHIRException {
1276        switch (hash) {
1277        case -1407102957:  return getVersionIdElement();
1278        case -1724546052:  return getDescriptionElement();
1279        default: return super.makeProperty(hash, name);
1280        }
1281
1282      }
1283
1284      @Override
1285      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1286        switch (hash) {
1287        case -1407102957: /*versionId*/ return new String[] {"string"};
1288        case -1724546052: /*description*/ return new String[] {"markdown"};
1289        default: return super.getTypesForProperty(hash, name);
1290        }
1291
1292      }
1293
1294      @Override
1295      public Base addChild(String name) throws FHIRException {
1296        if (name.equals("versionId")) {
1297          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.version.versionId");
1298        }
1299        else if (name.equals("description")) {
1300          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.version.description");
1301        }
1302        else
1303          return super.addChild(name);
1304      }
1305
1306      public ExampleScenarioInstanceVersionComponent copy() {
1307        ExampleScenarioInstanceVersionComponent dst = new ExampleScenarioInstanceVersionComponent();
1308        copyValues(dst);
1309        return dst;
1310      }
1311
1312      public void copyValues(ExampleScenarioInstanceVersionComponent dst) {
1313        super.copyValues(dst);
1314        dst.versionId = versionId == null ? null : versionId.copy();
1315        dst.description = description == null ? null : description.copy();
1316      }
1317
1318      @Override
1319      public boolean equalsDeep(Base other_) {
1320        if (!super.equalsDeep(other_))
1321          return false;
1322        if (!(other_ instanceof ExampleScenarioInstanceVersionComponent))
1323          return false;
1324        ExampleScenarioInstanceVersionComponent o = (ExampleScenarioInstanceVersionComponent) other_;
1325        return compareDeep(versionId, o.versionId, true) && compareDeep(description, o.description, true)
1326          ;
1327      }
1328
1329      @Override
1330      public boolean equalsShallow(Base other_) {
1331        if (!super.equalsShallow(other_))
1332          return false;
1333        if (!(other_ instanceof ExampleScenarioInstanceVersionComponent))
1334          return false;
1335        ExampleScenarioInstanceVersionComponent o = (ExampleScenarioInstanceVersionComponent) other_;
1336        return compareValues(versionId, o.versionId, true) && compareValues(description, o.description, true)
1337          ;
1338      }
1339
1340      public boolean isEmpty() {
1341        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(versionId, description);
1342      }
1343
1344  public String fhirType() {
1345    return "ExampleScenario.instance.version";
1346
1347  }
1348
1349  }
1350
1351    @Block()
1352    public static class ExampleScenarioInstanceContainedInstanceComponent extends BackboneElement implements IBaseBackboneElement {
1353        /**
1354         * Each resource contained in the instance.
1355         */
1356        @Child(name = "resourceId", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1357        @Description(shortDefinition="Each resource contained in the instance", formalDefinition="Each resource contained in the instance." )
1358        protected StringType resourceId;
1359
1360        /**
1361         * A specific version of a resource contained in the instance.
1362         */
1363        @Child(name = "versionId", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1364        @Description(shortDefinition="A specific version of a resource contained in the instance", formalDefinition="A specific version of a resource contained in the instance." )
1365        protected StringType versionId;
1366
1367        private static final long serialVersionUID = 908084124L;
1368
1369    /**
1370     * Constructor
1371     */
1372      public ExampleScenarioInstanceContainedInstanceComponent() {
1373        super();
1374      }
1375
1376    /**
1377     * Constructor
1378     */
1379      public ExampleScenarioInstanceContainedInstanceComponent(String resourceId) {
1380        super();
1381        this.setResourceId(resourceId);
1382      }
1383
1384        /**
1385         * @return {@link #resourceId} (Each resource contained in the instance.). This is the underlying object with id, value and extensions. The accessor "getResourceId" gives direct access to the value
1386         */
1387        public StringType getResourceIdElement() { 
1388          if (this.resourceId == null)
1389            if (Configuration.errorOnAutoCreate())
1390              throw new Error("Attempt to auto-create ExampleScenarioInstanceContainedInstanceComponent.resourceId");
1391            else if (Configuration.doAutoCreate())
1392              this.resourceId = new StringType(); // bb
1393          return this.resourceId;
1394        }
1395
1396        public boolean hasResourceIdElement() { 
1397          return this.resourceId != null && !this.resourceId.isEmpty();
1398        }
1399
1400        public boolean hasResourceId() { 
1401          return this.resourceId != null && !this.resourceId.isEmpty();
1402        }
1403
1404        /**
1405         * @param value {@link #resourceId} (Each resource contained in the instance.). This is the underlying object with id, value and extensions. The accessor "getResourceId" gives direct access to the value
1406         */
1407        public ExampleScenarioInstanceContainedInstanceComponent setResourceIdElement(StringType value) { 
1408          this.resourceId = value;
1409          return this;
1410        }
1411
1412        /**
1413         * @return Each resource contained in the instance.
1414         */
1415        public String getResourceId() { 
1416          return this.resourceId == null ? null : this.resourceId.getValue();
1417        }
1418
1419        /**
1420         * @param value Each resource contained in the instance.
1421         */
1422        public ExampleScenarioInstanceContainedInstanceComponent setResourceId(String value) { 
1423            if (this.resourceId == null)
1424              this.resourceId = new StringType();
1425            this.resourceId.setValue(value);
1426          return this;
1427        }
1428
1429        /**
1430         * @return {@link #versionId} (A specific version of a resource contained in the instance.). This is the underlying object with id, value and extensions. The accessor "getVersionId" gives direct access to the value
1431         */
1432        public StringType getVersionIdElement() { 
1433          if (this.versionId == null)
1434            if (Configuration.errorOnAutoCreate())
1435              throw new Error("Attempt to auto-create ExampleScenarioInstanceContainedInstanceComponent.versionId");
1436            else if (Configuration.doAutoCreate())
1437              this.versionId = new StringType(); // bb
1438          return this.versionId;
1439        }
1440
1441        public boolean hasVersionIdElement() { 
1442          return this.versionId != null && !this.versionId.isEmpty();
1443        }
1444
1445        public boolean hasVersionId() { 
1446          return this.versionId != null && !this.versionId.isEmpty();
1447        }
1448
1449        /**
1450         * @param value {@link #versionId} (A specific version of a resource contained in the instance.). This is the underlying object with id, value and extensions. The accessor "getVersionId" gives direct access to the value
1451         */
1452        public ExampleScenarioInstanceContainedInstanceComponent setVersionIdElement(StringType value) { 
1453          this.versionId = value;
1454          return this;
1455        }
1456
1457        /**
1458         * @return A specific version of a resource contained in the instance.
1459         */
1460        public String getVersionId() { 
1461          return this.versionId == null ? null : this.versionId.getValue();
1462        }
1463
1464        /**
1465         * @param value A specific version of a resource contained in the instance.
1466         */
1467        public ExampleScenarioInstanceContainedInstanceComponent setVersionId(String value) { 
1468          if (Utilities.noString(value))
1469            this.versionId = null;
1470          else {
1471            if (this.versionId == null)
1472              this.versionId = new StringType();
1473            this.versionId.setValue(value);
1474          }
1475          return this;
1476        }
1477
1478        protected void listChildren(List<Property> children) {
1479          super.listChildren(children);
1480          children.add(new Property("resourceId", "string", "Each resource contained in the instance.", 0, 1, resourceId));
1481          children.add(new Property("versionId", "string", "A specific version of a resource contained in the instance.", 0, 1, versionId));
1482        }
1483
1484        @Override
1485        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1486          switch (_hash) {
1487          case -1345650231: /*resourceId*/  return new Property("resourceId", "string", "Each resource contained in the instance.", 0, 1, resourceId);
1488          case -1407102957: /*versionId*/  return new Property("versionId", "string", "A specific version of a resource contained in the instance.", 0, 1, versionId);
1489          default: return super.getNamedProperty(_hash, _name, _checkValid);
1490          }
1491
1492        }
1493
1494      @Override
1495      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1496        switch (hash) {
1497        case -1345650231: /*resourceId*/ return this.resourceId == null ? new Base[0] : new Base[] {this.resourceId}; // StringType
1498        case -1407102957: /*versionId*/ return this.versionId == null ? new Base[0] : new Base[] {this.versionId}; // StringType
1499        default: return super.getProperty(hash, name, checkValid);
1500        }
1501
1502      }
1503
1504      @Override
1505      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1506        switch (hash) {
1507        case -1345650231: // resourceId
1508          this.resourceId = TypeConvertor.castToString(value); // StringType
1509          return value;
1510        case -1407102957: // versionId
1511          this.versionId = TypeConvertor.castToString(value); // StringType
1512          return value;
1513        default: return super.setProperty(hash, name, value);
1514        }
1515
1516      }
1517
1518      @Override
1519      public Base setProperty(String name, Base value) throws FHIRException {
1520        if (name.equals("resourceId")) {
1521          this.resourceId = TypeConvertor.castToString(value); // StringType
1522        } else if (name.equals("versionId")) {
1523          this.versionId = TypeConvertor.castToString(value); // StringType
1524        } else
1525          return super.setProperty(name, value);
1526        return value;
1527      }
1528
1529      @Override
1530      public Base makeProperty(int hash, String name) throws FHIRException {
1531        switch (hash) {
1532        case -1345650231:  return getResourceIdElement();
1533        case -1407102957:  return getVersionIdElement();
1534        default: return super.makeProperty(hash, name);
1535        }
1536
1537      }
1538
1539      @Override
1540      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1541        switch (hash) {
1542        case -1345650231: /*resourceId*/ return new String[] {"string"};
1543        case -1407102957: /*versionId*/ return new String[] {"string"};
1544        default: return super.getTypesForProperty(hash, name);
1545        }
1546
1547      }
1548
1549      @Override
1550      public Base addChild(String name) throws FHIRException {
1551        if (name.equals("resourceId")) {
1552          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.containedInstance.resourceId");
1553        }
1554        else if (name.equals("versionId")) {
1555          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.containedInstance.versionId");
1556        }
1557        else
1558          return super.addChild(name);
1559      }
1560
1561      public ExampleScenarioInstanceContainedInstanceComponent copy() {
1562        ExampleScenarioInstanceContainedInstanceComponent dst = new ExampleScenarioInstanceContainedInstanceComponent();
1563        copyValues(dst);
1564        return dst;
1565      }
1566
1567      public void copyValues(ExampleScenarioInstanceContainedInstanceComponent dst) {
1568        super.copyValues(dst);
1569        dst.resourceId = resourceId == null ? null : resourceId.copy();
1570        dst.versionId = versionId == null ? null : versionId.copy();
1571      }
1572
1573      @Override
1574      public boolean equalsDeep(Base other_) {
1575        if (!super.equalsDeep(other_))
1576          return false;
1577        if (!(other_ instanceof ExampleScenarioInstanceContainedInstanceComponent))
1578          return false;
1579        ExampleScenarioInstanceContainedInstanceComponent o = (ExampleScenarioInstanceContainedInstanceComponent) other_;
1580        return compareDeep(resourceId, o.resourceId, true) && compareDeep(versionId, o.versionId, true)
1581          ;
1582      }
1583
1584      @Override
1585      public boolean equalsShallow(Base other_) {
1586        if (!super.equalsShallow(other_))
1587          return false;
1588        if (!(other_ instanceof ExampleScenarioInstanceContainedInstanceComponent))
1589          return false;
1590        ExampleScenarioInstanceContainedInstanceComponent o = (ExampleScenarioInstanceContainedInstanceComponent) other_;
1591        return compareValues(resourceId, o.resourceId, true) && compareValues(versionId, o.versionId, true)
1592          ;
1593      }
1594
1595      public boolean isEmpty() {
1596        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(resourceId, versionId);
1597      }
1598
1599  public String fhirType() {
1600    return "ExampleScenario.instance.containedInstance";
1601
1602  }
1603
1604  }
1605
1606    @Block()
1607    public static class ExampleScenarioProcessComponent extends BackboneElement implements IBaseBackboneElement {
1608        /**
1609         * The diagram title of the group of operations.
1610         */
1611        @Child(name = "title", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true)
1612        @Description(shortDefinition="The diagram title of the group of operations", formalDefinition="The diagram title of the group of operations." )
1613        protected StringType title;
1614
1615        /**
1616         * A longer description of the group of operations.
1617         */
1618        @Child(name = "description", type = {MarkdownType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1619        @Description(shortDefinition="A longer description of the group of operations", formalDefinition="A longer description of the group of operations." )
1620        protected MarkdownType description;
1621
1622        /**
1623         * Description of initial status before the process starts.
1624         */
1625        @Child(name = "preConditions", type = {MarkdownType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1626        @Description(shortDefinition="Description of initial status before the process starts", formalDefinition="Description of initial status before the process starts." )
1627        protected MarkdownType preConditions;
1628
1629        /**
1630         * Description of final status after the process ends.
1631         */
1632        @Child(name = "postConditions", type = {MarkdownType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1633        @Description(shortDefinition="Description of final status after the process ends", formalDefinition="Description of final status after the process ends." )
1634        protected MarkdownType postConditions;
1635
1636        /**
1637         * Each step of the process.
1638         */
1639        @Child(name = "step", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1640        @Description(shortDefinition="Each step of the process", formalDefinition="Each step of the process." )
1641        protected List<ExampleScenarioProcessStepComponent> step;
1642
1643        private static final long serialVersionUID = 325578043L;
1644
1645    /**
1646     * Constructor
1647     */
1648      public ExampleScenarioProcessComponent() {
1649        super();
1650      }
1651
1652    /**
1653     * Constructor
1654     */
1655      public ExampleScenarioProcessComponent(String title) {
1656        super();
1657        this.setTitle(title);
1658      }
1659
1660        /**
1661         * @return {@link #title} (The diagram title of the group of operations.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1662         */
1663        public StringType getTitleElement() { 
1664          if (this.title == null)
1665            if (Configuration.errorOnAutoCreate())
1666              throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.title");
1667            else if (Configuration.doAutoCreate())
1668              this.title = new StringType(); // bb
1669          return this.title;
1670        }
1671
1672        public boolean hasTitleElement() { 
1673          return this.title != null && !this.title.isEmpty();
1674        }
1675
1676        public boolean hasTitle() { 
1677          return this.title != null && !this.title.isEmpty();
1678        }
1679
1680        /**
1681         * @param value {@link #title} (The diagram title of the group of operations.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1682         */
1683        public ExampleScenarioProcessComponent setTitleElement(StringType value) { 
1684          this.title = value;
1685          return this;
1686        }
1687
1688        /**
1689         * @return The diagram title of the group of operations.
1690         */
1691        public String getTitle() { 
1692          return this.title == null ? null : this.title.getValue();
1693        }
1694
1695        /**
1696         * @param value The diagram title of the group of operations.
1697         */
1698        public ExampleScenarioProcessComponent setTitle(String value) { 
1699            if (this.title == null)
1700              this.title = new StringType();
1701            this.title.setValue(value);
1702          return this;
1703        }
1704
1705        /**
1706         * @return {@link #description} (A longer description of the group of operations.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1707         */
1708        public MarkdownType getDescriptionElement() { 
1709          if (this.description == null)
1710            if (Configuration.errorOnAutoCreate())
1711              throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.description");
1712            else if (Configuration.doAutoCreate())
1713              this.description = new MarkdownType(); // bb
1714          return this.description;
1715        }
1716
1717        public boolean hasDescriptionElement() { 
1718          return this.description != null && !this.description.isEmpty();
1719        }
1720
1721        public boolean hasDescription() { 
1722          return this.description != null && !this.description.isEmpty();
1723        }
1724
1725        /**
1726         * @param value {@link #description} (A longer description of the group of operations.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1727         */
1728        public ExampleScenarioProcessComponent setDescriptionElement(MarkdownType value) { 
1729          this.description = value;
1730          return this;
1731        }
1732
1733        /**
1734         * @return A longer description of the group of operations.
1735         */
1736        public String getDescription() { 
1737          return this.description == null ? null : this.description.getValue();
1738        }
1739
1740        /**
1741         * @param value A longer description of the group of operations.
1742         */
1743        public ExampleScenarioProcessComponent setDescription(String value) { 
1744          if (value == null)
1745            this.description = null;
1746          else {
1747            if (this.description == null)
1748              this.description = new MarkdownType();
1749            this.description.setValue(value);
1750          }
1751          return this;
1752        }
1753
1754        /**
1755         * @return {@link #preConditions} (Description of initial status before the process starts.). This is the underlying object with id, value and extensions. The accessor "getPreConditions" gives direct access to the value
1756         */
1757        public MarkdownType getPreConditionsElement() { 
1758          if (this.preConditions == null)
1759            if (Configuration.errorOnAutoCreate())
1760              throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.preConditions");
1761            else if (Configuration.doAutoCreate())
1762              this.preConditions = new MarkdownType(); // bb
1763          return this.preConditions;
1764        }
1765
1766        public boolean hasPreConditionsElement() { 
1767          return this.preConditions != null && !this.preConditions.isEmpty();
1768        }
1769
1770        public boolean hasPreConditions() { 
1771          return this.preConditions != null && !this.preConditions.isEmpty();
1772        }
1773
1774        /**
1775         * @param value {@link #preConditions} (Description of initial status before the process starts.). This is the underlying object with id, value and extensions. The accessor "getPreConditions" gives direct access to the value
1776         */
1777        public ExampleScenarioProcessComponent setPreConditionsElement(MarkdownType value) { 
1778          this.preConditions = value;
1779          return this;
1780        }
1781
1782        /**
1783         * @return Description of initial status before the process starts.
1784         */
1785        public String getPreConditions() { 
1786          return this.preConditions == null ? null : this.preConditions.getValue();
1787        }
1788
1789        /**
1790         * @param value Description of initial status before the process starts.
1791         */
1792        public ExampleScenarioProcessComponent setPreConditions(String value) { 
1793          if (value == null)
1794            this.preConditions = null;
1795          else {
1796            if (this.preConditions == null)
1797              this.preConditions = new MarkdownType();
1798            this.preConditions.setValue(value);
1799          }
1800          return this;
1801        }
1802
1803        /**
1804         * @return {@link #postConditions} (Description of final status after the process ends.). This is the underlying object with id, value and extensions. The accessor "getPostConditions" gives direct access to the value
1805         */
1806        public MarkdownType getPostConditionsElement() { 
1807          if (this.postConditions == null)
1808            if (Configuration.errorOnAutoCreate())
1809              throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.postConditions");
1810            else if (Configuration.doAutoCreate())
1811              this.postConditions = new MarkdownType(); // bb
1812          return this.postConditions;
1813        }
1814
1815        public boolean hasPostConditionsElement() { 
1816          return this.postConditions != null && !this.postConditions.isEmpty();
1817        }
1818
1819        public boolean hasPostConditions() { 
1820          return this.postConditions != null && !this.postConditions.isEmpty();
1821        }
1822
1823        /**
1824         * @param value {@link #postConditions} (Description of final status after the process ends.). This is the underlying object with id, value and extensions. The accessor "getPostConditions" gives direct access to the value
1825         */
1826        public ExampleScenarioProcessComponent setPostConditionsElement(MarkdownType value) { 
1827          this.postConditions = value;
1828          return this;
1829        }
1830
1831        /**
1832         * @return Description of final status after the process ends.
1833         */
1834        public String getPostConditions() { 
1835          return this.postConditions == null ? null : this.postConditions.getValue();
1836        }
1837
1838        /**
1839         * @param value Description of final status after the process ends.
1840         */
1841        public ExampleScenarioProcessComponent setPostConditions(String value) { 
1842          if (value == null)
1843            this.postConditions = null;
1844          else {
1845            if (this.postConditions == null)
1846              this.postConditions = new MarkdownType();
1847            this.postConditions.setValue(value);
1848          }
1849          return this;
1850        }
1851
1852        /**
1853         * @return {@link #step} (Each step of the process.)
1854         */
1855        public List<ExampleScenarioProcessStepComponent> getStep() { 
1856          if (this.step == null)
1857            this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
1858          return this.step;
1859        }
1860
1861        /**
1862         * @return Returns a reference to <code>this</code> for easy method chaining
1863         */
1864        public ExampleScenarioProcessComponent setStep(List<ExampleScenarioProcessStepComponent> theStep) { 
1865          this.step = theStep;
1866          return this;
1867        }
1868
1869        public boolean hasStep() { 
1870          if (this.step == null)
1871            return false;
1872          for (ExampleScenarioProcessStepComponent item : this.step)
1873            if (!item.isEmpty())
1874              return true;
1875          return false;
1876        }
1877
1878        public ExampleScenarioProcessStepComponent addStep() { //3
1879          ExampleScenarioProcessStepComponent t = new ExampleScenarioProcessStepComponent();
1880          if (this.step == null)
1881            this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
1882          this.step.add(t);
1883          return t;
1884        }
1885
1886        public ExampleScenarioProcessComponent addStep(ExampleScenarioProcessStepComponent t) { //3
1887          if (t == null)
1888            return this;
1889          if (this.step == null)
1890            this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
1891          this.step.add(t);
1892          return this;
1893        }
1894
1895        /**
1896         * @return The first repetition of repeating field {@link #step}, creating it if it does not already exist {3}
1897         */
1898        public ExampleScenarioProcessStepComponent getStepFirstRep() { 
1899          if (getStep().isEmpty()) {
1900            addStep();
1901          }
1902          return getStep().get(0);
1903        }
1904
1905        protected void listChildren(List<Property> children) {
1906          super.listChildren(children);
1907          children.add(new Property("title", "string", "The diagram title of the group of operations.", 0, 1, title));
1908          children.add(new Property("description", "markdown", "A longer description of the group of operations.", 0, 1, description));
1909          children.add(new Property("preConditions", "markdown", "Description of initial status before the process starts.", 0, 1, preConditions));
1910          children.add(new Property("postConditions", "markdown", "Description of final status after the process ends.", 0, 1, postConditions));
1911          children.add(new Property("step", "", "Each step of the process.", 0, java.lang.Integer.MAX_VALUE, step));
1912        }
1913
1914        @Override
1915        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1916          switch (_hash) {
1917          case 110371416: /*title*/  return new Property("title", "string", "The diagram title of the group of operations.", 0, 1, title);
1918          case -1724546052: /*description*/  return new Property("description", "markdown", "A longer description of the group of operations.", 0, 1, description);
1919          case -1006692933: /*preConditions*/  return new Property("preConditions", "markdown", "Description of initial status before the process starts.", 0, 1, preConditions);
1920          case 1738302328: /*postConditions*/  return new Property("postConditions", "markdown", "Description of final status after the process ends.", 0, 1, postConditions);
1921          case 3540684: /*step*/  return new Property("step", "", "Each step of the process.", 0, java.lang.Integer.MAX_VALUE, step);
1922          default: return super.getNamedProperty(_hash, _name, _checkValid);
1923          }
1924
1925        }
1926
1927      @Override
1928      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1929        switch (hash) {
1930        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1931        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1932        case -1006692933: /*preConditions*/ return this.preConditions == null ? new Base[0] : new Base[] {this.preConditions}; // MarkdownType
1933        case 1738302328: /*postConditions*/ return this.postConditions == null ? new Base[0] : new Base[] {this.postConditions}; // MarkdownType
1934        case 3540684: /*step*/ return this.step == null ? new Base[0] : this.step.toArray(new Base[this.step.size()]); // ExampleScenarioProcessStepComponent
1935        default: return super.getProperty(hash, name, checkValid);
1936        }
1937
1938      }
1939
1940      @Override
1941      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1942        switch (hash) {
1943        case 110371416: // title
1944          this.title = TypeConvertor.castToString(value); // StringType
1945          return value;
1946        case -1724546052: // description
1947          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1948          return value;
1949        case -1006692933: // preConditions
1950          this.preConditions = TypeConvertor.castToMarkdown(value); // MarkdownType
1951          return value;
1952        case 1738302328: // postConditions
1953          this.postConditions = TypeConvertor.castToMarkdown(value); // MarkdownType
1954          return value;
1955        case 3540684: // step
1956          this.getStep().add((ExampleScenarioProcessStepComponent) value); // ExampleScenarioProcessStepComponent
1957          return value;
1958        default: return super.setProperty(hash, name, value);
1959        }
1960
1961      }
1962
1963      @Override
1964      public Base setProperty(String name, Base value) throws FHIRException {
1965        if (name.equals("title")) {
1966          this.title = TypeConvertor.castToString(value); // StringType
1967        } else if (name.equals("description")) {
1968          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1969        } else if (name.equals("preConditions")) {
1970          this.preConditions = TypeConvertor.castToMarkdown(value); // MarkdownType
1971        } else if (name.equals("postConditions")) {
1972          this.postConditions = TypeConvertor.castToMarkdown(value); // MarkdownType
1973        } else if (name.equals("step")) {
1974          this.getStep().add((ExampleScenarioProcessStepComponent) value);
1975        } else
1976          return super.setProperty(name, value);
1977        return value;
1978      }
1979
1980      @Override
1981      public Base makeProperty(int hash, String name) throws FHIRException {
1982        switch (hash) {
1983        case 110371416:  return getTitleElement();
1984        case -1724546052:  return getDescriptionElement();
1985        case -1006692933:  return getPreConditionsElement();
1986        case 1738302328:  return getPostConditionsElement();
1987        case 3540684:  return addStep(); 
1988        default: return super.makeProperty(hash, name);
1989        }
1990
1991      }
1992
1993      @Override
1994      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1995        switch (hash) {
1996        case 110371416: /*title*/ return new String[] {"string"};
1997        case -1724546052: /*description*/ return new String[] {"markdown"};
1998        case -1006692933: /*preConditions*/ return new String[] {"markdown"};
1999        case 1738302328: /*postConditions*/ return new String[] {"markdown"};
2000        case 3540684: /*step*/ return new String[] {};
2001        default: return super.getTypesForProperty(hash, name);
2002        }
2003
2004      }
2005
2006      @Override
2007      public Base addChild(String name) throws FHIRException {
2008        if (name.equals("title")) {
2009          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.title");
2010        }
2011        else if (name.equals("description")) {
2012          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.description");
2013        }
2014        else if (name.equals("preConditions")) {
2015          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.preConditions");
2016        }
2017        else if (name.equals("postConditions")) {
2018          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.postConditions");
2019        }
2020        else if (name.equals("step")) {
2021          return addStep();
2022        }
2023        else
2024          return super.addChild(name);
2025      }
2026
2027      public ExampleScenarioProcessComponent copy() {
2028        ExampleScenarioProcessComponent dst = new ExampleScenarioProcessComponent();
2029        copyValues(dst);
2030        return dst;
2031      }
2032
2033      public void copyValues(ExampleScenarioProcessComponent dst) {
2034        super.copyValues(dst);
2035        dst.title = title == null ? null : title.copy();
2036        dst.description = description == null ? null : description.copy();
2037        dst.preConditions = preConditions == null ? null : preConditions.copy();
2038        dst.postConditions = postConditions == null ? null : postConditions.copy();
2039        if (step != null) {
2040          dst.step = new ArrayList<ExampleScenarioProcessStepComponent>();
2041          for (ExampleScenarioProcessStepComponent i : step)
2042            dst.step.add(i.copy());
2043        };
2044      }
2045
2046      @Override
2047      public boolean equalsDeep(Base other_) {
2048        if (!super.equalsDeep(other_))
2049          return false;
2050        if (!(other_ instanceof ExampleScenarioProcessComponent))
2051          return false;
2052        ExampleScenarioProcessComponent o = (ExampleScenarioProcessComponent) other_;
2053        return compareDeep(title, o.title, true) && compareDeep(description, o.description, true) && compareDeep(preConditions, o.preConditions, true)
2054           && compareDeep(postConditions, o.postConditions, true) && compareDeep(step, o.step, true);
2055      }
2056
2057      @Override
2058      public boolean equalsShallow(Base other_) {
2059        if (!super.equalsShallow(other_))
2060          return false;
2061        if (!(other_ instanceof ExampleScenarioProcessComponent))
2062          return false;
2063        ExampleScenarioProcessComponent o = (ExampleScenarioProcessComponent) other_;
2064        return compareValues(title, o.title, true) && compareValues(description, o.description, true) && compareValues(preConditions, o.preConditions, true)
2065           && compareValues(postConditions, o.postConditions, true);
2066      }
2067
2068      public boolean isEmpty() {
2069        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(title, description, preConditions
2070          , postConditions, step);
2071      }
2072
2073  public String fhirType() {
2074    return "ExampleScenario.process";
2075
2076  }
2077
2078  }
2079
2080    @Block()
2081    public static class ExampleScenarioProcessStepComponent extends BackboneElement implements IBaseBackboneElement {
2082        /**
2083         * Nested process.
2084         */
2085        @Child(name = "process", type = {ExampleScenarioProcessComponent.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2086        @Description(shortDefinition="Nested process", formalDefinition="Nested process." )
2087        protected List<ExampleScenarioProcessComponent> process;
2088
2089        /**
2090         * If there is a pause in the flow.
2091         */
2092        @Child(name = "pause", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2093        @Description(shortDefinition="If there is a pause in the flow", formalDefinition="If there is a pause in the flow." )
2094        protected BooleanType pause;
2095
2096        /**
2097         * Each interaction or action.
2098         */
2099        @Child(name = "operation", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
2100        @Description(shortDefinition="Each interaction or action", formalDefinition="Each interaction or action." )
2101        protected ExampleScenarioProcessStepOperationComponent operation;
2102
2103        /**
2104         * Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.
2105         */
2106        @Child(name = "alternative", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2107        @Description(shortDefinition="Alternate non-typical step action", formalDefinition="Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances." )
2108        protected List<ExampleScenarioProcessStepAlternativeComponent> alternative;
2109
2110        private static final long serialVersionUID = -894029605L;
2111
2112    /**
2113     * Constructor
2114     */
2115      public ExampleScenarioProcessStepComponent() {
2116        super();
2117      }
2118
2119        /**
2120         * @return {@link #process} (Nested process.)
2121         */
2122        public List<ExampleScenarioProcessComponent> getProcess() { 
2123          if (this.process == null)
2124            this.process = new ArrayList<ExampleScenarioProcessComponent>();
2125          return this.process;
2126        }
2127
2128        /**
2129         * @return Returns a reference to <code>this</code> for easy method chaining
2130         */
2131        public ExampleScenarioProcessStepComponent setProcess(List<ExampleScenarioProcessComponent> theProcess) { 
2132          this.process = theProcess;
2133          return this;
2134        }
2135
2136        public boolean hasProcess() { 
2137          if (this.process == null)
2138            return false;
2139          for (ExampleScenarioProcessComponent item : this.process)
2140            if (!item.isEmpty())
2141              return true;
2142          return false;
2143        }
2144
2145        public ExampleScenarioProcessComponent addProcess() { //3
2146          ExampleScenarioProcessComponent t = new ExampleScenarioProcessComponent();
2147          if (this.process == null)
2148            this.process = new ArrayList<ExampleScenarioProcessComponent>();
2149          this.process.add(t);
2150          return t;
2151        }
2152
2153        public ExampleScenarioProcessStepComponent addProcess(ExampleScenarioProcessComponent t) { //3
2154          if (t == null)
2155            return this;
2156          if (this.process == null)
2157            this.process = new ArrayList<ExampleScenarioProcessComponent>();
2158          this.process.add(t);
2159          return this;
2160        }
2161
2162        /**
2163         * @return The first repetition of repeating field {@link #process}, creating it if it does not already exist {3}
2164         */
2165        public ExampleScenarioProcessComponent getProcessFirstRep() { 
2166          if (getProcess().isEmpty()) {
2167            addProcess();
2168          }
2169          return getProcess().get(0);
2170        }
2171
2172        /**
2173         * @return {@link #pause} (If there is a pause in the flow.). This is the underlying object with id, value and extensions. The accessor "getPause" gives direct access to the value
2174         */
2175        public BooleanType getPauseElement() { 
2176          if (this.pause == null)
2177            if (Configuration.errorOnAutoCreate())
2178              throw new Error("Attempt to auto-create ExampleScenarioProcessStepComponent.pause");
2179            else if (Configuration.doAutoCreate())
2180              this.pause = new BooleanType(); // bb
2181          return this.pause;
2182        }
2183
2184        public boolean hasPauseElement() { 
2185          return this.pause != null && !this.pause.isEmpty();
2186        }
2187
2188        public boolean hasPause() { 
2189          return this.pause != null && !this.pause.isEmpty();
2190        }
2191
2192        /**
2193         * @param value {@link #pause} (If there is a pause in the flow.). This is the underlying object with id, value and extensions. The accessor "getPause" gives direct access to the value
2194         */
2195        public ExampleScenarioProcessStepComponent setPauseElement(BooleanType value) { 
2196          this.pause = value;
2197          return this;
2198        }
2199
2200        /**
2201         * @return If there is a pause in the flow.
2202         */
2203        public boolean getPause() { 
2204          return this.pause == null || this.pause.isEmpty() ? false : this.pause.getValue();
2205        }
2206
2207        /**
2208         * @param value If there is a pause in the flow.
2209         */
2210        public ExampleScenarioProcessStepComponent setPause(boolean value) { 
2211            if (this.pause == null)
2212              this.pause = new BooleanType();
2213            this.pause.setValue(value);
2214          return this;
2215        }
2216
2217        /**
2218         * @return {@link #operation} (Each interaction or action.)
2219         */
2220        public ExampleScenarioProcessStepOperationComponent getOperation() { 
2221          if (this.operation == null)
2222            if (Configuration.errorOnAutoCreate())
2223              throw new Error("Attempt to auto-create ExampleScenarioProcessStepComponent.operation");
2224            else if (Configuration.doAutoCreate())
2225              this.operation = new ExampleScenarioProcessStepOperationComponent(); // cc
2226          return this.operation;
2227        }
2228
2229        public boolean hasOperation() { 
2230          return this.operation != null && !this.operation.isEmpty();
2231        }
2232
2233        /**
2234         * @param value {@link #operation} (Each interaction or action.)
2235         */
2236        public ExampleScenarioProcessStepComponent setOperation(ExampleScenarioProcessStepOperationComponent value) { 
2237          this.operation = value;
2238          return this;
2239        }
2240
2241        /**
2242         * @return {@link #alternative} (Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.)
2243         */
2244        public List<ExampleScenarioProcessStepAlternativeComponent> getAlternative() { 
2245          if (this.alternative == null)
2246            this.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
2247          return this.alternative;
2248        }
2249
2250        /**
2251         * @return Returns a reference to <code>this</code> for easy method chaining
2252         */
2253        public ExampleScenarioProcessStepComponent setAlternative(List<ExampleScenarioProcessStepAlternativeComponent> theAlternative) { 
2254          this.alternative = theAlternative;
2255          return this;
2256        }
2257
2258        public boolean hasAlternative() { 
2259          if (this.alternative == null)
2260            return false;
2261          for (ExampleScenarioProcessStepAlternativeComponent item : this.alternative)
2262            if (!item.isEmpty())
2263              return true;
2264          return false;
2265        }
2266
2267        public ExampleScenarioProcessStepAlternativeComponent addAlternative() { //3
2268          ExampleScenarioProcessStepAlternativeComponent t = new ExampleScenarioProcessStepAlternativeComponent();
2269          if (this.alternative == null)
2270            this.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
2271          this.alternative.add(t);
2272          return t;
2273        }
2274
2275        public ExampleScenarioProcessStepComponent addAlternative(ExampleScenarioProcessStepAlternativeComponent t) { //3
2276          if (t == null)
2277            return this;
2278          if (this.alternative == null)
2279            this.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
2280          this.alternative.add(t);
2281          return this;
2282        }
2283
2284        /**
2285         * @return The first repetition of repeating field {@link #alternative}, creating it if it does not already exist {3}
2286         */
2287        public ExampleScenarioProcessStepAlternativeComponent getAlternativeFirstRep() { 
2288          if (getAlternative().isEmpty()) {
2289            addAlternative();
2290          }
2291          return getAlternative().get(0);
2292        }
2293
2294        protected void listChildren(List<Property> children) {
2295          super.listChildren(children);
2296          children.add(new Property("process", "@ExampleScenario.process", "Nested process.", 0, java.lang.Integer.MAX_VALUE, process));
2297          children.add(new Property("pause", "boolean", "If there is a pause in the flow.", 0, 1, pause));
2298          children.add(new Property("operation", "", "Each interaction or action.", 0, 1, operation));
2299          children.add(new Property("alternative", "", "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.", 0, java.lang.Integer.MAX_VALUE, alternative));
2300        }
2301
2302        @Override
2303        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2304          switch (_hash) {
2305          case -309518737: /*process*/  return new Property("process", "@ExampleScenario.process", "Nested process.", 0, java.lang.Integer.MAX_VALUE, process);
2306          case 106440182: /*pause*/  return new Property("pause", "boolean", "If there is a pause in the flow.", 0, 1, pause);
2307          case 1662702951: /*operation*/  return new Property("operation", "", "Each interaction or action.", 0, 1, operation);
2308          case -196794451: /*alternative*/  return new Property("alternative", "", "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.", 0, java.lang.Integer.MAX_VALUE, alternative);
2309          default: return super.getNamedProperty(_hash, _name, _checkValid);
2310          }
2311
2312        }
2313
2314      @Override
2315      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2316        switch (hash) {
2317        case -309518737: /*process*/ return this.process == null ? new Base[0] : this.process.toArray(new Base[this.process.size()]); // ExampleScenarioProcessComponent
2318        case 106440182: /*pause*/ return this.pause == null ? new Base[0] : new Base[] {this.pause}; // BooleanType
2319        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // ExampleScenarioProcessStepOperationComponent
2320        case -196794451: /*alternative*/ return this.alternative == null ? new Base[0] : this.alternative.toArray(new Base[this.alternative.size()]); // ExampleScenarioProcessStepAlternativeComponent
2321        default: return super.getProperty(hash, name, checkValid);
2322        }
2323
2324      }
2325
2326      @Override
2327      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2328        switch (hash) {
2329        case -309518737: // process
2330          this.getProcess().add((ExampleScenarioProcessComponent) value); // ExampleScenarioProcessComponent
2331          return value;
2332        case 106440182: // pause
2333          this.pause = TypeConvertor.castToBoolean(value); // BooleanType
2334          return value;
2335        case 1662702951: // operation
2336          this.operation = (ExampleScenarioProcessStepOperationComponent) value; // ExampleScenarioProcessStepOperationComponent
2337          return value;
2338        case -196794451: // alternative
2339          this.getAlternative().add((ExampleScenarioProcessStepAlternativeComponent) value); // ExampleScenarioProcessStepAlternativeComponent
2340          return value;
2341        default: return super.setProperty(hash, name, value);
2342        }
2343
2344      }
2345
2346      @Override
2347      public Base setProperty(String name, Base value) throws FHIRException {
2348        if (name.equals("process")) {
2349          this.getProcess().add((ExampleScenarioProcessComponent) value);
2350        } else if (name.equals("pause")) {
2351          this.pause = TypeConvertor.castToBoolean(value); // BooleanType
2352        } else if (name.equals("operation")) {
2353          this.operation = (ExampleScenarioProcessStepOperationComponent) value; // ExampleScenarioProcessStepOperationComponent
2354        } else if (name.equals("alternative")) {
2355          this.getAlternative().add((ExampleScenarioProcessStepAlternativeComponent) value);
2356        } else
2357          return super.setProperty(name, value);
2358        return value;
2359      }
2360
2361      @Override
2362      public Base makeProperty(int hash, String name) throws FHIRException {
2363        switch (hash) {
2364        case -309518737:  return addProcess(); 
2365        case 106440182:  return getPauseElement();
2366        case 1662702951:  return getOperation();
2367        case -196794451:  return addAlternative(); 
2368        default: return super.makeProperty(hash, name);
2369        }
2370
2371      }
2372
2373      @Override
2374      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2375        switch (hash) {
2376        case -309518737: /*process*/ return new String[] {"@ExampleScenario.process"};
2377        case 106440182: /*pause*/ return new String[] {"boolean"};
2378        case 1662702951: /*operation*/ return new String[] {};
2379        case -196794451: /*alternative*/ return new String[] {};
2380        default: return super.getTypesForProperty(hash, name);
2381        }
2382
2383      }
2384
2385      @Override
2386      public Base addChild(String name) throws FHIRException {
2387        if (name.equals("process")) {
2388          return addProcess();
2389        }
2390        else if (name.equals("pause")) {
2391          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.pause");
2392        }
2393        else if (name.equals("operation")) {
2394          this.operation = new ExampleScenarioProcessStepOperationComponent();
2395          return this.operation;
2396        }
2397        else if (name.equals("alternative")) {
2398          return addAlternative();
2399        }
2400        else
2401          return super.addChild(name);
2402      }
2403
2404      public ExampleScenarioProcessStepComponent copy() {
2405        ExampleScenarioProcessStepComponent dst = new ExampleScenarioProcessStepComponent();
2406        copyValues(dst);
2407        return dst;
2408      }
2409
2410      public void copyValues(ExampleScenarioProcessStepComponent dst) {
2411        super.copyValues(dst);
2412        if (process != null) {
2413          dst.process = new ArrayList<ExampleScenarioProcessComponent>();
2414          for (ExampleScenarioProcessComponent i : process)
2415            dst.process.add(i.copy());
2416        };
2417        dst.pause = pause == null ? null : pause.copy();
2418        dst.operation = operation == null ? null : operation.copy();
2419        if (alternative != null) {
2420          dst.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
2421          for (ExampleScenarioProcessStepAlternativeComponent i : alternative)
2422            dst.alternative.add(i.copy());
2423        };
2424      }
2425
2426      @Override
2427      public boolean equalsDeep(Base other_) {
2428        if (!super.equalsDeep(other_))
2429          return false;
2430        if (!(other_ instanceof ExampleScenarioProcessStepComponent))
2431          return false;
2432        ExampleScenarioProcessStepComponent o = (ExampleScenarioProcessStepComponent) other_;
2433        return compareDeep(process, o.process, true) && compareDeep(pause, o.pause, true) && compareDeep(operation, o.operation, true)
2434           && compareDeep(alternative, o.alternative, true);
2435      }
2436
2437      @Override
2438      public boolean equalsShallow(Base other_) {
2439        if (!super.equalsShallow(other_))
2440          return false;
2441        if (!(other_ instanceof ExampleScenarioProcessStepComponent))
2442          return false;
2443        ExampleScenarioProcessStepComponent o = (ExampleScenarioProcessStepComponent) other_;
2444        return compareValues(pause, o.pause, true);
2445      }
2446
2447      public boolean isEmpty() {
2448        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(process, pause, operation
2449          , alternative);
2450      }
2451
2452  public String fhirType() {
2453    return "ExampleScenario.process.step";
2454
2455  }
2456
2457  }
2458
2459    @Block()
2460    public static class ExampleScenarioProcessStepOperationComponent extends BackboneElement implements IBaseBackboneElement {
2461        /**
2462         * The sequential number of the interaction, e.g. 1.2.5.
2463         */
2464        @Child(name = "number", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2465        @Description(shortDefinition="The sequential number of the interaction", formalDefinition="The sequential number of the interaction, e.g. 1.2.5." )
2466        protected StringType number;
2467
2468        /**
2469         * The type of operation - CRUD.
2470         */
2471        @Child(name = "type", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2472        @Description(shortDefinition="The type of operation - CRUD", formalDefinition="The type of operation - CRUD." )
2473        protected StringType type;
2474
2475        /**
2476         * The human-friendly name of the interaction.
2477         */
2478        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
2479        @Description(shortDefinition="The human-friendly name of the interaction", formalDefinition="The human-friendly name of the interaction." )
2480        protected StringType name;
2481
2482        /**
2483         * Who starts the transaction.
2484         */
2485        @Child(name = "initiator", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
2486        @Description(shortDefinition="Who starts the transaction", formalDefinition="Who starts the transaction." )
2487        protected StringType initiator;
2488
2489        /**
2490         * Who receives the transaction.
2491         */
2492        @Child(name = "receiver", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
2493        @Description(shortDefinition="Who receives the transaction", formalDefinition="Who receives the transaction." )
2494        protected StringType receiver;
2495
2496        /**
2497         * A comment to be inserted in the diagram.
2498         */
2499        @Child(name = "description", type = {MarkdownType.class}, order=6, min=0, max=1, modifier=false, summary=false)
2500        @Description(shortDefinition="A comment to be inserted in the diagram", formalDefinition="A comment to be inserted in the diagram." )
2501        protected MarkdownType description;
2502
2503        /**
2504         * Whether the initiator is deactivated right after the transaction.
2505         */
2506        @Child(name = "initiatorActive", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=false)
2507        @Description(shortDefinition="Whether the initiator is deactivated right after the transaction", formalDefinition="Whether the initiator is deactivated right after the transaction." )
2508        protected BooleanType initiatorActive;
2509
2510        /**
2511         * Whether the receiver is deactivated right after the transaction.
2512         */
2513        @Child(name = "receiverActive", type = {BooleanType.class}, order=8, min=0, max=1, modifier=false, summary=false)
2514        @Description(shortDefinition="Whether the receiver is deactivated right after the transaction", formalDefinition="Whether the receiver is deactivated right after the transaction." )
2515        protected BooleanType receiverActive;
2516
2517        /**
2518         * Each resource instance used by the initiator.
2519         */
2520        @Child(name = "request", type = {ExampleScenarioInstanceContainedInstanceComponent.class}, order=9, min=0, max=1, modifier=false, summary=false)
2521        @Description(shortDefinition="Each resource instance used by the initiator", formalDefinition="Each resource instance used by the initiator." )
2522        protected ExampleScenarioInstanceContainedInstanceComponent request;
2523
2524        /**
2525         * Each resource instance used by the responder.
2526         */
2527        @Child(name = "response", type = {ExampleScenarioInstanceContainedInstanceComponent.class}, order=10, min=0, max=1, modifier=false, summary=false)
2528        @Description(shortDefinition="Each resource instance used by the responder", formalDefinition="Each resource instance used by the responder." )
2529        protected ExampleScenarioInstanceContainedInstanceComponent response;
2530
2531        private static final long serialVersionUID = 911241906L;
2532
2533    /**
2534     * Constructor
2535     */
2536      public ExampleScenarioProcessStepOperationComponent() {
2537        super();
2538      }
2539
2540    /**
2541     * Constructor
2542     */
2543      public ExampleScenarioProcessStepOperationComponent(String number) {
2544        super();
2545        this.setNumber(number);
2546      }
2547
2548        /**
2549         * @return {@link #number} (The sequential number of the interaction, e.g. 1.2.5.). This is the underlying object with id, value and extensions. The accessor "getNumber" gives direct access to the value
2550         */
2551        public StringType getNumberElement() { 
2552          if (this.number == null)
2553            if (Configuration.errorOnAutoCreate())
2554              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.number");
2555            else if (Configuration.doAutoCreate())
2556              this.number = new StringType(); // bb
2557          return this.number;
2558        }
2559
2560        public boolean hasNumberElement() { 
2561          return this.number != null && !this.number.isEmpty();
2562        }
2563
2564        public boolean hasNumber() { 
2565          return this.number != null && !this.number.isEmpty();
2566        }
2567
2568        /**
2569         * @param value {@link #number} (The sequential number of the interaction, e.g. 1.2.5.). This is the underlying object with id, value and extensions. The accessor "getNumber" gives direct access to the value
2570         */
2571        public ExampleScenarioProcessStepOperationComponent setNumberElement(StringType value) { 
2572          this.number = value;
2573          return this;
2574        }
2575
2576        /**
2577         * @return The sequential number of the interaction, e.g. 1.2.5.
2578         */
2579        public String getNumber() { 
2580          return this.number == null ? null : this.number.getValue();
2581        }
2582
2583        /**
2584         * @param value The sequential number of the interaction, e.g. 1.2.5.
2585         */
2586        public ExampleScenarioProcessStepOperationComponent setNumber(String value) { 
2587            if (this.number == null)
2588              this.number = new StringType();
2589            this.number.setValue(value);
2590          return this;
2591        }
2592
2593        /**
2594         * @return {@link #type} (The type of operation - CRUD.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2595         */
2596        public StringType getTypeElement() { 
2597          if (this.type == null)
2598            if (Configuration.errorOnAutoCreate())
2599              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.type");
2600            else if (Configuration.doAutoCreate())
2601              this.type = new StringType(); // bb
2602          return this.type;
2603        }
2604
2605        public boolean hasTypeElement() { 
2606          return this.type != null && !this.type.isEmpty();
2607        }
2608
2609        public boolean hasType() { 
2610          return this.type != null && !this.type.isEmpty();
2611        }
2612
2613        /**
2614         * @param value {@link #type} (The type of operation - CRUD.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2615         */
2616        public ExampleScenarioProcessStepOperationComponent setTypeElement(StringType value) { 
2617          this.type = value;
2618          return this;
2619        }
2620
2621        /**
2622         * @return The type of operation - CRUD.
2623         */
2624        public String getType() { 
2625          return this.type == null ? null : this.type.getValue();
2626        }
2627
2628        /**
2629         * @param value The type of operation - CRUD.
2630         */
2631        public ExampleScenarioProcessStepOperationComponent setType(String value) { 
2632          if (Utilities.noString(value))
2633            this.type = null;
2634          else {
2635            if (this.type == null)
2636              this.type = new StringType();
2637            this.type.setValue(value);
2638          }
2639          return this;
2640        }
2641
2642        /**
2643         * @return {@link #name} (The human-friendly name of the interaction.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2644         */
2645        public StringType getNameElement() { 
2646          if (this.name == null)
2647            if (Configuration.errorOnAutoCreate())
2648              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.name");
2649            else if (Configuration.doAutoCreate())
2650              this.name = new StringType(); // bb
2651          return this.name;
2652        }
2653
2654        public boolean hasNameElement() { 
2655          return this.name != null && !this.name.isEmpty();
2656        }
2657
2658        public boolean hasName() { 
2659          return this.name != null && !this.name.isEmpty();
2660        }
2661
2662        /**
2663         * @param value {@link #name} (The human-friendly name of the interaction.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2664         */
2665        public ExampleScenarioProcessStepOperationComponent setNameElement(StringType value) { 
2666          this.name = value;
2667          return this;
2668        }
2669
2670        /**
2671         * @return The human-friendly name of the interaction.
2672         */
2673        public String getName() { 
2674          return this.name == null ? null : this.name.getValue();
2675        }
2676
2677        /**
2678         * @param value The human-friendly name of the interaction.
2679         */
2680        public ExampleScenarioProcessStepOperationComponent setName(String value) { 
2681          if (Utilities.noString(value))
2682            this.name = null;
2683          else {
2684            if (this.name == null)
2685              this.name = new StringType();
2686            this.name.setValue(value);
2687          }
2688          return this;
2689        }
2690
2691        /**
2692         * @return {@link #initiator} (Who starts the transaction.). This is the underlying object with id, value and extensions. The accessor "getInitiator" gives direct access to the value
2693         */
2694        public StringType getInitiatorElement() { 
2695          if (this.initiator == null)
2696            if (Configuration.errorOnAutoCreate())
2697              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.initiator");
2698            else if (Configuration.doAutoCreate())
2699              this.initiator = new StringType(); // bb
2700          return this.initiator;
2701        }
2702
2703        public boolean hasInitiatorElement() { 
2704          return this.initiator != null && !this.initiator.isEmpty();
2705        }
2706
2707        public boolean hasInitiator() { 
2708          return this.initiator != null && !this.initiator.isEmpty();
2709        }
2710
2711        /**
2712         * @param value {@link #initiator} (Who starts the transaction.). This is the underlying object with id, value and extensions. The accessor "getInitiator" gives direct access to the value
2713         */
2714        public ExampleScenarioProcessStepOperationComponent setInitiatorElement(StringType value) { 
2715          this.initiator = value;
2716          return this;
2717        }
2718
2719        /**
2720         * @return Who starts the transaction.
2721         */
2722        public String getInitiator() { 
2723          return this.initiator == null ? null : this.initiator.getValue();
2724        }
2725
2726        /**
2727         * @param value Who starts the transaction.
2728         */
2729        public ExampleScenarioProcessStepOperationComponent setInitiator(String value) { 
2730          if (Utilities.noString(value))
2731            this.initiator = null;
2732          else {
2733            if (this.initiator == null)
2734              this.initiator = new StringType();
2735            this.initiator.setValue(value);
2736          }
2737          return this;
2738        }
2739
2740        /**
2741         * @return {@link #receiver} (Who receives the transaction.). This is the underlying object with id, value and extensions. The accessor "getReceiver" gives direct access to the value
2742         */
2743        public StringType getReceiverElement() { 
2744          if (this.receiver == null)
2745            if (Configuration.errorOnAutoCreate())
2746              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.receiver");
2747            else if (Configuration.doAutoCreate())
2748              this.receiver = new StringType(); // bb
2749          return this.receiver;
2750        }
2751
2752        public boolean hasReceiverElement() { 
2753          return this.receiver != null && !this.receiver.isEmpty();
2754        }
2755
2756        public boolean hasReceiver() { 
2757          return this.receiver != null && !this.receiver.isEmpty();
2758        }
2759
2760        /**
2761         * @param value {@link #receiver} (Who receives the transaction.). This is the underlying object with id, value and extensions. The accessor "getReceiver" gives direct access to the value
2762         */
2763        public ExampleScenarioProcessStepOperationComponent setReceiverElement(StringType value) { 
2764          this.receiver = value;
2765          return this;
2766        }
2767
2768        /**
2769         * @return Who receives the transaction.
2770         */
2771        public String getReceiver() { 
2772          return this.receiver == null ? null : this.receiver.getValue();
2773        }
2774
2775        /**
2776         * @param value Who receives the transaction.
2777         */
2778        public ExampleScenarioProcessStepOperationComponent setReceiver(String value) { 
2779          if (Utilities.noString(value))
2780            this.receiver = null;
2781          else {
2782            if (this.receiver == null)
2783              this.receiver = new StringType();
2784            this.receiver.setValue(value);
2785          }
2786          return this;
2787        }
2788
2789        /**
2790         * @return {@link #description} (A comment to be inserted in the diagram.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2791         */
2792        public MarkdownType getDescriptionElement() { 
2793          if (this.description == null)
2794            if (Configuration.errorOnAutoCreate())
2795              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.description");
2796            else if (Configuration.doAutoCreate())
2797              this.description = new MarkdownType(); // bb
2798          return this.description;
2799        }
2800
2801        public boolean hasDescriptionElement() { 
2802          return this.description != null && !this.description.isEmpty();
2803        }
2804
2805        public boolean hasDescription() { 
2806          return this.description != null && !this.description.isEmpty();
2807        }
2808
2809        /**
2810         * @param value {@link #description} (A comment to be inserted in the diagram.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2811         */
2812        public ExampleScenarioProcessStepOperationComponent setDescriptionElement(MarkdownType value) { 
2813          this.description = value;
2814          return this;
2815        }
2816
2817        /**
2818         * @return A comment to be inserted in the diagram.
2819         */
2820        public String getDescription() { 
2821          return this.description == null ? null : this.description.getValue();
2822        }
2823
2824        /**
2825         * @param value A comment to be inserted in the diagram.
2826         */
2827        public ExampleScenarioProcessStepOperationComponent setDescription(String value) { 
2828          if (value == null)
2829            this.description = null;
2830          else {
2831            if (this.description == null)
2832              this.description = new MarkdownType();
2833            this.description.setValue(value);
2834          }
2835          return this;
2836        }
2837
2838        /**
2839         * @return {@link #initiatorActive} (Whether the initiator is deactivated right after the transaction.). This is the underlying object with id, value and extensions. The accessor "getInitiatorActive" gives direct access to the value
2840         */
2841        public BooleanType getInitiatorActiveElement() { 
2842          if (this.initiatorActive == null)
2843            if (Configuration.errorOnAutoCreate())
2844              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.initiatorActive");
2845            else if (Configuration.doAutoCreate())
2846              this.initiatorActive = new BooleanType(); // bb
2847          return this.initiatorActive;
2848        }
2849
2850        public boolean hasInitiatorActiveElement() { 
2851          return this.initiatorActive != null && !this.initiatorActive.isEmpty();
2852        }
2853
2854        public boolean hasInitiatorActive() { 
2855          return this.initiatorActive != null && !this.initiatorActive.isEmpty();
2856        }
2857
2858        /**
2859         * @param value {@link #initiatorActive} (Whether the initiator is deactivated right after the transaction.). This is the underlying object with id, value and extensions. The accessor "getInitiatorActive" gives direct access to the value
2860         */
2861        public ExampleScenarioProcessStepOperationComponent setInitiatorActiveElement(BooleanType value) { 
2862          this.initiatorActive = value;
2863          return this;
2864        }
2865
2866        /**
2867         * @return Whether the initiator is deactivated right after the transaction.
2868         */
2869        public boolean getInitiatorActive() { 
2870          return this.initiatorActive == null || this.initiatorActive.isEmpty() ? false : this.initiatorActive.getValue();
2871        }
2872
2873        /**
2874         * @param value Whether the initiator is deactivated right after the transaction.
2875         */
2876        public ExampleScenarioProcessStepOperationComponent setInitiatorActive(boolean value) { 
2877            if (this.initiatorActive == null)
2878              this.initiatorActive = new BooleanType();
2879            this.initiatorActive.setValue(value);
2880          return this;
2881        }
2882
2883        /**
2884         * @return {@link #receiverActive} (Whether the receiver is deactivated right after the transaction.). This is the underlying object with id, value and extensions. The accessor "getReceiverActive" gives direct access to the value
2885         */
2886        public BooleanType getReceiverActiveElement() { 
2887          if (this.receiverActive == null)
2888            if (Configuration.errorOnAutoCreate())
2889              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.receiverActive");
2890            else if (Configuration.doAutoCreate())
2891              this.receiverActive = new BooleanType(); // bb
2892          return this.receiverActive;
2893        }
2894
2895        public boolean hasReceiverActiveElement() { 
2896          return this.receiverActive != null && !this.receiverActive.isEmpty();
2897        }
2898
2899        public boolean hasReceiverActive() { 
2900          return this.receiverActive != null && !this.receiverActive.isEmpty();
2901        }
2902
2903        /**
2904         * @param value {@link #receiverActive} (Whether the receiver is deactivated right after the transaction.). This is the underlying object with id, value and extensions. The accessor "getReceiverActive" gives direct access to the value
2905         */
2906        public ExampleScenarioProcessStepOperationComponent setReceiverActiveElement(BooleanType value) { 
2907          this.receiverActive = value;
2908          return this;
2909        }
2910
2911        /**
2912         * @return Whether the receiver is deactivated right after the transaction.
2913         */
2914        public boolean getReceiverActive() { 
2915          return this.receiverActive == null || this.receiverActive.isEmpty() ? false : this.receiverActive.getValue();
2916        }
2917
2918        /**
2919         * @param value Whether the receiver is deactivated right after the transaction.
2920         */
2921        public ExampleScenarioProcessStepOperationComponent setReceiverActive(boolean value) { 
2922            if (this.receiverActive == null)
2923              this.receiverActive = new BooleanType();
2924            this.receiverActive.setValue(value);
2925          return this;
2926        }
2927
2928        /**
2929         * @return {@link #request} (Each resource instance used by the initiator.)
2930         */
2931        public ExampleScenarioInstanceContainedInstanceComponent getRequest() { 
2932          if (this.request == null)
2933            if (Configuration.errorOnAutoCreate())
2934              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.request");
2935            else if (Configuration.doAutoCreate())
2936              this.request = new ExampleScenarioInstanceContainedInstanceComponent(); // cc
2937          return this.request;
2938        }
2939
2940        public boolean hasRequest() { 
2941          return this.request != null && !this.request.isEmpty();
2942        }
2943
2944        /**
2945         * @param value {@link #request} (Each resource instance used by the initiator.)
2946         */
2947        public ExampleScenarioProcessStepOperationComponent setRequest(ExampleScenarioInstanceContainedInstanceComponent value) { 
2948          this.request = value;
2949          return this;
2950        }
2951
2952        /**
2953         * @return {@link #response} (Each resource instance used by the responder.)
2954         */
2955        public ExampleScenarioInstanceContainedInstanceComponent getResponse() { 
2956          if (this.response == null)
2957            if (Configuration.errorOnAutoCreate())
2958              throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.response");
2959            else if (Configuration.doAutoCreate())
2960              this.response = new ExampleScenarioInstanceContainedInstanceComponent(); // cc
2961          return this.response;
2962        }
2963
2964        public boolean hasResponse() { 
2965          return this.response != null && !this.response.isEmpty();
2966        }
2967
2968        /**
2969         * @param value {@link #response} (Each resource instance used by the responder.)
2970         */
2971        public ExampleScenarioProcessStepOperationComponent setResponse(ExampleScenarioInstanceContainedInstanceComponent value) { 
2972          this.response = value;
2973          return this;
2974        }
2975
2976        protected void listChildren(List<Property> children) {
2977          super.listChildren(children);
2978          children.add(new Property("number", "string", "The sequential number of the interaction, e.g. 1.2.5.", 0, 1, number));
2979          children.add(new Property("type", "string", "The type of operation - CRUD.", 0, 1, type));
2980          children.add(new Property("name", "string", "The human-friendly name of the interaction.", 0, 1, name));
2981          children.add(new Property("initiator", "string", "Who starts the transaction.", 0, 1, initiator));
2982          children.add(new Property("receiver", "string", "Who receives the transaction.", 0, 1, receiver));
2983          children.add(new Property("description", "markdown", "A comment to be inserted in the diagram.", 0, 1, description));
2984          children.add(new Property("initiatorActive", "boolean", "Whether the initiator is deactivated right after the transaction.", 0, 1, initiatorActive));
2985          children.add(new Property("receiverActive", "boolean", "Whether the receiver is deactivated right after the transaction.", 0, 1, receiverActive));
2986          children.add(new Property("request", "@ExampleScenario.instance.containedInstance", "Each resource instance used by the initiator.", 0, 1, request));
2987          children.add(new Property("response", "@ExampleScenario.instance.containedInstance", "Each resource instance used by the responder.", 0, 1, response));
2988        }
2989
2990        @Override
2991        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2992          switch (_hash) {
2993          case -1034364087: /*number*/  return new Property("number", "string", "The sequential number of the interaction, e.g. 1.2.5.", 0, 1, number);
2994          case 3575610: /*type*/  return new Property("type", "string", "The type of operation - CRUD.", 0, 1, type);
2995          case 3373707: /*name*/  return new Property("name", "string", "The human-friendly name of the interaction.", 0, 1, name);
2996          case -248987089: /*initiator*/  return new Property("initiator", "string", "Who starts the transaction.", 0, 1, initiator);
2997          case -808719889: /*receiver*/  return new Property("receiver", "string", "Who receives the transaction.", 0, 1, receiver);
2998          case -1724546052: /*description*/  return new Property("description", "markdown", "A comment to be inserted in the diagram.", 0, 1, description);
2999          case 384339477: /*initiatorActive*/  return new Property("initiatorActive", "boolean", "Whether the initiator is deactivated right after the transaction.", 0, 1, initiatorActive);
3000          case -285284907: /*receiverActive*/  return new Property("receiverActive", "boolean", "Whether the receiver is deactivated right after the transaction.", 0, 1, receiverActive);
3001          case 1095692943: /*request*/  return new Property("request", "@ExampleScenario.instance.containedInstance", "Each resource instance used by the initiator.", 0, 1, request);
3002          case -340323263: /*response*/  return new Property("response", "@ExampleScenario.instance.containedInstance", "Each resource instance used by the responder.", 0, 1, response);
3003          default: return super.getNamedProperty(_hash, _name, _checkValid);
3004          }
3005
3006        }
3007
3008      @Override
3009      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3010        switch (hash) {
3011        case -1034364087: /*number*/ return this.number == null ? new Base[0] : new Base[] {this.number}; // StringType
3012        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // StringType
3013        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3014        case -248987089: /*initiator*/ return this.initiator == null ? new Base[0] : new Base[] {this.initiator}; // StringType
3015        case -808719889: /*receiver*/ return this.receiver == null ? new Base[0] : new Base[] {this.receiver}; // StringType
3016        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3017        case 384339477: /*initiatorActive*/ return this.initiatorActive == null ? new Base[0] : new Base[] {this.initiatorActive}; // BooleanType
3018        case -285284907: /*receiverActive*/ return this.receiverActive == null ? new Base[0] : new Base[] {this.receiverActive}; // BooleanType
3019        case 1095692943: /*request*/ return this.request == null ? new Base[0] : new Base[] {this.request}; // ExampleScenarioInstanceContainedInstanceComponent
3020        case -340323263: /*response*/ return this.response == null ? new Base[0] : new Base[] {this.response}; // ExampleScenarioInstanceContainedInstanceComponent
3021        default: return super.getProperty(hash, name, checkValid);
3022        }
3023
3024      }
3025
3026      @Override
3027      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3028        switch (hash) {
3029        case -1034364087: // number
3030          this.number = TypeConvertor.castToString(value); // StringType
3031          return value;
3032        case 3575610: // type
3033          this.type = TypeConvertor.castToString(value); // StringType
3034          return value;
3035        case 3373707: // name
3036          this.name = TypeConvertor.castToString(value); // StringType
3037          return value;
3038        case -248987089: // initiator
3039          this.initiator = TypeConvertor.castToString(value); // StringType
3040          return value;
3041        case -808719889: // receiver
3042          this.receiver = TypeConvertor.castToString(value); // StringType
3043          return value;
3044        case -1724546052: // description
3045          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3046          return value;
3047        case 384339477: // initiatorActive
3048          this.initiatorActive = TypeConvertor.castToBoolean(value); // BooleanType
3049          return value;
3050        case -285284907: // receiverActive
3051          this.receiverActive = TypeConvertor.castToBoolean(value); // BooleanType
3052          return value;
3053        case 1095692943: // request
3054          this.request = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
3055          return value;
3056        case -340323263: // response
3057          this.response = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
3058          return value;
3059        default: return super.setProperty(hash, name, value);
3060        }
3061
3062      }
3063
3064      @Override
3065      public Base setProperty(String name, Base value) throws FHIRException {
3066        if (name.equals("number")) {
3067          this.number = TypeConvertor.castToString(value); // StringType
3068        } else if (name.equals("type")) {
3069          this.type = TypeConvertor.castToString(value); // StringType
3070        } else if (name.equals("name")) {
3071          this.name = TypeConvertor.castToString(value); // StringType
3072        } else if (name.equals("initiator")) {
3073          this.initiator = TypeConvertor.castToString(value); // StringType
3074        } else if (name.equals("receiver")) {
3075          this.receiver = TypeConvertor.castToString(value); // StringType
3076        } else if (name.equals("description")) {
3077          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3078        } else if (name.equals("initiatorActive")) {
3079          this.initiatorActive = TypeConvertor.castToBoolean(value); // BooleanType
3080        } else if (name.equals("receiverActive")) {
3081          this.receiverActive = TypeConvertor.castToBoolean(value); // BooleanType
3082        } else if (name.equals("request")) {
3083          this.request = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
3084        } else if (name.equals("response")) {
3085          this.response = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
3086        } else
3087          return super.setProperty(name, value);
3088        return value;
3089      }
3090
3091      @Override
3092      public Base makeProperty(int hash, String name) throws FHIRException {
3093        switch (hash) {
3094        case -1034364087:  return getNumberElement();
3095        case 3575610:  return getTypeElement();
3096        case 3373707:  return getNameElement();
3097        case -248987089:  return getInitiatorElement();
3098        case -808719889:  return getReceiverElement();
3099        case -1724546052:  return getDescriptionElement();
3100        case 384339477:  return getInitiatorActiveElement();
3101        case -285284907:  return getReceiverActiveElement();
3102        case 1095692943:  return getRequest();
3103        case -340323263:  return getResponse();
3104        default: return super.makeProperty(hash, name);
3105        }
3106
3107      }
3108
3109      @Override
3110      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3111        switch (hash) {
3112        case -1034364087: /*number*/ return new String[] {"string"};
3113        case 3575610: /*type*/ return new String[] {"string"};
3114        case 3373707: /*name*/ return new String[] {"string"};
3115        case -248987089: /*initiator*/ return new String[] {"string"};
3116        case -808719889: /*receiver*/ return new String[] {"string"};
3117        case -1724546052: /*description*/ return new String[] {"markdown"};
3118        case 384339477: /*initiatorActive*/ return new String[] {"boolean"};
3119        case -285284907: /*receiverActive*/ return new String[] {"boolean"};
3120        case 1095692943: /*request*/ return new String[] {"@ExampleScenario.instance.containedInstance"};
3121        case -340323263: /*response*/ return new String[] {"@ExampleScenario.instance.containedInstance"};
3122        default: return super.getTypesForProperty(hash, name);
3123        }
3124
3125      }
3126
3127      @Override
3128      public Base addChild(String name) throws FHIRException {
3129        if (name.equals("number")) {
3130          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.number");
3131        }
3132        else if (name.equals("type")) {
3133          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.type");
3134        }
3135        else if (name.equals("name")) {
3136          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.name");
3137        }
3138        else if (name.equals("initiator")) {
3139          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.initiator");
3140        }
3141        else if (name.equals("receiver")) {
3142          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.receiver");
3143        }
3144        else if (name.equals("description")) {
3145          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.description");
3146        }
3147        else if (name.equals("initiatorActive")) {
3148          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.initiatorActive");
3149        }
3150        else if (name.equals("receiverActive")) {
3151          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.operation.receiverActive");
3152        }
3153        else if (name.equals("request")) {
3154          this.request = new ExampleScenarioInstanceContainedInstanceComponent();
3155          return this.request;
3156        }
3157        else if (name.equals("response")) {
3158          this.response = new ExampleScenarioInstanceContainedInstanceComponent();
3159          return this.response;
3160        }
3161        else
3162          return super.addChild(name);
3163      }
3164
3165      public ExampleScenarioProcessStepOperationComponent copy() {
3166        ExampleScenarioProcessStepOperationComponent dst = new ExampleScenarioProcessStepOperationComponent();
3167        copyValues(dst);
3168        return dst;
3169      }
3170
3171      public void copyValues(ExampleScenarioProcessStepOperationComponent dst) {
3172        super.copyValues(dst);
3173        dst.number = number == null ? null : number.copy();
3174        dst.type = type == null ? null : type.copy();
3175        dst.name = name == null ? null : name.copy();
3176        dst.initiator = initiator == null ? null : initiator.copy();
3177        dst.receiver = receiver == null ? null : receiver.copy();
3178        dst.description = description == null ? null : description.copy();
3179        dst.initiatorActive = initiatorActive == null ? null : initiatorActive.copy();
3180        dst.receiverActive = receiverActive == null ? null : receiverActive.copy();
3181        dst.request = request == null ? null : request.copy();
3182        dst.response = response == null ? null : response.copy();
3183      }
3184
3185      @Override
3186      public boolean equalsDeep(Base other_) {
3187        if (!super.equalsDeep(other_))
3188          return false;
3189        if (!(other_ instanceof ExampleScenarioProcessStepOperationComponent))
3190          return false;
3191        ExampleScenarioProcessStepOperationComponent o = (ExampleScenarioProcessStepOperationComponent) other_;
3192        return compareDeep(number, o.number, true) && compareDeep(type, o.type, true) && compareDeep(name, o.name, true)
3193           && compareDeep(initiator, o.initiator, true) && compareDeep(receiver, o.receiver, true) && compareDeep(description, o.description, true)
3194           && compareDeep(initiatorActive, o.initiatorActive, true) && compareDeep(receiverActive, o.receiverActive, true)
3195           && compareDeep(request, o.request, true) && compareDeep(response, o.response, true);
3196      }
3197
3198      @Override
3199      public boolean equalsShallow(Base other_) {
3200        if (!super.equalsShallow(other_))
3201          return false;
3202        if (!(other_ instanceof ExampleScenarioProcessStepOperationComponent))
3203          return false;
3204        ExampleScenarioProcessStepOperationComponent o = (ExampleScenarioProcessStepOperationComponent) other_;
3205        return compareValues(number, o.number, true) && compareValues(type, o.type, true) && compareValues(name, o.name, true)
3206           && compareValues(initiator, o.initiator, true) && compareValues(receiver, o.receiver, true) && compareValues(description, o.description, true)
3207           && compareValues(initiatorActive, o.initiatorActive, true) && compareValues(receiverActive, o.receiverActive, true)
3208          ;
3209      }
3210
3211      public boolean isEmpty() {
3212        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(number, type, name, initiator
3213          , receiver, description, initiatorActive, receiverActive, request, response);
3214      }
3215
3216  public String fhirType() {
3217    return "ExampleScenario.process.step.operation";
3218
3219  }
3220
3221  }
3222
3223    @Block()
3224    public static class ExampleScenarioProcessStepAlternativeComponent extends BackboneElement implements IBaseBackboneElement {
3225        /**
3226         * The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.
3227         */
3228        @Child(name = "title", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
3229        @Description(shortDefinition="Label for alternative", formalDefinition="The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked." )
3230        protected StringType title;
3231
3232        /**
3233         * A human-readable description of the alternative explaining when the alternative should occur rather than the base step.
3234         */
3235        @Child(name = "description", type = {MarkdownType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3236        @Description(shortDefinition="A human-readable description of each option", formalDefinition="A human-readable description of the alternative explaining when the alternative should occur rather than the base step." )
3237        protected MarkdownType description;
3238
3239        /**
3240         * What happens in each alternative option.
3241         */
3242        @Child(name = "step", type = {ExampleScenarioProcessStepComponent.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3243        @Description(shortDefinition="What happens in each alternative option", formalDefinition="What happens in each alternative option." )
3244        protected List<ExampleScenarioProcessStepComponent> step;
3245
3246        private static final long serialVersionUID = -254687460L;
3247
3248    /**
3249     * Constructor
3250     */
3251      public ExampleScenarioProcessStepAlternativeComponent() {
3252        super();
3253      }
3254
3255    /**
3256     * Constructor
3257     */
3258      public ExampleScenarioProcessStepAlternativeComponent(String title) {
3259        super();
3260        this.setTitle(title);
3261      }
3262
3263        /**
3264         * @return {@link #title} (The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
3265         */
3266        public StringType getTitleElement() { 
3267          if (this.title == null)
3268            if (Configuration.errorOnAutoCreate())
3269              throw new Error("Attempt to auto-create ExampleScenarioProcessStepAlternativeComponent.title");
3270            else if (Configuration.doAutoCreate())
3271              this.title = new StringType(); // bb
3272          return this.title;
3273        }
3274
3275        public boolean hasTitleElement() { 
3276          return this.title != null && !this.title.isEmpty();
3277        }
3278
3279        public boolean hasTitle() { 
3280          return this.title != null && !this.title.isEmpty();
3281        }
3282
3283        /**
3284         * @param value {@link #title} (The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
3285         */
3286        public ExampleScenarioProcessStepAlternativeComponent setTitleElement(StringType value) { 
3287          this.title = value;
3288          return this;
3289        }
3290
3291        /**
3292         * @return The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.
3293         */
3294        public String getTitle() { 
3295          return this.title == null ? null : this.title.getValue();
3296        }
3297
3298        /**
3299         * @param value The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.
3300         */
3301        public ExampleScenarioProcessStepAlternativeComponent setTitle(String value) { 
3302            if (this.title == null)
3303              this.title = new StringType();
3304            this.title.setValue(value);
3305          return this;
3306        }
3307
3308        /**
3309         * @return {@link #description} (A human-readable description of the alternative explaining when the alternative should occur rather than the base step.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3310         */
3311        public MarkdownType getDescriptionElement() { 
3312          if (this.description == null)
3313            if (Configuration.errorOnAutoCreate())
3314              throw new Error("Attempt to auto-create ExampleScenarioProcessStepAlternativeComponent.description");
3315            else if (Configuration.doAutoCreate())
3316              this.description = new MarkdownType(); // bb
3317          return this.description;
3318        }
3319
3320        public boolean hasDescriptionElement() { 
3321          return this.description != null && !this.description.isEmpty();
3322        }
3323
3324        public boolean hasDescription() { 
3325          return this.description != null && !this.description.isEmpty();
3326        }
3327
3328        /**
3329         * @param value {@link #description} (A human-readable description of the alternative explaining when the alternative should occur rather than the base step.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3330         */
3331        public ExampleScenarioProcessStepAlternativeComponent setDescriptionElement(MarkdownType value) { 
3332          this.description = value;
3333          return this;
3334        }
3335
3336        /**
3337         * @return A human-readable description of the alternative explaining when the alternative should occur rather than the base step.
3338         */
3339        public String getDescription() { 
3340          return this.description == null ? null : this.description.getValue();
3341        }
3342
3343        /**
3344         * @param value A human-readable description of the alternative explaining when the alternative should occur rather than the base step.
3345         */
3346        public ExampleScenarioProcessStepAlternativeComponent setDescription(String value) { 
3347          if (value == null)
3348            this.description = null;
3349          else {
3350            if (this.description == null)
3351              this.description = new MarkdownType();
3352            this.description.setValue(value);
3353          }
3354          return this;
3355        }
3356
3357        /**
3358         * @return {@link #step} (What happens in each alternative option.)
3359         */
3360        public List<ExampleScenarioProcessStepComponent> getStep() { 
3361          if (this.step == null)
3362            this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
3363          return this.step;
3364        }
3365
3366        /**
3367         * @return Returns a reference to <code>this</code> for easy method chaining
3368         */
3369        public ExampleScenarioProcessStepAlternativeComponent setStep(List<ExampleScenarioProcessStepComponent> theStep) { 
3370          this.step = theStep;
3371          return this;
3372        }
3373
3374        public boolean hasStep() { 
3375          if (this.step == null)
3376            return false;
3377          for (ExampleScenarioProcessStepComponent item : this.step)
3378            if (!item.isEmpty())
3379              return true;
3380          return false;
3381        }
3382
3383        public ExampleScenarioProcessStepComponent addStep() { //3
3384          ExampleScenarioProcessStepComponent t = new ExampleScenarioProcessStepComponent();
3385          if (this.step == null)
3386            this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
3387          this.step.add(t);
3388          return t;
3389        }
3390
3391        public ExampleScenarioProcessStepAlternativeComponent addStep(ExampleScenarioProcessStepComponent t) { //3
3392          if (t == null)
3393            return this;
3394          if (this.step == null)
3395            this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
3396          this.step.add(t);
3397          return this;
3398        }
3399
3400        /**
3401         * @return The first repetition of repeating field {@link #step}, creating it if it does not already exist {3}
3402         */
3403        public ExampleScenarioProcessStepComponent getStepFirstRep() { 
3404          if (getStep().isEmpty()) {
3405            addStep();
3406          }
3407          return getStep().get(0);
3408        }
3409
3410        protected void listChildren(List<Property> children) {
3411          super.listChildren(children);
3412          children.add(new Property("title", "string", "The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.", 0, 1, title));
3413          children.add(new Property("description", "markdown", "A human-readable description of the alternative explaining when the alternative should occur rather than the base step.", 0, 1, description));
3414          children.add(new Property("step", "@ExampleScenario.process.step", "What happens in each alternative option.", 0, java.lang.Integer.MAX_VALUE, step));
3415        }
3416
3417        @Override
3418        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3419          switch (_hash) {
3420          case 110371416: /*title*/  return new Property("title", "string", "The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.", 0, 1, title);
3421          case -1724546052: /*description*/  return new Property("description", "markdown", "A human-readable description of the alternative explaining when the alternative should occur rather than the base step.", 0, 1, description);
3422          case 3540684: /*step*/  return new Property("step", "@ExampleScenario.process.step", "What happens in each alternative option.", 0, java.lang.Integer.MAX_VALUE, step);
3423          default: return super.getNamedProperty(_hash, _name, _checkValid);
3424          }
3425
3426        }
3427
3428      @Override
3429      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3430        switch (hash) {
3431        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3432        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3433        case 3540684: /*step*/ return this.step == null ? new Base[0] : this.step.toArray(new Base[this.step.size()]); // ExampleScenarioProcessStepComponent
3434        default: return super.getProperty(hash, name, checkValid);
3435        }
3436
3437      }
3438
3439      @Override
3440      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3441        switch (hash) {
3442        case 110371416: // title
3443          this.title = TypeConvertor.castToString(value); // StringType
3444          return value;
3445        case -1724546052: // description
3446          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3447          return value;
3448        case 3540684: // step
3449          this.getStep().add((ExampleScenarioProcessStepComponent) value); // ExampleScenarioProcessStepComponent
3450          return value;
3451        default: return super.setProperty(hash, name, value);
3452        }
3453
3454      }
3455
3456      @Override
3457      public Base setProperty(String name, Base value) throws FHIRException {
3458        if (name.equals("title")) {
3459          this.title = TypeConvertor.castToString(value); // StringType
3460        } else if (name.equals("description")) {
3461          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3462        } else if (name.equals("step")) {
3463          this.getStep().add((ExampleScenarioProcessStepComponent) value);
3464        } else
3465          return super.setProperty(name, value);
3466        return value;
3467      }
3468
3469      @Override
3470      public Base makeProperty(int hash, String name) throws FHIRException {
3471        switch (hash) {
3472        case 110371416:  return getTitleElement();
3473        case -1724546052:  return getDescriptionElement();
3474        case 3540684:  return addStep(); 
3475        default: return super.makeProperty(hash, name);
3476        }
3477
3478      }
3479
3480      @Override
3481      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3482        switch (hash) {
3483        case 110371416: /*title*/ return new String[] {"string"};
3484        case -1724546052: /*description*/ return new String[] {"markdown"};
3485        case 3540684: /*step*/ return new String[] {"@ExampleScenario.process.step"};
3486        default: return super.getTypesForProperty(hash, name);
3487        }
3488
3489      }
3490
3491      @Override
3492      public Base addChild(String name) throws FHIRException {
3493        if (name.equals("title")) {
3494          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.alternative.title");
3495        }
3496        else if (name.equals("description")) {
3497          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.process.step.alternative.description");
3498        }
3499        else if (name.equals("step")) {
3500          return addStep();
3501        }
3502        else
3503          return super.addChild(name);
3504      }
3505
3506      public ExampleScenarioProcessStepAlternativeComponent copy() {
3507        ExampleScenarioProcessStepAlternativeComponent dst = new ExampleScenarioProcessStepAlternativeComponent();
3508        copyValues(dst);
3509        return dst;
3510      }
3511
3512      public void copyValues(ExampleScenarioProcessStepAlternativeComponent dst) {
3513        super.copyValues(dst);
3514        dst.title = title == null ? null : title.copy();
3515        dst.description = description == null ? null : description.copy();
3516        if (step != null) {
3517          dst.step = new ArrayList<ExampleScenarioProcessStepComponent>();
3518          for (ExampleScenarioProcessStepComponent i : step)
3519            dst.step.add(i.copy());
3520        };
3521      }
3522
3523      @Override
3524      public boolean equalsDeep(Base other_) {
3525        if (!super.equalsDeep(other_))
3526          return false;
3527        if (!(other_ instanceof ExampleScenarioProcessStepAlternativeComponent))
3528          return false;
3529        ExampleScenarioProcessStepAlternativeComponent o = (ExampleScenarioProcessStepAlternativeComponent) other_;
3530        return compareDeep(title, o.title, true) && compareDeep(description, o.description, true) && compareDeep(step, o.step, true)
3531          ;
3532      }
3533
3534      @Override
3535      public boolean equalsShallow(Base other_) {
3536        if (!super.equalsShallow(other_))
3537          return false;
3538        if (!(other_ instanceof ExampleScenarioProcessStepAlternativeComponent))
3539          return false;
3540        ExampleScenarioProcessStepAlternativeComponent o = (ExampleScenarioProcessStepAlternativeComponent) other_;
3541        return compareValues(title, o.title, true) && compareValues(description, o.description, true);
3542      }
3543
3544      public boolean isEmpty() {
3545        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(title, description, step
3546          );
3547      }
3548
3549  public String fhirType() {
3550    return "ExampleScenario.process.step.alternative";
3551
3552  }
3553
3554  }
3555
3556    /**
3557     * An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.
3558     */
3559    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
3560    @Description(shortDefinition="Canonical identifier for this example scenario, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers." )
3561    protected UriType url;
3562
3563    /**
3564     * A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.
3565     */
3566    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3567    @Description(shortDefinition="Additional identifier for the example scenario", formalDefinition="A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance." )
3568    protected List<Identifier> identifier;
3569
3570    /**
3571     * The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
3572     */
3573    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
3574    @Description(shortDefinition="Business version of the example scenario", formalDefinition="The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence." )
3575    protected StringType version;
3576
3577    /**
3578     * A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.
3579     */
3580    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
3581    @Description(shortDefinition="Name for this example scenario (computer friendly)", formalDefinition="A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
3582    protected StringType name;
3583
3584    /**
3585     * The status of this example scenario. Enables tracking the life-cycle of the content.
3586     */
3587    @Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
3588    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this example scenario. Enables tracking the life-cycle of the content." )
3589    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
3590    protected Enumeration<PublicationStatus> status;
3591
3592    /**
3593     * A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3594     */
3595    @Child(name = "experimental", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=true)
3596    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
3597    protected BooleanType experimental;
3598
3599    /**
3600     * The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').
3601     */
3602    @Child(name = "date", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
3603    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition')." )
3604    protected DateTimeType date;
3605
3606    /**
3607     * The name of the organization or individual that published the example scenario.
3608     */
3609    @Child(name = "publisher", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=true)
3610    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the example scenario." )
3611    protected StringType publisher;
3612
3613    /**
3614     * Contact details to assist a user in finding and communicating with the publisher.
3615     */
3616    @Child(name = "contact", type = {ContactDetail.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3617    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
3618    protected List<ContactDetail> contact;
3619
3620    /**
3621     * The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instances.
3622     */
3623    @Child(name = "useContext", type = {UsageContext.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3624    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instances." )
3625    protected List<UsageContext> useContext;
3626
3627    /**
3628     * A legal or geographic region in which the example scenario is intended to be used.
3629     */
3630    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3631    @Description(shortDefinition="Intended jurisdiction for example scenario (if applicable)", formalDefinition="A legal or geographic region in which the example scenario is intended to be used." )
3632    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
3633    protected List<CodeableConcept> jurisdiction;
3634
3635    /**
3636     * What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.
3637     */
3638    @Child(name = "purpose", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=false)
3639    @Description(shortDefinition="The purpose of the example, e.g. to illustrate a scenario", formalDefinition="What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario." )
3640    protected MarkdownType purpose;
3641
3642    /**
3643     * A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.
3644     */
3645    @Child(name = "copyright", type = {MarkdownType.class}, order=12, min=0, max=1, modifier=false, summary=false)
3646    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario." )
3647    protected MarkdownType copyright;
3648
3649    /**
3650     * Actor participating in the resource.
3651     */
3652    @Child(name = "actor", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3653    @Description(shortDefinition="Actor participating in the resource", formalDefinition="Actor participating in the resource." )
3654    protected List<ExampleScenarioActorComponent> actor;
3655
3656    /**
3657     * Each resource and each version that is present in the workflow.
3658     */
3659    @Child(name = "instance", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3660    @Description(shortDefinition="Each resource and each version that is present in the workflow", formalDefinition="Each resource and each version that is present in the workflow." )
3661    protected List<ExampleScenarioInstanceComponent> instance;
3662
3663    /**
3664     * Each major process - a group of operations.
3665     */
3666    @Child(name = "process", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3667    @Description(shortDefinition="Each major process - a group of operations", formalDefinition="Each major process - a group of operations." )
3668    protected List<ExampleScenarioProcessComponent> process;
3669
3670    /**
3671     * Another nested workflow.
3672     */
3673    @Child(name = "workflow", type = {CanonicalType.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3674    @Description(shortDefinition="Another nested workflow", formalDefinition="Another nested workflow." )
3675    protected List<CanonicalType> workflow;
3676
3677    private static final long serialVersionUID = 1725952195L;
3678
3679  /**
3680   * Constructor
3681   */
3682    public ExampleScenario() {
3683      super();
3684    }
3685
3686  /**
3687   * Constructor
3688   */
3689    public ExampleScenario(PublicationStatus status) {
3690      super();
3691      this.setStatus(status);
3692    }
3693
3694    /**
3695     * @return {@link #url} (An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
3696     */
3697    public UriType getUrlElement() { 
3698      if (this.url == null)
3699        if (Configuration.errorOnAutoCreate())
3700          throw new Error("Attempt to auto-create ExampleScenario.url");
3701        else if (Configuration.doAutoCreate())
3702          this.url = new UriType(); // bb
3703      return this.url;
3704    }
3705
3706    public boolean hasUrlElement() { 
3707      return this.url != null && !this.url.isEmpty();
3708    }
3709
3710    public boolean hasUrl() { 
3711      return this.url != null && !this.url.isEmpty();
3712    }
3713
3714    /**
3715     * @param value {@link #url} (An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
3716     */
3717    public ExampleScenario setUrlElement(UriType value) { 
3718      this.url = value;
3719      return this;
3720    }
3721
3722    /**
3723     * @return An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.
3724     */
3725    public String getUrl() { 
3726      return this.url == null ? null : this.url.getValue();
3727    }
3728
3729    /**
3730     * @param value An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.
3731     */
3732    public ExampleScenario setUrl(String value) { 
3733      if (Utilities.noString(value))
3734        this.url = null;
3735      else {
3736        if (this.url == null)
3737          this.url = new UriType();
3738        this.url.setValue(value);
3739      }
3740      return this;
3741    }
3742
3743    /**
3744     * @return {@link #identifier} (A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.)
3745     */
3746    public List<Identifier> getIdentifier() { 
3747      if (this.identifier == null)
3748        this.identifier = new ArrayList<Identifier>();
3749      return this.identifier;
3750    }
3751
3752    /**
3753     * @return Returns a reference to <code>this</code> for easy method chaining
3754     */
3755    public ExampleScenario setIdentifier(List<Identifier> theIdentifier) { 
3756      this.identifier = theIdentifier;
3757      return this;
3758    }
3759
3760    public boolean hasIdentifier() { 
3761      if (this.identifier == null)
3762        return false;
3763      for (Identifier item : this.identifier)
3764        if (!item.isEmpty())
3765          return true;
3766      return false;
3767    }
3768
3769    public Identifier addIdentifier() { //3
3770      Identifier t = new Identifier();
3771      if (this.identifier == null)
3772        this.identifier = new ArrayList<Identifier>();
3773      this.identifier.add(t);
3774      return t;
3775    }
3776
3777    public ExampleScenario addIdentifier(Identifier t) { //3
3778      if (t == null)
3779        return this;
3780      if (this.identifier == null)
3781        this.identifier = new ArrayList<Identifier>();
3782      this.identifier.add(t);
3783      return this;
3784    }
3785
3786    /**
3787     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
3788     */
3789    public Identifier getIdentifierFirstRep() { 
3790      if (getIdentifier().isEmpty()) {
3791        addIdentifier();
3792      }
3793      return getIdentifier().get(0);
3794    }
3795
3796    /**
3797     * @return {@link #version} (The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
3798     */
3799    public StringType getVersionElement() { 
3800      if (this.version == null)
3801        if (Configuration.errorOnAutoCreate())
3802          throw new Error("Attempt to auto-create ExampleScenario.version");
3803        else if (Configuration.doAutoCreate())
3804          this.version = new StringType(); // bb
3805      return this.version;
3806    }
3807
3808    public boolean hasVersionElement() { 
3809      return this.version != null && !this.version.isEmpty();
3810    }
3811
3812    public boolean hasVersion() { 
3813      return this.version != null && !this.version.isEmpty();
3814    }
3815
3816    /**
3817     * @param value {@link #version} (The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
3818     */
3819    public ExampleScenario setVersionElement(StringType value) { 
3820      this.version = value;
3821      return this;
3822    }
3823
3824    /**
3825     * @return The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
3826     */
3827    public String getVersion() { 
3828      return this.version == null ? null : this.version.getValue();
3829    }
3830
3831    /**
3832     * @param value The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
3833     */
3834    public ExampleScenario setVersion(String value) { 
3835      if (Utilities.noString(value))
3836        this.version = null;
3837      else {
3838        if (this.version == null)
3839          this.version = new StringType();
3840        this.version.setValue(value);
3841      }
3842      return this;
3843    }
3844
3845    /**
3846     * @return {@link #name} (A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
3847     */
3848    public StringType getNameElement() { 
3849      if (this.name == null)
3850        if (Configuration.errorOnAutoCreate())
3851          throw new Error("Attempt to auto-create ExampleScenario.name");
3852        else if (Configuration.doAutoCreate())
3853          this.name = new StringType(); // bb
3854      return this.name;
3855    }
3856
3857    public boolean hasNameElement() { 
3858      return this.name != null && !this.name.isEmpty();
3859    }
3860
3861    public boolean hasName() { 
3862      return this.name != null && !this.name.isEmpty();
3863    }
3864
3865    /**
3866     * @param value {@link #name} (A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
3867     */
3868    public ExampleScenario setNameElement(StringType value) { 
3869      this.name = value;
3870      return this;
3871    }
3872
3873    /**
3874     * @return A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.
3875     */
3876    public String getName() { 
3877      return this.name == null ? null : this.name.getValue();
3878    }
3879
3880    /**
3881     * @param value A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.
3882     */
3883    public ExampleScenario setName(String value) { 
3884      if (Utilities.noString(value))
3885        this.name = null;
3886      else {
3887        if (this.name == null)
3888          this.name = new StringType();
3889        this.name.setValue(value);
3890      }
3891      return this;
3892    }
3893
3894    /**
3895     * @return {@link #status} (The status of this example scenario. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
3896     */
3897    public Enumeration<PublicationStatus> getStatusElement() { 
3898      if (this.status == null)
3899        if (Configuration.errorOnAutoCreate())
3900          throw new Error("Attempt to auto-create ExampleScenario.status");
3901        else if (Configuration.doAutoCreate())
3902          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
3903      return this.status;
3904    }
3905
3906    public boolean hasStatusElement() { 
3907      return this.status != null && !this.status.isEmpty();
3908    }
3909
3910    public boolean hasStatus() { 
3911      return this.status != null && !this.status.isEmpty();
3912    }
3913
3914    /**
3915     * @param value {@link #status} (The status of this example scenario. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
3916     */
3917    public ExampleScenario setStatusElement(Enumeration<PublicationStatus> value) { 
3918      this.status = value;
3919      return this;
3920    }
3921
3922    /**
3923     * @return The status of this example scenario. Enables tracking the life-cycle of the content.
3924     */
3925    public PublicationStatus getStatus() { 
3926      return this.status == null ? null : this.status.getValue();
3927    }
3928
3929    /**
3930     * @param value The status of this example scenario. Enables tracking the life-cycle of the content.
3931     */
3932    public ExampleScenario setStatus(PublicationStatus value) { 
3933        if (this.status == null)
3934          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
3935        this.status.setValue(value);
3936      return this;
3937    }
3938
3939    /**
3940     * @return {@link #experimental} (A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
3941     */
3942    public BooleanType getExperimentalElement() { 
3943      if (this.experimental == null)
3944        if (Configuration.errorOnAutoCreate())
3945          throw new Error("Attempt to auto-create ExampleScenario.experimental");
3946        else if (Configuration.doAutoCreate())
3947          this.experimental = new BooleanType(); // bb
3948      return this.experimental;
3949    }
3950
3951    public boolean hasExperimentalElement() { 
3952      return this.experimental != null && !this.experimental.isEmpty();
3953    }
3954
3955    public boolean hasExperimental() { 
3956      return this.experimental != null && !this.experimental.isEmpty();
3957    }
3958
3959    /**
3960     * @param value {@link #experimental} (A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
3961     */
3962    public ExampleScenario setExperimentalElement(BooleanType value) { 
3963      this.experimental = value;
3964      return this;
3965    }
3966
3967    /**
3968     * @return A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3969     */
3970    public boolean getExperimental() { 
3971      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
3972    }
3973
3974    /**
3975     * @param value A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3976     */
3977    public ExampleScenario setExperimental(boolean value) { 
3978        if (this.experimental == null)
3979          this.experimental = new BooleanType();
3980        this.experimental.setValue(value);
3981      return this;
3982    }
3983
3984    /**
3985     * @return {@link #date} (The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3986     */
3987    public DateTimeType getDateElement() { 
3988      if (this.date == null)
3989        if (Configuration.errorOnAutoCreate())
3990          throw new Error("Attempt to auto-create ExampleScenario.date");
3991        else if (Configuration.doAutoCreate())
3992          this.date = new DateTimeType(); // bb
3993      return this.date;
3994    }
3995
3996    public boolean hasDateElement() { 
3997      return this.date != null && !this.date.isEmpty();
3998    }
3999
4000    public boolean hasDate() { 
4001      return this.date != null && !this.date.isEmpty();
4002    }
4003
4004    /**
4005     * @param value {@link #date} (The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
4006     */
4007    public ExampleScenario setDateElement(DateTimeType value) { 
4008      this.date = value;
4009      return this;
4010    }
4011
4012    /**
4013     * @return The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').
4014     */
4015    public Date getDate() { 
4016      return this.date == null ? null : this.date.getValue();
4017    }
4018
4019    /**
4020     * @param value The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').
4021     */
4022    public ExampleScenario setDate(Date value) { 
4023      if (value == null)
4024        this.date = null;
4025      else {
4026        if (this.date == null)
4027          this.date = new DateTimeType();
4028        this.date.setValue(value);
4029      }
4030      return this;
4031    }
4032
4033    /**
4034     * @return {@link #publisher} (The name of the organization or individual that published the example scenario.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
4035     */
4036    public StringType getPublisherElement() { 
4037      if (this.publisher == null)
4038        if (Configuration.errorOnAutoCreate())
4039          throw new Error("Attempt to auto-create ExampleScenario.publisher");
4040        else if (Configuration.doAutoCreate())
4041          this.publisher = new StringType(); // bb
4042      return this.publisher;
4043    }
4044
4045    public boolean hasPublisherElement() { 
4046      return this.publisher != null && !this.publisher.isEmpty();
4047    }
4048
4049    public boolean hasPublisher() { 
4050      return this.publisher != null && !this.publisher.isEmpty();
4051    }
4052
4053    /**
4054     * @param value {@link #publisher} (The name of the organization or individual that published the example scenario.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
4055     */
4056    public ExampleScenario setPublisherElement(StringType value) { 
4057      this.publisher = value;
4058      return this;
4059    }
4060
4061    /**
4062     * @return The name of the organization or individual that published the example scenario.
4063     */
4064    public String getPublisher() { 
4065      return this.publisher == null ? null : this.publisher.getValue();
4066    }
4067
4068    /**
4069     * @param value The name of the organization or individual that published the example scenario.
4070     */
4071    public ExampleScenario setPublisher(String value) { 
4072      if (Utilities.noString(value))
4073        this.publisher = null;
4074      else {
4075        if (this.publisher == null)
4076          this.publisher = new StringType();
4077        this.publisher.setValue(value);
4078      }
4079      return this;
4080    }
4081
4082    /**
4083     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
4084     */
4085    public List<ContactDetail> getContact() { 
4086      if (this.contact == null)
4087        this.contact = new ArrayList<ContactDetail>();
4088      return this.contact;
4089    }
4090
4091    /**
4092     * @return Returns a reference to <code>this</code> for easy method chaining
4093     */
4094    public ExampleScenario setContact(List<ContactDetail> theContact) { 
4095      this.contact = theContact;
4096      return this;
4097    }
4098
4099    public boolean hasContact() { 
4100      if (this.contact == null)
4101        return false;
4102      for (ContactDetail item : this.contact)
4103        if (!item.isEmpty())
4104          return true;
4105      return false;
4106    }
4107
4108    public ContactDetail addContact() { //3
4109      ContactDetail t = new ContactDetail();
4110      if (this.contact == null)
4111        this.contact = new ArrayList<ContactDetail>();
4112      this.contact.add(t);
4113      return t;
4114    }
4115
4116    public ExampleScenario addContact(ContactDetail t) { //3
4117      if (t == null)
4118        return this;
4119      if (this.contact == null)
4120        this.contact = new ArrayList<ContactDetail>();
4121      this.contact.add(t);
4122      return this;
4123    }
4124
4125    /**
4126     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
4127     */
4128    public ContactDetail getContactFirstRep() { 
4129      if (getContact().isEmpty()) {
4130        addContact();
4131      }
4132      return getContact().get(0);
4133    }
4134
4135    /**
4136     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instances.)
4137     */
4138    public List<UsageContext> getUseContext() { 
4139      if (this.useContext == null)
4140        this.useContext = new ArrayList<UsageContext>();
4141      return this.useContext;
4142    }
4143
4144    /**
4145     * @return Returns a reference to <code>this</code> for easy method chaining
4146     */
4147    public ExampleScenario setUseContext(List<UsageContext> theUseContext) { 
4148      this.useContext = theUseContext;
4149      return this;
4150    }
4151
4152    public boolean hasUseContext() { 
4153      if (this.useContext == null)
4154        return false;
4155      for (UsageContext item : this.useContext)
4156        if (!item.isEmpty())
4157          return true;
4158      return false;
4159    }
4160
4161    public UsageContext addUseContext() { //3
4162      UsageContext t = new UsageContext();
4163      if (this.useContext == null)
4164        this.useContext = new ArrayList<UsageContext>();
4165      this.useContext.add(t);
4166      return t;
4167    }
4168
4169    public ExampleScenario addUseContext(UsageContext t) { //3
4170      if (t == null)
4171        return this;
4172      if (this.useContext == null)
4173        this.useContext = new ArrayList<UsageContext>();
4174      this.useContext.add(t);
4175      return this;
4176    }
4177
4178    /**
4179     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
4180     */
4181    public UsageContext getUseContextFirstRep() { 
4182      if (getUseContext().isEmpty()) {
4183        addUseContext();
4184      }
4185      return getUseContext().get(0);
4186    }
4187
4188    /**
4189     * @return {@link #jurisdiction} (A legal or geographic region in which the example scenario is intended to be used.)
4190     */
4191    public List<CodeableConcept> getJurisdiction() { 
4192      if (this.jurisdiction == null)
4193        this.jurisdiction = new ArrayList<CodeableConcept>();
4194      return this.jurisdiction;
4195    }
4196
4197    /**
4198     * @return Returns a reference to <code>this</code> for easy method chaining
4199     */
4200    public ExampleScenario setJurisdiction(List<CodeableConcept> theJurisdiction) { 
4201      this.jurisdiction = theJurisdiction;
4202      return this;
4203    }
4204
4205    public boolean hasJurisdiction() { 
4206      if (this.jurisdiction == null)
4207        return false;
4208      for (CodeableConcept item : this.jurisdiction)
4209        if (!item.isEmpty())
4210          return true;
4211      return false;
4212    }
4213
4214    public CodeableConcept addJurisdiction() { //3
4215      CodeableConcept t = new CodeableConcept();
4216      if (this.jurisdiction == null)
4217        this.jurisdiction = new ArrayList<CodeableConcept>();
4218      this.jurisdiction.add(t);
4219      return t;
4220    }
4221
4222    public ExampleScenario addJurisdiction(CodeableConcept t) { //3
4223      if (t == null)
4224        return this;
4225      if (this.jurisdiction == null)
4226        this.jurisdiction = new ArrayList<CodeableConcept>();
4227      this.jurisdiction.add(t);
4228      return this;
4229    }
4230
4231    /**
4232     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
4233     */
4234    public CodeableConcept getJurisdictionFirstRep() { 
4235      if (getJurisdiction().isEmpty()) {
4236        addJurisdiction();
4237      }
4238      return getJurisdiction().get(0);
4239    }
4240
4241    /**
4242     * @return {@link #purpose} (What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
4243     */
4244    public MarkdownType getPurposeElement() { 
4245      if (this.purpose == null)
4246        if (Configuration.errorOnAutoCreate())
4247          throw new Error("Attempt to auto-create ExampleScenario.purpose");
4248        else if (Configuration.doAutoCreate())
4249          this.purpose = new MarkdownType(); // bb
4250      return this.purpose;
4251    }
4252
4253    public boolean hasPurposeElement() { 
4254      return this.purpose != null && !this.purpose.isEmpty();
4255    }
4256
4257    public boolean hasPurpose() { 
4258      return this.purpose != null && !this.purpose.isEmpty();
4259    }
4260
4261    /**
4262     * @param value {@link #purpose} (What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
4263     */
4264    public ExampleScenario setPurposeElement(MarkdownType value) { 
4265      this.purpose = value;
4266      return this;
4267    }
4268
4269    /**
4270     * @return What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.
4271     */
4272    public String getPurpose() { 
4273      return this.purpose == null ? null : this.purpose.getValue();
4274    }
4275
4276    /**
4277     * @param value What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.
4278     */
4279    public ExampleScenario setPurpose(String value) { 
4280      if (value == null)
4281        this.purpose = null;
4282      else {
4283        if (this.purpose == null)
4284          this.purpose = new MarkdownType();
4285        this.purpose.setValue(value);
4286      }
4287      return this;
4288    }
4289
4290    /**
4291     * @return {@link #copyright} (A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
4292     */
4293    public MarkdownType getCopyrightElement() { 
4294      if (this.copyright == null)
4295        if (Configuration.errorOnAutoCreate())
4296          throw new Error("Attempt to auto-create ExampleScenario.copyright");
4297        else if (Configuration.doAutoCreate())
4298          this.copyright = new MarkdownType(); // bb
4299      return this.copyright;
4300    }
4301
4302    public boolean hasCopyrightElement() { 
4303      return this.copyright != null && !this.copyright.isEmpty();
4304    }
4305
4306    public boolean hasCopyright() { 
4307      return this.copyright != null && !this.copyright.isEmpty();
4308    }
4309
4310    /**
4311     * @param value {@link #copyright} (A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
4312     */
4313    public ExampleScenario setCopyrightElement(MarkdownType value) { 
4314      this.copyright = value;
4315      return this;
4316    }
4317
4318    /**
4319     * @return A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.
4320     */
4321    public String getCopyright() { 
4322      return this.copyright == null ? null : this.copyright.getValue();
4323    }
4324
4325    /**
4326     * @param value A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.
4327     */
4328    public ExampleScenario setCopyright(String value) { 
4329      if (value == null)
4330        this.copyright = null;
4331      else {
4332        if (this.copyright == null)
4333          this.copyright = new MarkdownType();
4334        this.copyright.setValue(value);
4335      }
4336      return this;
4337    }
4338
4339    /**
4340     * @return {@link #actor} (Actor participating in the resource.)
4341     */
4342    public List<ExampleScenarioActorComponent> getActor() { 
4343      if (this.actor == null)
4344        this.actor = new ArrayList<ExampleScenarioActorComponent>();
4345      return this.actor;
4346    }
4347
4348    /**
4349     * @return Returns a reference to <code>this</code> for easy method chaining
4350     */
4351    public ExampleScenario setActor(List<ExampleScenarioActorComponent> theActor) { 
4352      this.actor = theActor;
4353      return this;
4354    }
4355
4356    public boolean hasActor() { 
4357      if (this.actor == null)
4358        return false;
4359      for (ExampleScenarioActorComponent item : this.actor)
4360        if (!item.isEmpty())
4361          return true;
4362      return false;
4363    }
4364
4365    public ExampleScenarioActorComponent addActor() { //3
4366      ExampleScenarioActorComponent t = new ExampleScenarioActorComponent();
4367      if (this.actor == null)
4368        this.actor = new ArrayList<ExampleScenarioActorComponent>();
4369      this.actor.add(t);
4370      return t;
4371    }
4372
4373    public ExampleScenario addActor(ExampleScenarioActorComponent t) { //3
4374      if (t == null)
4375        return this;
4376      if (this.actor == null)
4377        this.actor = new ArrayList<ExampleScenarioActorComponent>();
4378      this.actor.add(t);
4379      return this;
4380    }
4381
4382    /**
4383     * @return The first repetition of repeating field {@link #actor}, creating it if it does not already exist {3}
4384     */
4385    public ExampleScenarioActorComponent getActorFirstRep() { 
4386      if (getActor().isEmpty()) {
4387        addActor();
4388      }
4389      return getActor().get(0);
4390    }
4391
4392    /**
4393     * @return {@link #instance} (Each resource and each version that is present in the workflow.)
4394     */
4395    public List<ExampleScenarioInstanceComponent> getInstance() { 
4396      if (this.instance == null)
4397        this.instance = new ArrayList<ExampleScenarioInstanceComponent>();
4398      return this.instance;
4399    }
4400
4401    /**
4402     * @return Returns a reference to <code>this</code> for easy method chaining
4403     */
4404    public ExampleScenario setInstance(List<ExampleScenarioInstanceComponent> theInstance) { 
4405      this.instance = theInstance;
4406      return this;
4407    }
4408
4409    public boolean hasInstance() { 
4410      if (this.instance == null)
4411        return false;
4412      for (ExampleScenarioInstanceComponent item : this.instance)
4413        if (!item.isEmpty())
4414          return true;
4415      return false;
4416    }
4417
4418    public ExampleScenarioInstanceComponent addInstance() { //3
4419      ExampleScenarioInstanceComponent t = new ExampleScenarioInstanceComponent();
4420      if (this.instance == null)
4421        this.instance = new ArrayList<ExampleScenarioInstanceComponent>();
4422      this.instance.add(t);
4423      return t;
4424    }
4425
4426    public ExampleScenario addInstance(ExampleScenarioInstanceComponent t) { //3
4427      if (t == null)
4428        return this;
4429      if (this.instance == null)
4430        this.instance = new ArrayList<ExampleScenarioInstanceComponent>();
4431      this.instance.add(t);
4432      return this;
4433    }
4434
4435    /**
4436     * @return The first repetition of repeating field {@link #instance}, creating it if it does not already exist {3}
4437     */
4438    public ExampleScenarioInstanceComponent getInstanceFirstRep() { 
4439      if (getInstance().isEmpty()) {
4440        addInstance();
4441      }
4442      return getInstance().get(0);
4443    }
4444
4445    /**
4446     * @return {@link #process} (Each major process - a group of operations.)
4447     */
4448    public List<ExampleScenarioProcessComponent> getProcess() { 
4449      if (this.process == null)
4450        this.process = new ArrayList<ExampleScenarioProcessComponent>();
4451      return this.process;
4452    }
4453
4454    /**
4455     * @return Returns a reference to <code>this</code> for easy method chaining
4456     */
4457    public ExampleScenario setProcess(List<ExampleScenarioProcessComponent> theProcess) { 
4458      this.process = theProcess;
4459      return this;
4460    }
4461
4462    public boolean hasProcess() { 
4463      if (this.process == null)
4464        return false;
4465      for (ExampleScenarioProcessComponent item : this.process)
4466        if (!item.isEmpty())
4467          return true;
4468      return false;
4469    }
4470
4471    public ExampleScenarioProcessComponent addProcess() { //3
4472      ExampleScenarioProcessComponent t = new ExampleScenarioProcessComponent();
4473      if (this.process == null)
4474        this.process = new ArrayList<ExampleScenarioProcessComponent>();
4475      this.process.add(t);
4476      return t;
4477    }
4478
4479    public ExampleScenario addProcess(ExampleScenarioProcessComponent t) { //3
4480      if (t == null)
4481        return this;
4482      if (this.process == null)
4483        this.process = new ArrayList<ExampleScenarioProcessComponent>();
4484      this.process.add(t);
4485      return this;
4486    }
4487
4488    /**
4489     * @return The first repetition of repeating field {@link #process}, creating it if it does not already exist {3}
4490     */
4491    public ExampleScenarioProcessComponent getProcessFirstRep() { 
4492      if (getProcess().isEmpty()) {
4493        addProcess();
4494      }
4495      return getProcess().get(0);
4496    }
4497
4498    /**
4499     * @return {@link #workflow} (Another nested workflow.)
4500     */
4501    public List<CanonicalType> getWorkflow() { 
4502      if (this.workflow == null)
4503        this.workflow = new ArrayList<CanonicalType>();
4504      return this.workflow;
4505    }
4506
4507    /**
4508     * @return Returns a reference to <code>this</code> for easy method chaining
4509     */
4510    public ExampleScenario setWorkflow(List<CanonicalType> theWorkflow) { 
4511      this.workflow = theWorkflow;
4512      return this;
4513    }
4514
4515    public boolean hasWorkflow() { 
4516      if (this.workflow == null)
4517        return false;
4518      for (CanonicalType item : this.workflow)
4519        if (!item.isEmpty())
4520          return true;
4521      return false;
4522    }
4523
4524    /**
4525     * @return {@link #workflow} (Another nested workflow.)
4526     */
4527    public CanonicalType addWorkflowElement() {//2 
4528      CanonicalType t = new CanonicalType();
4529      if (this.workflow == null)
4530        this.workflow = new ArrayList<CanonicalType>();
4531      this.workflow.add(t);
4532      return t;
4533    }
4534
4535    /**
4536     * @param value {@link #workflow} (Another nested workflow.)
4537     */
4538    public ExampleScenario addWorkflow(String value) { //1
4539      CanonicalType t = new CanonicalType();
4540      t.setValue(value);
4541      if (this.workflow == null)
4542        this.workflow = new ArrayList<CanonicalType>();
4543      this.workflow.add(t);
4544      return this;
4545    }
4546
4547    /**
4548     * @param value {@link #workflow} (Another nested workflow.)
4549     */
4550    public boolean hasWorkflow(String value) { 
4551      if (this.workflow == null)
4552        return false;
4553      for (CanonicalType v : this.workflow)
4554        if (v.getValue().equals(value)) // canonical
4555          return true;
4556      return false;
4557    }
4558
4559    /**
4560     * not supported on this implementation
4561     */
4562    @Override
4563    public int getTitleMax() { 
4564      return 0;
4565    }
4566    /**
4567     * @return {@link #title} (A short, descriptive, user-friendly title for the example scenario.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
4568     */
4569    public StringType getTitleElement() { 
4570      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"title\"");
4571    }
4572
4573    public boolean hasTitleElement() { 
4574      return false;
4575    }
4576    public boolean hasTitle() {
4577      return false;
4578    }
4579
4580    /**
4581     * @param value {@link #title} (A short, descriptive, user-friendly title for the example scenario.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
4582     */
4583    public ExampleScenario setTitleElement(StringType value) { 
4584      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"title\"");
4585    }
4586    public String getTitle() { 
4587      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"title\"");
4588    }
4589    /**
4590     * @param value A short, descriptive, user-friendly title for the example scenario.
4591     */
4592    public ExampleScenario setTitle(String value) { 
4593      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"title\"");
4594    }
4595    /**
4596     * not supported on this implementation
4597     */
4598    @Override
4599    public int getDescriptionMax() { 
4600      return 0;
4601    }
4602    /**
4603     * @return {@link #description} (A free text natural language description of the example scenario from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
4604     */
4605    public MarkdownType getDescriptionElement() { 
4606      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"description\"");
4607    }
4608
4609    public boolean hasDescriptionElement() { 
4610      return false;
4611    }
4612    public boolean hasDescription() {
4613      return false;
4614    }
4615
4616    /**
4617     * @param value {@link #description} (A free text natural language description of the example scenario from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
4618     */
4619    public ExampleScenario setDescriptionElement(MarkdownType value) { 
4620      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"description\"");
4621    }
4622    public String getDescription() { 
4623      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"description\"");
4624    }
4625    /**
4626     * @param value A free text natural language description of the example scenario from a consumer's perspective.
4627     */
4628    public ExampleScenario setDescription(String value) { 
4629      throw new Error("The resource type \"ExampleScenario\" does not implement the property \"description\"");
4630    }
4631      protected void listChildren(List<Property> children) {
4632        super.listChildren(children);
4633        children.add(new Property("url", "uri", "An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.", 0, 1, url));
4634        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
4635        children.add(new Property("version", "string", "The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version));
4636        children.add(new Property("name", "string", "A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
4637        children.add(new Property("status", "code", "The status of this example scenario. Enables tracking the life-cycle of the content.", 0, 1, status));
4638        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
4639        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').", 0, 1, date));
4640        children.add(new Property("publisher", "string", "The name of the organization or individual that published the example scenario.", 0, 1, publisher));
4641        children.add(new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
4642        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
4643        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the example scenario is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
4644        children.add(new Property("purpose", "markdown", "What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.", 0, 1, purpose));
4645        children.add(new Property("copyright", "markdown", "A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.", 0, 1, copyright));
4646        children.add(new Property("actor", "", "Actor participating in the resource.", 0, java.lang.Integer.MAX_VALUE, actor));
4647        children.add(new Property("instance", "", "Each resource and each version that is present in the workflow.", 0, java.lang.Integer.MAX_VALUE, instance));
4648        children.add(new Property("process", "", "Each major process - a group of operations.", 0, java.lang.Integer.MAX_VALUE, process));
4649        children.add(new Property("workflow", "canonical(ExampleScenario)", "Another nested workflow.", 0, java.lang.Integer.MAX_VALUE, workflow));
4650      }
4651
4652      @Override
4653      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4654        switch (_hash) {
4655        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.", 0, 1, url);
4656        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
4657        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version);
4658        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
4659        case -892481550: /*status*/  return new Property("status", "code", "The status of this example scenario. Enables tracking the life-cycle of the content.", 0, 1, status);
4660        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
4661        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition').", 0, 1, date);
4662        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the example scenario.", 0, 1, publisher);
4663        case 951526432: /*contact*/  return new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact);
4664        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
4665        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the example scenario is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
4666        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.", 0, 1, purpose);
4667        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.", 0, 1, copyright);
4668        case 92645877: /*actor*/  return new Property("actor", "", "Actor participating in the resource.", 0, java.lang.Integer.MAX_VALUE, actor);
4669        case 555127957: /*instance*/  return new Property("instance", "", "Each resource and each version that is present in the workflow.", 0, java.lang.Integer.MAX_VALUE, instance);
4670        case -309518737: /*process*/  return new Property("process", "", "Each major process - a group of operations.", 0, java.lang.Integer.MAX_VALUE, process);
4671        case 35379135: /*workflow*/  return new Property("workflow", "canonical(ExampleScenario)", "Another nested workflow.", 0, java.lang.Integer.MAX_VALUE, workflow);
4672        default: return super.getNamedProperty(_hash, _name, _checkValid);
4673        }
4674
4675      }
4676
4677      @Override
4678      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4679        switch (hash) {
4680        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
4681        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4682        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4683        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
4684        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
4685        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
4686        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4687        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
4688        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
4689        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
4690        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
4691        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
4692        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
4693        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : this.actor.toArray(new Base[this.actor.size()]); // ExampleScenarioActorComponent
4694        case 555127957: /*instance*/ return this.instance == null ? new Base[0] : this.instance.toArray(new Base[this.instance.size()]); // ExampleScenarioInstanceComponent
4695        case -309518737: /*process*/ return this.process == null ? new Base[0] : this.process.toArray(new Base[this.process.size()]); // ExampleScenarioProcessComponent
4696        case 35379135: /*workflow*/ return this.workflow == null ? new Base[0] : this.workflow.toArray(new Base[this.workflow.size()]); // CanonicalType
4697        default: return super.getProperty(hash, name, checkValid);
4698        }
4699
4700      }
4701
4702      @Override
4703      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4704        switch (hash) {
4705        case 116079: // url
4706          this.url = TypeConvertor.castToUri(value); // UriType
4707          return value;
4708        case -1618432855: // identifier
4709          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4710          return value;
4711        case 351608024: // version
4712          this.version = TypeConvertor.castToString(value); // StringType
4713          return value;
4714        case 3373707: // name
4715          this.name = TypeConvertor.castToString(value); // StringType
4716          return value;
4717        case -892481550: // status
4718          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4719          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4720          return value;
4721        case -404562712: // experimental
4722          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4723          return value;
4724        case 3076014: // date
4725          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4726          return value;
4727        case 1447404028: // publisher
4728          this.publisher = TypeConvertor.castToString(value); // StringType
4729          return value;
4730        case 951526432: // contact
4731          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4732          return value;
4733        case -669707736: // useContext
4734          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
4735          return value;
4736        case -507075711: // jurisdiction
4737          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4738          return value;
4739        case -220463842: // purpose
4740          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4741          return value;
4742        case 1522889671: // copyright
4743          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4744          return value;
4745        case 92645877: // actor
4746          this.getActor().add((ExampleScenarioActorComponent) value); // ExampleScenarioActorComponent
4747          return value;
4748        case 555127957: // instance
4749          this.getInstance().add((ExampleScenarioInstanceComponent) value); // ExampleScenarioInstanceComponent
4750          return value;
4751        case -309518737: // process
4752          this.getProcess().add((ExampleScenarioProcessComponent) value); // ExampleScenarioProcessComponent
4753          return value;
4754        case 35379135: // workflow
4755          this.getWorkflow().add(TypeConvertor.castToCanonical(value)); // CanonicalType
4756          return value;
4757        default: return super.setProperty(hash, name, value);
4758        }
4759
4760      }
4761
4762      @Override
4763      public Base setProperty(String name, Base value) throws FHIRException {
4764        if (name.equals("url")) {
4765          this.url = TypeConvertor.castToUri(value); // UriType
4766        } else if (name.equals("identifier")) {
4767          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4768        } else if (name.equals("version")) {
4769          this.version = TypeConvertor.castToString(value); // StringType
4770        } else if (name.equals("name")) {
4771          this.name = TypeConvertor.castToString(value); // StringType
4772        } else if (name.equals("status")) {
4773          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4774          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4775        } else if (name.equals("experimental")) {
4776          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4777        } else if (name.equals("date")) {
4778          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4779        } else if (name.equals("publisher")) {
4780          this.publisher = TypeConvertor.castToString(value); // StringType
4781        } else if (name.equals("contact")) {
4782          this.getContact().add(TypeConvertor.castToContactDetail(value));
4783        } else if (name.equals("useContext")) {
4784          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
4785        } else if (name.equals("jurisdiction")) {
4786          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
4787        } else if (name.equals("purpose")) {
4788          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4789        } else if (name.equals("copyright")) {
4790          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4791        } else if (name.equals("actor")) {
4792          this.getActor().add((ExampleScenarioActorComponent) value);
4793        } else if (name.equals("instance")) {
4794          this.getInstance().add((ExampleScenarioInstanceComponent) value);
4795        } else if (name.equals("process")) {
4796          this.getProcess().add((ExampleScenarioProcessComponent) value);
4797        } else if (name.equals("workflow")) {
4798          this.getWorkflow().add(TypeConvertor.castToCanonical(value));
4799        } else
4800          return super.setProperty(name, value);
4801        return value;
4802      }
4803
4804      @Override
4805      public Base makeProperty(int hash, String name) throws FHIRException {
4806        switch (hash) {
4807        case 116079:  return getUrlElement();
4808        case -1618432855:  return addIdentifier(); 
4809        case 351608024:  return getVersionElement();
4810        case 3373707:  return getNameElement();
4811        case -892481550:  return getStatusElement();
4812        case -404562712:  return getExperimentalElement();
4813        case 3076014:  return getDateElement();
4814        case 1447404028:  return getPublisherElement();
4815        case 951526432:  return addContact(); 
4816        case -669707736:  return addUseContext(); 
4817        case -507075711:  return addJurisdiction(); 
4818        case -220463842:  return getPurposeElement();
4819        case 1522889671:  return getCopyrightElement();
4820        case 92645877:  return addActor(); 
4821        case 555127957:  return addInstance(); 
4822        case -309518737:  return addProcess(); 
4823        case 35379135:  return addWorkflowElement();
4824        default: return super.makeProperty(hash, name);
4825        }
4826
4827      }
4828
4829      @Override
4830      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4831        switch (hash) {
4832        case 116079: /*url*/ return new String[] {"uri"};
4833        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4834        case 351608024: /*version*/ return new String[] {"string"};
4835        case 3373707: /*name*/ return new String[] {"string"};
4836        case -892481550: /*status*/ return new String[] {"code"};
4837        case -404562712: /*experimental*/ return new String[] {"boolean"};
4838        case 3076014: /*date*/ return new String[] {"dateTime"};
4839        case 1447404028: /*publisher*/ return new String[] {"string"};
4840        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
4841        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
4842        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
4843        case -220463842: /*purpose*/ return new String[] {"markdown"};
4844        case 1522889671: /*copyright*/ return new String[] {"markdown"};
4845        case 92645877: /*actor*/ return new String[] {};
4846        case 555127957: /*instance*/ return new String[] {};
4847        case -309518737: /*process*/ return new String[] {};
4848        case 35379135: /*workflow*/ return new String[] {"canonical"};
4849        default: return super.getTypesForProperty(hash, name);
4850        }
4851
4852      }
4853
4854      @Override
4855      public Base addChild(String name) throws FHIRException {
4856        if (name.equals("url")) {
4857          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.url");
4858        }
4859        else if (name.equals("identifier")) {
4860          return addIdentifier();
4861        }
4862        else if (name.equals("version")) {
4863          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.version");
4864        }
4865        else if (name.equals("name")) {
4866          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.name");
4867        }
4868        else if (name.equals("status")) {
4869          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.status");
4870        }
4871        else if (name.equals("experimental")) {
4872          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.experimental");
4873        }
4874        else if (name.equals("date")) {
4875          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.date");
4876        }
4877        else if (name.equals("publisher")) {
4878          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.publisher");
4879        }
4880        else if (name.equals("contact")) {
4881          return addContact();
4882        }
4883        else if (name.equals("useContext")) {
4884          return addUseContext();
4885        }
4886        else if (name.equals("jurisdiction")) {
4887          return addJurisdiction();
4888        }
4889        else if (name.equals("purpose")) {
4890          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.purpose");
4891        }
4892        else if (name.equals("copyright")) {
4893          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.copyright");
4894        }
4895        else if (name.equals("actor")) {
4896          return addActor();
4897        }
4898        else if (name.equals("instance")) {
4899          return addInstance();
4900        }
4901        else if (name.equals("process")) {
4902          return addProcess();
4903        }
4904        else if (name.equals("workflow")) {
4905          throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.workflow");
4906        }
4907        else
4908          return super.addChild(name);
4909      }
4910
4911  public String fhirType() {
4912    return "ExampleScenario";
4913
4914  }
4915
4916      public ExampleScenario copy() {
4917        ExampleScenario dst = new ExampleScenario();
4918        copyValues(dst);
4919        return dst;
4920      }
4921
4922      public void copyValues(ExampleScenario dst) {
4923        super.copyValues(dst);
4924        dst.url = url == null ? null : url.copy();
4925        if (identifier != null) {
4926          dst.identifier = new ArrayList<Identifier>();
4927          for (Identifier i : identifier)
4928            dst.identifier.add(i.copy());
4929        };
4930        dst.version = version == null ? null : version.copy();
4931        dst.name = name == null ? null : name.copy();
4932        dst.status = status == null ? null : status.copy();
4933        dst.experimental = experimental == null ? null : experimental.copy();
4934        dst.date = date == null ? null : date.copy();
4935        dst.publisher = publisher == null ? null : publisher.copy();
4936        if (contact != null) {
4937          dst.contact = new ArrayList<ContactDetail>();
4938          for (ContactDetail i : contact)
4939            dst.contact.add(i.copy());
4940        };
4941        if (useContext != null) {
4942          dst.useContext = new ArrayList<UsageContext>();
4943          for (UsageContext i : useContext)
4944            dst.useContext.add(i.copy());
4945        };
4946        if (jurisdiction != null) {
4947          dst.jurisdiction = new ArrayList<CodeableConcept>();
4948          for (CodeableConcept i : jurisdiction)
4949            dst.jurisdiction.add(i.copy());
4950        };
4951        dst.purpose = purpose == null ? null : purpose.copy();
4952        dst.copyright = copyright == null ? null : copyright.copy();
4953        if (actor != null) {
4954          dst.actor = new ArrayList<ExampleScenarioActorComponent>();
4955          for (ExampleScenarioActorComponent i : actor)
4956            dst.actor.add(i.copy());
4957        };
4958        if (instance != null) {
4959          dst.instance = new ArrayList<ExampleScenarioInstanceComponent>();
4960          for (ExampleScenarioInstanceComponent i : instance)
4961            dst.instance.add(i.copy());
4962        };
4963        if (process != null) {
4964          dst.process = new ArrayList<ExampleScenarioProcessComponent>();
4965          for (ExampleScenarioProcessComponent i : process)
4966            dst.process.add(i.copy());
4967        };
4968        if (workflow != null) {
4969          dst.workflow = new ArrayList<CanonicalType>();
4970          for (CanonicalType i : workflow)
4971            dst.workflow.add(i.copy());
4972        };
4973      }
4974
4975      protected ExampleScenario typedCopy() {
4976        return copy();
4977      }
4978
4979      @Override
4980      public boolean equalsDeep(Base other_) {
4981        if (!super.equalsDeep(other_))
4982          return false;
4983        if (!(other_ instanceof ExampleScenario))
4984          return false;
4985        ExampleScenario o = (ExampleScenario) other_;
4986        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
4987           && compareDeep(name, o.name, true) && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true)
4988           && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true)
4989           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
4990           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(actor, o.actor, true)
4991           && compareDeep(instance, o.instance, true) && compareDeep(process, o.process, true) && compareDeep(workflow, o.workflow, true)
4992          ;
4993      }
4994
4995      @Override
4996      public boolean equalsShallow(Base other_) {
4997        if (!super.equalsShallow(other_))
4998          return false;
4999        if (!(other_ instanceof ExampleScenario))
5000          return false;
5001        ExampleScenario o = (ExampleScenario) other_;
5002        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
5003           && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true)
5004           && compareValues(publisher, o.publisher, true) && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true)
5005           && compareValues(workflow, o.workflow, true);
5006      }
5007
5008      public boolean isEmpty() {
5009        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
5010          , name, status, experimental, date, publisher, contact, useContext, jurisdiction
5011          , purpose, copyright, actor, instance, process, workflow);
5012      }
5013
5014  @Override
5015  public ResourceType getResourceType() {
5016    return ResourceType.ExampleScenario;
5017   }
5018
5019 /**
5020   * Search parameter: <b>context-quantity</b>
5021   * <p>
5022   * Description: <b>A quantity- or range-valued use context assigned to the example scenario</b><br>
5023   * Type: <b>quantity</b><br>
5024   * Path: <b>(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)</b><br>
5025   * </p>
5026   */
5027  @SearchParamDefinition(name="context-quantity", path="(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the example scenario", type="quantity" )
5028  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
5029 /**
5030   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
5031   * <p>
5032   * Description: <b>A quantity- or range-valued use context assigned to the example scenario</b><br>
5033   * Type: <b>quantity</b><br>
5034   * Path: <b>(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)</b><br>
5035   * </p>
5036   */
5037  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
5038
5039 /**
5040   * Search parameter: <b>context-type-quantity</b>
5041   * <p>
5042   * Description: <b>A use context type and quantity- or range-based value assigned to the example scenario</b><br>
5043   * Type: <b>composite</b><br>
5044   * Path: <b>ExampleScenario.useContext</b><br>
5045   * </p>
5046   */
5047  @SearchParamDefinition(name="context-type-quantity", path="ExampleScenario.useContext", description="A use context type and quantity- or range-based value assigned to the example scenario", type="composite", compositeOf={"context-type", "context-quantity"} )
5048  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
5049 /**
5050   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
5051   * <p>
5052   * Description: <b>A use context type and quantity- or range-based value assigned to the example scenario</b><br>
5053   * Type: <b>composite</b><br>
5054   * Path: <b>ExampleScenario.useContext</b><br>
5055   * </p>
5056   */
5057  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
5058
5059 /**
5060   * Search parameter: <b>context-type-value</b>
5061   * <p>
5062   * Description: <b>A use context type and value assigned to the example scenario</b><br>
5063   * Type: <b>composite</b><br>
5064   * Path: <b>ExampleScenario.useContext</b><br>
5065   * </p>
5066   */
5067  @SearchParamDefinition(name="context-type-value", path="ExampleScenario.useContext", description="A use context type and value assigned to the example scenario", type="composite", compositeOf={"context-type", "context"} )
5068  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
5069 /**
5070   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
5071   * <p>
5072   * Description: <b>A use context type and value assigned to the example scenario</b><br>
5073   * Type: <b>composite</b><br>
5074   * Path: <b>ExampleScenario.useContext</b><br>
5075   * </p>
5076   */
5077  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
5078
5079 /**
5080   * Search parameter: <b>context-type</b>
5081   * <p>
5082   * Description: <b>A type of use context assigned to the example scenario</b><br>
5083   * Type: <b>token</b><br>
5084   * Path: <b>ExampleScenario.useContext.code</b><br>
5085   * </p>
5086   */
5087  @SearchParamDefinition(name="context-type", path="ExampleScenario.useContext.code", description="A type of use context assigned to the example scenario", type="token" )
5088  public static final String SP_CONTEXT_TYPE = "context-type";
5089 /**
5090   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
5091   * <p>
5092   * Description: <b>A type of use context assigned to the example scenario</b><br>
5093   * Type: <b>token</b><br>
5094   * Path: <b>ExampleScenario.useContext.code</b><br>
5095   * </p>
5096   */
5097  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
5098
5099 /**
5100   * Search parameter: <b>context</b>
5101   * <p>
5102   * Description: <b>A use context assigned to the example scenario</b><br>
5103   * Type: <b>token</b><br>
5104   * Path: <b>(ExampleScenario.useContext.value as CodeableConcept)</b><br>
5105   * </p>
5106   */
5107  @SearchParamDefinition(name="context", path="(ExampleScenario.useContext.value as CodeableConcept)", description="A use context assigned to the example scenario", type="token" )
5108  public static final String SP_CONTEXT = "context";
5109 /**
5110   * <b>Fluent Client</b> search parameter constant for <b>context</b>
5111   * <p>
5112   * Description: <b>A use context assigned to the example scenario</b><br>
5113   * Type: <b>token</b><br>
5114   * Path: <b>(ExampleScenario.useContext.value as CodeableConcept)</b><br>
5115   * </p>
5116   */
5117  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
5118
5119 /**
5120   * Search parameter: <b>date</b>
5121   * <p>
5122   * Description: <b>The example scenario publication date</b><br>
5123   * Type: <b>date</b><br>
5124   * Path: <b>ExampleScenario.date</b><br>
5125   * </p>
5126   */
5127  @SearchParamDefinition(name="date", path="ExampleScenario.date", description="The example scenario publication date", type="date" )
5128  public static final String SP_DATE = "date";
5129 /**
5130   * <b>Fluent Client</b> search parameter constant for <b>date</b>
5131   * <p>
5132   * Description: <b>The example scenario publication date</b><br>
5133   * Type: <b>date</b><br>
5134   * Path: <b>ExampleScenario.date</b><br>
5135   * </p>
5136   */
5137  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
5138
5139 /**
5140   * Search parameter: <b>identifier</b>
5141   * <p>
5142   * Description: <b>External identifier for the example scenario</b><br>
5143   * Type: <b>token</b><br>
5144   * Path: <b>ExampleScenario.identifier</b><br>
5145   * </p>
5146   */
5147  @SearchParamDefinition(name="identifier", path="ExampleScenario.identifier", description="External identifier for the example scenario", type="token" )
5148  public static final String SP_IDENTIFIER = "identifier";
5149 /**
5150   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5151   * <p>
5152   * Description: <b>External identifier for the example scenario</b><br>
5153   * Type: <b>token</b><br>
5154   * Path: <b>ExampleScenario.identifier</b><br>
5155   * </p>
5156   */
5157  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5158
5159 /**
5160   * Search parameter: <b>jurisdiction</b>
5161   * <p>
5162   * Description: <b>Intended jurisdiction for the example scenario</b><br>
5163   * Type: <b>token</b><br>
5164   * Path: <b>ExampleScenario.jurisdiction</b><br>
5165   * </p>
5166   */
5167  @SearchParamDefinition(name="jurisdiction", path="ExampleScenario.jurisdiction", description="Intended jurisdiction for the example scenario", type="token" )
5168  public static final String SP_JURISDICTION = "jurisdiction";
5169 /**
5170   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
5171   * <p>
5172   * Description: <b>Intended jurisdiction for the example scenario</b><br>
5173   * Type: <b>token</b><br>
5174   * Path: <b>ExampleScenario.jurisdiction</b><br>
5175   * </p>
5176   */
5177  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
5178
5179 /**
5180   * Search parameter: <b>name</b>
5181   * <p>
5182   * Description: <b>Computationally friendly name of the example scenario</b><br>
5183   * Type: <b>string</b><br>
5184   * Path: <b>ExampleScenario.name</b><br>
5185   * </p>
5186   */
5187  @SearchParamDefinition(name="name", path="ExampleScenario.name", description="Computationally friendly name of the example scenario", type="string" )
5188  public static final String SP_NAME = "name";
5189 /**
5190   * <b>Fluent Client</b> search parameter constant for <b>name</b>
5191   * <p>
5192   * Description: <b>Computationally friendly name of the example scenario</b><br>
5193   * Type: <b>string</b><br>
5194   * Path: <b>ExampleScenario.name</b><br>
5195   * </p>
5196   */
5197  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
5198
5199 /**
5200   * Search parameter: <b>publisher</b>
5201   * <p>
5202   * Description: <b>Name of the publisher of the example scenario</b><br>
5203   * Type: <b>string</b><br>
5204   * Path: <b>ExampleScenario.publisher</b><br>
5205   * </p>
5206   */
5207  @SearchParamDefinition(name="publisher", path="ExampleScenario.publisher", description="Name of the publisher of the example scenario", type="string" )
5208  public static final String SP_PUBLISHER = "publisher";
5209 /**
5210   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
5211   * <p>
5212   * Description: <b>Name of the publisher of the example scenario</b><br>
5213   * Type: <b>string</b><br>
5214   * Path: <b>ExampleScenario.publisher</b><br>
5215   * </p>
5216   */
5217  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
5218
5219 /**
5220   * Search parameter: <b>status</b>
5221   * <p>
5222   * Description: <b>The current status of the example scenario</b><br>
5223   * Type: <b>token</b><br>
5224   * Path: <b>ExampleScenario.status</b><br>
5225   * </p>
5226   */
5227  @SearchParamDefinition(name="status", path="ExampleScenario.status", description="The current status of the example scenario", type="token" )
5228  public static final String SP_STATUS = "status";
5229 /**
5230   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5231   * <p>
5232   * Description: <b>The current status of the example scenario</b><br>
5233   * Type: <b>token</b><br>
5234   * Path: <b>ExampleScenario.status</b><br>
5235   * </p>
5236   */
5237  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5238
5239 /**
5240   * Search parameter: <b>url</b>
5241   * <p>
5242   * Description: <b>The uri that identifies the example scenario</b><br>
5243   * Type: <b>uri</b><br>
5244   * Path: <b>ExampleScenario.url</b><br>
5245   * </p>
5246   */
5247  @SearchParamDefinition(name="url", path="ExampleScenario.url", description="The uri that identifies the example scenario", type="uri" )
5248  public static final String SP_URL = "url";
5249 /**
5250   * <b>Fluent Client</b> search parameter constant for <b>url</b>
5251   * <p>
5252   * Description: <b>The uri that identifies the example scenario</b><br>
5253   * Type: <b>uri</b><br>
5254   * Path: <b>ExampleScenario.url</b><br>
5255   * </p>
5256   */
5257  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
5258
5259 /**
5260   * Search parameter: <b>version</b>
5261   * <p>
5262   * Description: <b>The business version of the example scenario</b><br>
5263   * Type: <b>token</b><br>
5264   * Path: <b>ExampleScenario.version</b><br>
5265   * </p>
5266   */
5267  @SearchParamDefinition(name="version", path="ExampleScenario.version", description="The business version of the example scenario", type="token" )
5268  public static final String SP_VERSION = "version";
5269 /**
5270   * <b>Fluent Client</b> search parameter constant for <b>version</b>
5271   * <p>
5272   * Description: <b>The business version of the example scenario</b><br>
5273   * Type: <b>token</b><br>
5274   * Path: <b>ExampleScenario.version</b><br>
5275   * </p>
5276   */
5277  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
5278
5279
5280}
5281