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