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