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