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 Sun, May 6, 2018 17:51-0400 for FHIR v3.4.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/Profile/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", "contributor", "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     * A contributor to the content of the module, including authors, editors, reviewers, and endorsers.
127     */
128    @Child(name = "contributor", type = {Contributor.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
129    @Description(shortDefinition="A content contributor", formalDefinition="A contributor to the content of the module, including authors, editors, reviewers, and endorsers." )
130    protected List<Contributor> contributor;
131
132    /**
133     * Related resources such as additional documentation, justification, or bibliographic references.
134     */
135    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
136    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related resources such as additional documentation, justification, or bibliographic references." )
137    protected List<RelatedArtifact> relatedArtifact;
138
139    /**
140     * The trigger element defines when the event occurs.
141     */
142    @Child(name = "trigger", type = {TriggerDefinition.class}, order=12, min=1, max=1, modifier=false, summary=true)
143    @Description(shortDefinition="\"when\" the event occurs", formalDefinition="The trigger element defines when the event occurs." )
144    protected TriggerDefinition trigger;
145
146    private static final long serialVersionUID = 1654942169L;
147
148  /**
149   * Constructor
150   */
151    public EventDefinition() {
152      super();
153    }
154
155  /**
156   * Constructor
157   */
158    public EventDefinition(Enumeration<PublicationStatus> status, TriggerDefinition trigger) {
159      super();
160      this.status = status;
161      this.trigger = trigger;
162    }
163
164    /**
165     * @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 this event definition is (or will be) published.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
166     */
167    public UriType getUrlElement() { 
168      if (this.url == null)
169        if (Configuration.errorOnAutoCreate())
170          throw new Error("Attempt to auto-create EventDefinition.url");
171        else if (Configuration.doAutoCreate())
172          this.url = new UriType(); // bb
173      return this.url;
174    }
175
176    public boolean hasUrlElement() { 
177      return this.url != null && !this.url.isEmpty();
178    }
179
180    public boolean hasUrl() { 
181      return this.url != null && !this.url.isEmpty();
182    }
183
184    /**
185     * @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 this event definition is (or will be) published.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
186     */
187    public EventDefinition setUrlElement(UriType value) { 
188      this.url = value;
189      return this;
190    }
191
192    /**
193     * @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 this event definition is (or will be) published.
194     */
195    public String getUrl() { 
196      return this.url == null ? null : this.url.getValue();
197    }
198
199    /**
200     * @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 this event definition is (or will be) published.
201     */
202    public EventDefinition setUrl(String value) { 
203      if (Utilities.noString(value))
204        this.url = null;
205      else {
206        if (this.url == null)
207          this.url = new UriType();
208        this.url.setValue(value);
209      }
210      return this;
211    }
212
213    /**
214     * @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.)
215     */
216    public List<Identifier> getIdentifier() { 
217      if (this.identifier == null)
218        this.identifier = new ArrayList<Identifier>();
219      return this.identifier;
220    }
221
222    /**
223     * @return Returns a reference to <code>this</code> for easy method chaining
224     */
225    public EventDefinition setIdentifier(List<Identifier> theIdentifier) { 
226      this.identifier = theIdentifier;
227      return this;
228    }
229
230    public boolean hasIdentifier() { 
231      if (this.identifier == null)
232        return false;
233      for (Identifier item : this.identifier)
234        if (!item.isEmpty())
235          return true;
236      return false;
237    }
238
239    public Identifier addIdentifier() { //3
240      Identifier t = new Identifier();
241      if (this.identifier == null)
242        this.identifier = new ArrayList<Identifier>();
243      this.identifier.add(t);
244      return t;
245    }
246
247    public EventDefinition addIdentifier(Identifier t) { //3
248      if (t == null)
249        return this;
250      if (this.identifier == null)
251        this.identifier = new ArrayList<Identifier>();
252      this.identifier.add(t);
253      return this;
254    }
255
256    /**
257     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
258     */
259    public Identifier getIdentifierFirstRep() { 
260      if (getIdentifier().isEmpty()) {
261        addIdentifier();
262      }
263      return getIdentifier().get(0);
264    }
265
266    /**
267     * @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
268     */
269    public StringType getVersionElement() { 
270      if (this.version == null)
271        if (Configuration.errorOnAutoCreate())
272          throw new Error("Attempt to auto-create EventDefinition.version");
273        else if (Configuration.doAutoCreate())
274          this.version = new StringType(); // bb
275      return this.version;
276    }
277
278    public boolean hasVersionElement() { 
279      return this.version != null && !this.version.isEmpty();
280    }
281
282    public boolean hasVersion() { 
283      return this.version != null && !this.version.isEmpty();
284    }
285
286    /**
287     * @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
288     */
289    public EventDefinition setVersionElement(StringType value) { 
290      this.version = value;
291      return this;
292    }
293
294    /**
295     * @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.
296     */
297    public String getVersion() { 
298      return this.version == null ? null : this.version.getValue();
299    }
300
301    /**
302     * @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.
303     */
304    public EventDefinition setVersion(String value) { 
305      if (Utilities.noString(value))
306        this.version = null;
307      else {
308        if (this.version == null)
309          this.version = new StringType();
310        this.version.setValue(value);
311      }
312      return this;
313    }
314
315    /**
316     * @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
317     */
318    public StringType getNameElement() { 
319      if (this.name == null)
320        if (Configuration.errorOnAutoCreate())
321          throw new Error("Attempt to auto-create EventDefinition.name");
322        else if (Configuration.doAutoCreate())
323          this.name = new StringType(); // bb
324      return this.name;
325    }
326
327    public boolean hasNameElement() { 
328      return this.name != null && !this.name.isEmpty();
329    }
330
331    public boolean hasName() { 
332      return this.name != null && !this.name.isEmpty();
333    }
334
335    /**
336     * @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
337     */
338    public EventDefinition setNameElement(StringType value) { 
339      this.name = value;
340      return this;
341    }
342
343    /**
344     * @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.
345     */
346    public String getName() { 
347      return this.name == null ? null : this.name.getValue();
348    }
349
350    /**
351     * @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.
352     */
353    public EventDefinition setName(String value) { 
354      if (Utilities.noString(value))
355        this.name = null;
356      else {
357        if (this.name == null)
358          this.name = new StringType();
359        this.name.setValue(value);
360      }
361      return this;
362    }
363
364    /**
365     * @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
366     */
367    public StringType getTitleElement() { 
368      if (this.title == null)
369        if (Configuration.errorOnAutoCreate())
370          throw new Error("Attempt to auto-create EventDefinition.title");
371        else if (Configuration.doAutoCreate())
372          this.title = new StringType(); // bb
373      return this.title;
374    }
375
376    public boolean hasTitleElement() { 
377      return this.title != null && !this.title.isEmpty();
378    }
379
380    public boolean hasTitle() { 
381      return this.title != null && !this.title.isEmpty();
382    }
383
384    /**
385     * @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
386     */
387    public EventDefinition setTitleElement(StringType value) { 
388      this.title = value;
389      return this;
390    }
391
392    /**
393     * @return A short, descriptive, user-friendly title for the event definition.
394     */
395    public String getTitle() { 
396      return this.title == null ? null : this.title.getValue();
397    }
398
399    /**
400     * @param value A short, descriptive, user-friendly title for the event definition.
401     */
402    public EventDefinition setTitle(String value) { 
403      if (Utilities.noString(value))
404        this.title = null;
405      else {
406        if (this.title == null)
407          this.title = new StringType();
408        this.title.setValue(value);
409      }
410      return this;
411    }
412
413    /**
414     * @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
415     */
416    public StringType getSubtitleElement() { 
417      if (this.subtitle == null)
418        if (Configuration.errorOnAutoCreate())
419          throw new Error("Attempt to auto-create EventDefinition.subtitle");
420        else if (Configuration.doAutoCreate())
421          this.subtitle = new StringType(); // bb
422      return this.subtitle;
423    }
424
425    public boolean hasSubtitleElement() { 
426      return this.subtitle != null && !this.subtitle.isEmpty();
427    }
428
429    public boolean hasSubtitle() { 
430      return this.subtitle != null && !this.subtitle.isEmpty();
431    }
432
433    /**
434     * @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
435     */
436    public EventDefinition setSubtitleElement(StringType value) { 
437      this.subtitle = value;
438      return this;
439    }
440
441    /**
442     * @return An explanatory or alternate title for the event definition giving additional information about its content.
443     */
444    public String getSubtitle() { 
445      return this.subtitle == null ? null : this.subtitle.getValue();
446    }
447
448    /**
449     * @param value An explanatory or alternate title for the event definition giving additional information about its content.
450     */
451    public EventDefinition setSubtitle(String value) { 
452      if (Utilities.noString(value))
453        this.subtitle = null;
454      else {
455        if (this.subtitle == null)
456          this.subtitle = new StringType();
457        this.subtitle.setValue(value);
458      }
459      return this;
460    }
461
462    /**
463     * @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
464     */
465    public Enumeration<PublicationStatus> getStatusElement() { 
466      if (this.status == null)
467        if (Configuration.errorOnAutoCreate())
468          throw new Error("Attempt to auto-create EventDefinition.status");
469        else if (Configuration.doAutoCreate())
470          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
471      return this.status;
472    }
473
474    public boolean hasStatusElement() { 
475      return this.status != null && !this.status.isEmpty();
476    }
477
478    public boolean hasStatus() { 
479      return this.status != null && !this.status.isEmpty();
480    }
481
482    /**
483     * @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
484     */
485    public EventDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
486      this.status = value;
487      return this;
488    }
489
490    /**
491     * @return The status of this event definition. Enables tracking the life-cycle of the content.
492     */
493    public PublicationStatus getStatus() { 
494      return this.status == null ? null : this.status.getValue();
495    }
496
497    /**
498     * @param value The status of this event definition. Enables tracking the life-cycle of the content.
499     */
500    public EventDefinition setStatus(PublicationStatus value) { 
501        if (this.status == null)
502          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
503        this.status.setValue(value);
504      return this;
505    }
506
507    /**
508     * @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
509     */
510    public BooleanType getExperimentalElement() { 
511      if (this.experimental == null)
512        if (Configuration.errorOnAutoCreate())
513          throw new Error("Attempt to auto-create EventDefinition.experimental");
514        else if (Configuration.doAutoCreate())
515          this.experimental = new BooleanType(); // bb
516      return this.experimental;
517    }
518
519    public boolean hasExperimentalElement() { 
520      return this.experimental != null && !this.experimental.isEmpty();
521    }
522
523    public boolean hasExperimental() { 
524      return this.experimental != null && !this.experimental.isEmpty();
525    }
526
527    /**
528     * @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
529     */
530    public EventDefinition setExperimentalElement(BooleanType value) { 
531      this.experimental = value;
532      return this;
533    }
534
535    /**
536     * @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.
537     */
538    public boolean getExperimental() { 
539      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
540    }
541
542    /**
543     * @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.
544     */
545    public EventDefinition setExperimental(boolean value) { 
546        if (this.experimental == null)
547          this.experimental = new BooleanType();
548        this.experimental.setValue(value);
549      return this;
550    }
551
552    /**
553     * @return {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
554     */
555    public Type getSubject() { 
556      return this.subject;
557    }
558
559    /**
560     * @return {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
561     */
562    public CodeableConcept getSubjectCodeableConcept() throws FHIRException { 
563      if (this.subject == null)
564        return null;
565      if (!(this.subject instanceof CodeableConcept))
566        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.subject.getClass().getName()+" was encountered");
567      return (CodeableConcept) this.subject;
568    }
569
570    public boolean hasSubjectCodeableConcept() { 
571      return this != null && this.subject instanceof CodeableConcept;
572    }
573
574    /**
575     * @return {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
576     */
577    public Reference getSubjectReference() throws FHIRException { 
578      if (this.subject == null)
579        return null;
580      if (!(this.subject instanceof Reference))
581        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.subject.getClass().getName()+" was encountered");
582      return (Reference) this.subject;
583    }
584
585    public boolean hasSubjectReference() { 
586      return this != null && this.subject instanceof Reference;
587    }
588
589    public boolean hasSubject() { 
590      return this.subject != null && !this.subject.isEmpty();
591    }
592
593    /**
594     * @param value {@link #subject} (A code or group definition that describes the intended subject of the event definition.)
595     */
596    public EventDefinition setSubject(Type value) { 
597      if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
598        throw new Error("Not the right type for EventDefinition.subject[x]: "+value.fhirType());
599      this.subject = value;
600      return this;
601    }
602
603    /**
604     * @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
605     */
606    public DateTimeType getDateElement() { 
607      if (this.date == null)
608        if (Configuration.errorOnAutoCreate())
609          throw new Error("Attempt to auto-create EventDefinition.date");
610        else if (Configuration.doAutoCreate())
611          this.date = new DateTimeType(); // bb
612      return this.date;
613    }
614
615    public boolean hasDateElement() { 
616      return this.date != null && !this.date.isEmpty();
617    }
618
619    public boolean hasDate() { 
620      return this.date != null && !this.date.isEmpty();
621    }
622
623    /**
624     * @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
625     */
626    public EventDefinition setDateElement(DateTimeType value) { 
627      this.date = value;
628      return this;
629    }
630
631    /**
632     * @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.
633     */
634    public Date getDate() { 
635      return this.date == null ? null : this.date.getValue();
636    }
637
638    /**
639     * @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.
640     */
641    public EventDefinition setDate(Date value) { 
642      if (value == null)
643        this.date = null;
644      else {
645        if (this.date == null)
646          this.date = new DateTimeType();
647        this.date.setValue(value);
648      }
649      return this;
650    }
651
652    /**
653     * @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
654     */
655    public StringType getPublisherElement() { 
656      if (this.publisher == null)
657        if (Configuration.errorOnAutoCreate())
658          throw new Error("Attempt to auto-create EventDefinition.publisher");
659        else if (Configuration.doAutoCreate())
660          this.publisher = new StringType(); // bb
661      return this.publisher;
662    }
663
664    public boolean hasPublisherElement() { 
665      return this.publisher != null && !this.publisher.isEmpty();
666    }
667
668    public boolean hasPublisher() { 
669      return this.publisher != null && !this.publisher.isEmpty();
670    }
671
672    /**
673     * @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
674     */
675    public EventDefinition setPublisherElement(StringType value) { 
676      this.publisher = value;
677      return this;
678    }
679
680    /**
681     * @return The name of the organization or individual that published the event definition.
682     */
683    public String getPublisher() { 
684      return this.publisher == null ? null : this.publisher.getValue();
685    }
686
687    /**
688     * @param value The name of the organization or individual that published the event definition.
689     */
690    public EventDefinition setPublisher(String value) { 
691      if (Utilities.noString(value))
692        this.publisher = null;
693      else {
694        if (this.publisher == null)
695          this.publisher = new StringType();
696        this.publisher.setValue(value);
697      }
698      return this;
699    }
700
701    /**
702     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
703     */
704    public List<ContactDetail> getContact() { 
705      if (this.contact == null)
706        this.contact = new ArrayList<ContactDetail>();
707      return this.contact;
708    }
709
710    /**
711     * @return Returns a reference to <code>this</code> for easy method chaining
712     */
713    public EventDefinition setContact(List<ContactDetail> theContact) { 
714      this.contact = theContact;
715      return this;
716    }
717
718    public boolean hasContact() { 
719      if (this.contact == null)
720        return false;
721      for (ContactDetail item : this.contact)
722        if (!item.isEmpty())
723          return true;
724      return false;
725    }
726
727    public ContactDetail addContact() { //3
728      ContactDetail t = new ContactDetail();
729      if (this.contact == null)
730        this.contact = new ArrayList<ContactDetail>();
731      this.contact.add(t);
732      return t;
733    }
734
735    public EventDefinition addContact(ContactDetail t) { //3
736      if (t == null)
737        return this;
738      if (this.contact == null)
739        this.contact = new ArrayList<ContactDetail>();
740      this.contact.add(t);
741      return this;
742    }
743
744    /**
745     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
746     */
747    public ContactDetail getContactFirstRep() { 
748      if (getContact().isEmpty()) {
749        addContact();
750      }
751      return getContact().get(0);
752    }
753
754    /**
755     * @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
756     */
757    public MarkdownType getDescriptionElement() { 
758      if (this.description == null)
759        if (Configuration.errorOnAutoCreate())
760          throw new Error("Attempt to auto-create EventDefinition.description");
761        else if (Configuration.doAutoCreate())
762          this.description = new MarkdownType(); // bb
763      return this.description;
764    }
765
766    public boolean hasDescriptionElement() { 
767      return this.description != null && !this.description.isEmpty();
768    }
769
770    public boolean hasDescription() { 
771      return this.description != null && !this.description.isEmpty();
772    }
773
774    /**
775     * @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
776     */
777    public EventDefinition setDescriptionElement(MarkdownType value) { 
778      this.description = value;
779      return this;
780    }
781
782    /**
783     * @return A free text natural language description of the event definition from a consumer's perspective.
784     */
785    public String getDescription() { 
786      return this.description == null ? null : this.description.getValue();
787    }
788
789    /**
790     * @param value A free text natural language description of the event definition from a consumer's perspective.
791     */
792    public EventDefinition setDescription(String value) { 
793      if (value == null)
794        this.description = null;
795      else {
796        if (this.description == null)
797          this.description = new MarkdownType();
798        this.description.setValue(value);
799      }
800      return this;
801    }
802
803    /**
804     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate event definition instances.)
805     */
806    public List<UsageContext> getUseContext() { 
807      if (this.useContext == null)
808        this.useContext = new ArrayList<UsageContext>();
809      return this.useContext;
810    }
811
812    /**
813     * @return Returns a reference to <code>this</code> for easy method chaining
814     */
815    public EventDefinition setUseContext(List<UsageContext> theUseContext) { 
816      this.useContext = theUseContext;
817      return this;
818    }
819
820    public boolean hasUseContext() { 
821      if (this.useContext == null)
822        return false;
823      for (UsageContext item : this.useContext)
824        if (!item.isEmpty())
825          return true;
826      return false;
827    }
828
829    public UsageContext addUseContext() { //3
830      UsageContext t = new UsageContext();
831      if (this.useContext == null)
832        this.useContext = new ArrayList<UsageContext>();
833      this.useContext.add(t);
834      return t;
835    }
836
837    public EventDefinition addUseContext(UsageContext t) { //3
838      if (t == null)
839        return this;
840      if (this.useContext == null)
841        this.useContext = new ArrayList<UsageContext>();
842      this.useContext.add(t);
843      return this;
844    }
845
846    /**
847     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
848     */
849    public UsageContext getUseContextFirstRep() { 
850      if (getUseContext().isEmpty()) {
851        addUseContext();
852      }
853      return getUseContext().get(0);
854    }
855
856    /**
857     * @return {@link #jurisdiction} (A legal or geographic region in which the event definition is intended to be used.)
858     */
859    public List<CodeableConcept> getJurisdiction() { 
860      if (this.jurisdiction == null)
861        this.jurisdiction = new ArrayList<CodeableConcept>();
862      return this.jurisdiction;
863    }
864
865    /**
866     * @return Returns a reference to <code>this</code> for easy method chaining
867     */
868    public EventDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
869      this.jurisdiction = theJurisdiction;
870      return this;
871    }
872
873    public boolean hasJurisdiction() { 
874      if (this.jurisdiction == null)
875        return false;
876      for (CodeableConcept item : this.jurisdiction)
877        if (!item.isEmpty())
878          return true;
879      return false;
880    }
881
882    public CodeableConcept addJurisdiction() { //3
883      CodeableConcept t = new CodeableConcept();
884      if (this.jurisdiction == null)
885        this.jurisdiction = new ArrayList<CodeableConcept>();
886      this.jurisdiction.add(t);
887      return t;
888    }
889
890    public EventDefinition addJurisdiction(CodeableConcept t) { //3
891      if (t == null)
892        return this;
893      if (this.jurisdiction == null)
894        this.jurisdiction = new ArrayList<CodeableConcept>();
895      this.jurisdiction.add(t);
896      return this;
897    }
898
899    /**
900     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
901     */
902    public CodeableConcept getJurisdictionFirstRep() { 
903      if (getJurisdiction().isEmpty()) {
904        addJurisdiction();
905      }
906      return getJurisdiction().get(0);
907    }
908
909    /**
910     * @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
911     */
912    public MarkdownType getPurposeElement() { 
913      if (this.purpose == null)
914        if (Configuration.errorOnAutoCreate())
915          throw new Error("Attempt to auto-create EventDefinition.purpose");
916        else if (Configuration.doAutoCreate())
917          this.purpose = new MarkdownType(); // bb
918      return this.purpose;
919    }
920
921    public boolean hasPurposeElement() { 
922      return this.purpose != null && !this.purpose.isEmpty();
923    }
924
925    public boolean hasPurpose() { 
926      return this.purpose != null && !this.purpose.isEmpty();
927    }
928
929    /**
930     * @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
931     */
932    public EventDefinition setPurposeElement(MarkdownType value) { 
933      this.purpose = value;
934      return this;
935    }
936
937    /**
938     * @return Explanation of why this event definition is needed and why it has been designed as it has.
939     */
940    public String getPurpose() { 
941      return this.purpose == null ? null : this.purpose.getValue();
942    }
943
944    /**
945     * @param value Explanation of why this event definition is needed and why it has been designed as it has.
946     */
947    public EventDefinition setPurpose(String value) { 
948      if (value == null)
949        this.purpose = null;
950      else {
951        if (this.purpose == null)
952          this.purpose = new MarkdownType();
953        this.purpose.setValue(value);
954      }
955      return this;
956    }
957
958    /**
959     * @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
960     */
961    public StringType getUsageElement() { 
962      if (this.usage == null)
963        if (Configuration.errorOnAutoCreate())
964          throw new Error("Attempt to auto-create EventDefinition.usage");
965        else if (Configuration.doAutoCreate())
966          this.usage = new StringType(); // bb
967      return this.usage;
968    }
969
970    public boolean hasUsageElement() { 
971      return this.usage != null && !this.usage.isEmpty();
972    }
973
974    public boolean hasUsage() { 
975      return this.usage != null && !this.usage.isEmpty();
976    }
977
978    /**
979     * @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
980     */
981    public EventDefinition setUsageElement(StringType value) { 
982      this.usage = value;
983      return this;
984    }
985
986    /**
987     * @return A detailed description of how the event definition is used from a clinical perspective.
988     */
989    public String getUsage() { 
990      return this.usage == null ? null : this.usage.getValue();
991    }
992
993    /**
994     * @param value A detailed description of how the event definition is used from a clinical perspective.
995     */
996    public EventDefinition setUsage(String value) { 
997      if (Utilities.noString(value))
998        this.usage = null;
999      else {
1000        if (this.usage == null)
1001          this.usage = new StringType();
1002        this.usage.setValue(value);
1003      }
1004      return this;
1005    }
1006
1007    /**
1008     * @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
1009     */
1010    public MarkdownType getCopyrightElement() { 
1011      if (this.copyright == null)
1012        if (Configuration.errorOnAutoCreate())
1013          throw new Error("Attempt to auto-create EventDefinition.copyright");
1014        else if (Configuration.doAutoCreate())
1015          this.copyright = new MarkdownType(); // bb
1016      return this.copyright;
1017    }
1018
1019    public boolean hasCopyrightElement() { 
1020      return this.copyright != null && !this.copyright.isEmpty();
1021    }
1022
1023    public boolean hasCopyright() { 
1024      return this.copyright != null && !this.copyright.isEmpty();
1025    }
1026
1027    /**
1028     * @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
1029     */
1030    public EventDefinition setCopyrightElement(MarkdownType value) { 
1031      this.copyright = value;
1032      return this;
1033    }
1034
1035    /**
1036     * @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.
1037     */
1038    public String getCopyright() { 
1039      return this.copyright == null ? null : this.copyright.getValue();
1040    }
1041
1042    /**
1043     * @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.
1044     */
1045    public EventDefinition setCopyright(String value) { 
1046      if (value == null)
1047        this.copyright = null;
1048      else {
1049        if (this.copyright == null)
1050          this.copyright = new MarkdownType();
1051        this.copyright.setValue(value);
1052      }
1053      return this;
1054    }
1055
1056    /**
1057     * @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
1058     */
1059    public DateType getApprovalDateElement() { 
1060      if (this.approvalDate == null)
1061        if (Configuration.errorOnAutoCreate())
1062          throw new Error("Attempt to auto-create EventDefinition.approvalDate");
1063        else if (Configuration.doAutoCreate())
1064          this.approvalDate = new DateType(); // bb
1065      return this.approvalDate;
1066    }
1067
1068    public boolean hasApprovalDateElement() { 
1069      return this.approvalDate != null && !this.approvalDate.isEmpty();
1070    }
1071
1072    public boolean hasApprovalDate() { 
1073      return this.approvalDate != null && !this.approvalDate.isEmpty();
1074    }
1075
1076    /**
1077     * @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
1078     */
1079    public EventDefinition setApprovalDateElement(DateType value) { 
1080      this.approvalDate = value;
1081      return this;
1082    }
1083
1084    /**
1085     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
1086     */
1087    public Date getApprovalDate() { 
1088      return this.approvalDate == null ? null : this.approvalDate.getValue();
1089    }
1090
1091    /**
1092     * @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.
1093     */
1094    public EventDefinition setApprovalDate(Date value) { 
1095      if (value == null)
1096        this.approvalDate = null;
1097      else {
1098        if (this.approvalDate == null)
1099          this.approvalDate = new DateType();
1100        this.approvalDate.setValue(value);
1101      }
1102      return this;
1103    }
1104
1105    /**
1106     * @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
1107     */
1108    public DateType getLastReviewDateElement() { 
1109      if (this.lastReviewDate == null)
1110        if (Configuration.errorOnAutoCreate())
1111          throw new Error("Attempt to auto-create EventDefinition.lastReviewDate");
1112        else if (Configuration.doAutoCreate())
1113          this.lastReviewDate = new DateType(); // bb
1114      return this.lastReviewDate;
1115    }
1116
1117    public boolean hasLastReviewDateElement() { 
1118      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
1119    }
1120
1121    public boolean hasLastReviewDate() { 
1122      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
1123    }
1124
1125    /**
1126     * @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
1127     */
1128    public EventDefinition setLastReviewDateElement(DateType value) { 
1129      this.lastReviewDate = value;
1130      return this;
1131    }
1132
1133    /**
1134     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1135     */
1136    public Date getLastReviewDate() { 
1137      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
1138    }
1139
1140    /**
1141     * @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.
1142     */
1143    public EventDefinition setLastReviewDate(Date value) { 
1144      if (value == null)
1145        this.lastReviewDate = null;
1146      else {
1147        if (this.lastReviewDate == null)
1148          this.lastReviewDate = new DateType();
1149        this.lastReviewDate.setValue(value);
1150      }
1151      return this;
1152    }
1153
1154    /**
1155     * @return {@link #effectivePeriod} (The period during which the event definition content was or is planned to be in active use.)
1156     */
1157    public Period getEffectivePeriod() { 
1158      if (this.effectivePeriod == null)
1159        if (Configuration.errorOnAutoCreate())
1160          throw new Error("Attempt to auto-create EventDefinition.effectivePeriod");
1161        else if (Configuration.doAutoCreate())
1162          this.effectivePeriod = new Period(); // cc
1163      return this.effectivePeriod;
1164    }
1165
1166    public boolean hasEffectivePeriod() { 
1167      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
1168    }
1169
1170    /**
1171     * @param value {@link #effectivePeriod} (The period during which the event definition content was or is planned to be in active use.)
1172     */
1173    public EventDefinition setEffectivePeriod(Period value) { 
1174      this.effectivePeriod = value;
1175      return this;
1176    }
1177
1178    /**
1179     * @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.)
1180     */
1181    public List<CodeableConcept> getTopic() { 
1182      if (this.topic == null)
1183        this.topic = new ArrayList<CodeableConcept>();
1184      return this.topic;
1185    }
1186
1187    /**
1188     * @return Returns a reference to <code>this</code> for easy method chaining
1189     */
1190    public EventDefinition setTopic(List<CodeableConcept> theTopic) { 
1191      this.topic = theTopic;
1192      return this;
1193    }
1194
1195    public boolean hasTopic() { 
1196      if (this.topic == null)
1197        return false;
1198      for (CodeableConcept item : this.topic)
1199        if (!item.isEmpty())
1200          return true;
1201      return false;
1202    }
1203
1204    public CodeableConcept addTopic() { //3
1205      CodeableConcept t = new CodeableConcept();
1206      if (this.topic == null)
1207        this.topic = new ArrayList<CodeableConcept>();
1208      this.topic.add(t);
1209      return t;
1210    }
1211
1212    public EventDefinition addTopic(CodeableConcept t) { //3
1213      if (t == null)
1214        return this;
1215      if (this.topic == null)
1216        this.topic = new ArrayList<CodeableConcept>();
1217      this.topic.add(t);
1218      return this;
1219    }
1220
1221    /**
1222     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist
1223     */
1224    public CodeableConcept getTopicFirstRep() { 
1225      if (getTopic().isEmpty()) {
1226        addTopic();
1227      }
1228      return getTopic().get(0);
1229    }
1230
1231    /**
1232     * @return {@link #contributor} (A contributor to the content of the module, including authors, editors, reviewers, and endorsers.)
1233     */
1234    public List<Contributor> getContributor() { 
1235      if (this.contributor == null)
1236        this.contributor = new ArrayList<Contributor>();
1237      return this.contributor;
1238    }
1239
1240    /**
1241     * @return Returns a reference to <code>this</code> for easy method chaining
1242     */
1243    public EventDefinition setContributor(List<Contributor> theContributor) { 
1244      this.contributor = theContributor;
1245      return this;
1246    }
1247
1248    public boolean hasContributor() { 
1249      if (this.contributor == null)
1250        return false;
1251      for (Contributor item : this.contributor)
1252        if (!item.isEmpty())
1253          return true;
1254      return false;
1255    }
1256
1257    public Contributor addContributor() { //3
1258      Contributor t = new Contributor();
1259      if (this.contributor == null)
1260        this.contributor = new ArrayList<Contributor>();
1261      this.contributor.add(t);
1262      return t;
1263    }
1264
1265    public EventDefinition addContributor(Contributor t) { //3
1266      if (t == null)
1267        return this;
1268      if (this.contributor == null)
1269        this.contributor = new ArrayList<Contributor>();
1270      this.contributor.add(t);
1271      return this;
1272    }
1273
1274    /**
1275     * @return The first repetition of repeating field {@link #contributor}, creating it if it does not already exist
1276     */
1277    public Contributor getContributorFirstRep() { 
1278      if (getContributor().isEmpty()) {
1279        addContributor();
1280      }
1281      return getContributor().get(0);
1282    }
1283
1284    /**
1285     * @return {@link #relatedArtifact} (Related resources such as additional documentation, justification, or bibliographic references.)
1286     */
1287    public List<RelatedArtifact> getRelatedArtifact() { 
1288      if (this.relatedArtifact == null)
1289        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1290      return this.relatedArtifact;
1291    }
1292
1293    /**
1294     * @return Returns a reference to <code>this</code> for easy method chaining
1295     */
1296    public EventDefinition setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
1297      this.relatedArtifact = theRelatedArtifact;
1298      return this;
1299    }
1300
1301    public boolean hasRelatedArtifact() { 
1302      if (this.relatedArtifact == null)
1303        return false;
1304      for (RelatedArtifact item : this.relatedArtifact)
1305        if (!item.isEmpty())
1306          return true;
1307      return false;
1308    }
1309
1310    public RelatedArtifact addRelatedArtifact() { //3
1311      RelatedArtifact t = new RelatedArtifact();
1312      if (this.relatedArtifact == null)
1313        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1314      this.relatedArtifact.add(t);
1315      return t;
1316    }
1317
1318    public EventDefinition addRelatedArtifact(RelatedArtifact t) { //3
1319      if (t == null)
1320        return this;
1321      if (this.relatedArtifact == null)
1322        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1323      this.relatedArtifact.add(t);
1324      return this;
1325    }
1326
1327    /**
1328     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist
1329     */
1330    public RelatedArtifact getRelatedArtifactFirstRep() { 
1331      if (getRelatedArtifact().isEmpty()) {
1332        addRelatedArtifact();
1333      }
1334      return getRelatedArtifact().get(0);
1335    }
1336
1337    /**
1338     * @return {@link #trigger} (The trigger element defines when the event occurs.)
1339     */
1340    public TriggerDefinition getTrigger() { 
1341      if (this.trigger == null)
1342        if (Configuration.errorOnAutoCreate())
1343          throw new Error("Attempt to auto-create EventDefinition.trigger");
1344        else if (Configuration.doAutoCreate())
1345          this.trigger = new TriggerDefinition(); // cc
1346      return this.trigger;
1347    }
1348
1349    public boolean hasTrigger() { 
1350      return this.trigger != null && !this.trigger.isEmpty();
1351    }
1352
1353    /**
1354     * @param value {@link #trigger} (The trigger element defines when the event occurs.)
1355     */
1356    public EventDefinition setTrigger(TriggerDefinition value) { 
1357      this.trigger = value;
1358      return this;
1359    }
1360
1361      protected void listChildren(List<Property> children) {
1362        super.listChildren(children);
1363        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 this event definition is (or will be) published.", 0, 1, url));
1364        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));
1365        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));
1366        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));
1367        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the event definition.", 0, 1, title));
1368        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the event definition giving additional information about its content.", 0, 1, subtitle));
1369        children.add(new Property("status", "code", "The status of this event definition. Enables tracking the life-cycle of the content.", 0, 1, status));
1370        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));
1371        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));
1372        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));
1373        children.add(new Property("publisher", "string", "The name of the organization or individual that published the event definition.", 0, 1, publisher));
1374        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));
1375        children.add(new Property("description", "markdown", "A free text natural language description of the event definition from a consumer's perspective.", 0, 1, description));
1376        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate event definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
1377        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));
1378        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));
1379        children.add(new Property("usage", "string", "A detailed description of how the event definition is used from a clinical perspective.", 0, 1, usage));
1380        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));
1381        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));
1382        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));
1383        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));
1384        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));
1385        children.add(new Property("contributor", "Contributor", "A contributor to the content of the module, including authors, editors, reviewers, and endorsers.", 0, java.lang.Integer.MAX_VALUE, contributor));
1386        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related resources such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
1387        children.add(new Property("trigger", "TriggerDefinition", "The trigger element defines when the event occurs.", 0, 1, trigger));
1388      }
1389
1390      @Override
1391      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1392        switch (_hash) {
1393        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 this event definition is (or will be) published.", 0, 1, url);
1394        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);
1395        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);
1396        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);
1397        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the event definition.", 0, 1, title);
1398        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);
1399        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);
1400        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);
1401        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);
1402        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);
1403        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);
1404        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);
1405        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);
1406        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the event definition.", 0, 1, publisher);
1407        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);
1408        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);
1409        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 terms may be used to assist with indexing and searching for appropriate event definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
1410        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);
1411        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);
1412        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);
1413        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);
1414        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);
1415        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);
1416        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);
1417        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);
1418        case -1895276325: /*contributor*/  return new Property("contributor", "Contributor", "A contributor to the content of the module, including authors, editors, reviewers, and endorsers.", 0, java.lang.Integer.MAX_VALUE, contributor);
1419        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);
1420        case -1059891784: /*trigger*/  return new Property("trigger", "TriggerDefinition", "The trigger element defines when the event occurs.", 0, 1, trigger);
1421        default: return super.getNamedProperty(_hash, _name, _checkValid);
1422        }
1423
1424      }
1425
1426      @Override
1427      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1428        switch (hash) {
1429        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1430        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1431        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
1432        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1433        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1434        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
1435        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1436        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
1437        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Type
1438        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1439        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
1440        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
1441        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1442        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
1443        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1444        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
1445        case 111574433: /*usage*/ return this.usage == null ? new Base[0] : new Base[] {this.usage}; // StringType
1446        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
1447        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
1448        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
1449        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
1450        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
1451        case -1895276325: /*contributor*/ return this.contributor == null ? new Base[0] : this.contributor.toArray(new Base[this.contributor.size()]); // Contributor
1452        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
1453        case -1059891784: /*trigger*/ return this.trigger == null ? new Base[0] : new Base[] {this.trigger}; // TriggerDefinition
1454        default: return super.getProperty(hash, name, checkValid);
1455        }
1456
1457      }
1458
1459      @Override
1460      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1461        switch (hash) {
1462        case 116079: // url
1463          this.url = castToUri(value); // UriType
1464          return value;
1465        case -1618432855: // identifier
1466          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1467          return value;
1468        case 351608024: // version
1469          this.version = castToString(value); // StringType
1470          return value;
1471        case 3373707: // name
1472          this.name = castToString(value); // StringType
1473          return value;
1474        case 110371416: // title
1475          this.title = castToString(value); // StringType
1476          return value;
1477        case -2060497896: // subtitle
1478          this.subtitle = castToString(value); // StringType
1479          return value;
1480        case -892481550: // status
1481          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1482          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1483          return value;
1484        case -404562712: // experimental
1485          this.experimental = castToBoolean(value); // BooleanType
1486          return value;
1487        case -1867885268: // subject
1488          this.subject = castToType(value); // Type
1489          return value;
1490        case 3076014: // date
1491          this.date = castToDateTime(value); // DateTimeType
1492          return value;
1493        case 1447404028: // publisher
1494          this.publisher = castToString(value); // StringType
1495          return value;
1496        case 951526432: // contact
1497          this.getContact().add(castToContactDetail(value)); // ContactDetail
1498          return value;
1499        case -1724546052: // description
1500          this.description = castToMarkdown(value); // MarkdownType
1501          return value;
1502        case -669707736: // useContext
1503          this.getUseContext().add(castToUsageContext(value)); // UsageContext
1504          return value;
1505        case -507075711: // jurisdiction
1506          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
1507          return value;
1508        case -220463842: // purpose
1509          this.purpose = castToMarkdown(value); // MarkdownType
1510          return value;
1511        case 111574433: // usage
1512          this.usage = castToString(value); // StringType
1513          return value;
1514        case 1522889671: // copyright
1515          this.copyright = castToMarkdown(value); // MarkdownType
1516          return value;
1517        case 223539345: // approvalDate
1518          this.approvalDate = castToDate(value); // DateType
1519          return value;
1520        case -1687512484: // lastReviewDate
1521          this.lastReviewDate = castToDate(value); // DateType
1522          return value;
1523        case -403934648: // effectivePeriod
1524          this.effectivePeriod = castToPeriod(value); // Period
1525          return value;
1526        case 110546223: // topic
1527          this.getTopic().add(castToCodeableConcept(value)); // CodeableConcept
1528          return value;
1529        case -1895276325: // contributor
1530          this.getContributor().add(castToContributor(value)); // Contributor
1531          return value;
1532        case 666807069: // relatedArtifact
1533          this.getRelatedArtifact().add(castToRelatedArtifact(value)); // RelatedArtifact
1534          return value;
1535        case -1059891784: // trigger
1536          this.trigger = castToTriggerDefinition(value); // TriggerDefinition
1537          return value;
1538        default: return super.setProperty(hash, name, value);
1539        }
1540
1541      }
1542
1543      @Override
1544      public Base setProperty(String name, Base value) throws FHIRException {
1545        if (name.equals("url")) {
1546          this.url = castToUri(value); // UriType
1547        } else if (name.equals("identifier")) {
1548          this.getIdentifier().add(castToIdentifier(value));
1549        } else if (name.equals("version")) {
1550          this.version = castToString(value); // StringType
1551        } else if (name.equals("name")) {
1552          this.name = castToString(value); // StringType
1553        } else if (name.equals("title")) {
1554          this.title = castToString(value); // StringType
1555        } else if (name.equals("subtitle")) {
1556          this.subtitle = castToString(value); // StringType
1557        } else if (name.equals("status")) {
1558          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1559          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1560        } else if (name.equals("experimental")) {
1561          this.experimental = castToBoolean(value); // BooleanType
1562        } else if (name.equals("subject[x]")) {
1563          this.subject = castToType(value); // Type
1564        } else if (name.equals("date")) {
1565          this.date = castToDateTime(value); // DateTimeType
1566        } else if (name.equals("publisher")) {
1567          this.publisher = castToString(value); // StringType
1568        } else if (name.equals("contact")) {
1569          this.getContact().add(castToContactDetail(value));
1570        } else if (name.equals("description")) {
1571          this.description = castToMarkdown(value); // MarkdownType
1572        } else if (name.equals("useContext")) {
1573          this.getUseContext().add(castToUsageContext(value));
1574        } else if (name.equals("jurisdiction")) {
1575          this.getJurisdiction().add(castToCodeableConcept(value));
1576        } else if (name.equals("purpose")) {
1577          this.purpose = castToMarkdown(value); // MarkdownType
1578        } else if (name.equals("usage")) {
1579          this.usage = castToString(value); // StringType
1580        } else if (name.equals("copyright")) {
1581          this.copyright = castToMarkdown(value); // MarkdownType
1582        } else if (name.equals("approvalDate")) {
1583          this.approvalDate = castToDate(value); // DateType
1584        } else if (name.equals("lastReviewDate")) {
1585          this.lastReviewDate = castToDate(value); // DateType
1586        } else if (name.equals("effectivePeriod")) {
1587          this.effectivePeriod = castToPeriod(value); // Period
1588        } else if (name.equals("topic")) {
1589          this.getTopic().add(castToCodeableConcept(value));
1590        } else if (name.equals("contributor")) {
1591          this.getContributor().add(castToContributor(value));
1592        } else if (name.equals("relatedArtifact")) {
1593          this.getRelatedArtifact().add(castToRelatedArtifact(value));
1594        } else if (name.equals("trigger")) {
1595          this.trigger = castToTriggerDefinition(value); // TriggerDefinition
1596        } else
1597          return super.setProperty(name, value);
1598        return value;
1599      }
1600
1601      @Override
1602      public Base makeProperty(int hash, String name) throws FHIRException {
1603        switch (hash) {
1604        case 116079:  return getUrlElement();
1605        case -1618432855:  return addIdentifier(); 
1606        case 351608024:  return getVersionElement();
1607        case 3373707:  return getNameElement();
1608        case 110371416:  return getTitleElement();
1609        case -2060497896:  return getSubtitleElement();
1610        case -892481550:  return getStatusElement();
1611        case -404562712:  return getExperimentalElement();
1612        case -573640748:  return getSubject(); 
1613        case -1867885268:  return getSubject(); 
1614        case 3076014:  return getDateElement();
1615        case 1447404028:  return getPublisherElement();
1616        case 951526432:  return addContact(); 
1617        case -1724546052:  return getDescriptionElement();
1618        case -669707736:  return addUseContext(); 
1619        case -507075711:  return addJurisdiction(); 
1620        case -220463842:  return getPurposeElement();
1621        case 111574433:  return getUsageElement();
1622        case 1522889671:  return getCopyrightElement();
1623        case 223539345:  return getApprovalDateElement();
1624        case -1687512484:  return getLastReviewDateElement();
1625        case -403934648:  return getEffectivePeriod(); 
1626        case 110546223:  return addTopic(); 
1627        case -1895276325:  return addContributor(); 
1628        case 666807069:  return addRelatedArtifact(); 
1629        case -1059891784:  return getTrigger(); 
1630        default: return super.makeProperty(hash, name);
1631        }
1632
1633      }
1634
1635      @Override
1636      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1637        switch (hash) {
1638        case 116079: /*url*/ return new String[] {"uri"};
1639        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1640        case 351608024: /*version*/ return new String[] {"string"};
1641        case 3373707: /*name*/ return new String[] {"string"};
1642        case 110371416: /*title*/ return new String[] {"string"};
1643        case -2060497896: /*subtitle*/ return new String[] {"string"};
1644        case -892481550: /*status*/ return new String[] {"code"};
1645        case -404562712: /*experimental*/ return new String[] {"boolean"};
1646        case -1867885268: /*subject*/ return new String[] {"CodeableConcept", "Reference"};
1647        case 3076014: /*date*/ return new String[] {"dateTime"};
1648        case 1447404028: /*publisher*/ return new String[] {"string"};
1649        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
1650        case -1724546052: /*description*/ return new String[] {"markdown"};
1651        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
1652        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
1653        case -220463842: /*purpose*/ return new String[] {"markdown"};
1654        case 111574433: /*usage*/ return new String[] {"string"};
1655        case 1522889671: /*copyright*/ return new String[] {"markdown"};
1656        case 223539345: /*approvalDate*/ return new String[] {"date"};
1657        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
1658        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
1659        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
1660        case -1895276325: /*contributor*/ return new String[] {"Contributor"};
1661        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
1662        case -1059891784: /*trigger*/ return new String[] {"TriggerDefinition"};
1663        default: return super.getTypesForProperty(hash, name);
1664        }
1665
1666      }
1667
1668      @Override
1669      public Base addChild(String name) throws FHIRException {
1670        if (name.equals("url")) {
1671          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.url");
1672        }
1673        else if (name.equals("identifier")) {
1674          return addIdentifier();
1675        }
1676        else if (name.equals("version")) {
1677          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.version");
1678        }
1679        else if (name.equals("name")) {
1680          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.name");
1681        }
1682        else if (name.equals("title")) {
1683          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.title");
1684        }
1685        else if (name.equals("subtitle")) {
1686          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.subtitle");
1687        }
1688        else if (name.equals("status")) {
1689          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.status");
1690        }
1691        else if (name.equals("experimental")) {
1692          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.experimental");
1693        }
1694        else if (name.equals("subjectCodeableConcept")) {
1695          this.subject = new CodeableConcept();
1696          return this.subject;
1697        }
1698        else if (name.equals("subjectReference")) {
1699          this.subject = new Reference();
1700          return this.subject;
1701        }
1702        else if (name.equals("date")) {
1703          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.date");
1704        }
1705        else if (name.equals("publisher")) {
1706          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.publisher");
1707        }
1708        else if (name.equals("contact")) {
1709          return addContact();
1710        }
1711        else if (name.equals("description")) {
1712          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.description");
1713        }
1714        else if (name.equals("useContext")) {
1715          return addUseContext();
1716        }
1717        else if (name.equals("jurisdiction")) {
1718          return addJurisdiction();
1719        }
1720        else if (name.equals("purpose")) {
1721          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.purpose");
1722        }
1723        else if (name.equals("usage")) {
1724          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.usage");
1725        }
1726        else if (name.equals("copyright")) {
1727          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.copyright");
1728        }
1729        else if (name.equals("approvalDate")) {
1730          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.approvalDate");
1731        }
1732        else if (name.equals("lastReviewDate")) {
1733          throw new FHIRException("Cannot call addChild on a primitive type EventDefinition.lastReviewDate");
1734        }
1735        else if (name.equals("effectivePeriod")) {
1736          this.effectivePeriod = new Period();
1737          return this.effectivePeriod;
1738        }
1739        else if (name.equals("topic")) {
1740          return addTopic();
1741        }
1742        else if (name.equals("contributor")) {
1743          return addContributor();
1744        }
1745        else if (name.equals("relatedArtifact")) {
1746          return addRelatedArtifact();
1747        }
1748        else if (name.equals("trigger")) {
1749          this.trigger = new TriggerDefinition();
1750          return this.trigger;
1751        }
1752        else
1753          return super.addChild(name);
1754      }
1755
1756  public String fhirType() {
1757    return "EventDefinition";
1758
1759  }
1760
1761      public EventDefinition copy() {
1762        EventDefinition dst = new EventDefinition();
1763        copyValues(dst);
1764        dst.url = url == null ? null : url.copy();
1765        if (identifier != null) {
1766          dst.identifier = new ArrayList<Identifier>();
1767          for (Identifier i : identifier)
1768            dst.identifier.add(i.copy());
1769        };
1770        dst.version = version == null ? null : version.copy();
1771        dst.name = name == null ? null : name.copy();
1772        dst.title = title == null ? null : title.copy();
1773        dst.subtitle = subtitle == null ? null : subtitle.copy();
1774        dst.status = status == null ? null : status.copy();
1775        dst.experimental = experimental == null ? null : experimental.copy();
1776        dst.subject = subject == null ? null : subject.copy();
1777        dst.date = date == null ? null : date.copy();
1778        dst.publisher = publisher == null ? null : publisher.copy();
1779        if (contact != null) {
1780          dst.contact = new ArrayList<ContactDetail>();
1781          for (ContactDetail i : contact)
1782            dst.contact.add(i.copy());
1783        };
1784        dst.description = description == null ? null : description.copy();
1785        if (useContext != null) {
1786          dst.useContext = new ArrayList<UsageContext>();
1787          for (UsageContext i : useContext)
1788            dst.useContext.add(i.copy());
1789        };
1790        if (jurisdiction != null) {
1791          dst.jurisdiction = new ArrayList<CodeableConcept>();
1792          for (CodeableConcept i : jurisdiction)
1793            dst.jurisdiction.add(i.copy());
1794        };
1795        dst.purpose = purpose == null ? null : purpose.copy();
1796        dst.usage = usage == null ? null : usage.copy();
1797        dst.copyright = copyright == null ? null : copyright.copy();
1798        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
1799        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
1800        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
1801        if (topic != null) {
1802          dst.topic = new ArrayList<CodeableConcept>();
1803          for (CodeableConcept i : topic)
1804            dst.topic.add(i.copy());
1805        };
1806        if (contributor != null) {
1807          dst.contributor = new ArrayList<Contributor>();
1808          for (Contributor i : contributor)
1809            dst.contributor.add(i.copy());
1810        };
1811        if (relatedArtifact != null) {
1812          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
1813          for (RelatedArtifact i : relatedArtifact)
1814            dst.relatedArtifact.add(i.copy());
1815        };
1816        dst.trigger = trigger == null ? null : trigger.copy();
1817        return dst;
1818      }
1819
1820      protected EventDefinition typedCopy() {
1821        return copy();
1822      }
1823
1824      @Override
1825      public boolean equalsDeep(Base other_) {
1826        if (!super.equalsDeep(other_))
1827          return false;
1828        if (!(other_ instanceof EventDefinition))
1829          return false;
1830        EventDefinition o = (EventDefinition) other_;
1831        return compareDeep(identifier, o.identifier, true) && compareDeep(subtitle, o.subtitle, true) && compareDeep(subject, o.subject, true)
1832           && compareDeep(purpose, o.purpose, true) && compareDeep(usage, o.usage, true) && compareDeep(copyright, o.copyright, true)
1833           && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
1834           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true) && compareDeep(contributor, o.contributor, true)
1835           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(trigger, o.trigger, true)
1836          ;
1837      }
1838
1839      @Override
1840      public boolean equalsShallow(Base other_) {
1841        if (!super.equalsShallow(other_))
1842          return false;
1843        if (!(other_ instanceof EventDefinition))
1844          return false;
1845        EventDefinition o = (EventDefinition) other_;
1846        return compareValues(subtitle, o.subtitle, true) && compareValues(purpose, o.purpose, true) && compareValues(usage, o.usage, true)
1847           && compareValues(copyright, o.copyright, true) && compareValues(approvalDate, o.approvalDate, true)
1848           && compareValues(lastReviewDate, o.lastReviewDate, true);
1849      }
1850
1851      public boolean isEmpty() {
1852        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, subtitle, subject
1853          , purpose, usage, copyright, approvalDate, lastReviewDate, effectivePeriod, topic
1854          , contributor, relatedArtifact, trigger);
1855      }
1856
1857  @Override
1858  public ResourceType getResourceType() {
1859    return ResourceType.EventDefinition;
1860   }
1861
1862 /**
1863   * Search parameter: <b>date</b>
1864   * <p>
1865   * Description: <b>The event definition publication date</b><br>
1866   * Type: <b>date</b><br>
1867   * Path: <b>EventDefinition.date</b><br>
1868   * </p>
1869   */
1870  @SearchParamDefinition(name="date", path="EventDefinition.date", description="The event definition publication date", type="date" )
1871  public static final String SP_DATE = "date";
1872 /**
1873   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1874   * <p>
1875   * Description: <b>The event definition publication date</b><br>
1876   * Type: <b>date</b><br>
1877   * Path: <b>EventDefinition.date</b><br>
1878   * </p>
1879   */
1880  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1881
1882 /**
1883   * Search parameter: <b>identifier</b>
1884   * <p>
1885   * Description: <b>External identifier for the event definition</b><br>
1886   * Type: <b>token</b><br>
1887   * Path: <b>EventDefinition.identifier</b><br>
1888   * </p>
1889   */
1890  @SearchParamDefinition(name="identifier", path="EventDefinition.identifier", description="External identifier for the event definition", type="token" )
1891  public static final String SP_IDENTIFIER = "identifier";
1892 /**
1893   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1894   * <p>
1895   * Description: <b>External identifier for the event definition</b><br>
1896   * Type: <b>token</b><br>
1897   * Path: <b>EventDefinition.identifier</b><br>
1898   * </p>
1899   */
1900  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1901
1902 /**
1903   * Search parameter: <b>successor</b>
1904   * <p>
1905   * Description: <b>What resource is being referenced</b><br>
1906   * Type: <b>reference</b><br>
1907   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
1908   * </p>
1909   */
1910  @SearchParamDefinition(name="successor", path="EventDefinition.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference" )
1911  public static final String SP_SUCCESSOR = "successor";
1912 /**
1913   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
1914   * <p>
1915   * Description: <b>What resource is being referenced</b><br>
1916   * Type: <b>reference</b><br>
1917   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
1918   * </p>
1919   */
1920  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
1921
1922/**
1923   * Constant for fluent queries to be used to add include statements. Specifies
1924   * the path value of "<b>EventDefinition:successor</b>".
1925   */
1926  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("EventDefinition:successor").toLocked();
1927
1928 /**
1929   * Search parameter: <b>jurisdiction</b>
1930   * <p>
1931   * Description: <b>Intended jurisdiction for the event definition</b><br>
1932   * Type: <b>token</b><br>
1933   * Path: <b>EventDefinition.jurisdiction</b><br>
1934   * </p>
1935   */
1936  @SearchParamDefinition(name="jurisdiction", path="EventDefinition.jurisdiction", description="Intended jurisdiction for the event definition", type="token" )
1937  public static final String SP_JURISDICTION = "jurisdiction";
1938 /**
1939   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
1940   * <p>
1941   * Description: <b>Intended jurisdiction for the event definition</b><br>
1942   * Type: <b>token</b><br>
1943   * Path: <b>EventDefinition.jurisdiction</b><br>
1944   * </p>
1945   */
1946  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
1947
1948 /**
1949   * Search parameter: <b>description</b>
1950   * <p>
1951   * Description: <b>The description of the event definition</b><br>
1952   * Type: <b>string</b><br>
1953   * Path: <b>EventDefinition.description</b><br>
1954   * </p>
1955   */
1956  @SearchParamDefinition(name="description", path="EventDefinition.description", description="The description of the event definition", type="string" )
1957  public static final String SP_DESCRIPTION = "description";
1958 /**
1959   * <b>Fluent Client</b> search parameter constant for <b>description</b>
1960   * <p>
1961   * Description: <b>The description of the event definition</b><br>
1962   * Type: <b>string</b><br>
1963   * Path: <b>EventDefinition.description</b><br>
1964   * </p>
1965   */
1966  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
1967
1968 /**
1969   * Search parameter: <b>derived-from</b>
1970   * <p>
1971   * Description: <b>What resource is being referenced</b><br>
1972   * Type: <b>reference</b><br>
1973   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
1974   * </p>
1975   */
1976  @SearchParamDefinition(name="derived-from", path="EventDefinition.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference" )
1977  public static final String SP_DERIVED_FROM = "derived-from";
1978 /**
1979   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
1980   * <p>
1981   * Description: <b>What resource is being referenced</b><br>
1982   * Type: <b>reference</b><br>
1983   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
1984   * </p>
1985   */
1986  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
1987
1988/**
1989   * Constant for fluent queries to be used to add include statements. Specifies
1990   * the path value of "<b>EventDefinition:derived-from</b>".
1991   */
1992  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("EventDefinition:derived-from").toLocked();
1993
1994 /**
1995   * Search parameter: <b>predecessor</b>
1996   * <p>
1997   * Description: <b>What resource is being referenced</b><br>
1998   * Type: <b>reference</b><br>
1999   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2000   * </p>
2001   */
2002  @SearchParamDefinition(name="predecessor", path="EventDefinition.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference" )
2003  public static final String SP_PREDECESSOR = "predecessor";
2004 /**
2005   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
2006   * <p>
2007   * Description: <b>What resource is being referenced</b><br>
2008   * Type: <b>reference</b><br>
2009   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2010   * </p>
2011   */
2012  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
2013
2014/**
2015   * Constant for fluent queries to be used to add include statements. Specifies
2016   * the path value of "<b>EventDefinition:predecessor</b>".
2017   */
2018  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("EventDefinition:predecessor").toLocked();
2019
2020 /**
2021   * Search parameter: <b>title</b>
2022   * <p>
2023   * Description: <b>The human-friendly name of the event definition</b><br>
2024   * Type: <b>string</b><br>
2025   * Path: <b>EventDefinition.title</b><br>
2026   * </p>
2027   */
2028  @SearchParamDefinition(name="title", path="EventDefinition.title", description="The human-friendly name of the event definition", type="string" )
2029  public static final String SP_TITLE = "title";
2030 /**
2031   * <b>Fluent Client</b> search parameter constant for <b>title</b>
2032   * <p>
2033   * Description: <b>The human-friendly name of the event definition</b><br>
2034   * Type: <b>string</b><br>
2035   * Path: <b>EventDefinition.title</b><br>
2036   * </p>
2037   */
2038  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
2039
2040 /**
2041   * Search parameter: <b>composed-of</b>
2042   * <p>
2043   * Description: <b>What resource is being referenced</b><br>
2044   * Type: <b>reference</b><br>
2045   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2046   * </p>
2047   */
2048  @SearchParamDefinition(name="composed-of", path="EventDefinition.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference" )
2049  public static final String SP_COMPOSED_OF = "composed-of";
2050 /**
2051   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
2052   * <p>
2053   * Description: <b>What resource is being referenced</b><br>
2054   * Type: <b>reference</b><br>
2055   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2056   * </p>
2057   */
2058  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
2059
2060/**
2061   * Constant for fluent queries to be used to add include statements. Specifies
2062   * the path value of "<b>EventDefinition:composed-of</b>".
2063   */
2064  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("EventDefinition:composed-of").toLocked();
2065
2066 /**
2067   * Search parameter: <b>version</b>
2068   * <p>
2069   * Description: <b>The business version of the event definition</b><br>
2070   * Type: <b>token</b><br>
2071   * Path: <b>EventDefinition.version</b><br>
2072   * </p>
2073   */
2074  @SearchParamDefinition(name="version", path="EventDefinition.version", description="The business version of the event definition", type="token" )
2075  public static final String SP_VERSION = "version";
2076 /**
2077   * <b>Fluent Client</b> search parameter constant for <b>version</b>
2078   * <p>
2079   * Description: <b>The business version of the event definition</b><br>
2080   * Type: <b>token</b><br>
2081   * Path: <b>EventDefinition.version</b><br>
2082   * </p>
2083   */
2084  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
2085
2086 /**
2087   * Search parameter: <b>url</b>
2088   * <p>
2089   * Description: <b>The uri that identifies the event definition</b><br>
2090   * Type: <b>uri</b><br>
2091   * Path: <b>EventDefinition.url</b><br>
2092   * </p>
2093   */
2094  @SearchParamDefinition(name="url", path="EventDefinition.url", description="The uri that identifies the event definition", type="uri" )
2095  public static final String SP_URL = "url";
2096 /**
2097   * <b>Fluent Client</b> search parameter constant for <b>url</b>
2098   * <p>
2099   * Description: <b>The uri that identifies the event definition</b><br>
2100   * Type: <b>uri</b><br>
2101   * Path: <b>EventDefinition.url</b><br>
2102   * </p>
2103   */
2104  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
2105
2106 /**
2107   * Search parameter: <b>effective</b>
2108   * <p>
2109   * Description: <b>The time during which the event definition is intended to be in use</b><br>
2110   * Type: <b>date</b><br>
2111   * Path: <b>EventDefinition.effectivePeriod</b><br>
2112   * </p>
2113   */
2114  @SearchParamDefinition(name="effective", path="EventDefinition.effectivePeriod", description="The time during which the event definition is intended to be in use", type="date" )
2115  public static final String SP_EFFECTIVE = "effective";
2116 /**
2117   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
2118   * <p>
2119   * Description: <b>The time during which the event definition is intended to be in use</b><br>
2120   * Type: <b>date</b><br>
2121   * Path: <b>EventDefinition.effectivePeriod</b><br>
2122   * </p>
2123   */
2124  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
2125
2126 /**
2127   * Search parameter: <b>depends-on</b>
2128   * <p>
2129   * Description: <b>What resource is being referenced</b><br>
2130   * Type: <b>reference</b><br>
2131   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2132   * </p>
2133   */
2134  @SearchParamDefinition(name="depends-on", path="EventDefinition.relatedArtifact.where(type='depends-on').resource", description="What resource is being referenced", type="reference" )
2135  public static final String SP_DEPENDS_ON = "depends-on";
2136 /**
2137   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
2138   * <p>
2139   * Description: <b>What resource is being referenced</b><br>
2140   * Type: <b>reference</b><br>
2141   * Path: <b>EventDefinition.relatedArtifact.resource</b><br>
2142   * </p>
2143   */
2144  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
2145
2146/**
2147   * Constant for fluent queries to be used to add include statements. Specifies
2148   * the path value of "<b>EventDefinition:depends-on</b>".
2149   */
2150  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("EventDefinition:depends-on").toLocked();
2151
2152 /**
2153   * Search parameter: <b>name</b>
2154   * <p>
2155   * Description: <b>Computationally friendly name of the event definition</b><br>
2156   * Type: <b>string</b><br>
2157   * Path: <b>EventDefinition.name</b><br>
2158   * </p>
2159   */
2160  @SearchParamDefinition(name="name", path="EventDefinition.name", description="Computationally friendly name of the event definition", type="string" )
2161  public static final String SP_NAME = "name";
2162 /**
2163   * <b>Fluent Client</b> search parameter constant for <b>name</b>
2164   * <p>
2165   * Description: <b>Computationally friendly name of the event definition</b><br>
2166   * Type: <b>string</b><br>
2167   * Path: <b>EventDefinition.name</b><br>
2168   * </p>
2169   */
2170  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
2171
2172 /**
2173   * Search parameter: <b>publisher</b>
2174   * <p>
2175   * Description: <b>Name of the publisher of the event definition</b><br>
2176   * Type: <b>string</b><br>
2177   * Path: <b>EventDefinition.publisher</b><br>
2178   * </p>
2179   */
2180  @SearchParamDefinition(name="publisher", path="EventDefinition.publisher", description="Name of the publisher of the event definition", type="string" )
2181  public static final String SP_PUBLISHER = "publisher";
2182 /**
2183   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
2184   * <p>
2185   * Description: <b>Name of the publisher of the event definition</b><br>
2186   * Type: <b>string</b><br>
2187   * Path: <b>EventDefinition.publisher</b><br>
2188   * </p>
2189   */
2190  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
2191
2192 /**
2193   * Search parameter: <b>topic</b>
2194   * <p>
2195   * Description: <b>Topics associated with the module</b><br>
2196   * Type: <b>token</b><br>
2197   * Path: <b>EventDefinition.topic</b><br>
2198   * </p>
2199   */
2200  @SearchParamDefinition(name="topic", path="EventDefinition.topic", description="Topics associated with the module", type="token" )
2201  public static final String SP_TOPIC = "topic";
2202 /**
2203   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
2204   * <p>
2205   * Description: <b>Topics associated with the module</b><br>
2206   * Type: <b>token</b><br>
2207   * Path: <b>EventDefinition.topic</b><br>
2208   * </p>
2209   */
2210  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
2211
2212 /**
2213   * Search parameter: <b>status</b>
2214   * <p>
2215   * Description: <b>The current status of the event definition</b><br>
2216   * Type: <b>token</b><br>
2217   * Path: <b>EventDefinition.status</b><br>
2218   * </p>
2219   */
2220  @SearchParamDefinition(name="status", path="EventDefinition.status", description="The current status of the event definition", type="token" )
2221  public static final String SP_STATUS = "status";
2222 /**
2223   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2224   * <p>
2225   * Description: <b>The current status of the event definition</b><br>
2226   * Type: <b>token</b><br>
2227   * Path: <b>EventDefinition.status</b><br>
2228   * </p>
2229   */
2230  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2231
2232
2233}
2234