001package org.hl7.fhir.r4.model;
002
003
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, 
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this 
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, 
015     this list of conditions and the following disclaimer in the documentation 
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
030  POSSIBILITY OF SUCH DAMAGE.
031  
032*/
033
034
035// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
036
037import java.util.*;
038
039import org.hl7.fhir.utilities.Utilities;
040import org.hl7.fhir.r4.model.Enumerations.*;
041import ca.uhn.fhir.model.api.annotation.ResourceDef;
042import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
043import ca.uhn.fhir.model.api.annotation.Child;
044import ca.uhn.fhir.model.api.annotation.ChildOrder;
045import ca.uhn.fhir.model.api.annotation.Description;
046import ca.uhn.fhir.model.api.annotation.Block;
047import org.hl7.fhir.instance.model.api.*;
048import org.hl7.fhir.exceptions.FHIRException;
049/**
050 * The EventDefinition resource provides a reusable description of when a particular event can occur.
051 */
052@ResourceDef(name="EventDefinition", profile="http://hl7.org/fhir/StructureDefinition/EventDefinition")
053@ChildOrder(names={"url", "identifier", "version", "name", "title", "subtitle", "status", "experimental", "subject[x]", "date", "publisher", "contact", "description", "useContext", "jurisdiction", "purpose", "usage", "copyright", "approvalDate", "lastReviewDate", "effectivePeriod", "topic", "author", "editor", "reviewer", "endorser", "relatedArtifact", "trigger"})
054public class EventDefinition extends MetadataResource {
055
056    /**
057     * A formal identifier that is used to identify this event definition when it is represented in other formats, or referenced in a specification, model, design or an instance.
058     */
059    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
060    @Description(shortDefinition="Additional identifier for the event definition", formalDefinition="A formal identifier that is used to identify this event definition when it is represented in other formats, or referenced in a specification, model, design or an instance." )
061    protected List<Identifier> identifier;
062
063    /**
064     * An explanatory or alternate title for the event definition giving additional information about its content.
065     */
066    @Child(name = "subtitle", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
067    @Description(shortDefinition="Subordinate title of the event definition", formalDefinition="An explanatory or alternate title for the event definition giving additional information about its content." )
068    protected StringType subtitle;
069
070    /**
071     * A code or group definition that describes the intended subject of the event definition.
072     */
073    @Child(name = "subject", type = {CodeableConcept.class, Group.class}, order=2, min=0, max=1, modifier=false, summary=false)
074    @Description(shortDefinition="Type of individual the event definition is focused on", formalDefinition="A code or group definition that describes the intended subject of the event definition." )
075    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subject-type")
076    protected Type subject;
077
078    /**
079     * Explanation of why this event definition is needed and why it has been designed as it has.
080     */
081    @Child(name = "purpose", type = {MarkdownType.class}, order=3, min=0, max=1, modifier=false, summary=false)
082    @Description(shortDefinition="Why this event definition is defined", formalDefinition="Explanation of why this event definition is needed and why it has been designed as it has." )
083    protected MarkdownType purpose;
084
085    /**
086     * A detailed description of how the event definition is used from a clinical perspective.
087     */
088    @Child(name = "usage", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
089    @Description(shortDefinition="Describes the clinical usage of the event definition", formalDefinition="A detailed description of how the event definition is used from a clinical perspective." )
090    protected StringType usage;
091
092    /**
093     * A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.
094     */
095    @Child(name = "copyright", type = {MarkdownType.class}, order=5, min=0, max=1, modifier=false, summary=false)
096    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition." )
097    protected MarkdownType copyright;
098
099    /**
100     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
101     */
102    @Child(name = "approvalDate", type = {DateType.class}, order=6, min=0, max=1, modifier=false, summary=true)
103    @Description(shortDefinition="When the event definition was approved by publisher", formalDefinition="The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
104    protected DateType approvalDate;
105
106    /**
107     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
108     */
109    @Child(name = "lastReviewDate", type = {DateType.class}, order=7, min=0, max=1, modifier=false, summary=true)
110    @Description(shortDefinition="When the event definition was last reviewed", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date." )
111    protected DateType lastReviewDate;
112
113    /**
114     * The period during which the event definition content was or is planned to be in active use.
115     */
116    @Child(name = "effectivePeriod", type = {Period.class}, order=8, min=0, max=1, modifier=false, summary=true)
117    @Description(shortDefinition="When the event definition is expected to be used", formalDefinition="The period during which the event definition content was or is planned to be in active use." )
118    protected Period effectivePeriod;
119
120    /**
121     * Descriptive topics related to the module. Topics provide a high-level categorization of the module that can be useful for filtering and searching.
122     */
123    @Child(name = "topic", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
124    @Description(shortDefinition="E.g. Education, Treatment, Assessment, etc.", formalDefinition="Descriptive topics related to the module. Topics provide a high-level categorization of the module that can be useful for filtering and searching." )
125    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
126    protected List<CodeableConcept> topic;
127
128    /**
129     * An individiual or organization primarily involved in the creation and maintenance of the content.
130     */
131    @Child(name = "author", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
132    @Description(shortDefinition="Who authored the content", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the content." )
133    protected List<ContactDetail> author;
134
135    /**
136     * An individual or organization primarily responsible for internal coherence of the content.
137     */
138    @Child(name = "editor", type = {ContactDetail.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
139    @Description(shortDefinition="Who edited the content", formalDefinition="An individual or organization primarily responsible for internal coherence of the content." )
140    protected List<ContactDetail> editor;
141
142    /**
143     * An individual or organization primarily responsible for review of some aspect of the content.
144     */
145    @Child(name = "reviewer", type = {ContactDetail.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
146    @Description(shortDefinition="Who reviewed the content", formalDefinition="An individual or organization primarily responsible for review of some aspect of the content." )
147    protected List<ContactDetail> reviewer;
148
149    /**
150     * An individual or organization responsible for officially endorsing the content for use in some setting.
151     */
152    @Child(name = "endorser", type = {ContactDetail.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
153    @Description(shortDefinition="Who endorsed the content", formalDefinition="An individual or organization responsible for officially endorsing the content for use in some setting." )
154    protected List<ContactDetail> endorser;
155
156    /**
157     * Related resources such as additional documentation, justification, or bibliographic references.
158     */
159    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
160    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related resources such as additional documentation, justification, or bibliographic references." )
161    protected List<RelatedArtifact> relatedArtifact;
162
163    /**
164     * The trigger element defines when the event occurs. If more than one trigger condition is specified, the event fires whenever any one of the trigger conditions is met.
165     */
166    @Child(name = "trigger", type = {TriggerDefinition.class}, order=15, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
167    @Description(shortDefinition="\"when\" the event occurs (multiple = 'or')", formalDefinition="The trigger element defines when the event occurs. If more than one trigger condition is specified, the event fires whenever any one of the trigger conditions is met." )
168    protected List<TriggerDefinition> trigger;
169
170    private static final long serialVersionUID = 1022506246L;
171
172  /**
173   * Constructor
174   */
175    public EventDefinition() {
176      super();
177    }
178
179  /**
180   * Constructor
181   */
182    public EventDefinition(Enumeration<PublicationStatus> status) {
183      super();
184      this.status = status;
185    }
186
187    /**
188     * @return {@link #url} (An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
189     */
190    public UriType getUrlElement() { 
191      if (this.url == null)
192        if (Configuration.errorOnAutoCreate())
193          throw new Error("Attempt to auto-create EventDefinition.url");
194        else if (Configuration.doAutoCreate())
195          this.url = new UriType(); // bb
196      return this.url;
197    }
198
199    public boolean hasUrlElement() { 
200      return this.url != null && !this.url.isEmpty();
201    }
202
203    public boolean hasUrl() { 
204      return this.url != null && !this.url.isEmpty();
205    }
206
207    /**
208     * @param value {@link #url} (An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
209     */
210    public EventDefinition setUrlElement(UriType value) { 
211      this.url = value;
212      return this;
213    }
214
215    /**
216     * @return An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers.
217     */
218    public String getUrl() { 
219      return this.url == null ? null : this.url.getValue();
220    }
221
222    /**
223     * @param value An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers.
224     */
225    public EventDefinition setUrl(String value) { 
226      if (Utilities.noString(value))
227        this.url = null;
228      else {
229        if (this.url == null)
230          this.url = new UriType();
231        this.url.setValue(value);
232      }
233      return this;
234    }
235
236    /**
237     * @return {@link #identifier} (A formal identifier that is used to identify this event definition when it is represented in other formats, or referenced in a specification, model, design or an instance.)
238     */
239    public List<Identifier> getIdentifier() { 
240      if (this.identifier == null)
241        this.identifier = new ArrayList<Identifier>();
242      return this.identifier;
243    }
244
245    /**
246     * @return Returns a reference to <code>this</code> for easy method chaining
247     */
248    public EventDefinition setIdentifier(List<Identifier> theIdentifier) { 
249      this.identifier = theIdentifier;
250      return this;
251    }
252
253    public boolean hasIdentifier() { 
254      if (this.identifier == null)
255        return false;
256      for (Identifier item : this.identifier)
257        if (!item.isEmpty())
258          return true;
259      return false;
260    }
261
262    public Identifier addIdentifier() { //3
263      Identifier t = new Identifier();
264      if (this.identifier == null)
265        this.identifier = new ArrayList<Identifier>();
266      this.identifier.add(t);
267      return t;
268    }
269
270    public EventDefinition addIdentifier(Identifier t) { //3
271      if (t == null)
272        return this;
273      if (this.identifier == null)
274        this.identifier = new ArrayList<Identifier>();
275      this.identifier.add(t);
276      return this;
277    }
278
279    /**
280     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
281     */
282    public Identifier getIdentifierFirstRep() { 
283      if (getIdentifier().isEmpty()) {
284        addIdentifier();
285      }
286      return getIdentifier().get(0);
287    }
288
289    /**
290     * @return {@link #version} (The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition 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
291     */
292    public StringType getVersionElement() { 
293      if (this.version == null)
294        if (Configuration.errorOnAutoCreate())
295          throw new Error("Attempt to auto-create EventDefinition.version");
296        else if (Configuration.doAutoCreate())
297          this.version = new StringType(); // bb
298      return this.version;
299    }
300
301    public boolean hasVersionElement() { 
302      return this.version != null && !this.version.isEmpty();
303    }
304
305    public boolean hasVersion() { 
306      return this.version != null && !this.version.isEmpty();
307    }
308
309    /**
310     * @param value {@link #version} (The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition 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
311     */
312    public EventDefinition setVersionElement(StringType value) { 
313      this.version = value;
314      return this;
315    }
316
317    /**
318     * @return The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition 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.
319     */
320    public String getVersion() { 
321      return this.version == null ? null : this.version.getValue();
322    }
323
324    /**
325     * @param value The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition 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.
326     */
327    public EventDefinition setVersion(String value) { 
328      if (Utilities.noString(value))
329        this.version = null;
330      else {
331        if (this.version == null)
332          this.version = new StringType();
333        this.version.setValue(value);
334      }
335      return this;
336    }
337
338    /**
339     * @return {@link #name} (A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
340     */
341    public StringType getNameElement() { 
342      if (this.name == null)
343        if (Configuration.errorOnAutoCreate())
344          throw new Error("Attempt to auto-create EventDefinition.name");
345        else if (Configuration.doAutoCreate())
346          this.name = new StringType(); // bb
347      return this.name;
348    }
349
350    public boolean hasNameElement() { 
351      return this.name != null && !this.name.isEmpty();
352    }
353
354    public boolean hasName() { 
355      return this.name != null && !this.name.isEmpty();
356    }
357
358    /**
359     * @param value {@link #name} (A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
360     */
361    public EventDefinition setNameElement(StringType value) { 
362      this.name = value;
363      return this;
364    }
365
366    /**
367     * @return A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
368     */
369    public String getName() { 
370      return this.name == null ? null : this.name.getValue();
371    }
372
373    /**
374     * @param value A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
375     */
376    public EventDefinition setName(String value) { 
377      if (Utilities.noString(value))
378        this.name = null;
379      else {
380        if (this.name == null)
381          this.name = new StringType();
382        this.name.setValue(value);
383      }
384      return this;
385    }
386
387    /**
388     * @return {@link #title} (A short, descriptive, user-friendly title for the event definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
389     */
390    public StringType getTitleElement() { 
391      if (this.title == null)
392        if (Configuration.errorOnAutoCreate())
393          throw new Error("Attempt to auto-create EventDefinition.title");
394        else if (Configuration.doAutoCreate())
395          this.title = new StringType(); // bb
396      return this.title;
397    }
398
399    public boolean hasTitleElement() { 
400      return this.title != null && !this.title.isEmpty();
401    }
402
403    public boolean hasTitle() { 
404      return this.title != null && !this.title.isEmpty();
405    }
406
407    /**
408     * @param value {@link #title} (A short, descriptive, user-friendly title for the event definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
409     */
410    public EventDefinition setTitleElement(StringType value) { 
411      this.title = value;
412      return this;
413    }
414
415    /**
416     * @return A short, descriptive, user-friendly title for the event definition.
417     */
418    public String getTitle() { 
419      return this.title == null ? null : this.title.getValue();
420    }
421
422    /**
423     * @param value A short, descriptive, user-friendly title for the event definition.
424     */
425    public EventDefinition setTitle(String value) { 
426      if (Utilities.noString(value))
427        this.title = null;
428      else {
429        if (this.title == null)
430          this.title = new StringType();
431        this.title.setValue(value);
432      }
433      return this;
434    }
435
436    /**
437     * @return {@link #subtitle} (An explanatory or alternate title for the event definition giving additional information about its content.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
438     */
439    public StringType getSubtitleElement() { 
440      if (this.subtitle == null)
441        if (Configuration.errorOnAutoCreate())
442          throw new Error("Attempt to auto-create EventDefinition.subtitle");
443        else if (Configuration.doAutoCreate())
444          this.subtitle = new StringType(); // bb
445      return this.subtitle;
446    }
447
448    public boolean hasSubtitleElement() { 
449      return this.subtitle != null && !this.subtitle.isEmpty();
450    }
451
452    public boolean hasSubtitle() { 
453      return this.subtitle != null && !this.subtitle.isEmpty();
454    }
455
456    /**
457     * @param value {@link #subtitle} (An explanatory or alternate title for the event definition giving additional information about its content.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
458     */
459    public EventDefinition setSubtitleElement(StringType value) { 
460      this.subtitle = value;
461      return this;
462    }
463
464    /**
465     * @return An explanatory or alternate title for the event definition giving additional information about its content.
466     */
467    public String getSubtitle() { 
468      return this.subtitle == null ? null : this.subtitle.getValue();
469    }
470
471    /**
472     * @param value An explanatory or alternate title for the event definition giving additional information about its content.
473     */
474    public EventDefinition setSubtitle(String value) { 
475      if (Utilities.noString(value))
476        this.subtitle = null;
477      else {
478        if (this.subtitle == null)
479          this.subtitle = new StringType();
480        this.subtitle.setValue(value);
481      }
482      return this;
483    }
484
485    /**
486     * @return {@link #status} (The status of this event definition. 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
487     */
488    public Enumeration<PublicationStatus> getStatusElement() { 
489      if (this.status == null)
490        if (Configuration.errorOnAutoCreate())
491          throw new Error("Attempt to auto-create EventDefinition.status");
492        else if (Configuration.doAutoCreate())
493          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
494      return this.status;
495    }
496
497    public boolean hasStatusElement() { 
498      return this.status != null && !this.status.isEmpty();
499    }
500
501    public boolean hasStatus() { 
502      return this.status != null && !this.status.isEmpty();
503    }
504
505    /**
506     * @param value {@link #status} (The status of this event definition. 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
507     */
508    public EventDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
509      this.status = value;
510      return this;
511    }
512
513    /**
514     * @return The status of this event definition. Enables tracking the life-cycle of the content.
515     */
516    public PublicationStatus getStatus() { 
517      return this.status == null ? null : this.status.getValue();
518    }
519
520    /**
521     * @param value The status of this event definition. Enables tracking the life-cycle of the content.
522     */
523    public EventDefinition setStatus(PublicationStatus value) { 
524        if (this.status == null)
525          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
526        this.status.setValue(value);
527      return this;
528    }
529
530    /**
531     * @return {@link #experimental} (A Boolean value to indicate that this event definition 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
532     */
533    public BooleanType getExperimentalElement() { 
534      if (this.experimental == null)
535        if (Configuration.errorOnAutoCreate())
536          throw new Error("Attempt to auto-create EventDefinition.experimental");
537        else if (Configuration.doAutoCreate())
538          this.experimental = new BooleanType(); // bb
539      return this.experimental;
540    }
541
542    public boolean hasExperimentalElement() { 
543      return this.experimental != null && !this.experimental.isEmpty();
544    }
545
546    public boolean hasExperimental() { 
547      return this.experimental != null && !this.experimental.isEmpty();
548    }
549
550    /**
551     * @param value {@link #experimental} (A Boolean value to indicate that this event definition 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
552     */
553    public EventDefinition setExperimentalElement(BooleanType value) { 
554      this.experimental = value;
555      return this;
556    }
557
558    /**
559     * @return A Boolean value to indicate that this event definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
560     */
561    public boolean getExperimental() { 
562      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
563    }
564
565    /**
566     * @param value A Boolean value to indicate that this event definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
567     */
568    public EventDefinition setExperimental(boolean value) { 
569        if (this.experimental == null)
570          this.experimental = new BooleanType();
571        this.experimental.setValue(value);
572      return this;
573    }
574
575    /**
576     * @return {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
577     */
578    public Type getSubject() { 
579      return this.subject;
580    }
581
582    /**
583     * @return {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
584     */
585    public CodeableConcept getSubjectCodeableConcept() throws FHIRException { 
586      if (this.subject == null)
587        this.subject = new CodeableConcept();
588      if (!(this.subject instanceof CodeableConcept))
589        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.subject.getClass().getName()+" was encountered");
590      return (CodeableConcept) this.subject;
591    }
592
593    public boolean hasSubjectCodeableConcept() { 
594      return this != null && this.subject instanceof CodeableConcept;
595    }
596
597    /**
598     * @return {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
599     */
600    public Reference getSubjectReference() throws FHIRException { 
601      if (this.subject == null)
602        this.subject = new Reference();
603      if (!(this.subject instanceof Reference))
604        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.subject.getClass().getName()+" was encountered");
605      return (Reference) this.subject;
606    }
607
608    public boolean hasSubjectReference() { 
609      return this != null && this.subject instanceof Reference;
610    }
611
612    public boolean hasSubject() { 
613      return this.subject != null && !this.subject.isEmpty();
614    }
615
616    /**
617     * @param value {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
618     */
619    public EventDefinition setSubject(Type value) { 
620      if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
621        throw new Error("Not the right type for EventDefinition.subject[x]: "+value.fhirType());
622      this.subject = value;
623      return this;
624    }
625
626    /**
627     * @return {@link #date} (The date  (and optionally time) when the event definition 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 event definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
628     */
629    public DateTimeType getDateElement() { 
630      if (this.date == null)
631        if (Configuration.errorOnAutoCreate())
632          throw new Error("Attempt to auto-create EventDefinition.date");
633        else if (Configuration.doAutoCreate())
634          this.date = new DateTimeType(); // bb
635      return this.date;
636    }
637
638    public boolean hasDateElement() { 
639      return this.date != null && !this.date.isEmpty();
640    }
641
642    public boolean hasDate() { 
643      return this.date != null && !this.date.isEmpty();
644    }
645
646    /**
647     * @param value {@link #date} (The date  (and optionally time) when the event definition 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 event definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
648     */
649    public EventDefinition setDateElement(DateTimeType value) { 
650      this.date = value;
651      return this;
652    }
653
654    /**
655     * @return The date  (and optionally time) when the event definition 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 event definition changes.
656     */
657    public Date getDate() { 
658      return this.date == null ? null : this.date.getValue();
659    }
660
661    /**
662     * @param value The date  (and optionally time) when the event definition 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 event definition changes.
663     */
664    public EventDefinition setDate(Date value) { 
665      if (value == null)
666        this.date = null;
667      else {
668        if (this.date == null)
669          this.date = new DateTimeType();
670        this.date.setValue(value);
671      }
672      return this;
673    }
674
675    /**
676     * @return {@link #publisher} (The name of the organization or individual that published the event definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
677     */
678    public StringType getPublisherElement() { 
679      if (this.publisher == null)
680        if (Configuration.errorOnAutoCreate())
681          throw new Error("Attempt to auto-create EventDefinition.publisher");
682        else if (Configuration.doAutoCreate())
683          this.publisher = new StringType(); // bb
684      return this.publisher;
685    }
686
687    public boolean hasPublisherElement() { 
688      return this.publisher != null && !this.publisher.isEmpty();
689    }
690
691    public boolean hasPublisher() { 
692      return this.publisher != null && !this.publisher.isEmpty();
693    }
694
695    /**
696     * @param value {@link #publisher} (The name of the organization or individual that published the event definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
697     */
698    public EventDefinition setPublisherElement(StringType value) { 
699      this.publisher = value;
700      return this;
701    }
702
703    /**
704     * @return The name of the organization or individual that published the event definition.
705     */
706    public String getPublisher() { 
707      return this.publisher == null ? null : this.publisher.getValue();
708    }
709
710    /**
711     * @param value The name of the organization or individual that published the event definition.
712     */
713    public EventDefinition setPublisher(String value) { 
714      if (Utilities.noString(value))
715        this.publisher = null;
716      else {
717        if (this.publisher == null)
718          this.publisher = new StringType();
719        this.publisher.setValue(value);
720      }
721      return this;
722    }
723
724    /**
725     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
726     */
727    public List<ContactDetail> getContact() { 
728      if (this.contact == null)
729        this.contact = new ArrayList<ContactDetail>();
730      return this.contact;
731    }
732
733    /**
734     * @return Returns a reference to <code>this</code> for easy method chaining
735     */
736    public EventDefinition setContact(List<ContactDetail> theContact) { 
737      this.contact = theContact;
738      return this;
739    }
740
741    public boolean hasContact() { 
742      if (this.contact == null)
743        return false;
744      for (ContactDetail item : this.contact)
745        if (!item.isEmpty())
746          return true;
747      return false;
748    }
749
750    public ContactDetail addContact() { //3
751      ContactDetail t = new ContactDetail();
752      if (this.contact == null)
753        this.contact = new ArrayList<ContactDetail>();
754      this.contact.add(t);
755      return t;
756    }
757
758    public EventDefinition addContact(ContactDetail t) { //3
759      if (t == null)
760        return this;
761      if (this.contact == null)
762        this.contact = new ArrayList<ContactDetail>();
763      this.contact.add(t);
764      return this;
765    }
766
767    /**
768     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
769     */
770    public ContactDetail getContactFirstRep() { 
771      if (getContact().isEmpty()) {
772        addContact();
773      }
774      return getContact().get(0);
775    }
776
777    /**
778     * @return {@link #description} (A free text natural language description of the event definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
779     */
780    public MarkdownType getDescriptionElement() { 
781      if (this.description == null)
782        if (Configuration.errorOnAutoCreate())
783          throw new Error("Attempt to auto-create EventDefinition.description");
784        else if (Configuration.doAutoCreate())
785          this.description = new MarkdownType(); // bb
786      return this.description;
787    }
788
789    public boolean hasDescriptionElement() { 
790      return this.description != null && !this.description.isEmpty();
791    }
792
793    public boolean hasDescription() { 
794      return this.description != null && !this.description.isEmpty();
795    }
796
797    /**
798     * @param value {@link #description} (A free text natural language description of the event definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
799     */
800    public EventDefinition setDescriptionElement(MarkdownType value) { 
801      this.description = value;
802      return this;
803    }
804
805    /**
806     * @return A free text natural language description of the event definition from a consumer's perspective.
807     */
808    public String getDescription() { 
809      return this.description == null ? null : this.description.getValue();
810    }
811
812    /**
813     * @param value A free text natural language description of the event definition from a consumer's perspective.
814     */
815    public EventDefinition setDescription(String value) { 
816      if (value == null)
817        this.description = null;
818      else {
819        if (this.description == null)
820          this.description = new MarkdownType();
821        this.description.setValue(value);
822      }
823      return this;
824    }
825
826    /**
827     * @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 event definition instances.)
828     */
829    public List<UsageContext> getUseContext() { 
830      if (this.useContext == null)
831        this.useContext = new ArrayList<UsageContext>();
832      return this.useContext;
833    }
834
835    /**
836     * @return Returns a reference to <code>this</code> for easy method chaining
837     */
838    public EventDefinition setUseContext(List<UsageContext> theUseContext) { 
839      this.useContext = theUseContext;
840      return this;
841    }
842
843    public boolean hasUseContext() { 
844      if (this.useContext == null)
845        return false;
846      for (UsageContext item : this.useContext)
847        if (!item.isEmpty())
848          return true;
849      return false;
850    }
851
852    public UsageContext addUseContext() { //3
853      UsageContext t = new UsageContext();
854      if (this.useContext == null)
855        this.useContext = new ArrayList<UsageContext>();
856      this.useContext.add(t);
857      return t;
858    }
859
860    public EventDefinition addUseContext(UsageContext t) { //3
861      if (t == null)
862        return this;
863      if (this.useContext == null)
864        this.useContext = new ArrayList<UsageContext>();
865      this.useContext.add(t);
866      return this;
867    }
868
869    /**
870     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
871     */
872    public UsageContext getUseContextFirstRep() { 
873      if (getUseContext().isEmpty()) {
874        addUseContext();
875      }
876      return getUseContext().get(0);
877    }
878
879    /**
880     * @return {@link #jurisdiction} (A legal or geographic region in which the event definition is intended to be used.)
881     */
882    public List<CodeableConcept> getJurisdiction() { 
883      if (this.jurisdiction == null)
884        this.jurisdiction = new ArrayList<CodeableConcept>();
885      return this.jurisdiction;
886    }
887
888    /**
889     * @return Returns a reference to <code>this</code> for easy method chaining
890     */
891    public EventDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
892      this.jurisdiction = theJurisdiction;
893      return this;
894    }
895
896    public boolean hasJurisdiction() { 
897      if (this.jurisdiction == null)
898        return false;
899      for (CodeableConcept item : this.jurisdiction)
900        if (!item.isEmpty())
901          return true;
902      return false;
903    }
904
905    public CodeableConcept addJurisdiction() { //3
906      CodeableConcept t = new CodeableConcept();
907      if (this.jurisdiction == null)
908        this.jurisdiction = new ArrayList<CodeableConcept>();
909      this.jurisdiction.add(t);
910      return t;
911    }
912
913    public EventDefinition addJurisdiction(CodeableConcept t) { //3
914      if (t == null)
915        return this;
916      if (this.jurisdiction == null)
917        this.jurisdiction = new ArrayList<CodeableConcept>();
918      this.jurisdiction.add(t);
919      return this;
920    }
921
922    /**
923     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
924     */
925    public CodeableConcept getJurisdictionFirstRep() { 
926      if (getJurisdiction().isEmpty()) {
927        addJurisdiction();
928      }
929      return getJurisdiction().get(0);
930    }
931
932    /**
933     * @return {@link #purpose} (Explanation of why this event definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
934     */
935    public MarkdownType getPurposeElement() { 
936      if (this.purpose == null)
937        if (Configuration.errorOnAutoCreate())
938          throw new Error("Attempt to auto-create EventDefinition.purpose");
939        else if (Configuration.doAutoCreate())
940          this.purpose = new MarkdownType(); // bb
941      return this.purpose;
942    }
943
944    public boolean hasPurposeElement() { 
945      return this.purpose != null && !this.purpose.isEmpty();
946    }
947
948    public boolean hasPurpose() { 
949      return this.purpose != null && !this.purpose.isEmpty();
950    }
951
952    /**
953     * @param value {@link #purpose} (Explanation of why this event definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
954     */
955    public EventDefinition setPurposeElement(MarkdownType value) { 
956      this.purpose = value;
957      return this;
958    }
959
960    /**
961     * @return Explanation of why this event definition is needed and why it has been designed as it has.
962     */
963    public String getPurpose() { 
964      return this.purpose == null ? null : this.purpose.getValue();
965    }
966
967    /**
968     * @param value Explanation of why this event definition is needed and why it has been designed as it has.
969     */
970    public EventDefinition setPurpose(String value) { 
971      if (value == null)
972        this.purpose = null;
973      else {
974        if (this.purpose == null)
975          this.purpose = new MarkdownType();
976        this.purpose.setValue(value);
977      }
978      return this;
979    }
980
981    /**
982     * @return {@link #usage} (A detailed description of how the event definition is used from a clinical perspective.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
983     */
984    public StringType getUsageElement() { 
985      if (this.usage == null)
986        if (Configuration.errorOnAutoCreate())
987          throw new Error("Attempt to auto-create EventDefinition.usage");
988        else if (Configuration.doAutoCreate())
989          this.usage = new StringType(); // bb
990      return this.usage;
991    }
992
993    public boolean hasUsageElement() { 
994      return this.usage != null && !this.usage.isEmpty();
995    }
996
997    public boolean hasUsage() { 
998      return this.usage != null && !this.usage.isEmpty();
999    }
1000
1001    /**
1002     * @param value {@link #usage} (A detailed description of how the event definition is used from a clinical perspective.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
1003     */
1004    public EventDefinition setUsageElement(StringType value) { 
1005      this.usage = value;
1006      return this;
1007    }
1008
1009    /**
1010     * @return A detailed description of how the event definition is used from a clinical perspective.
1011     */
1012    public String getUsage() { 
1013      return this.usage == null ? null : this.usage.getValue();
1014    }
1015
1016    /**
1017     * @param value A detailed description of how the event definition is used from a clinical perspective.
1018     */
1019    public EventDefinition setUsage(String value) { 
1020      if (Utilities.noString(value))
1021        this.usage = null;
1022      else {
1023        if (this.usage == null)
1024          this.usage = new StringType();
1025        this.usage.setValue(value);
1026      }
1027      return this;
1028    }
1029
1030    /**
1031     * @return {@link #copyright} (A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1032     */
1033    public MarkdownType getCopyrightElement() { 
1034      if (this.copyright == null)
1035        if (Configuration.errorOnAutoCreate())
1036          throw new Error("Attempt to auto-create EventDefinition.copyright");
1037        else if (Configuration.doAutoCreate())
1038          this.copyright = new MarkdownType(); // bb
1039      return this.copyright;
1040    }
1041
1042    public boolean hasCopyrightElement() { 
1043      return this.copyright != null && !this.copyright.isEmpty();
1044    }
1045
1046    public boolean hasCopyright() { 
1047      return this.copyright != null && !this.copyright.isEmpty();
1048    }
1049
1050    /**
1051     * @param value {@link #copyright} (A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1052     */
1053    public EventDefinition setCopyrightElement(MarkdownType value) { 
1054      this.copyright = value;
1055      return this;
1056    }
1057
1058    /**
1059     * @return A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.
1060     */
1061    public String getCopyright() { 
1062      return this.copyright == null ? null : this.copyright.getValue();
1063    }
1064
1065    /**
1066     * @param value A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.
1067     */
1068    public EventDefinition setCopyright(String value) { 
1069      if (value == null)
1070        this.copyright = null;
1071      else {
1072        if (this.copyright == null)
1073          this.copyright = new MarkdownType();
1074        this.copyright.setValue(value);
1075      }
1076      return this;
1077    }
1078
1079    /**
1080     * @return {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
1081     */
1082    public DateType getApprovalDateElement() { 
1083      if (this.approvalDate == null)
1084        if (Configuration.errorOnAutoCreate())
1085          throw new Error("Attempt to auto-create EventDefinition.approvalDate");
1086        else if (Configuration.doAutoCreate())
1087          this.approvalDate = new DateType(); // bb
1088      return this.approvalDate;
1089    }
1090
1091    public boolean hasApprovalDateElement() { 
1092      return this.approvalDate != null && !this.approvalDate.isEmpty();
1093    }
1094
1095    public boolean hasApprovalDate() { 
1096      return this.approvalDate != null && !this.approvalDate.isEmpty();
1097    }
1098
1099    /**
1100     * @param value {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
1101     */
1102    public EventDefinition setApprovalDateElement(DateType value) { 
1103      this.approvalDate = value;
1104      return this;
1105    }
1106
1107    /**
1108     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
1109     */
1110    public Date getApprovalDate() { 
1111      return this.approvalDate == null ? null : this.approvalDate.getValue();
1112    }
1113
1114    /**
1115     * @param value The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
1116     */
1117    public EventDefinition setApprovalDate(Date value) { 
1118      if (value == null)
1119        this.approvalDate = null;
1120      else {
1121        if (this.approvalDate == null)
1122          this.approvalDate = new DateType();
1123        this.approvalDate.setValue(value);
1124      }
1125      return this;
1126    }
1127
1128    /**
1129     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
1130     */
1131    public DateType getLastReviewDateElement() { 
1132      if (this.lastReviewDate == null)
1133        if (Configuration.errorOnAutoCreate())
1134          throw new Error("Attempt to auto-create EventDefinition.lastReviewDate");
1135        else if (Configuration.doAutoCreate())
1136          this.lastReviewDate = new DateType(); // bb
1137      return this.lastReviewDate;
1138    }
1139
1140    public boolean hasLastReviewDateElement() { 
1141      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
1142    }
1143
1144    public boolean hasLastReviewDate() { 
1145      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
1146    }
1147
1148    /**
1149     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
1150     */
1151    public EventDefinition setLastReviewDateElement(DateType value) { 
1152      this.lastReviewDate = value;
1153      return this;
1154    }
1155
1156    /**
1157     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1158     */
1159    public Date getLastReviewDate() { 
1160      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
1161    }
1162
1163    /**
1164     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1165     */
1166    public EventDefinition setLastReviewDate(Date value) { 
1167      if (value == null)
1168        this.lastReviewDate = null;
1169      else {
1170        if (this.lastReviewDate == null)
1171          this.lastReviewDate = new DateType();
1172        this.lastReviewDate.setValue(value);
1173      }
1174      return this;
1175    }
1176
1177    /**
1178     * @return {@link #effectivePeriod} (The period during which the event definition content was or is planned to be in active use.)
1179     */
1180    public Period getEffectivePeriod() { 
1181      if (this.effectivePeriod == null)
1182        if (Configuration.errorOnAutoCreate())
1183          throw new Error("Attempt to auto-create EventDefinition.effectivePeriod");
1184        else if (Configuration.doAutoCreate())
1185          this.effectivePeriod = new Period(); // cc
1186      return this.effectivePeriod;
1187    }
1188
1189    public boolean hasEffectivePeriod() { 
1190      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
1191    }
1192
1193    /**
1194     * @param value {@link #effectivePeriod} (The period during which the event definition content was or is planned to be in active use.)
1195     */
1196    public EventDefinition setEffectivePeriod(Period value) { 
1197      this.effectivePeriod = value;
1198      return this;
1199    }
1200
1201    /**
1202     * @return {@link #topic} (Descriptive topics related to the module. Topics provide a high-level categorization of the module that can be useful for filtering and searching.)
1203     */
1204    public List<CodeableConcept> getTopic() { 
1205      if (this.topic == null)
1206        this.topic = new ArrayList<CodeableConcept>();
1207      return this.topic;
1208    }
1209
1210    /**
1211     * @return Returns a reference to <code>this</code> for easy method chaining
1212     */
1213    public EventDefinition setTopic(List<CodeableConcept> theTopic) { 
1214      this.topic = theTopic;
1215      return this;
1216    }
1217
1218    public boolean hasTopic() { 
1219      if (this.topic == null)
1220        return false;
1221      for (CodeableConcept item : this.topic)
1222        if (!item.isEmpty())
1223          return true;
1224      return false;
1225    }
1226
1227    public CodeableConcept addTopic() { //3
1228      CodeableConcept t = new CodeableConcept();
1229      if (this.topic == null)
1230        this.topic = new ArrayList<CodeableConcept>();
1231      this.topic.add(t);
1232      return t;
1233    }
1234
1235    public EventDefinition addTopic(CodeableConcept t) { //3
1236      if (t == null)
1237        return this;
1238      if (this.topic == null)
1239        this.topic = new ArrayList<CodeableConcept>();
1240      this.topic.add(t);
1241      return this;
1242    }
1243
1244    /**
1245     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist
1246     */
1247    public CodeableConcept getTopicFirstRep() { 
1248      if (getTopic().isEmpty()) {
1249        addTopic();
1250      }
1251      return getTopic().get(0);
1252    }
1253
1254    /**
1255     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the content.)
1256     */
1257    public List<ContactDetail> getAuthor() { 
1258      if (this.author == null)
1259        this.author = new ArrayList<ContactDetail>();
1260      return this.author;
1261    }
1262
1263    /**
1264     * @return Returns a reference to <code>this</code> for easy method chaining
1265     */
1266    public EventDefinition setAuthor(List<ContactDetail> theAuthor) { 
1267      this.author = theAuthor;
1268      return this;
1269    }
1270
1271    public boolean hasAuthor() { 
1272      if (this.author == null)
1273        return false;
1274      for (ContactDetail item : this.author)
1275        if (!item.isEmpty())
1276          return true;
1277      return false;
1278    }
1279
1280    public ContactDetail addAuthor() { //3
1281      ContactDetail t = new ContactDetail();
1282      if (this.author == null)
1283        this.author = new ArrayList<ContactDetail>();
1284      this.author.add(t);
1285      return t;
1286    }
1287
1288    public EventDefinition addAuthor(ContactDetail t) { //3
1289      if (t == null)
1290        return this;
1291      if (this.author == null)
1292        this.author = new ArrayList<ContactDetail>();
1293      this.author.add(t);
1294      return this;
1295    }
1296
1297    /**
1298     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist
1299     */
1300    public ContactDetail getAuthorFirstRep() { 
1301      if (getAuthor().isEmpty()) {
1302        addAuthor();
1303      }
1304      return getAuthor().get(0);
1305    }
1306
1307    /**
1308     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the content.)
1309     */
1310    public List<ContactDetail> getEditor() { 
1311      if (this.editor == null)
1312        this.editor = new ArrayList<ContactDetail>();
1313      return this.editor;
1314    }
1315
1316    /**
1317     * @return Returns a reference to <code>this</code> for easy method chaining
1318     */
1319    public EventDefinition setEditor(List<ContactDetail> theEditor) { 
1320      this.editor = theEditor;
1321      return this;
1322    }
1323
1324    public boolean hasEditor() { 
1325      if (this.editor == null)
1326        return false;
1327      for (ContactDetail item : this.editor)
1328        if (!item.isEmpty())
1329          return true;
1330      return false;
1331    }
1332
1333    public ContactDetail addEditor() { //3
1334      ContactDetail t = new ContactDetail();
1335      if (this.editor == null)
1336        this.editor = new ArrayList<ContactDetail>();
1337      this.editor.add(t);
1338      return t;
1339    }
1340
1341    public EventDefinition addEditor(ContactDetail t) { //3
1342      if (t == null)
1343        return this;
1344      if (this.editor == null)
1345        this.editor = new ArrayList<ContactDetail>();
1346      this.editor.add(t);
1347      return this;
1348    }
1349
1350    /**
1351     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist
1352     */
1353    public ContactDetail getEditorFirstRep() { 
1354      if (getEditor().isEmpty()) {
1355        addEditor();
1356      }
1357      return getEditor().get(0);
1358    }
1359
1360    /**
1361     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the content.)
1362     */
1363    public List<ContactDetail> getReviewer() { 
1364      if (this.reviewer == null)
1365        this.reviewer = new ArrayList<ContactDetail>();
1366      return this.reviewer;
1367    }
1368
1369    /**
1370     * @return Returns a reference to <code>this</code> for easy method chaining
1371     */
1372    public EventDefinition setReviewer(List<ContactDetail> theReviewer) { 
1373      this.reviewer = theReviewer;
1374      return this;
1375    }
1376
1377    public boolean hasReviewer() { 
1378      if (this.reviewer == null)
1379        return false;
1380      for (ContactDetail item : this.reviewer)
1381        if (!item.isEmpty())
1382          return true;
1383      return false;
1384    }
1385
1386    public ContactDetail addReviewer() { //3
1387      ContactDetail t = new ContactDetail();
1388      if (this.reviewer == null)
1389        this.reviewer = new ArrayList<ContactDetail>();
1390      this.reviewer.add(t);
1391      return t;
1392    }
1393
1394    public EventDefinition addReviewer(ContactDetail t) { //3
1395      if (t == null)
1396        return this;
1397      if (this.reviewer == null)
1398        this.reviewer = new ArrayList<ContactDetail>();
1399      this.reviewer.add(t);
1400      return this;
1401    }
1402
1403    /**
1404     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist
1405     */
1406    public ContactDetail getReviewerFirstRep() { 
1407      if (getReviewer().isEmpty()) {
1408        addReviewer();
1409      }
1410      return getReviewer().get(0);
1411    }
1412
1413    /**
1414     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the content for use in some setting.)
1415     */
1416    public List<ContactDetail> getEndorser() { 
1417      if (this.endorser == null)
1418        this.endorser = new ArrayList<ContactDetail>();
1419      return this.endorser;
1420    }
1421
1422    /**
1423     * @return Returns a reference to <code>this</code> for easy method chaining
1424     */
1425    public EventDefinition setEndorser(List<ContactDetail> theEndorser) { 
1426      this.endorser = theEndorser;
1427      return this;
1428    }
1429
1430    public boolean hasEndorser() { 
1431      if (this.endorser == null)
1432        return false;
1433      for (ContactDetail item : this.endorser)
1434        if (!item.isEmpty())
1435          return true;
1436      return false;
1437    }
1438
1439    public ContactDetail addEndorser() { //3
1440      ContactDetail t = new ContactDetail();
1441      if (this.endorser == null)
1442        this.endorser = new ArrayList<ContactDetail>();
1443      this.endorser.add(t);
1444      return t;
1445    }
1446
1447    public EventDefinition addEndorser(ContactDetail t) { //3
1448      if (t == null)
1449        return this;
1450      if (this.endorser == null)
1451        this.endorser = new ArrayList<ContactDetail>();
1452      this.endorser.add(t);
1453      return this;
1454    }
1455
1456    /**
1457     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist
1458     */
1459    public ContactDetail getEndorserFirstRep() { 
1460      if (getEndorser().isEmpty()) {
1461        addEndorser();
1462      }
1463      return getEndorser().get(0);
1464    }
1465
1466    /**
1467     * @return {@link #relatedArtifact} (Related resources such as additional documentation, justification, or bibliographic references.)
1468     */
1469    public List<RelatedArtifact> getRelatedArtifact() { 
1470      if (this.relatedArtifact == null)
1471        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1472      return this.relatedArtifact;
1473    }
1474
1475    /**
1476     * @return Returns a reference to <code>this</code> for easy method chaining
1477     */
1478    public EventDefinition setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
1479      this.relatedArtifact = theRelatedArtifact;
1480      return this;
1481    }
1482
1483    public boolean hasRelatedArtifact() { 
1484      if (this.relatedArtifact == null)
1485        return false;
1486      for (RelatedArtifact item : this.relatedArtifact)
1487        if (!item.isEmpty())
1488          return true;
1489      return false;
1490    }
1491
1492    public RelatedArtifact addRelatedArtifact() { //3
1493      RelatedArtifact t = new RelatedArtifact();
1494      if (this.relatedArtifact == null)
1495        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1496      this.relatedArtifact.add(t);
1497      return t;
1498    }
1499
1500    public EventDefinition addRelatedArtifact(RelatedArtifact t) { //3
1501      if (t == null)
1502        return this;
1503      if (this.relatedArtifact == null)
1504        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1505      this.relatedArtifact.add(t);
1506      return this;
1507    }
1508
1509    /**
1510     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist
1511     */
1512    public RelatedArtifact getRelatedArtifactFirstRep() { 
1513      if (getRelatedArtifact().isEmpty()) {
1514        addRelatedArtifact();
1515      }
1516      return getRelatedArtifact().get(0);
1517    }
1518
1519    /**
1520     * @return {@link #trigger} (The trigger element defines when the event occurs. If more than one trigger condition is specified, the event fires whenever any one of the trigger conditions is met.)
1521     */
1522    public List<TriggerDefinition> getTrigger() { 
1523      if (this.trigger == null)
1524        this.trigger = new ArrayList<TriggerDefinition>();
1525      return this.trigger;
1526    }
1527
1528    /**
1529     * @return Returns a reference to <code>this</code> for easy method chaining
1530     */
1531    public EventDefinition setTrigger(List<TriggerDefinition> theTrigger) { 
1532      this.trigger = theTrigger;
1533      return this;
1534    }
1535
1536    public boolean hasTrigger() { 
1537      if (this.trigger == null)
1538        return false;
1539      for (TriggerDefinition item : this.trigger)
1540        if (!item.isEmpty())
1541          return true;
1542      return false;
1543    }
1544
1545    public TriggerDefinition addTrigger() { //3
1546      TriggerDefinition t = new TriggerDefinition();
1547      if (this.trigger == null)
1548        this.trigger = new ArrayList<TriggerDefinition>();
1549      this.trigger.add(t);
1550      return t;
1551    }
1552
1553    public EventDefinition addTrigger(TriggerDefinition t) { //3
1554      if (t == null)
1555        return this;
1556      if (this.trigger == null)
1557        this.trigger = new ArrayList<TriggerDefinition>();
1558      this.trigger.add(t);
1559      return this;
1560    }
1561
1562    /**
1563     * @return The first repetition of repeating field {@link #trigger}, creating it if it does not already exist
1564     */
1565    public TriggerDefinition getTriggerFirstRep() { 
1566      if (getTrigger().isEmpty()) {
1567        addTrigger();
1568      }
1569      return getTrigger().get(0);
1570    }
1571
1572      protected void listChildren(List<Property> children) {
1573        super.listChildren(children);
1574        children.add(new Property("url", "uri", "An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers.", 0, 1, url));
1575        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this event definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
1576        children.add(new Property("version", "string", "The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition 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));
1577        children.add(new Property("name", "string", "A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
1578        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the event definition.", 0, 1, title));
1579        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the event definition giving additional information about its content.", 0, 1, subtitle));
1580        children.add(new Property("status", "code", "The status of this event definition. Enables tracking the life-cycle of the content.", 0, 1, status));
1581        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this event definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
1582        children.add(new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the event definition.", 0, 1, subject));
1583        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the event definition 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 event definition changes.", 0, 1, date));
1584        children.add(new Property("publisher", "string", "The name of the organization or individual that published the event definition.", 0, 1, publisher));
1585        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));
1586        children.add(new Property("description", "markdown", "A free text natural language description of the event definition from a consumer's perspective.", 0, 1, description));
1587        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 event definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
1588        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the event definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
1589        children.add(new Property("purpose", "markdown", "Explanation of why this event definition is needed and why it has been designed as it has.", 0, 1, purpose));
1590        children.add(new Property("usage", "string", "A detailed description of how the event definition is used from a clinical perspective.", 0, 1, usage));
1591        children.add(new Property("copyright", "markdown", "A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.", 0, 1, copyright));
1592        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
1593        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
1594        children.add(new Property("effectivePeriod", "Period", "The period during which the event definition content was or is planned to be in active use.", 0, 1, effectivePeriod));
1595        children.add(new Property("topic", "CodeableConcept", "Descriptive topics related to the module. Topics provide a high-level categorization of the module that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic));
1596        children.add(new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the content.", 0, java.lang.Integer.MAX_VALUE, author));
1597        children.add(new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the content.", 0, java.lang.Integer.MAX_VALUE, editor));
1598        children.add(new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the content.", 0, java.lang.Integer.MAX_VALUE, reviewer));
1599        children.add(new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the content for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser));
1600        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related resources such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
1601        children.add(new Property("trigger", "TriggerDefinition", "The trigger element defines when the event occurs. If more than one trigger condition is specified, the event fires whenever any one of the trigger conditions is met.", 0, java.lang.Integer.MAX_VALUE, trigger));
1602      }
1603
1604      @Override
1605      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1606        switch (_hash) {
1607        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers.", 0, 1, url);
1608        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this event definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
1609        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition 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);
1610        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
1611        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the event definition.", 0, 1, title);
1612        case -2060497896: /*subtitle*/  return new Property("subtitle", "string", "An explanatory or alternate title for the event definition giving additional information about its content.", 0, 1, subtitle);
1613        case -892481550: /*status*/  return new Property("status", "code", "The status of this event definition. Enables tracking the life-cycle of the content.", 0, 1, status);
1614        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this event definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
1615        case -573640748: /*subject[x]*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the event definition.", 0, 1, subject);
1616        case -1867885268: /*subject*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the event definition.", 0, 1, subject);
1617        case -1257122603: /*subjectCodeableConcept*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the event definition.", 0, 1, subject);
1618        case 772938623: /*subjectReference*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the event definition.", 0, 1, subject);
1619        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the event definition 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 event definition changes.", 0, 1, date);
1620        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the event definition.", 0, 1, publisher);
1621        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);
1622        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the event definition from a consumer's perspective.", 0, 1, description);
1623        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 event definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
1624        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the event definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
1625        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this event definition is needed and why it has been designed as it has.", 0, 1, purpose);
1626        case 111574433: /*usage*/  return new Property("usage", "string", "A detailed description of how the event definition is used from a clinical perspective.", 0, 1, usage);
1627        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition.", 0, 1, copyright);
1628        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
1629        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
1630        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the event definition content was or is planned to be in active use.", 0, 1, effectivePeriod);
1631        case 110546223: /*topic*/  return new Property("topic", "CodeableConcept", "Descriptive topics related to the module. Topics provide a high-level categorization of the module that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic);
1632        case -1406328437: /*author*/  return new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the content.", 0, java.lang.Integer.MAX_VALUE, author);
1633        case -1307827859: /*editor*/  return new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the content.", 0, java.lang.Integer.MAX_VALUE, editor);
1634        case -261190139: /*reviewer*/  return new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the content.", 0, java.lang.Integer.MAX_VALUE, reviewer);
1635        case 1740277666: /*endorser*/  return new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the content for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser);
1636        case 666807069: /*relatedArtifact*/  return new Property("relatedArtifact", "RelatedArtifact", "Related resources such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact);
1637        case -1059891784: /*trigger*/  return new Property("trigger", "TriggerDefinition", "The trigger element defines when the event occurs. If more than one trigger condition is specified, the event fires whenever any one of the trigger conditions is met.", 0, java.lang.Integer.MAX_VALUE, trigger);
1638        default: return super.getNamedProperty(_hash, _name, _checkValid);
1639        }
1640
1641      }
1642
1643      @Override
1644      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1645        switch (hash) {
1646        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1647        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1648        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
1649        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1650        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1651        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
1652        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1653        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
1654        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Type
1655        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1656        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
1657        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
1658        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1659        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
1660        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1661        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
1662        case 111574433: /*usage*/ return this.usage == null ? new Base[0] : new Base[] {this.usage}; // StringType
1663        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
1664        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
1665        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
1666        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
1667        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
1668        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
1669        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
1670        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
1671        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
1672        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
1673        case -1059891784: /*trigger*/ return this.trigger == null ? new Base[0] : this.trigger.toArray(new Base[this.trigger.size()]); // TriggerDefinition
1674        default: return super.getProperty(hash, name, checkValid);
1675        }
1676
1677      }
1678
1679      @Override
1680      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1681        switch (hash) {
1682        case 116079: // url
1683          this.url = castToUri(value); // UriType
1684          return value;
1685        case -1618432855: // identifier
1686          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1687          return value;
1688        case 351608024: // version
1689          this.version = castToString(value); // StringType
1690          return value;
1691        case 3373707: // name
1692          this.name = castToString(value); // StringType
1693          return value;
1694        case 110371416: // title
1695          this.title = castToString(value); // StringType
1696          return value;
1697        case -2060497896: // subtitle
1698          this.subtitle = castToString(value); // StringType
1699          return value;
1700        case -892481550: // status
1701          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1702          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1703          return value;
1704        case -404562712: // experimental
1705          this.experimental = castToBoolean(value); // BooleanType
1706          return value;
1707        case -1867885268: // subject
1708          this.subject = castToType(value); // Type
1709          return value;
1710        case 3076014: // date
1711          this.date = castToDateTime(value); // DateTimeType
1712          return value;
1713        case 1447404028: // publisher
1714          this.publisher = castToString(value); // StringType
1715          return value;
1716        case 951526432: // contact
1717          this.getContact().add(castToContactDetail(value)); // ContactDetail
1718          return value;
1719        case -1724546052: // description
1720          this.description = castToMarkdown(value); // MarkdownType
1721          return value;
1722        case -669707736: // useContext
1723          this.getUseContext().add(castToUsageContext(value)); // UsageContext
1724          return value;
1725        case -507075711: // jurisdiction
1726          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
1727          return value;
1728        case -220463842: // purpose
1729          this.purpose = castToMarkdown(value); // MarkdownType
1730          return value;
1731        case 111574433: // usage
1732          this.usage = castToString(value); // StringType
1733          return value;
1734        case 1522889671: // copyright
1735          this.copyright = castToMarkdown(value); // MarkdownType
1736          return value;
1737        case 223539345: // approvalDate
1738          this.approvalDate = castToDate(value); // DateType
1739          return value;
1740        case -1687512484: // lastReviewDate
1741          this.lastReviewDate = castToDate(value); // DateType
1742          return value;
1743        case -403934648: // effectivePeriod
1744          this.effectivePeriod = castToPeriod(value); // Period
1745          return value;
1746        case 110546223: // topic
1747          this.getTopic().add(castToCodeableConcept(value)); // CodeableConcept
1748          return value;
1749        case -1406328437: // author
1750          this.getAuthor().add(castToContactDetail(value)); // ContactDetail
1751          return value;
1752        case -1307827859: // editor
1753          this.getEditor().add(castToContactDetail(value)); // ContactDetail
1754          return value;
1755        case -261190139: // reviewer
1756          this.getReviewer().add(castToContactDetail(value)); // ContactDetail
1757          return value;
1758        case 1740277666: // endorser
1759          this.getEndorser().add(castToContactDetail(value)); // ContactDetail
1760          return value;
1761        case 666807069: // relatedArtifact
1762          this.getRelatedArtifact().add(castToRelatedArtifact(value)); // RelatedArtifact
1763          return value;
1764        case -1059891784: // trigger
1765          this.getTrigger().add(castToTriggerDefinition(value)); // TriggerDefinition
1766          return value;
1767        default: return super.setProperty(hash, name, value);
1768        }
1769
1770      }
1771
1772      @Override
1773      public Base setProperty(String name, Base value) throws FHIRException {
1774        if (name.equals("url")) {
1775          this.url = castToUri(value); // UriType
1776        } else if (name.equals("identifier")) {
1777          this.getIdentifier().add(castToIdentifier(value));
1778        } else if (name.equals("version")) {
1779          this.version = castToString(value); // StringType
1780        } else if (name.equals("name")) {
1781          this.name = castToString(value); // StringType
1782        } else if (name.equals("title")) {
1783          this.title = castToString(value); // StringType
1784        } else if (name.equals("subtitle")) {
1785          this.subtitle = castToString(value); // StringType
1786        } else if (name.equals("status")) {
1787          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1788          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1789        } else if (name.equals("experimental")) {
1790          this.experimental = castToBoolean(value); // BooleanType
1791        } else if (name.equals("subject[x]")) {
1792          this.subject = castToType(value); // Type
1793        } else if (name.equals("date")) {
1794          this.date = castToDateTime(value); // DateTimeType
1795        } else if (name.equals("publisher")) {
1796          this.publisher = castToString(value); // StringType
1797        } else if (name.equals("contact")) {
1798          this.getContact().add(castToContactDetail(value));
1799        } else if (name.equals("description")) {
1800          this.description = castToMarkdown(value); // MarkdownType
1801        } else if (name.equals("useContext")) {
1802          this.getUseContext().add(castToUsageContext(value));
1803        } else if (name.equals("jurisdiction")) {
1804          this.getJurisdiction().add(castToCodeableConcept(value));
1805        } else if (name.equals("purpose")) {
1806          this.purpose = castToMarkdown(value); // MarkdownType
1807        } else if (name.equals("usage")) {
1808          this.usage = castToString(value); // StringType
1809        } else if (name.equals("copyright")) {
1810          this.copyright = castToMarkdown(value); // MarkdownType
1811        } else if (name.equals("approvalDate")) {
1812          this.approvalDate = castToDate(value); // DateType
1813        } else if (name.equals("lastReviewDate")) {
1814          this.lastReviewDate = castToDate(value); // DateType
1815        } else if (name.equals("effectivePeriod")) {
1816          this.effectivePeriod = castToPeriod(value); // Period
1817        } else if (name.equals("topic")) {
1818          this.getTopic().add(castToCodeableConcept(value));
1819        } else if (name.equals("author")) {
1820          this.getAuthor().add(castToContactDetail(value));
1821        } else if (name.equals("editor")) {
1822          this.getEditor().add(castToContactDetail(value));
1823        } else if (name.equals("reviewer")) {
1824          this.getReviewer().add(castToContactDetail(value));
1825        } else if (name.equals("endorser")) {
1826          this.getEndorser().add(castToContactDetail(value));
1827        } else if (name.equals("relatedArtifact")) {
1828          this.getRelatedArtifact().add(castToRelatedArtifact(value));
1829        } else if (name.equals("trigger")) {
1830          this.getTrigger().add(castToTriggerDefinition(value));
1831        } else
1832          return super.setProperty(name, value);
1833        return value;
1834      }
1835
1836      @Override
1837      public Base makeProperty(int hash, String name) throws FHIRException {
1838        switch (hash) {
1839        case 116079:  return getUrlElement();
1840        case -1618432855:  return addIdentifier(); 
1841        case 351608024:  return getVersionElement();
1842        case 3373707:  return getNameElement();
1843        case 110371416:  return getTitleElement();
1844        case -2060497896:  return getSubtitleElement();
1845        case -892481550:  return getStatusElement();
1846        case -404562712:  return getExperimentalElement();
1847        case -573640748:  return getSubject(); 
1848        case -1867885268:  return getSubject(); 
1849        case 3076014:  return getDateElement();
1850        case 1447404028:  return getPublisherElement();
1851        case 951526432:  return addContact(); 
1852        case -1724546052:  return getDescriptionElement();
1853        case -669707736:  return addUseContext(); 
1854        case -507075711:  return addJurisdiction(); 
1855        case -220463842:  return getPurposeElement();
1856        case 111574433:  return getUsageElement();
1857        case 1522889671:  return getCopyrightElement();
1858        case 223539345:  return getApprovalDateElement();
1859        case -1687512484:  return getLastReviewDateElement();
1860        case -403934648:  return getEffectivePeriod(); 
1861        case 110546223:  return addTopic(); 
1862        case -1406328437:  return addAuthor(); 
1863        case -1307827859:  return addEditor(); 
1864        case -261190139:  return addReviewer(); 
1865        case 1740277666:  return addEndorser(); 
1866        case 666807069:  return addRelatedArtifact(); 
1867        case -1059891784:  return addTrigger(); 
1868        default: return super.makeProperty(hash, name);
1869        }
1870
1871      }
1872
1873      @Override
1874      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1875        switch (hash) {
1876        case 116079: /*url*/ return new String[] {"uri"};
1877        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1878        case 351608024: /*version*/ return new String[] {"string"};
1879        case 3373707: /*name*/ return new String[] {"string"};
1880        case 110371416: /*title*/ return new String[] {"string"};
1881        case -2060497896: /*subtitle*/ return new String[] {"string"};
1882        case -892481550: /*status*/ return new String[] {"code"};
1883        case -404562712: /*experimental*/ return new String[] {"boolean"};
1884        case -1867885268: /*subject*/ return new String[] {"CodeableConcept", "Reference"};
1885        case 3076014: /*date*/ return new String[] {"dateTime"};
1886        case 1447404028: /*publisher*/ return new String[] {"string"};
1887        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
1888        case -1724546052: /*description*/ return new String[] {"markdown"};
1889        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
1890        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
1891        case -220463842: /*purpose*/ return new String[] {"markdown"};
1892        case 111574433: /*usage*/ return new String[] {"string"};
1893        case 1522889671: /*copyright*/ return new String[] {"markdown"};
1894        case 223539345: /*approvalDate*/ return new String[] {"date"};
1895        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
1896        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
1897        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
1898        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
1899        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
1900        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
1901        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
1902        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
1903        case -1059891784: /*trigger*/ return new String[] {"TriggerDefinition"};
1904        default: return super.getTypesForProperty(hash, name);
1905        }
1906
1907      }
1908
1909      @Override
1910      public Base addChild(String name) throws FHIRException {
1911        if (name.equals("url")) {
1912          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.url");
1913        }
1914        else if (name.equals("identifier")) {
1915          return addIdentifier();
1916        }
1917        else if (name.equals("version")) {
1918          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.version");
1919        }
1920        else if (name.equals("name")) {
1921          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.name");
1922        }
1923        else if (name.equals("title")) {
1924          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.title");
1925        }
1926        else if (name.equals("subtitle")) {
1927          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.subtitle");
1928        }
1929        else if (name.equals("status")) {
1930          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.status");
1931        }
1932        else if (name.equals("experimental")) {
1933          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.experimental");
1934        }
1935        else if (name.equals("subjectCodeableConcept")) {
1936          this.subject = new CodeableConcept();
1937          return this.subject;
1938        }
1939        else if (name.equals("subjectReference")) {
1940          this.subject = new Reference();
1941          return this.subject;
1942        }
1943        else if (name.equals("date")) {
1944          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.date");
1945        }
1946        else if (name.equals("publisher")) {
1947          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.publisher");
1948        }
1949        else if (name.equals("contact")) {
1950          return addContact();
1951        }
1952        else if (name.equals("description")) {
1953          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.description");
1954        }
1955        else if (name.equals("useContext")) {
1956          return addUseContext();
1957        }
1958        else if (name.equals("jurisdiction")) {
1959          return addJurisdiction();
1960        }
1961        else if (name.equals("purpose")) {
1962          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.purpose");
1963        }
1964        else if (name.equals("usage")) {
1965          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.usage");
1966        }
1967        else if (name.equals("copyright")) {
1968          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.copyright");
1969        }
1970        else if (name.equals("approvalDate")) {
1971          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.approvalDate");
1972        }
1973        else if (name.equals("lastReviewDate")) {
1974          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.lastReviewDate");
1975        }
1976        else if (name.equals("effectivePeriod")) {
1977          this.effectivePeriod = new Period();
1978          return this.effectivePeriod;
1979        }
1980        else if (name.equals("topic")) {
1981          return addTopic();
1982        }
1983        else if (name.equals("author")) {
1984          return addAuthor();
1985        }
1986        else if (name.equals("editor")) {
1987          return addEditor();
1988        }
1989        else if (name.equals("reviewer")) {
1990          return addReviewer();
1991        }
1992        else if (name.equals("endorser")) {
1993          return addEndorser();
1994        }
1995        else if (name.equals("relatedArtifact")) {
1996          return addRelatedArtifact();
1997        }
1998        else if (name.equals("trigger")) {
1999          return addTrigger();
2000        }
2001        else
2002          return super.addChild(name);
2003      }
2004
2005  public String fhirType() {
2006    return "EventDefinition";
2007
2008  }
2009
2010      public EventDefinition copy() {
2011        EventDefinition dst = new EventDefinition();
2012        copyValues(dst);
2013        return dst;
2014      }
2015
2016      public void copyValues(EventDefinition dst) {
2017        super.copyValues(dst);
2018        dst.url = url == null ? null : url.copy();
2019        if (identifier != null) {
2020          dst.identifier = new ArrayList<Identifier>();
2021          for (Identifier i : identifier)
2022            dst.identifier.add(i.copy());
2023        };
2024        dst.version = version == null ? null : version.copy();
2025        dst.name = name == null ? null : name.copy();
2026        dst.title = title == null ? null : title.copy();
2027        dst.subtitle = subtitle == null ? null : subtitle.copy();
2028        dst.status = status == null ? null : status.copy();
2029        dst.experimental = experimental == null ? null : experimental.copy();
2030        dst.subject = subject == null ? null : subject.copy();
2031        dst.date = date == null ? null : date.copy();
2032        dst.publisher = publisher == null ? null : publisher.copy();
2033        if (contact != null) {
2034          dst.contact = new ArrayList<ContactDetail>();
2035          for (ContactDetail i : contact)
2036            dst.contact.add(i.copy());
2037        };
2038        dst.description = description == null ? null : description.copy();
2039        if (useContext != null) {
2040          dst.useContext = new ArrayList<UsageContext>();
2041          for (UsageContext i : useContext)
2042            dst.useContext.add(i.copy());
2043        };
2044        if (jurisdiction != null) {
2045          dst.jurisdiction = new ArrayList<CodeableConcept>();
2046          for (CodeableConcept i : jurisdiction)
2047            dst.jurisdiction.add(i.copy());
2048        };
2049        dst.purpose = purpose == null ? null : purpose.copy();
2050        dst.usage = usage == null ? null : usage.copy();
2051        dst.copyright = copyright == null ? null : copyright.copy();
2052        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
2053        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
2054        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
2055        if (topic != null) {
2056          dst.topic = new ArrayList<CodeableConcept>();
2057          for (CodeableConcept i : topic)
2058            dst.topic.add(i.copy());
2059        };
2060        if (author != null) {
2061          dst.author = new ArrayList<ContactDetail>();
2062          for (ContactDetail i : author)
2063            dst.author.add(i.copy());
2064        };
2065        if (editor != null) {
2066          dst.editor = new ArrayList<ContactDetail>();
2067          for (ContactDetail i : editor)
2068            dst.editor.add(i.copy());
2069        };
2070        if (reviewer != null) {
2071          dst.reviewer = new ArrayList<ContactDetail>();
2072          for (ContactDetail i : reviewer)
2073            dst.reviewer.add(i.copy());
2074        };
2075        if (endorser != null) {
2076          dst.endorser = new ArrayList<ContactDetail>();
2077          for (ContactDetail i : endorser)
2078            dst.endorser.add(i.copy());
2079        };
2080        if (relatedArtifact != null) {
2081          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
2082          for (RelatedArtifact i : relatedArtifact)
2083            dst.relatedArtifact.add(i.copy());
2084        };
2085        if (trigger != null) {
2086          dst.trigger = new ArrayList<TriggerDefinition>();
2087          for (TriggerDefinition i : trigger)
2088            dst.trigger.add(i.copy());
2089        };
2090      }
2091
2092      protected EventDefinition typedCopy() {
2093        return copy();
2094      }
2095
2096      @Override
2097      public boolean equalsDeep(Base other_) {
2098        if (!super.equalsDeep(other_))
2099          return false;
2100        if (!(other_ instanceof EventDefinition))
2101          return false;
2102        EventDefinition o = (EventDefinition) other_;
2103        return compareDeep(identifier, o.identifier, true) && compareDeep(subtitle, o.subtitle, true) && compareDeep(subject, o.subject, true)
2104           && compareDeep(purpose, o.purpose, true) && compareDeep(usage, o.usage, true) && compareDeep(copyright, o.copyright, true)
2105           && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
2106           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true) && compareDeep(author, o.author, true)
2107           && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
2108           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(trigger, o.trigger, true)
2109          ;
2110      }
2111
2112      @Override
2113      public boolean equalsShallow(Base other_) {
2114        if (!super.equalsShallow(other_))
2115          return false;
2116        if (!(other_ instanceof EventDefinition))
2117          return false;
2118        EventDefinition o = (EventDefinition) other_;
2119        return compareValues(subtitle, o.subtitle, true) && compareValues(purpose, o.purpose, true) && compareValues(usage, o.usage, true)
2120           && compareValues(copyright, o.copyright, true) && compareValues(approvalDate, o.approvalDate, true)
2121           && compareValues(lastReviewDate, o.lastReviewDate, true);
2122      }
2123
2124      public boolean isEmpty() {
2125        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, subtitle, subject
2126          , purpose, usage, copyright, approvalDate, lastReviewDate, effectivePeriod, topic
2127          , author, editor, reviewer, endorser, relatedArtifact, trigger);
2128      }
2129
2130  @Override
2131  public ResourceType getResourceType() {
2132    return ResourceType.EventDefinition;
2133   }
2134
2135 /**
2136   * Search parameter: <b>date</b>
2137   * <p>
2138   * Description: <b>The event definition publication date</b><br>
2139   * Type: <b>date</b><br>
2140   * Path: <b>EventDefinition.date</b><br>
2141   * </p>
2142   */
2143  @SearchParamDefinition(name="date", path="EventDefinition.date", description="The event definition publication date", type="date" )
2144  public static final String SP_DATE = "date";
2145 /**
2146   * <b>Fluent Client</b> search parameter constant for <b>date</b>
2147   * <p>
2148   * Description: <b>The event definition publication date</b><br>
2149   * Type: <b>date</b><br>
2150   * Path: <b>EventDefinition.date</b><br>
2151   * </p>
2152   */
2153  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
2154
2155 /**
2156   * Search parameter: <b>identifier</b>
2157   * <p>
2158   * Description: <b>External identifier for the event definition</b><br>
2159   * Type: <b>token</b><br>
2160   * Path: <b>EventDefinition.identifier</b><br>
2161   * </p>
2162   */
2163  @SearchParamDefinition(name="identifier", path="EventDefinition.identifier", description="External identifier for the event definition", type="token" )
2164  public static final String SP_IDENTIFIER = "identifier";
2165 /**
2166   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2167   * <p>
2168   * Description: <b>External identifier for the event definition</b><br>
2169   * Type: <b>token</b><br>
2170   * Path: <b>EventDefinition.identifier</b><br>
2171   * </p>
2172   */
2173  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2174
2175 /**
2176   * Search parameter: <b>successor</b>
2177   * <p>
2178   * Description: <b>What resource is being referenced</b><br>
2179   * Type: <b>reference</b><br>
2180   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2181   * </p>
2182   */
2183  @SearchParamDefinition(name="successor", path="EventDefinition.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference" )
2184  public static final String SP_SUCCESSOR = "successor";
2185 /**
2186   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
2187   * <p>
2188   * Description: <b>What resource is being referenced</b><br>
2189   * Type: <b>reference</b><br>
2190   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2191   * </p>
2192   */
2193  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
2194
2195/**
2196   * Constant for fluent queries to be used to add include statements. Specifies
2197   * the path value of "<b>EventDefinition:successor</b>".
2198   */
2199  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("EventDefinition:successor").toLocked();
2200
2201 /**
2202   * Search parameter: <b>context-type-value</b>
2203   * <p>
2204   * Description: <b>A use context type and value assigned to the event definition</b><br>
2205   * Type: <b>composite</b><br>
2206   * Path: <b></b><br>
2207   * </p>
2208   */
2209  @SearchParamDefinition(name="context-type-value", path="EventDefinition.useContext", description="A use context type and value assigned to the event definition", type="composite", compositeOf={"context-type", "context"} )
2210  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
2211 /**
2212   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
2213   * <p>
2214   * Description: <b>A use context type and value assigned to the event definition</b><br>
2215   * Type: <b>composite</b><br>
2216   * Path: <b></b><br>
2217   * </p>
2218   */
2219  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);
2220
2221 /**
2222   * Search parameter: <b>jurisdiction</b>
2223   * <p>
2224   * Description: <b>Intended jurisdiction for the event definition</b><br>
2225   * Type: <b>token</b><br>
2226   * Path: <b>EventDefinition.jurisdiction</b><br>
2227   * </p>
2228   */
2229  @SearchParamDefinition(name="jurisdiction", path="EventDefinition.jurisdiction", description="Intended jurisdiction for the event definition", type="token" )
2230  public static final String SP_JURISDICTION = "jurisdiction";
2231 /**
2232   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
2233   * <p>
2234   * Description: <b>Intended jurisdiction for the event definition</b><br>
2235   * Type: <b>token</b><br>
2236   * Path: <b>EventDefinition.jurisdiction</b><br>
2237   * </p>
2238   */
2239  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
2240
2241 /**
2242   * Search parameter: <b>description</b>
2243   * <p>
2244   * Description: <b>The description of the event definition</b><br>
2245   * Type: <b>string</b><br>
2246   * Path: <b>EventDefinition.description</b><br>
2247   * </p>
2248   */
2249  @SearchParamDefinition(name="description", path="EventDefinition.description", description="The description of the event definition", type="string" )
2250  public static final String SP_DESCRIPTION = "description";
2251 /**
2252   * <b>Fluent Client</b> search parameter constant for <b>description</b>
2253   * <p>
2254   * Description: <b>The description of the event definition</b><br>
2255   * Type: <b>string</b><br>
2256   * Path: <b>EventDefinition.description</b><br>
2257   * </p>
2258   */
2259  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
2260
2261 /**
2262   * Search parameter: <b>derived-from</b>
2263   * <p>
2264   * Description: <b>What resource is being referenced</b><br>
2265   * Type: <b>reference</b><br>
2266   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2267   * </p>
2268   */
2269  @SearchParamDefinition(name="derived-from", path="EventDefinition.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference" )
2270  public static final String SP_DERIVED_FROM = "derived-from";
2271 /**
2272   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
2273   * <p>
2274   * Description: <b>What resource is being referenced</b><br>
2275   * Type: <b>reference</b><br>
2276   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2277   * </p>
2278   */
2279  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
2280
2281/**
2282   * Constant for fluent queries to be used to add include statements. Specifies
2283   * the path value of "<b>EventDefinition:derived-from</b>".
2284   */
2285  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("EventDefinition:derived-from").toLocked();
2286
2287 /**
2288   * Search parameter: <b>context-type</b>
2289   * <p>
2290   * Description: <b>A type of use context assigned to the event definition</b><br>
2291   * Type: <b>token</b><br>
2292   * Path: <b>EventDefinition.useContext.code</b><br>
2293   * </p>
2294   */
2295  @SearchParamDefinition(name="context-type", path="EventDefinition.useContext.code", description="A type of use context assigned to the event definition", type="token" )
2296  public static final String SP_CONTEXT_TYPE = "context-type";
2297 /**
2298   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
2299   * <p>
2300   * Description: <b>A type of use context assigned to the event definition</b><br>
2301   * Type: <b>token</b><br>
2302   * Path: <b>EventDefinition.useContext.code</b><br>
2303   * </p>
2304   */
2305  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
2306
2307 /**
2308   * Search parameter: <b>predecessor</b>
2309   * <p>
2310   * Description: <b>What resource is being referenced</b><br>
2311   * Type: <b>reference</b><br>
2312   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2313   * </p>
2314   */
2315  @SearchParamDefinition(name="predecessor", path="EventDefinition.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference" )
2316  public static final String SP_PREDECESSOR = "predecessor";
2317 /**
2318   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
2319   * <p>
2320   * Description: <b>What resource is being referenced</b><br>
2321   * Type: <b>reference</b><br>
2322   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2323   * </p>
2324   */
2325  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
2326
2327/**
2328   * Constant for fluent queries to be used to add include statements. Specifies
2329   * the path value of "<b>EventDefinition:predecessor</b>".
2330   */
2331  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("EventDefinition:predecessor").toLocked();
2332
2333 /**
2334   * Search parameter: <b>title</b>
2335   * <p>
2336   * Description: <b>The human-friendly name of the event definition</b><br>
2337   * Type: <b>string</b><br>
2338   * Path: <b>EventDefinition.title</b><br>
2339   * </p>
2340   */
2341  @SearchParamDefinition(name="title", path="EventDefinition.title", description="The human-friendly name of the event definition", type="string" )
2342  public static final String SP_TITLE = "title";
2343 /**
2344   * <b>Fluent Client</b> search parameter constant for <b>title</b>
2345   * <p>
2346   * Description: <b>The human-friendly name of the event definition</b><br>
2347   * Type: <b>string</b><br>
2348   * Path: <b>EventDefinition.title</b><br>
2349   * </p>
2350   */
2351  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
2352
2353 /**
2354   * Search parameter: <b>composed-of</b>
2355   * <p>
2356   * Description: <b>What resource is being referenced</b><br>
2357   * Type: <b>reference</b><br>
2358   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2359   * </p>
2360   */
2361  @SearchParamDefinition(name="composed-of", path="EventDefinition.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference" )
2362  public static final String SP_COMPOSED_OF = "composed-of";
2363 /**
2364   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
2365   * <p>
2366   * Description: <b>What resource is being referenced</b><br>
2367   * Type: <b>reference</b><br>
2368   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2369   * </p>
2370   */
2371  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
2372
2373/**
2374   * Constant for fluent queries to be used to add include statements. Specifies
2375   * the path value of "<b>EventDefinition:composed-of</b>".
2376   */
2377  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("EventDefinition:composed-of").toLocked();
2378
2379 /**
2380   * Search parameter: <b>version</b>
2381   * <p>
2382   * Description: <b>The business version of the event definition</b><br>
2383   * Type: <b>token</b><br>
2384   * Path: <b>EventDefinition.version</b><br>
2385   * </p>
2386   */
2387  @SearchParamDefinition(name="version", path="EventDefinition.version", description="The business version of the event definition", type="token" )
2388  public static final String SP_VERSION = "version";
2389 /**
2390   * <b>Fluent Client</b> search parameter constant for <b>version</b>
2391   * <p>
2392   * Description: <b>The business version of the event definition</b><br>
2393   * Type: <b>token</b><br>
2394   * Path: <b>EventDefinition.version</b><br>
2395   * </p>
2396   */
2397  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
2398
2399 /**
2400   * Search parameter: <b>url</b>
2401   * <p>
2402   * Description: <b>The uri that identifies the event definition</b><br>
2403   * Type: <b>uri</b><br>
2404   * Path: <b>EventDefinition.url</b><br>
2405   * </p>
2406   */
2407  @SearchParamDefinition(name="url", path="EventDefinition.url", description="The uri that identifies the event definition", type="uri" )
2408  public static final String SP_URL = "url";
2409 /**
2410   * <b>Fluent Client</b> search parameter constant for <b>url</b>
2411   * <p>
2412   * Description: <b>The uri that identifies the event definition</b><br>
2413   * Type: <b>uri</b><br>
2414   * Path: <b>EventDefinition.url</b><br>
2415   * </p>
2416   */
2417  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
2418
2419 /**
2420   * Search parameter: <b>context-quantity</b>
2421   * <p>
2422   * Description: <b>A quantity- or range-valued use context assigned to the event definition</b><br>
2423   * Type: <b>quantity</b><br>
2424   * Path: <b>EventDefinition.useContext.valueQuantity, EventDefinition.useContext.valueRange</b><br>
2425   * </p>
2426   */
2427  @SearchParamDefinition(name="context-quantity", path="(EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the event definition", type="quantity" )
2428  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
2429 /**
2430   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
2431   * <p>
2432   * Description: <b>A quantity- or range-valued use context assigned to the event definition</b><br>
2433   * Type: <b>quantity</b><br>
2434   * Path: <b>EventDefinition.useContext.valueQuantity, EventDefinition.useContext.valueRange</b><br>
2435   * </p>
2436   */
2437  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
2438
2439 /**
2440   * Search parameter: <b>effective</b>
2441   * <p>
2442   * Description: <b>The time during which the event definition is intended to be in use</b><br>
2443   * Type: <b>date</b><br>
2444   * Path: <b>EventDefinition.effectivePeriod</b><br>
2445   * </p>
2446   */
2447  @SearchParamDefinition(name="effective", path="EventDefinition.effectivePeriod", description="The time during which the event definition is intended to be in use", type="date" )
2448  public static final String SP_EFFECTIVE = "effective";
2449 /**
2450   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
2451   * <p>
2452   * Description: <b>The time during which the event definition is intended to be in use</b><br>
2453   * Type: <b>date</b><br>
2454   * Path: <b>EventDefinition.effectivePeriod</b><br>
2455   * </p>
2456   */
2457  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
2458
2459 /**
2460   * Search parameter: <b>depends-on</b>
2461   * <p>
2462   * Description: <b>What resource is being referenced</b><br>
2463   * Type: <b>reference</b><br>
2464   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2465   * </p>
2466   */
2467  @SearchParamDefinition(name="depends-on", path="EventDefinition.relatedArtifact.where(type='depends-on').resource", description="What resource is being referenced", type="reference" )
2468  public static final String SP_DEPENDS_ON = "depends-on";
2469 /**
2470   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
2471   * <p>
2472   * Description: <b>What resource is being referenced</b><br>
2473   * Type: <b>reference</b><br>
2474   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2475   * </p>
2476   */
2477  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
2478
2479/**
2480   * Constant for fluent queries to be used to add include statements. Specifies
2481   * the path value of "<b>EventDefinition:depends-on</b>".
2482   */
2483  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("EventDefinition:depends-on").toLocked();
2484
2485 /**
2486   * Search parameter: <b>name</b>
2487   * <p>
2488   * Description: <b>Computationally friendly name of the event definition</b><br>
2489   * Type: <b>string</b><br>
2490   * Path: <b>EventDefinition.name</b><br>
2491   * </p>
2492   */
2493  @SearchParamDefinition(name="name", path="EventDefinition.name", description="Computationally friendly name of the event definition", type="string" )
2494  public static final String SP_NAME = "name";
2495 /**
2496   * <b>Fluent Client</b> search parameter constant for <b>name</b>
2497   * <p>
2498   * Description: <b>Computationally friendly name of the event definition</b><br>
2499   * Type: <b>string</b><br>
2500   * Path: <b>EventDefinition.name</b><br>
2501   * </p>
2502   */
2503  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
2504
2505 /**
2506   * Search parameter: <b>context</b>
2507   * <p>
2508   * Description: <b>A use context assigned to the event definition</b><br>
2509   * Type: <b>token</b><br>
2510   * Path: <b>EventDefinition.useContext.valueCodeableConcept</b><br>
2511   * </p>
2512   */
2513  @SearchParamDefinition(name="context", path="(EventDefinition.useContext.value as CodeableConcept)", description="A use context assigned to the event definition", type="token" )
2514  public static final String SP_CONTEXT = "context";
2515 /**
2516   * <b>Fluent Client</b> search parameter constant for <b>context</b>
2517   * <p>
2518   * Description: <b>A use context assigned to the event definition</b><br>
2519   * Type: <b>token</b><br>
2520   * Path: <b>EventDefinition.useContext.valueCodeableConcept</b><br>
2521   * </p>
2522   */
2523  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
2524
2525 /**
2526   * Search parameter: <b>publisher</b>
2527   * <p>
2528   * Description: <b>Name of the publisher of the event definition</b><br>
2529   * Type: <b>string</b><br>
2530   * Path: <b>EventDefinition.publisher</b><br>
2531   * </p>
2532   */
2533  @SearchParamDefinition(name="publisher", path="EventDefinition.publisher", description="Name of the publisher of the event definition", type="string" )
2534  public static final String SP_PUBLISHER = "publisher";
2535 /**
2536   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
2537   * <p>
2538   * Description: <b>Name of the publisher of the event definition</b><br>
2539   * Type: <b>string</b><br>
2540   * Path: <b>EventDefinition.publisher</b><br>
2541   * </p>
2542   */
2543  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
2544
2545 /**
2546   * Search parameter: <b>topic</b>
2547   * <p>
2548   * Description: <b>Topics associated with the module</b><br>
2549   * Type: <b>token</b><br>
2550   * Path: <b>EventDefinition.topic</b><br>
2551   * </p>
2552   */
2553  @SearchParamDefinition(name="topic", path="EventDefinition.topic", description="Topics associated with the module", type="token" )
2554  public static final String SP_TOPIC = "topic";
2555 /**
2556   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
2557   * <p>
2558   * Description: <b>Topics associated with the module</b><br>
2559   * Type: <b>token</b><br>
2560   * Path: <b>EventDefinition.topic</b><br>
2561   * </p>
2562   */
2563  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
2564
2565 /**
2566   * Search parameter: <b>context-type-quantity</b>
2567   * <p>
2568   * Description: <b>A use context type and quantity- or range-based value assigned to the event definition</b><br>
2569   * Type: <b>composite</b><br>
2570   * Path: <b></b><br>
2571   * </p>
2572   */
2573  @SearchParamDefinition(name="context-type-quantity", path="EventDefinition.useContext", description="A use context type and quantity- or range-based value assigned to the event definition", type="composite", compositeOf={"context-type", "context-quantity"} )
2574  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
2575 /**
2576   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
2577   * <p>
2578   * Description: <b>A use context type and quantity- or range-based value assigned to the event definition</b><br>
2579   * Type: <b>composite</b><br>
2580   * Path: <b></b><br>
2581   * </p>
2582   */
2583  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);
2584
2585 /**
2586   * Search parameter: <b>status</b>
2587   * <p>
2588   * Description: <b>The current status of the event definition</b><br>
2589   * Type: <b>token</b><br>
2590   * Path: <b>EventDefinition.status</b><br>
2591   * </p>
2592   */
2593  @SearchParamDefinition(name="status", path="EventDefinition.status", description="The current status of the event definition", type="token" )
2594  public static final String SP_STATUS = "status";
2595 /**
2596   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2597   * <p>
2598   * Description: <b>The current status of the event definition</b><br>
2599   * Type: <b>token</b><br>
2600   * Path: <b>EventDefinition.status</b><br>
2601   * </p>
2602   */
2603  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2604
2605
2606}