001package org.hl7.fhir.r4b.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, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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 = "resourceType", 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 resourceType;
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 = -1928273130L;
594
595    /**
596     * Constructor
597     */
598    public ExampleScenarioInstanceComponent() {
599      super();
600    }
601
602    /**
603     * Constructor
604     */
605    public ExampleScenarioInstanceComponent(String resourceId, String resourceType) {
606      super();
607      this.setResourceId(resourceId);
608      this.setResourceType(resourceType);
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 #resourceType} (The type of the resource.). This is the underlying object with id, value and extensions. The accessor "getResourceType" gives direct access to the value
658     */
659    public CodeType getResourceTypeElement() { 
660      if (this.resourceType == null)
661        if (Configuration.errorOnAutoCreate())
662          throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.resourceType");
663        else if (Configuration.doAutoCreate())
664          this.resourceType = new CodeType(); // bb
665      return this.resourceType;
666    }
667
668    public boolean hasResourceTypeElement() { 
669      return this.resourceType != null && !this.resourceType.isEmpty();
670    }
671
672    public boolean hasResourceType() { 
673      return this.resourceType != null && !this.resourceType.isEmpty();
674    }
675
676    /**
677     * @param value {@link #resourceType} (The type of the resource.). This is the underlying object with id, value and extensions. The accessor "getResourceType" gives direct access to the value
678     */
679    public ExampleScenarioInstanceComponent setResourceTypeElement(CodeType value) { 
680      this.resourceType = value;
681      return this;
682    }
683
684    /**
685     * @return The type of the resource.
686     */
687    public String getResourceType() { 
688      return this.resourceType == null ? null : this.resourceType.getValue();
689    }
690
691    /**
692     * @param value The type of the resource.
693     */
694    public ExampleScenarioInstanceComponent setResourceType(String value) { 
695      if (this.resourceType == null)
696        this.resourceType = new CodeType();
697      this.resourceType.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("resourceType", "code", "The type of the resource.", 0, 1, resourceType));
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 -384364440: /*resourceType*/  return new Property("resourceType", "code", "The type of the resource.", 0, 1, resourceType);
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 -384364440: /*resourceType*/ return this.resourceType == null ? new Base[0] : new Base[] {this.resourceType}; // 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 -384364440: // resourceType
950        this.resourceType = 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("resourceType")) {
974        this.resourceType = 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 -384364440:  return getResourceTypeElement();
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 -384364440: /*resourceType*/ 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("resourceType")) {
1022        throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.instance.resourceType");
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.resourceType = resourceType == null ? null : resourceType.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(resourceType, o.resourceType, true)
1072          && compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(version, o.version, true)
1073          && compareDeep(containedInstance, o.containedInstance, true);
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(resourceType, o.resourceType, true)
1084          && compareValues(name, o.name, true) && compareValues(description, o.description, true);
1085    }
1086
1087    public boolean isEmpty() {
1088      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(resourceId, resourceType, name
1089          , description, 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   * 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.
3637   */
3638  @Child(name = "copyright", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=false)
3639  @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." )
3640  protected MarkdownType copyright;
3641
3642  /**
3643   * 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.
3644   */
3645  @Child(name = "purpose", type = {MarkdownType.class}, order=12, min=0, max=1, modifier=false, summary=false)
3646  @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." )
3647  protected MarkdownType purpose;
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 = 771935313L;
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 #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
4243   */
4244  public MarkdownType getCopyrightElement() { 
4245    if (this.copyright == null)
4246      if (Configuration.errorOnAutoCreate())
4247        throw new Error("Attempt to auto-create ExampleScenario.copyright");
4248      else if (Configuration.doAutoCreate())
4249        this.copyright = new MarkdownType(); // bb
4250    return this.copyright;
4251  }
4252
4253  public boolean hasCopyrightElement() { 
4254    return this.copyright != null && !this.copyright.isEmpty();
4255  }
4256
4257  public boolean hasCopyright() { 
4258    return this.copyright != null && !this.copyright.isEmpty();
4259  }
4260
4261  /**
4262   * @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
4263   */
4264  public ExampleScenario setCopyrightElement(MarkdownType value) { 
4265    this.copyright = value;
4266    return this;
4267  }
4268
4269  /**
4270   * @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.
4271   */
4272  public String getCopyright() { 
4273    return this.copyright == null ? null : this.copyright.getValue();
4274  }
4275
4276  /**
4277   * @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.
4278   */
4279  public ExampleScenario setCopyright(String value) { 
4280    if (value == null)
4281      this.copyright = null;
4282    else {
4283      if (this.copyright == null)
4284        this.copyright = new MarkdownType();
4285      this.copyright.setValue(value);
4286    }
4287    return this;
4288  }
4289
4290  /**
4291   * @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
4292   */
4293  public MarkdownType getPurposeElement() { 
4294    if (this.purpose == null)
4295      if (Configuration.errorOnAutoCreate())
4296        throw new Error("Attempt to auto-create ExampleScenario.purpose");
4297      else if (Configuration.doAutoCreate())
4298        this.purpose = new MarkdownType(); // bb
4299    return this.purpose;
4300  }
4301
4302  public boolean hasPurposeElement() { 
4303    return this.purpose != null && !this.purpose.isEmpty();
4304  }
4305
4306  public boolean hasPurpose() { 
4307    return this.purpose != null && !this.purpose.isEmpty();
4308  }
4309
4310  /**
4311   * @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
4312   */
4313  public ExampleScenario setPurposeElement(MarkdownType value) { 
4314    this.purpose = value;
4315    return this;
4316  }
4317
4318  /**
4319   * @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.
4320   */
4321  public String getPurpose() { 
4322    return this.purpose == null ? null : this.purpose.getValue();
4323  }
4324
4325  /**
4326   * @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.
4327   */
4328  public ExampleScenario setPurpose(String value) { 
4329    if (value == null)
4330      this.purpose = null;
4331    else {
4332      if (this.purpose == null)
4333        this.purpose = new MarkdownType();
4334      this.purpose.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  protected void listChildren(List<Property> children) {
4560    super.listChildren(children);
4561    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));
4562    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));
4563    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));
4564    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));
4565    children.add(new Property("status", "code", "The status of this example scenario. Enables tracking the life-cycle of the content.", 0, 1, status));
4566    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));
4567    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));
4568    children.add(new Property("publisher", "string", "The name of the organization or individual that published the example scenario.", 0, 1, publisher));
4569    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));
4570    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));
4571    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));
4572    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));
4573    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));
4574    children.add(new Property("actor", "", "Actor participating in the resource.", 0, java.lang.Integer.MAX_VALUE, actor));
4575    children.add(new Property("instance", "", "Each resource and each version that is present in the workflow.", 0, java.lang.Integer.MAX_VALUE, instance));
4576    children.add(new Property("process", "", "Each major process - a group of operations.", 0, java.lang.Integer.MAX_VALUE, process));
4577    children.add(new Property("workflow", "canonical(ExampleScenario)", "Another nested workflow.", 0, java.lang.Integer.MAX_VALUE, workflow));
4578  }
4579
4580  @Override
4581  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4582    switch (_hash) {
4583    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);
4584    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);
4585    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);
4586    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);
4587    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);
4588    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);
4589    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);
4590    case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the example scenario.", 0, 1, publisher);
4591    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);
4592    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);
4593    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);
4594    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);
4595    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);
4596    case 92645877: /*actor*/  return new Property("actor", "", "Actor participating in the resource.", 0, java.lang.Integer.MAX_VALUE, actor);
4597    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);
4598    case -309518737: /*process*/  return new Property("process", "", "Each major process - a group of operations.", 0, java.lang.Integer.MAX_VALUE, process);
4599    case 35379135: /*workflow*/  return new Property("workflow", "canonical(ExampleScenario)", "Another nested workflow.", 0, java.lang.Integer.MAX_VALUE, workflow);
4600    default: return super.getNamedProperty(_hash, _name, _checkValid);
4601    }
4602
4603  }
4604
4605  @Override
4606  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4607    switch (hash) {
4608    case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
4609    case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4610    case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4611    case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
4612    case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
4613    case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
4614    case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4615    case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
4616    case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
4617    case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
4618    case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
4619    case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
4620    case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
4621    case 92645877: /*actor*/ return this.actor == null ? new Base[0] : this.actor.toArray(new Base[this.actor.size()]); // ExampleScenarioActorComponent
4622    case 555127957: /*instance*/ return this.instance == null ? new Base[0] : this.instance.toArray(new Base[this.instance.size()]); // ExampleScenarioInstanceComponent
4623    case -309518737: /*process*/ return this.process == null ? new Base[0] : this.process.toArray(new Base[this.process.size()]); // ExampleScenarioProcessComponent
4624    case 35379135: /*workflow*/ return this.workflow == null ? new Base[0] : this.workflow.toArray(new Base[this.workflow.size()]); // CanonicalType
4625    default: return super.getProperty(hash, name, checkValid);
4626    }
4627
4628  }
4629
4630  @Override
4631  public Base setProperty(int hash, String name, Base value) throws FHIRException {
4632    switch (hash) {
4633    case 116079: // url
4634      this.url = TypeConvertor.castToUri(value); // UriType
4635      return value;
4636    case -1618432855: // identifier
4637      this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4638      return value;
4639    case 351608024: // version
4640      this.version = TypeConvertor.castToString(value); // StringType
4641      return value;
4642    case 3373707: // name
4643      this.name = TypeConvertor.castToString(value); // StringType
4644      return value;
4645    case -892481550: // status
4646      value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4647      this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4648      return value;
4649    case -404562712: // experimental
4650      this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4651      return value;
4652    case 3076014: // date
4653      this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4654      return value;
4655    case 1447404028: // publisher
4656      this.publisher = TypeConvertor.castToString(value); // StringType
4657      return value;
4658    case 951526432: // contact
4659      this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4660      return value;
4661    case -669707736: // useContext
4662      this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
4663      return value;
4664    case -507075711: // jurisdiction
4665      this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4666      return value;
4667    case 1522889671: // copyright
4668      this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4669      return value;
4670    case -220463842: // purpose
4671      this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4672      return value;
4673    case 92645877: // actor
4674      this.getActor().add((ExampleScenarioActorComponent) value); // ExampleScenarioActorComponent
4675      return value;
4676    case 555127957: // instance
4677      this.getInstance().add((ExampleScenarioInstanceComponent) value); // ExampleScenarioInstanceComponent
4678      return value;
4679    case -309518737: // process
4680      this.getProcess().add((ExampleScenarioProcessComponent) value); // ExampleScenarioProcessComponent
4681      return value;
4682    case 35379135: // workflow
4683      this.getWorkflow().add(TypeConvertor.castToCanonical(value)); // CanonicalType
4684      return value;
4685    default: return super.setProperty(hash, name, value);
4686    }
4687
4688  }
4689
4690  @Override
4691  public Base setProperty(String name, Base value) throws FHIRException {
4692    if (name.equals("url")) {
4693      this.url = TypeConvertor.castToUri(value); // UriType
4694    } else if (name.equals("identifier")) {
4695      this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4696    } else if (name.equals("version")) {
4697      this.version = TypeConvertor.castToString(value); // StringType
4698    } else if (name.equals("name")) {
4699      this.name = TypeConvertor.castToString(value); // StringType
4700    } else if (name.equals("status")) {
4701      value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4702      this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4703    } else if (name.equals("experimental")) {
4704      this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4705    } else if (name.equals("date")) {
4706      this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4707    } else if (name.equals("publisher")) {
4708      this.publisher = TypeConvertor.castToString(value); // StringType
4709    } else if (name.equals("contact")) {
4710      this.getContact().add(TypeConvertor.castToContactDetail(value));
4711    } else if (name.equals("useContext")) {
4712      this.getUseContext().add(TypeConvertor.castToUsageContext(value));
4713    } else if (name.equals("jurisdiction")) {
4714      this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
4715    } else if (name.equals("copyright")) {
4716      this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4717    } else if (name.equals("purpose")) {
4718      this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4719    } else if (name.equals("actor")) {
4720      this.getActor().add((ExampleScenarioActorComponent) value);
4721    } else if (name.equals("instance")) {
4722      this.getInstance().add((ExampleScenarioInstanceComponent) value);
4723    } else if (name.equals("process")) {
4724      this.getProcess().add((ExampleScenarioProcessComponent) value);
4725    } else if (name.equals("workflow")) {
4726      this.getWorkflow().add(TypeConvertor.castToCanonical(value));
4727    } else
4728      return super.setProperty(name, value);
4729    return value;
4730  }
4731
4732  @Override
4733  public Base makeProperty(int hash, String name) throws FHIRException {
4734    switch (hash) {
4735    case 116079:  return getUrlElement();
4736    case -1618432855:  return addIdentifier(); 
4737    case 351608024:  return getVersionElement();
4738    case 3373707:  return getNameElement();
4739    case -892481550:  return getStatusElement();
4740    case -404562712:  return getExperimentalElement();
4741    case 3076014:  return getDateElement();
4742    case 1447404028:  return getPublisherElement();
4743    case 951526432:  return addContact(); 
4744    case -669707736:  return addUseContext(); 
4745    case -507075711:  return addJurisdiction(); 
4746    case 1522889671:  return getCopyrightElement();
4747    case -220463842:  return getPurposeElement();
4748    case 92645877:  return addActor(); 
4749    case 555127957:  return addInstance(); 
4750    case -309518737:  return addProcess(); 
4751    case 35379135:  return addWorkflowElement();
4752    default: return super.makeProperty(hash, name);
4753    }
4754
4755  }
4756
4757  @Override
4758  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4759    switch (hash) {
4760    case 116079: /*url*/ return new String[] {"uri"};
4761    case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4762    case 351608024: /*version*/ return new String[] {"string"};
4763    case 3373707: /*name*/ return new String[] {"string"};
4764    case -892481550: /*status*/ return new String[] {"code"};
4765    case -404562712: /*experimental*/ return new String[] {"boolean"};
4766    case 3076014: /*date*/ return new String[] {"dateTime"};
4767    case 1447404028: /*publisher*/ return new String[] {"string"};
4768    case 951526432: /*contact*/ return new String[] {"ContactDetail"};
4769    case -669707736: /*useContext*/ return new String[] {"UsageContext"};
4770    case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
4771    case 1522889671: /*copyright*/ return new String[] {"markdown"};
4772    case -220463842: /*purpose*/ return new String[] {"markdown"};
4773    case 92645877: /*actor*/ return new String[] {};
4774    case 555127957: /*instance*/ return new String[] {};
4775    case -309518737: /*process*/ return new String[] {};
4776    case 35379135: /*workflow*/ return new String[] {"canonical"};
4777    default: return super.getTypesForProperty(hash, name);
4778    }
4779
4780  }
4781
4782  @Override
4783  public Base addChild(String name) throws FHIRException {
4784    if (name.equals("url")) {
4785      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.url");
4786    }
4787    else if (name.equals("identifier")) {
4788      return addIdentifier();
4789    }
4790    else if (name.equals("version")) {
4791      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.version");
4792    }
4793    else if (name.equals("name")) {
4794      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.name");
4795    }
4796    else if (name.equals("status")) {
4797      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.status");
4798    }
4799    else if (name.equals("experimental")) {
4800      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.experimental");
4801    }
4802    else if (name.equals("date")) {
4803      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.date");
4804    }
4805    else if (name.equals("publisher")) {
4806      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.publisher");
4807    }
4808    else if (name.equals("contact")) {
4809      return addContact();
4810    }
4811    else if (name.equals("useContext")) {
4812      return addUseContext();
4813    }
4814    else if (name.equals("jurisdiction")) {
4815      return addJurisdiction();
4816    }
4817    else if (name.equals("copyright")) {
4818      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.copyright");
4819    }
4820    else if (name.equals("purpose")) {
4821      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.purpose");
4822    }
4823    else if (name.equals("actor")) {
4824      return addActor();
4825    }
4826    else if (name.equals("instance")) {
4827      return addInstance();
4828    }
4829    else if (name.equals("process")) {
4830      return addProcess();
4831    }
4832    else if (name.equals("workflow")) {
4833      throw new FHIRException("Cannot call addChild on a primitive type ExampleScenario.workflow");
4834    }
4835    else
4836      return super.addChild(name);
4837  }
4838
4839  public String fhirType() {
4840    return "ExampleScenario";
4841
4842  }
4843
4844  public ExampleScenario copy() {
4845    ExampleScenario dst = new ExampleScenario();
4846    copyValues(dst);
4847    return dst;
4848  }
4849
4850  public void copyValues(ExampleScenario dst) {
4851    super.copyValues(dst);
4852    dst.url = url == null ? null : url.copy();
4853    if (identifier != null) {
4854      dst.identifier = new ArrayList<Identifier>();
4855      for (Identifier i : identifier)
4856        dst.identifier.add(i.copy());
4857    };
4858    dst.version = version == null ? null : version.copy();
4859    dst.name = name == null ? null : name.copy();
4860    dst.status = status == null ? null : status.copy();
4861    dst.experimental = experimental == null ? null : experimental.copy();
4862    dst.date = date == null ? null : date.copy();
4863    dst.publisher = publisher == null ? null : publisher.copy();
4864    if (contact != null) {
4865      dst.contact = new ArrayList<ContactDetail>();
4866      for (ContactDetail i : contact)
4867        dst.contact.add(i.copy());
4868    };
4869    if (useContext != null) {
4870      dst.useContext = new ArrayList<UsageContext>();
4871      for (UsageContext i : useContext)
4872        dst.useContext.add(i.copy());
4873    };
4874    if (jurisdiction != null) {
4875      dst.jurisdiction = new ArrayList<CodeableConcept>();
4876      for (CodeableConcept i : jurisdiction)
4877        dst.jurisdiction.add(i.copy());
4878    };
4879    dst.copyright = copyright == null ? null : copyright.copy();
4880    dst.purpose = purpose == null ? null : purpose.copy();
4881    if (actor != null) {
4882      dst.actor = new ArrayList<ExampleScenarioActorComponent>();
4883      for (ExampleScenarioActorComponent i : actor)
4884        dst.actor.add(i.copy());
4885    };
4886    if (instance != null) {
4887      dst.instance = new ArrayList<ExampleScenarioInstanceComponent>();
4888      for (ExampleScenarioInstanceComponent i : instance)
4889        dst.instance.add(i.copy());
4890    };
4891    if (process != null) {
4892      dst.process = new ArrayList<ExampleScenarioProcessComponent>();
4893      for (ExampleScenarioProcessComponent i : process)
4894        dst.process.add(i.copy());
4895    };
4896    if (workflow != null) {
4897      dst.workflow = new ArrayList<CanonicalType>();
4898      for (CanonicalType i : workflow)
4899        dst.workflow.add(i.copy());
4900    };
4901  }
4902
4903  protected ExampleScenario typedCopy() {
4904    return copy();
4905  }
4906
4907  @Override
4908  public boolean equalsDeep(Base other_) {
4909    if (!super.equalsDeep(other_))
4910      return false;
4911    if (!(other_ instanceof ExampleScenario))
4912      return false;
4913    ExampleScenario o = (ExampleScenario) other_;
4914    return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
4915        && compareDeep(name, o.name, true) && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true)
4916        && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true)
4917        && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
4918        && compareDeep(copyright, o.copyright, true) && compareDeep(purpose, o.purpose, true) && compareDeep(actor, o.actor, true)
4919        && compareDeep(instance, o.instance, true) && compareDeep(process, o.process, true) && compareDeep(workflow, o.workflow, true)
4920        ;
4921  }
4922
4923  @Override
4924  public boolean equalsShallow(Base other_) {
4925    if (!super.equalsShallow(other_))
4926      return false;
4927    if (!(other_ instanceof ExampleScenario))
4928      return false;
4929    ExampleScenario o = (ExampleScenario) other_;
4930    return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
4931        && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true)
4932        && compareValues(publisher, o.publisher, true) && compareValues(copyright, o.copyright, true) && compareValues(purpose, o.purpose, true)
4933        && compareValues(workflow, o.workflow, true);
4934  }
4935
4936  public boolean isEmpty() {
4937    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
4938        , name, status, experimental, date, publisher, contact, useContext, jurisdiction
4939        , copyright, purpose, actor, instance, process, workflow);
4940  }
4941
4942  @Override
4943  public ResourceType getResourceType() {
4944    return ResourceType.ExampleScenario;
4945  }
4946
4947  /**
4948   * Search parameter: <b>context-quantity</b>
4949   * <p>
4950   * Description: <b>A quantity- or range-valued use context assigned to the example scenario</b><br>
4951   * Type: <b>quantity</b><br>
4952   * Path: <b>(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)</b><br>
4953   * </p>
4954   */
4955  @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" )
4956  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
4957  /**
4958   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
4959   * <p>
4960   * Description: <b>A quantity- or range-valued use context assigned to the example scenario</b><br>
4961   * Type: <b>quantity</b><br>
4962   * Path: <b>(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)</b><br>
4963   * </p>
4964   */
4965  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
4966
4967  /**
4968   * Search parameter: <b>context-type-quantity</b>
4969   * <p>
4970   * Description: <b>A use context type and quantity- or range-based value assigned to the example scenario</b><br>
4971   * Type: <b>composite</b><br>
4972   * Path: <b>ExampleScenario.useContext</b><br>
4973   * </p>
4974   */
4975  @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"} )
4976  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
4977  /**
4978   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
4979   * <p>
4980   * Description: <b>A use context type and quantity- or range-based value assigned to the example scenario</b><br>
4981   * Type: <b>composite</b><br>
4982   * Path: <b>ExampleScenario.useContext</b><br>
4983   * </p>
4984   */
4985  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);
4986
4987  /**
4988   * Search parameter: <b>context-type-value</b>
4989   * <p>
4990   * Description: <b>A use context type and value assigned to the example scenario</b><br>
4991   * Type: <b>composite</b><br>
4992   * Path: <b>ExampleScenario.useContext</b><br>
4993   * </p>
4994   */
4995  @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"} )
4996  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4997  /**
4998   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4999   * <p>
5000   * Description: <b>A use context type and value assigned to the example scenario</b><br>
5001   * Type: <b>composite</b><br>
5002   * Path: <b>ExampleScenario.useContext</b><br>
5003   * </p>
5004   */
5005  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);
5006
5007  /**
5008   * Search parameter: <b>context-type</b>
5009   * <p>
5010   * Description: <b>A type of use context assigned to the example scenario</b><br>
5011   * Type: <b>token</b><br>
5012   * Path: <b>ExampleScenario.useContext.code</b><br>
5013   * </p>
5014   */
5015  @SearchParamDefinition(name="context-type", path="ExampleScenario.useContext.code", description="A type of use context assigned to the example scenario", type="token" )
5016  public static final String SP_CONTEXT_TYPE = "context-type";
5017  /**
5018   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
5019   * <p>
5020   * Description: <b>A type of use context assigned to the example scenario</b><br>
5021   * Type: <b>token</b><br>
5022   * Path: <b>ExampleScenario.useContext.code</b><br>
5023   * </p>
5024   */
5025  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
5026
5027  /**
5028   * Search parameter: <b>context</b>
5029   * <p>
5030   * Description: <b>A use context assigned to the example scenario</b><br>
5031   * Type: <b>token</b><br>
5032   * Path: <b>(ExampleScenario.useContext.value as CodeableConcept)</b><br>
5033   * </p>
5034   */
5035  @SearchParamDefinition(name="context", path="(ExampleScenario.useContext.value as CodeableConcept)", description="A use context assigned to the example scenario", type="token" )
5036  public static final String SP_CONTEXT = "context";
5037  /**
5038   * <b>Fluent Client</b> search parameter constant for <b>context</b>
5039   * <p>
5040   * Description: <b>A use context assigned to the example scenario</b><br>
5041   * Type: <b>token</b><br>
5042   * Path: <b>(ExampleScenario.useContext.value as CodeableConcept)</b><br>
5043   * </p>
5044   */
5045  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
5046
5047  /**
5048   * Search parameter: <b>date</b>
5049   * <p>
5050   * Description: <b>The example scenario publication date</b><br>
5051   * Type: <b>date</b><br>
5052   * Path: <b>ExampleScenario.date</b><br>
5053   * </p>
5054   */
5055  @SearchParamDefinition(name="date", path="ExampleScenario.date", description="The example scenario publication date", type="date" )
5056  public static final String SP_DATE = "date";
5057  /**
5058   * <b>Fluent Client</b> search parameter constant for <b>date</b>
5059   * <p>
5060   * Description: <b>The example scenario publication date</b><br>
5061   * Type: <b>date</b><br>
5062   * Path: <b>ExampleScenario.date</b><br>
5063   * </p>
5064   */
5065  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
5066
5067  /**
5068   * Search parameter: <b>identifier</b>
5069   * <p>
5070   * Description: <b>External identifier for the example scenario</b><br>
5071   * Type: <b>token</b><br>
5072   * Path: <b>ExampleScenario.identifier</b><br>
5073   * </p>
5074   */
5075  @SearchParamDefinition(name="identifier", path="ExampleScenario.identifier", description="External identifier for the example scenario", type="token" )
5076  public static final String SP_IDENTIFIER = "identifier";
5077  /**
5078   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5079   * <p>
5080   * Description: <b>External identifier for the example scenario</b><br>
5081   * Type: <b>token</b><br>
5082   * Path: <b>ExampleScenario.identifier</b><br>
5083   * </p>
5084   */
5085  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5086
5087  /**
5088   * Search parameter: <b>jurisdiction</b>
5089   * <p>
5090   * Description: <b>Intended jurisdiction for the example scenario</b><br>
5091   * Type: <b>token</b><br>
5092   * Path: <b>ExampleScenario.jurisdiction</b><br>
5093   * </p>
5094   */
5095  @SearchParamDefinition(name="jurisdiction", path="ExampleScenario.jurisdiction", description="Intended jurisdiction for the example scenario", type="token" )
5096  public static final String SP_JURISDICTION = "jurisdiction";
5097  /**
5098   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
5099   * <p>
5100   * Description: <b>Intended jurisdiction for the example scenario</b><br>
5101   * Type: <b>token</b><br>
5102   * Path: <b>ExampleScenario.jurisdiction</b><br>
5103   * </p>
5104   */
5105  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
5106
5107  /**
5108   * Search parameter: <b>name</b>
5109   * <p>
5110   * Description: <b>Computationally friendly name of the example scenario</b><br>
5111   * Type: <b>string</b><br>
5112   * Path: <b>ExampleScenario.name</b><br>
5113   * </p>
5114   */
5115  @SearchParamDefinition(name="name", path="ExampleScenario.name", description="Computationally friendly name of the example scenario", type="string" )
5116  public static final String SP_NAME = "name";
5117  /**
5118   * <b>Fluent Client</b> search parameter constant for <b>name</b>
5119   * <p>
5120   * Description: <b>Computationally friendly name of the example scenario</b><br>
5121   * Type: <b>string</b><br>
5122   * Path: <b>ExampleScenario.name</b><br>
5123   * </p>
5124   */
5125  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
5126
5127  /**
5128   * Search parameter: <b>publisher</b>
5129   * <p>
5130   * Description: <b>Name of the publisher of the example scenario</b><br>
5131   * Type: <b>string</b><br>
5132   * Path: <b>ExampleScenario.publisher</b><br>
5133   * </p>
5134   */
5135  @SearchParamDefinition(name="publisher", path="ExampleScenario.publisher", description="Name of the publisher of the example scenario", type="string" )
5136  public static final String SP_PUBLISHER = "publisher";
5137  /**
5138   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
5139   * <p>
5140   * Description: <b>Name of the publisher of the example scenario</b><br>
5141   * Type: <b>string</b><br>
5142   * Path: <b>ExampleScenario.publisher</b><br>
5143   * </p>
5144   */
5145  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
5146
5147  /**
5148   * Search parameter: <b>status</b>
5149   * <p>
5150   * Description: <b>The current status of the example scenario</b><br>
5151   * Type: <b>token</b><br>
5152   * Path: <b>ExampleScenario.status</b><br>
5153   * </p>
5154   */
5155  @SearchParamDefinition(name="status", path="ExampleScenario.status", description="The current status of the example scenario", type="token" )
5156  public static final String SP_STATUS = "status";
5157  /**
5158   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5159   * <p>
5160   * Description: <b>The current status of the example scenario</b><br>
5161   * Type: <b>token</b><br>
5162   * Path: <b>ExampleScenario.status</b><br>
5163   * </p>
5164   */
5165  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5166
5167  /**
5168   * Search parameter: <b>url</b>
5169   * <p>
5170   * Description: <b>The uri that identifies the example scenario</b><br>
5171   * Type: <b>uri</b><br>
5172   * Path: <b>ExampleScenario.url</b><br>
5173   * </p>
5174   */
5175  @SearchParamDefinition(name="url", path="ExampleScenario.url", description="The uri that identifies the example scenario", type="uri" )
5176  public static final String SP_URL = "url";
5177  /**
5178   * <b>Fluent Client</b> search parameter constant for <b>url</b>
5179   * <p>
5180   * Description: <b>The uri that identifies the example scenario</b><br>
5181   * Type: <b>uri</b><br>
5182   * Path: <b>ExampleScenario.url</b><br>
5183   * </p>
5184   */
5185  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
5186
5187  /**
5188   * Search parameter: <b>version</b>
5189   * <p>
5190   * Description: <b>The business version of the example scenario</b><br>
5191   * Type: <b>token</b><br>
5192   * Path: <b>ExampleScenario.version</b><br>
5193   * </p>
5194   */
5195  @SearchParamDefinition(name="version", path="ExampleScenario.version", description="The business version of the example scenario", type="token" )
5196  public static final String SP_VERSION = "version";
5197  /**
5198   * <b>Fluent Client</b> search parameter constant for <b>version</b>
5199   * <p>
5200   * Description: <b>The business version of the example scenario</b><br>
5201   * Type: <b>token</b><br>
5202   * Path: <b>ExampleScenario.version</b><br>
5203   * </p>
5204   */
5205  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
5206
5207  @Override
5208  public StringType getTitleElement() {
5209    return new StringType();
5210  }
5211
5212  @Override
5213  public boolean hasTitleElement() {
5214    return false;
5215  }
5216
5217  @Override
5218  public boolean hasTitle() {
5219    return false;
5220  }
5221
5222  @Override
5223  public CanonicalResource setTitleElement(StringType value) {
5224    return this;
5225  }
5226
5227  @Override
5228  public String getTitle() {
5229    return null;
5230  }
5231
5232  @Override
5233  public CanonicalResource setTitle(String value) {
5234    return this;
5235  }
5236
5237  @Override
5238  public MarkdownType getDescriptionElement() {
5239    return new MarkdownType();
5240  }
5241
5242  @Override
5243  public boolean hasDescriptionElement() {
5244    return false;
5245  }
5246
5247  @Override
5248  public boolean hasDescription() {
5249    return false;
5250  }
5251
5252  @Override
5253  public CanonicalResource setDescriptionElement(MarkdownType value) {
5254    return this;
5255  }
5256
5257  @Override
5258  public String getDescription() {
5259    return null;
5260  }
5261
5262  @Override
5263  public CanonicalResource setDescription(String value) {
5264    return this;
5265  }
5266
5267}
5268