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 EvidenceVariable resource describes a "PICO" element that knowledge (evidence, assertion, recommendation) is about.
048 */
049@ResourceDef(name="EvidenceVariable", profile="http://hl7.org/fhir/StructureDefinition/EvidenceVariable")
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", "type", "characteristic"})
051public class EvidenceVariable extends MetadataResource {
052
053    public enum EvidenceVariableType {
054        /**
055         * The variable is dichotomous, such as present or absent.
056         */
057        DICHOTOMOUS, 
058        /**
059         * The variable is a continuous result such as a quantity.
060         */
061        CONTINUOUS, 
062        /**
063         * The variable is described narratively rather than quantitatively.
064         */
065        DESCRIPTIVE, 
066        /**
067         * added to help the parsers with the generic types
068         */
069        NULL;
070        public static EvidenceVariableType fromCode(String codeString) throws FHIRException {
071            if (codeString == null || "".equals(codeString))
072                return null;
073        if ("dichotomous".equals(codeString))
074          return DICHOTOMOUS;
075        if ("continuous".equals(codeString))
076          return CONTINUOUS;
077        if ("descriptive".equals(codeString))
078          return DESCRIPTIVE;
079        if (Configuration.isAcceptInvalidEnums())
080          return null;
081        else
082          throw new FHIRException("Unknown EvidenceVariableType code '"+codeString+"'");
083        }
084        public String toCode() {
085          switch (this) {
086            case DICHOTOMOUS: return "dichotomous";
087            case CONTINUOUS: return "continuous";
088            case DESCRIPTIVE: return "descriptive";
089            default: return "?";
090          }
091        }
092        public String getSystem() {
093          switch (this) {
094            case DICHOTOMOUS: return "http://hl7.org/fhir/variable-type";
095            case CONTINUOUS: return "http://hl7.org/fhir/variable-type";
096            case DESCRIPTIVE: return "http://hl7.org/fhir/variable-type";
097            default: return "?";
098          }
099        }
100        public String getDefinition() {
101          switch (this) {
102            case DICHOTOMOUS: return "The variable is dichotomous, such as present or absent.";
103            case CONTINUOUS: return "The variable is a continuous result such as a quantity.";
104            case DESCRIPTIVE: return "The variable is described narratively rather than quantitatively.";
105            default: return "?";
106          }
107        }
108        public String getDisplay() {
109          switch (this) {
110            case DICHOTOMOUS: return "Dichotomous";
111            case CONTINUOUS: return "Continuous";
112            case DESCRIPTIVE: return "Descriptive";
113            default: return "?";
114          }
115        }
116    }
117
118  public static class EvidenceVariableTypeEnumFactory implements EnumFactory<EvidenceVariableType> {
119    public EvidenceVariableType fromCode(String codeString) throws IllegalArgumentException {
120      if (codeString == null || "".equals(codeString))
121            if (codeString == null || "".equals(codeString))
122                return null;
123        if ("dichotomous".equals(codeString))
124          return EvidenceVariableType.DICHOTOMOUS;
125        if ("continuous".equals(codeString))
126          return EvidenceVariableType.CONTINUOUS;
127        if ("descriptive".equals(codeString))
128          return EvidenceVariableType.DESCRIPTIVE;
129        throw new IllegalArgumentException("Unknown EvidenceVariableType code '"+codeString+"'");
130        }
131        public Enumeration<EvidenceVariableType> fromType(Base code) throws FHIRException {
132          if (code == null)
133            return null;
134          if (code.isEmpty())
135            return new Enumeration<EvidenceVariableType>(this);
136          String codeString = ((PrimitiveType) code).asStringValue();
137          if (codeString == null || "".equals(codeString))
138            return null;
139        if ("dichotomous".equals(codeString))
140          return new Enumeration<EvidenceVariableType>(this, EvidenceVariableType.DICHOTOMOUS);
141        if ("continuous".equals(codeString))
142          return new Enumeration<EvidenceVariableType>(this, EvidenceVariableType.CONTINUOUS);
143        if ("descriptive".equals(codeString))
144          return new Enumeration<EvidenceVariableType>(this, EvidenceVariableType.DESCRIPTIVE);
145        throw new FHIRException("Unknown EvidenceVariableType code '"+codeString+"'");
146        }
147    public String toCode(EvidenceVariableType code) {
148      if (code == EvidenceVariableType.DICHOTOMOUS)
149        return "dichotomous";
150      if (code == EvidenceVariableType.CONTINUOUS)
151        return "continuous";
152      if (code == EvidenceVariableType.DESCRIPTIVE)
153        return "descriptive";
154      return "?";
155      }
156    public String toSystem(EvidenceVariableType code) {
157      return code.getSystem();
158      }
159    }
160
161    public enum GroupMeasure {
162        /**
163         * Aggregated using Mean of participant values.
164         */
165        MEAN, 
166        /**
167         * Aggregated using Median of participant values.
168         */
169        MEDIAN, 
170        /**
171         * Aggregated using Mean of study mean values.
172         */
173        MEANOFMEAN, 
174        /**
175         * Aggregated using Mean of study median values.
176         */
177        MEANOFMEDIAN, 
178        /**
179         * Aggregated using Median of study mean values.
180         */
181        MEDIANOFMEAN, 
182        /**
183         * Aggregated using Median of study median values.
184         */
185        MEDIANOFMEDIAN, 
186        /**
187         * added to help the parsers with the generic types
188         */
189        NULL;
190        public static GroupMeasure fromCode(String codeString) throws FHIRException {
191            if (codeString == null || "".equals(codeString))
192                return null;
193        if ("mean".equals(codeString))
194          return MEAN;
195        if ("median".equals(codeString))
196          return MEDIAN;
197        if ("mean-of-mean".equals(codeString))
198          return MEANOFMEAN;
199        if ("mean-of-median".equals(codeString))
200          return MEANOFMEDIAN;
201        if ("median-of-mean".equals(codeString))
202          return MEDIANOFMEAN;
203        if ("median-of-median".equals(codeString))
204          return MEDIANOFMEDIAN;
205        if (Configuration.isAcceptInvalidEnums())
206          return null;
207        else
208          throw new FHIRException("Unknown GroupMeasure code '"+codeString+"'");
209        }
210        public String toCode() {
211          switch (this) {
212            case MEAN: return "mean";
213            case MEDIAN: return "median";
214            case MEANOFMEAN: return "mean-of-mean";
215            case MEANOFMEDIAN: return "mean-of-median";
216            case MEDIANOFMEAN: return "median-of-mean";
217            case MEDIANOFMEDIAN: return "median-of-median";
218            default: return "?";
219          }
220        }
221        public String getSystem() {
222          switch (this) {
223            case MEAN: return "http://hl7.org/fhir/group-measure";
224            case MEDIAN: return "http://hl7.org/fhir/group-measure";
225            case MEANOFMEAN: return "http://hl7.org/fhir/group-measure";
226            case MEANOFMEDIAN: return "http://hl7.org/fhir/group-measure";
227            case MEDIANOFMEAN: return "http://hl7.org/fhir/group-measure";
228            case MEDIANOFMEDIAN: return "http://hl7.org/fhir/group-measure";
229            default: return "?";
230          }
231        }
232        public String getDefinition() {
233          switch (this) {
234            case MEAN: return "Aggregated using Mean of participant values.";
235            case MEDIAN: return "Aggregated using Median of participant values.";
236            case MEANOFMEAN: return "Aggregated using Mean of study mean values.";
237            case MEANOFMEDIAN: return "Aggregated using Mean of study median values.";
238            case MEDIANOFMEAN: return "Aggregated using Median of study mean values.";
239            case MEDIANOFMEDIAN: return "Aggregated using Median of study median values.";
240            default: return "?";
241          }
242        }
243        public String getDisplay() {
244          switch (this) {
245            case MEAN: return "Mean";
246            case MEDIAN: return "Median";
247            case MEANOFMEAN: return "Mean of Study Means";
248            case MEANOFMEDIAN: return "Mean of Study Medins";
249            case MEDIANOFMEAN: return "Median of Study Means";
250            case MEDIANOFMEDIAN: return "Median of Study Medians";
251            default: return "?";
252          }
253        }
254    }
255
256  public static class GroupMeasureEnumFactory implements EnumFactory<GroupMeasure> {
257    public GroupMeasure fromCode(String codeString) throws IllegalArgumentException {
258      if (codeString == null || "".equals(codeString))
259            if (codeString == null || "".equals(codeString))
260                return null;
261        if ("mean".equals(codeString))
262          return GroupMeasure.MEAN;
263        if ("median".equals(codeString))
264          return GroupMeasure.MEDIAN;
265        if ("mean-of-mean".equals(codeString))
266          return GroupMeasure.MEANOFMEAN;
267        if ("mean-of-median".equals(codeString))
268          return GroupMeasure.MEANOFMEDIAN;
269        if ("median-of-mean".equals(codeString))
270          return GroupMeasure.MEDIANOFMEAN;
271        if ("median-of-median".equals(codeString))
272          return GroupMeasure.MEDIANOFMEDIAN;
273        throw new IllegalArgumentException("Unknown GroupMeasure code '"+codeString+"'");
274        }
275        public Enumeration<GroupMeasure> fromType(Base code) throws FHIRException {
276          if (code == null)
277            return null;
278          if (code.isEmpty())
279            return new Enumeration<GroupMeasure>(this);
280          String codeString = ((PrimitiveType) code).asStringValue();
281          if (codeString == null || "".equals(codeString))
282            return null;
283        if ("mean".equals(codeString))
284          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEAN);
285        if ("median".equals(codeString))
286          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIAN);
287        if ("mean-of-mean".equals(codeString))
288          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEANOFMEAN);
289        if ("mean-of-median".equals(codeString))
290          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEANOFMEDIAN);
291        if ("median-of-mean".equals(codeString))
292          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIANOFMEAN);
293        if ("median-of-median".equals(codeString))
294          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIANOFMEDIAN);
295        throw new FHIRException("Unknown GroupMeasure code '"+codeString+"'");
296        }
297    public String toCode(GroupMeasure code) {
298      if (code == GroupMeasure.MEAN)
299        return "mean";
300      if (code == GroupMeasure.MEDIAN)
301        return "median";
302      if (code == GroupMeasure.MEANOFMEAN)
303        return "mean-of-mean";
304      if (code == GroupMeasure.MEANOFMEDIAN)
305        return "mean-of-median";
306      if (code == GroupMeasure.MEDIANOFMEAN)
307        return "median-of-mean";
308      if (code == GroupMeasure.MEDIANOFMEDIAN)
309        return "median-of-median";
310      return "?";
311      }
312    public String toSystem(GroupMeasure code) {
313      return code.getSystem();
314      }
315    }
316
317    @Block()
318    public static class EvidenceVariableCharacteristicComponent extends BackboneElement implements IBaseBackboneElement {
319        /**
320         * A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
321         */
322        @Child(name = "description", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
323        @Description(shortDefinition="Natural language description of the characteristic", formalDefinition="A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user." )
324        protected StringType description;
325
326        /**
327         * Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).
328         */
329        @Child(name = "definition", type = {Group.class, CanonicalType.class, CodeableConcept.class, Expression.class, DataRequirement.class, TriggerDefinition.class}, order=2, min=1, max=1, modifier=false, summary=true)
330        @Description(shortDefinition="What code or expression defines members?", formalDefinition="Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year)." )
331        protected Type definition;
332
333        /**
334         * Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings.
335         */
336        @Child(name = "usageContext", type = {UsageContext.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
337        @Description(shortDefinition="What code/value pairs define members?", formalDefinition="Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings." )
338        protected List<UsageContext> usageContext;
339
340        /**
341         * When true, members with this characteristic are excluded from the element.
342         */
343        @Child(name = "exclude", type = {BooleanType.class}, order=4, min=0, max=1, modifier=false, summary=false)
344        @Description(shortDefinition="Whether the characteristic includes or excludes members", formalDefinition="When true, members with this characteristic are excluded from the element." )
345        protected BooleanType exclude;
346
347        /**
348         * Indicates what effective period the study covers.
349         */
350        @Child(name = "participantEffective", type = {DateTimeType.class, Period.class, Duration.class, Timing.class}, order=5, min=0, max=1, modifier=false, summary=false)
351        @Description(shortDefinition="What time period do participants cover", formalDefinition="Indicates what effective period the study covers." )
352        protected Type participantEffective;
353
354        /**
355         * Indicates duration from the participant's study entry.
356         */
357        @Child(name = "timeFromStart", type = {Duration.class}, order=6, min=0, max=1, modifier=false, summary=false)
358        @Description(shortDefinition="Observation time from study start", formalDefinition="Indicates duration from the participant's study entry." )
359        protected Duration timeFromStart;
360
361        /**
362         * Indicates how elements are aggregated within the study effective period.
363         */
364        @Child(name = "groupMeasure", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=false)
365        @Description(shortDefinition="mean | median | mean-of-mean | mean-of-median | median-of-mean | median-of-median", formalDefinition="Indicates how elements are aggregated within the study effective period." )
366        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/group-measure")
367        protected Enumeration<GroupMeasure> groupMeasure;
368
369        private static final long serialVersionUID = 1901961318L;
370
371    /**
372     * Constructor
373     */
374      public EvidenceVariableCharacteristicComponent() {
375        super();
376      }
377
378    /**
379     * Constructor
380     */
381      public EvidenceVariableCharacteristicComponent(Type definition) {
382        super();
383        this.definition = definition;
384      }
385
386        /**
387         * @return {@link #description} (A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
388         */
389        public StringType getDescriptionElement() { 
390          if (this.description == null)
391            if (Configuration.errorOnAutoCreate())
392              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.description");
393            else if (Configuration.doAutoCreate())
394              this.description = new StringType(); // bb
395          return this.description;
396        }
397
398        public boolean hasDescriptionElement() { 
399          return this.description != null && !this.description.isEmpty();
400        }
401
402        public boolean hasDescription() { 
403          return this.description != null && !this.description.isEmpty();
404        }
405
406        /**
407         * @param value {@link #description} (A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
408         */
409        public EvidenceVariableCharacteristicComponent setDescriptionElement(StringType value) { 
410          this.description = value;
411          return this;
412        }
413
414        /**
415         * @return A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
416         */
417        public String getDescription() { 
418          return this.description == null ? null : this.description.getValue();
419        }
420
421        /**
422         * @param value A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
423         */
424        public EvidenceVariableCharacteristicComponent setDescription(String value) { 
425          if (Utilities.noString(value))
426            this.description = null;
427          else {
428            if (this.description == null)
429              this.description = new StringType();
430            this.description.setValue(value);
431          }
432          return this;
433        }
434
435        /**
436         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
437         */
438        public Type getDefinition() { 
439          return this.definition;
440        }
441
442        /**
443         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
444         */
445        public Reference getDefinitionReference() throws FHIRException { 
446          if (this.definition == null)
447            this.definition = new Reference();
448          if (!(this.definition instanceof Reference))
449            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.definition.getClass().getName()+" was encountered");
450          return (Reference) this.definition;
451        }
452
453        public boolean hasDefinitionReference() { 
454          return this != null && this.definition instanceof Reference;
455        }
456
457        /**
458         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
459         */
460        public CanonicalType getDefinitionCanonicalType() throws FHIRException { 
461          if (this.definition == null)
462            this.definition = new CanonicalType();
463          if (!(this.definition instanceof CanonicalType))
464            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.definition.getClass().getName()+" was encountered");
465          return (CanonicalType) this.definition;
466        }
467
468        public boolean hasDefinitionCanonicalType() { 
469          return this != null && this.definition instanceof CanonicalType;
470        }
471
472        /**
473         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
474         */
475        public CodeableConcept getDefinitionCodeableConcept() throws FHIRException { 
476          if (this.definition == null)
477            this.definition = new CodeableConcept();
478          if (!(this.definition instanceof CodeableConcept))
479            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.definition.getClass().getName()+" was encountered");
480          return (CodeableConcept) this.definition;
481        }
482
483        public boolean hasDefinitionCodeableConcept() { 
484          return this != null && this.definition instanceof CodeableConcept;
485        }
486
487        /**
488         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
489         */
490        public Expression getDefinitionExpression() throws FHIRException { 
491          if (this.definition == null)
492            this.definition = new Expression();
493          if (!(this.definition instanceof Expression))
494            throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.definition.getClass().getName()+" was encountered");
495          return (Expression) this.definition;
496        }
497
498        public boolean hasDefinitionExpression() { 
499          return this != null && this.definition instanceof Expression;
500        }
501
502        /**
503         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
504         */
505        public DataRequirement getDefinitionDataRequirement() throws FHIRException { 
506          if (this.definition == null)
507            this.definition = new DataRequirement();
508          if (!(this.definition instanceof DataRequirement))
509            throw new FHIRException("Type mismatch: the type DataRequirement was expected, but "+this.definition.getClass().getName()+" was encountered");
510          return (DataRequirement) this.definition;
511        }
512
513        public boolean hasDefinitionDataRequirement() { 
514          return this != null && this.definition instanceof DataRequirement;
515        }
516
517        /**
518         * @return {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
519         */
520        public TriggerDefinition getDefinitionTriggerDefinition() throws FHIRException { 
521          if (this.definition == null)
522            this.definition = new TriggerDefinition();
523          if (!(this.definition instanceof TriggerDefinition))
524            throw new FHIRException("Type mismatch: the type TriggerDefinition was expected, but "+this.definition.getClass().getName()+" was encountered");
525          return (TriggerDefinition) this.definition;
526        }
527
528        public boolean hasDefinitionTriggerDefinition() { 
529          return this != null && this.definition instanceof TriggerDefinition;
530        }
531
532        public boolean hasDefinition() { 
533          return this.definition != null && !this.definition.isEmpty();
534        }
535
536        /**
537         * @param value {@link #definition} (Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).)
538         */
539        public EvidenceVariableCharacteristicComponent setDefinition(Type value) { 
540          if (value != null && !(value instanceof Reference || value instanceof CanonicalType || value instanceof CodeableConcept || value instanceof Expression || value instanceof DataRequirement || value instanceof TriggerDefinition))
541            throw new Error("Not the right type for EvidenceVariable.characteristic.definition[x]: "+value.fhirType());
542          this.definition = value;
543          return this;
544        }
545
546        /**
547         * @return {@link #usageContext} (Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings.)
548         */
549        public List<UsageContext> getUsageContext() { 
550          if (this.usageContext == null)
551            this.usageContext = new ArrayList<UsageContext>();
552          return this.usageContext;
553        }
554
555        /**
556         * @return Returns a reference to <code>this</code> for easy method chaining
557         */
558        public EvidenceVariableCharacteristicComponent setUsageContext(List<UsageContext> theUsageContext) { 
559          this.usageContext = theUsageContext;
560          return this;
561        }
562
563        public boolean hasUsageContext() { 
564          if (this.usageContext == null)
565            return false;
566          for (UsageContext item : this.usageContext)
567            if (!item.isEmpty())
568              return true;
569          return false;
570        }
571
572        public UsageContext addUsageContext() { //3
573          UsageContext t = new UsageContext();
574          if (this.usageContext == null)
575            this.usageContext = new ArrayList<UsageContext>();
576          this.usageContext.add(t);
577          return t;
578        }
579
580        public EvidenceVariableCharacteristicComponent addUsageContext(UsageContext t) { //3
581          if (t == null)
582            return this;
583          if (this.usageContext == null)
584            this.usageContext = new ArrayList<UsageContext>();
585          this.usageContext.add(t);
586          return this;
587        }
588
589        /**
590         * @return The first repetition of repeating field {@link #usageContext}, creating it if it does not already exist
591         */
592        public UsageContext getUsageContextFirstRep() { 
593          if (getUsageContext().isEmpty()) {
594            addUsageContext();
595          }
596          return getUsageContext().get(0);
597        }
598
599        /**
600         * @return {@link #exclude} (When true, members with this characteristic are excluded from the element.). This is the underlying object with id, value and extensions. The accessor "getExclude" gives direct access to the value
601         */
602        public BooleanType getExcludeElement() { 
603          if (this.exclude == null)
604            if (Configuration.errorOnAutoCreate())
605              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.exclude");
606            else if (Configuration.doAutoCreate())
607              this.exclude = new BooleanType(); // bb
608          return this.exclude;
609        }
610
611        public boolean hasExcludeElement() { 
612          return this.exclude != null && !this.exclude.isEmpty();
613        }
614
615        public boolean hasExclude() { 
616          return this.exclude != null && !this.exclude.isEmpty();
617        }
618
619        /**
620         * @param value {@link #exclude} (When true, members with this characteristic are excluded from the element.). This is the underlying object with id, value and extensions. The accessor "getExclude" gives direct access to the value
621         */
622        public EvidenceVariableCharacteristicComponent setExcludeElement(BooleanType value) { 
623          this.exclude = value;
624          return this;
625        }
626
627        /**
628         * @return When true, members with this characteristic are excluded from the element.
629         */
630        public boolean getExclude() { 
631          return this.exclude == null || this.exclude.isEmpty() ? false : this.exclude.getValue();
632        }
633
634        /**
635         * @param value When true, members with this characteristic are excluded from the element.
636         */
637        public EvidenceVariableCharacteristicComponent setExclude(boolean value) { 
638            if (this.exclude == null)
639              this.exclude = new BooleanType();
640            this.exclude.setValue(value);
641          return this;
642        }
643
644        /**
645         * @return {@link #participantEffective} (Indicates what effective period the study covers.)
646         */
647        public Type getParticipantEffective() { 
648          return this.participantEffective;
649        }
650
651        /**
652         * @return {@link #participantEffective} (Indicates what effective period the study covers.)
653         */
654        public DateTimeType getParticipantEffectiveDateTimeType() throws FHIRException { 
655          if (this.participantEffective == null)
656            this.participantEffective = new DateTimeType();
657          if (!(this.participantEffective instanceof DateTimeType))
658            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.participantEffective.getClass().getName()+" was encountered");
659          return (DateTimeType) this.participantEffective;
660        }
661
662        public boolean hasParticipantEffectiveDateTimeType() { 
663          return this != null && this.participantEffective instanceof DateTimeType;
664        }
665
666        /**
667         * @return {@link #participantEffective} (Indicates what effective period the study covers.)
668         */
669        public Period getParticipantEffectivePeriod() throws FHIRException { 
670          if (this.participantEffective == null)
671            this.participantEffective = new Period();
672          if (!(this.participantEffective instanceof Period))
673            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.participantEffective.getClass().getName()+" was encountered");
674          return (Period) this.participantEffective;
675        }
676
677        public boolean hasParticipantEffectivePeriod() { 
678          return this != null && this.participantEffective instanceof Period;
679        }
680
681        /**
682         * @return {@link #participantEffective} (Indicates what effective period the study covers.)
683         */
684        public Duration getParticipantEffectiveDuration() throws FHIRException { 
685          if (this.participantEffective == null)
686            this.participantEffective = new Duration();
687          if (!(this.participantEffective instanceof Duration))
688            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.participantEffective.getClass().getName()+" was encountered");
689          return (Duration) this.participantEffective;
690        }
691
692        public boolean hasParticipantEffectiveDuration() { 
693          return this != null && this.participantEffective instanceof Duration;
694        }
695
696        /**
697         * @return {@link #participantEffective} (Indicates what effective period the study covers.)
698         */
699        public Timing getParticipantEffectiveTiming() throws FHIRException { 
700          if (this.participantEffective == null)
701            this.participantEffective = new Timing();
702          if (!(this.participantEffective instanceof Timing))
703            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.participantEffective.getClass().getName()+" was encountered");
704          return (Timing) this.participantEffective;
705        }
706
707        public boolean hasParticipantEffectiveTiming() { 
708          return this != null && this.participantEffective instanceof Timing;
709        }
710
711        public boolean hasParticipantEffective() { 
712          return this.participantEffective != null && !this.participantEffective.isEmpty();
713        }
714
715        /**
716         * @param value {@link #participantEffective} (Indicates what effective period the study covers.)
717         */
718        public EvidenceVariableCharacteristicComponent setParticipantEffective(Type value) { 
719          if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Duration || value instanceof Timing))
720            throw new Error("Not the right type for EvidenceVariable.characteristic.participantEffective[x]: "+value.fhirType());
721          this.participantEffective = value;
722          return this;
723        }
724
725        /**
726         * @return {@link #timeFromStart} (Indicates duration from the participant's study entry.)
727         */
728        public Duration getTimeFromStart() { 
729          if (this.timeFromStart == null)
730            if (Configuration.errorOnAutoCreate())
731              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.timeFromStart");
732            else if (Configuration.doAutoCreate())
733              this.timeFromStart = new Duration(); // cc
734          return this.timeFromStart;
735        }
736
737        public boolean hasTimeFromStart() { 
738          return this.timeFromStart != null && !this.timeFromStart.isEmpty();
739        }
740
741        /**
742         * @param value {@link #timeFromStart} (Indicates duration from the participant's study entry.)
743         */
744        public EvidenceVariableCharacteristicComponent setTimeFromStart(Duration value) { 
745          this.timeFromStart = value;
746          return this;
747        }
748
749        /**
750         * @return {@link #groupMeasure} (Indicates how elements are aggregated within the study effective period.). This is the underlying object with id, value and extensions. The accessor "getGroupMeasure" gives direct access to the value
751         */
752        public Enumeration<GroupMeasure> getGroupMeasureElement() { 
753          if (this.groupMeasure == null)
754            if (Configuration.errorOnAutoCreate())
755              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.groupMeasure");
756            else if (Configuration.doAutoCreate())
757              this.groupMeasure = new Enumeration<GroupMeasure>(new GroupMeasureEnumFactory()); // bb
758          return this.groupMeasure;
759        }
760
761        public boolean hasGroupMeasureElement() { 
762          return this.groupMeasure != null && !this.groupMeasure.isEmpty();
763        }
764
765        public boolean hasGroupMeasure() { 
766          return this.groupMeasure != null && !this.groupMeasure.isEmpty();
767        }
768
769        /**
770         * @param value {@link #groupMeasure} (Indicates how elements are aggregated within the study effective period.). This is the underlying object with id, value and extensions. The accessor "getGroupMeasure" gives direct access to the value
771         */
772        public EvidenceVariableCharacteristicComponent setGroupMeasureElement(Enumeration<GroupMeasure> value) { 
773          this.groupMeasure = value;
774          return this;
775        }
776
777        /**
778         * @return Indicates how elements are aggregated within the study effective period.
779         */
780        public GroupMeasure getGroupMeasure() { 
781          return this.groupMeasure == null ? null : this.groupMeasure.getValue();
782        }
783
784        /**
785         * @param value Indicates how elements are aggregated within the study effective period.
786         */
787        public EvidenceVariableCharacteristicComponent setGroupMeasure(GroupMeasure value) { 
788          if (value == null)
789            this.groupMeasure = null;
790          else {
791            if (this.groupMeasure == null)
792              this.groupMeasure = new Enumeration<GroupMeasure>(new GroupMeasureEnumFactory());
793            this.groupMeasure.setValue(value);
794          }
795          return this;
796        }
797
798        protected void listChildren(List<Property> children) {
799          super.listChildren(children);
800          children.add(new Property("description", "string", "A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.", 0, 1, description));
801          children.add(new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition));
802          children.add(new Property("usageContext", "UsageContext", "Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings.", 0, java.lang.Integer.MAX_VALUE, usageContext));
803          children.add(new Property("exclude", "boolean", "When true, members with this characteristic are excluded from the element.", 0, 1, exclude));
804          children.add(new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective));
805          children.add(new Property("timeFromStart", "Duration", "Indicates duration from the participant's study entry.", 0, 1, timeFromStart));
806          children.add(new Property("groupMeasure", "code", "Indicates how elements are aggregated within the study effective period.", 0, 1, groupMeasure));
807        }
808
809        @Override
810        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
811          switch (_hash) {
812          case -1724546052: /*description*/  return new Property("description", "string", "A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.", 0, 1, description);
813          case -1139422643: /*definition[x]*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
814          case -1014418093: /*definition*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
815          case -820021448: /*definitionReference*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
816          case 933485793: /*definitionCanonical*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
817          case -1446002226: /*definitionCodeableConcept*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
818          case 1463703627: /*definitionExpression*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
819          case -660350874: /*definitionDataRequirement*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
820          case -1130324968: /*definitionTriggerDefinition*/  return new Property("definition[x]", "Reference(Group)|canonical(ActivityDefinition)|CodeableConcept|Expression|DataRequirement|TriggerDefinition", "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year).", 0, 1, definition);
821          case 907012302: /*usageContext*/  return new Property("usageContext", "UsageContext", "Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings.", 0, java.lang.Integer.MAX_VALUE, usageContext);
822          case -1321148966: /*exclude*/  return new Property("exclude", "boolean", "When true, members with this characteristic are excluded from the element.", 0, 1, exclude);
823          case 1777308748: /*participantEffective[x]*/  return new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective);
824          case 1376306100: /*participantEffective*/  return new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective);
825          case -1721146513: /*participantEffectiveDateTime*/  return new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective);
826          case -883650923: /*participantEffectivePeriod*/  return new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective);
827          case -1210941080: /*participantEffectiveDuration*/  return new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective);
828          case -765589218: /*participantEffectiveTiming*/  return new Property("participantEffective[x]", "dateTime|Period|Duration|Timing", "Indicates what effective period the study covers.", 0, 1, participantEffective);
829          case 2100140683: /*timeFromStart*/  return new Property("timeFromStart", "Duration", "Indicates duration from the participant's study entry.", 0, 1, timeFromStart);
830          case 588892639: /*groupMeasure*/  return new Property("groupMeasure", "code", "Indicates how elements are aggregated within the study effective period.", 0, 1, groupMeasure);
831          default: return super.getNamedProperty(_hash, _name, _checkValid);
832          }
833
834        }
835
836      @Override
837      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
838        switch (hash) {
839        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
840        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // Type
841        case 907012302: /*usageContext*/ return this.usageContext == null ? new Base[0] : this.usageContext.toArray(new Base[this.usageContext.size()]); // UsageContext
842        case -1321148966: /*exclude*/ return this.exclude == null ? new Base[0] : new Base[] {this.exclude}; // BooleanType
843        case 1376306100: /*participantEffective*/ return this.participantEffective == null ? new Base[0] : new Base[] {this.participantEffective}; // Type
844        case 2100140683: /*timeFromStart*/ return this.timeFromStart == null ? new Base[0] : new Base[] {this.timeFromStart}; // Duration
845        case 588892639: /*groupMeasure*/ return this.groupMeasure == null ? new Base[0] : new Base[] {this.groupMeasure}; // Enumeration<GroupMeasure>
846        default: return super.getProperty(hash, name, checkValid);
847        }
848
849      }
850
851      @Override
852      public Base setProperty(int hash, String name, Base value) throws FHIRException {
853        switch (hash) {
854        case -1724546052: // description
855          this.description = castToString(value); // StringType
856          return value;
857        case -1014418093: // definition
858          this.definition = castToType(value); // Type
859          return value;
860        case 907012302: // usageContext
861          this.getUsageContext().add(castToUsageContext(value)); // UsageContext
862          return value;
863        case -1321148966: // exclude
864          this.exclude = castToBoolean(value); // BooleanType
865          return value;
866        case 1376306100: // participantEffective
867          this.participantEffective = castToType(value); // Type
868          return value;
869        case 2100140683: // timeFromStart
870          this.timeFromStart = castToDuration(value); // Duration
871          return value;
872        case 588892639: // groupMeasure
873          value = new GroupMeasureEnumFactory().fromType(castToCode(value));
874          this.groupMeasure = (Enumeration) value; // Enumeration<GroupMeasure>
875          return value;
876        default: return super.setProperty(hash, name, value);
877        }
878
879      }
880
881      @Override
882      public Base setProperty(String name, Base value) throws FHIRException {
883        if (name.equals("description")) {
884          this.description = castToString(value); // StringType
885        } else if (name.equals("definition[x]")) {
886          this.definition = castToType(value); // Type
887        } else if (name.equals("usageContext")) {
888          this.getUsageContext().add(castToUsageContext(value));
889        } else if (name.equals("exclude")) {
890          this.exclude = castToBoolean(value); // BooleanType
891        } else if (name.equals("participantEffective[x]")) {
892          this.participantEffective = castToType(value); // Type
893        } else if (name.equals("timeFromStart")) {
894          this.timeFromStart = castToDuration(value); // Duration
895        } else if (name.equals("groupMeasure")) {
896          value = new GroupMeasureEnumFactory().fromType(castToCode(value));
897          this.groupMeasure = (Enumeration) value; // Enumeration<GroupMeasure>
898        } else
899          return super.setProperty(name, value);
900        return value;
901      }
902
903      @Override
904      public Base makeProperty(int hash, String name) throws FHIRException {
905        switch (hash) {
906        case -1724546052:  return getDescriptionElement();
907        case -1139422643:  return getDefinition(); 
908        case -1014418093:  return getDefinition(); 
909        case 907012302:  return addUsageContext(); 
910        case -1321148966:  return getExcludeElement();
911        case 1777308748:  return getParticipantEffective(); 
912        case 1376306100:  return getParticipantEffective(); 
913        case 2100140683:  return getTimeFromStart(); 
914        case 588892639:  return getGroupMeasureElement();
915        default: return super.makeProperty(hash, name);
916        }
917
918      }
919
920      @Override
921      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
922        switch (hash) {
923        case -1724546052: /*description*/ return new String[] {"string"};
924        case -1014418093: /*definition*/ return new String[] {"Reference", "canonical", "CodeableConcept", "Expression", "DataRequirement", "TriggerDefinition"};
925        case 907012302: /*usageContext*/ return new String[] {"UsageContext"};
926        case -1321148966: /*exclude*/ return new String[] {"boolean"};
927        case 1376306100: /*participantEffective*/ return new String[] {"dateTime", "Period", "Duration", "Timing"};
928        case 2100140683: /*timeFromStart*/ return new String[] {"Duration"};
929        case 588892639: /*groupMeasure*/ return new String[] {"code"};
930        default: return super.getTypesForProperty(hash, name);
931        }
932
933      }
934
935      @Override
936      public Base addChild(String name) throws FHIRException {
937        if (name.equals("description")) {
938          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.description");
939        }
940        else if (name.equals("definitionReference")) {
941          this.definition = new Reference();
942          return this.definition;
943        }
944        else if (name.equals("definitionCanonical")) {
945          this.definition = new CanonicalType();
946          return this.definition;
947        }
948        else if (name.equals("definitionCodeableConcept")) {
949          this.definition = new CodeableConcept();
950          return this.definition;
951        }
952        else if (name.equals("definitionExpression")) {
953          this.definition = new Expression();
954          return this.definition;
955        }
956        else if (name.equals("definitionDataRequirement")) {
957          this.definition = new DataRequirement();
958          return this.definition;
959        }
960        else if (name.equals("definitionTriggerDefinition")) {
961          this.definition = new TriggerDefinition();
962          return this.definition;
963        }
964        else if (name.equals("usageContext")) {
965          return addUsageContext();
966        }
967        else if (name.equals("exclude")) {
968          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.exclude");
969        }
970        else if (name.equals("participantEffectiveDateTime")) {
971          this.participantEffective = new DateTimeType();
972          return this.participantEffective;
973        }
974        else if (name.equals("participantEffectivePeriod")) {
975          this.participantEffective = new Period();
976          return this.participantEffective;
977        }
978        else if (name.equals("participantEffectiveDuration")) {
979          this.participantEffective = new Duration();
980          return this.participantEffective;
981        }
982        else if (name.equals("participantEffectiveTiming")) {
983          this.participantEffective = new Timing();
984          return this.participantEffective;
985        }
986        else if (name.equals("timeFromStart")) {
987          this.timeFromStart = new Duration();
988          return this.timeFromStart;
989        }
990        else if (name.equals("groupMeasure")) {
991          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.groupMeasure");
992        }
993        else
994          return super.addChild(name);
995      }
996
997      public EvidenceVariableCharacteristicComponent copy() {
998        EvidenceVariableCharacteristicComponent dst = new EvidenceVariableCharacteristicComponent();
999        copyValues(dst);
1000        dst.description = description == null ? null : description.copy();
1001        dst.definition = definition == null ? null : definition.copy();
1002        if (usageContext != null) {
1003          dst.usageContext = new ArrayList<UsageContext>();
1004          for (UsageContext i : usageContext)
1005            dst.usageContext.add(i.copy());
1006        };
1007        dst.exclude = exclude == null ? null : exclude.copy();
1008        dst.participantEffective = participantEffective == null ? null : participantEffective.copy();
1009        dst.timeFromStart = timeFromStart == null ? null : timeFromStart.copy();
1010        dst.groupMeasure = groupMeasure == null ? null : groupMeasure.copy();
1011        return dst;
1012      }
1013
1014      @Override
1015      public boolean equalsDeep(Base other_) {
1016        if (!super.equalsDeep(other_))
1017          return false;
1018        if (!(other_ instanceof EvidenceVariableCharacteristicComponent))
1019          return false;
1020        EvidenceVariableCharacteristicComponent o = (EvidenceVariableCharacteristicComponent) other_;
1021        return compareDeep(description, o.description, true) && compareDeep(definition, o.definition, true)
1022           && compareDeep(usageContext, o.usageContext, true) && compareDeep(exclude, o.exclude, true) && compareDeep(participantEffective, o.participantEffective, true)
1023           && compareDeep(timeFromStart, o.timeFromStart, true) && compareDeep(groupMeasure, o.groupMeasure, true)
1024          ;
1025      }
1026
1027      @Override
1028      public boolean equalsShallow(Base other_) {
1029        if (!super.equalsShallow(other_))
1030          return false;
1031        if (!(other_ instanceof EvidenceVariableCharacteristicComponent))
1032          return false;
1033        EvidenceVariableCharacteristicComponent o = (EvidenceVariableCharacteristicComponent) other_;
1034        return compareValues(description, o.description, true) && compareValues(exclude, o.exclude, true) && compareValues(groupMeasure, o.groupMeasure, true)
1035          ;
1036      }
1037
1038      public boolean isEmpty() {
1039        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, definition, usageContext
1040          , exclude, participantEffective, timeFromStart, groupMeasure);
1041      }
1042
1043  public String fhirType() {
1044    return "EvidenceVariable.characteristic";
1045
1046  }
1047
1048  }
1049
1050    /**
1051     * A formal identifier that is used to identify this evidence variable when it is represented in other formats, or referenced in a specification, model, design or an instance.
1052     */
1053    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1054    @Description(shortDefinition="Additional identifier for the evidence variable", formalDefinition="A formal identifier that is used to identify this evidence variable when it is represented in other formats, or referenced in a specification, model, design or an instance." )
1055    protected List<Identifier> identifier;
1056
1057    /**
1058     * The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
1059     */
1060    @Child(name = "shortTitle", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1061    @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." )
1062    protected StringType shortTitle;
1063
1064    /**
1065     * An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
1066     */
1067    @Child(name = "subtitle", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1068    @Description(shortDefinition="Subordinate title of the EvidenceVariable", formalDefinition="An explanatory or alternate title for the EvidenceVariable giving additional information about its content." )
1069    protected StringType subtitle;
1070
1071    /**
1072     * A human-readable string to clarify or explain concepts about the resource.
1073     */
1074    @Child(name = "note", type = {Annotation.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1075    @Description(shortDefinition="Used for footnotes or explanatory notes", formalDefinition="A human-readable string to clarify or explain concepts about the resource." )
1076    protected List<Annotation> note;
1077
1078    /**
1079     * A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.
1080     */
1081    @Child(name = "copyright", type = {MarkdownType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1082    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable." )
1083    protected MarkdownType copyright;
1084
1085    /**
1086     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
1087     */
1088    @Child(name = "approvalDate", type = {DateType.class}, order=5, min=0, max=1, modifier=false, summary=false)
1089    @Description(shortDefinition="When the evidence variable 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." )
1090    protected DateType approvalDate;
1091
1092    /**
1093     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1094     */
1095    @Child(name = "lastReviewDate", type = {DateType.class}, order=6, min=0, max=1, modifier=false, summary=false)
1096    @Description(shortDefinition="When the evidence variable 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." )
1097    protected DateType lastReviewDate;
1098
1099    /**
1100     * The period during which the evidence variable content was or is planned to be in active use.
1101     */
1102    @Child(name = "effectivePeriod", type = {Period.class}, order=7, min=0, max=1, modifier=false, summary=true)
1103    @Description(shortDefinition="When the evidence variable is expected to be used", formalDefinition="The period during which the evidence variable content was or is planned to be in active use." )
1104    protected Period effectivePeriod;
1105
1106    /**
1107     * Descriptive topics related to the content of the EvidenceVariable. Topics provide a high-level categorization grouping types of EvidenceVariables that can be useful for filtering and searching.
1108     */
1109    @Child(name = "topic", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1110    @Description(shortDefinition="The category of the EvidenceVariable, such as Education, Treatment, Assessment, etc.", formalDefinition="Descriptive topics related to the content of the EvidenceVariable. Topics provide a high-level categorization grouping types of EvidenceVariables that can be useful for filtering and searching." )
1111    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
1112    protected List<CodeableConcept> topic;
1113
1114    /**
1115     * An individiual or organization primarily involved in the creation and maintenance of the content.
1116     */
1117    @Child(name = "author", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1118    @Description(shortDefinition="Who authored the content", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the content." )
1119    protected List<ContactDetail> author;
1120
1121    /**
1122     * An individual or organization primarily responsible for internal coherence of the content.
1123     */
1124    @Child(name = "editor", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1125    @Description(shortDefinition="Who edited the content", formalDefinition="An individual or organization primarily responsible for internal coherence of the content." )
1126    protected List<ContactDetail> editor;
1127
1128    /**
1129     * An individual or organization primarily responsible for review of some aspect of the content.
1130     */
1131    @Child(name = "reviewer", type = {ContactDetail.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1132    @Description(shortDefinition="Who reviewed the content", formalDefinition="An individual or organization primarily responsible for review of some aspect of the content." )
1133    protected List<ContactDetail> reviewer;
1134
1135    /**
1136     * An individual or organization responsible for officially endorsing the content for use in some setting.
1137     */
1138    @Child(name = "endorser", type = {ContactDetail.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1139    @Description(shortDefinition="Who endorsed the content", formalDefinition="An individual or organization responsible for officially endorsing the content for use in some setting." )
1140    protected List<ContactDetail> endorser;
1141
1142    /**
1143     * Related artifacts such as additional documentation, justification, or bibliographic references.
1144     */
1145    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1146    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, or bibliographic references." )
1147    protected List<RelatedArtifact> relatedArtifact;
1148
1149    /**
1150     * The type of evidence element, a population, an exposure, or an outcome.
1151     */
1152    @Child(name = "type", type = {CodeType.class}, order=14, min=0, max=1, modifier=false, summary=true)
1153    @Description(shortDefinition="dichotomous | continuous | descriptive", formalDefinition="The type of evidence element, a population, an exposure, or an outcome." )
1154    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/variable-type")
1155    protected Enumeration<EvidenceVariableType> type;
1156
1157    /**
1158     * A characteristic that defines the members of the evidence element. Multiple characteristics are applied with "and" semantics.
1159     */
1160    @Child(name = "characteristic", type = {}, order=15, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1161    @Description(shortDefinition="What defines the members of the evidence element", formalDefinition="A characteristic that defines the members of the evidence element. Multiple characteristics are applied with \"and\" semantics." )
1162    protected List<EvidenceVariableCharacteristicComponent> characteristic;
1163
1164    private static final long serialVersionUID = -317280154L;
1165
1166  /**
1167   * Constructor
1168   */
1169    public EvidenceVariable() {
1170      super();
1171    }
1172
1173  /**
1174   * Constructor
1175   */
1176    public EvidenceVariable(Enumeration<PublicationStatus> status) {
1177      super();
1178      this.status = status;
1179    }
1180
1181    /**
1182     * @return {@link #url} (An absolute URI that is used to identify this evidence variable 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 variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1183     */
1184    public UriType getUrlElement() { 
1185      if (this.url == null)
1186        if (Configuration.errorOnAutoCreate())
1187          throw new Error("Attempt to auto-create EvidenceVariable.url");
1188        else if (Configuration.doAutoCreate())
1189          this.url = new UriType(); // bb
1190      return this.url;
1191    }
1192
1193    public boolean hasUrlElement() { 
1194      return this.url != null && !this.url.isEmpty();
1195    }
1196
1197    public boolean hasUrl() { 
1198      return this.url != null && !this.url.isEmpty();
1199    }
1200
1201    /**
1202     * @param value {@link #url} (An absolute URI that is used to identify this evidence variable 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 variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1203     */
1204    public EvidenceVariable setUrlElement(UriType value) { 
1205      this.url = value;
1206      return this;
1207    }
1208
1209    /**
1210     * @return An absolute URI that is used to identify this evidence variable 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 variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers.
1211     */
1212    public String getUrl() { 
1213      return this.url == null ? null : this.url.getValue();
1214    }
1215
1216    /**
1217     * @param value An absolute URI that is used to identify this evidence variable 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 variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers.
1218     */
1219    public EvidenceVariable setUrl(String value) { 
1220      if (Utilities.noString(value))
1221        this.url = null;
1222      else {
1223        if (this.url == null)
1224          this.url = new UriType();
1225        this.url.setValue(value);
1226      }
1227      return this;
1228    }
1229
1230    /**
1231     * @return {@link #identifier} (A formal identifier that is used to identify this evidence variable when it is represented in other formats, or referenced in a specification, model, design or an instance.)
1232     */
1233    public List<Identifier> getIdentifier() { 
1234      if (this.identifier == null)
1235        this.identifier = new ArrayList<Identifier>();
1236      return this.identifier;
1237    }
1238
1239    /**
1240     * @return Returns a reference to <code>this</code> for easy method chaining
1241     */
1242    public EvidenceVariable setIdentifier(List<Identifier> theIdentifier) { 
1243      this.identifier = theIdentifier;
1244      return this;
1245    }
1246
1247    public boolean hasIdentifier() { 
1248      if (this.identifier == null)
1249        return false;
1250      for (Identifier item : this.identifier)
1251        if (!item.isEmpty())
1252          return true;
1253      return false;
1254    }
1255
1256    public Identifier addIdentifier() { //3
1257      Identifier t = new Identifier();
1258      if (this.identifier == null)
1259        this.identifier = new ArrayList<Identifier>();
1260      this.identifier.add(t);
1261      return t;
1262    }
1263
1264    public EvidenceVariable addIdentifier(Identifier t) { //3
1265      if (t == null)
1266        return this;
1267      if (this.identifier == null)
1268        this.identifier = new ArrayList<Identifier>();
1269      this.identifier.add(t);
1270      return this;
1271    }
1272
1273    /**
1274     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
1275     */
1276    public Identifier getIdentifierFirstRep() { 
1277      if (getIdentifier().isEmpty()) {
1278        addIdentifier();
1279      }
1280      return getIdentifier().get(0);
1281    }
1282
1283    /**
1284     * @return {@link #version} (The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable 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
1285     */
1286    public StringType getVersionElement() { 
1287      if (this.version == null)
1288        if (Configuration.errorOnAutoCreate())
1289          throw new Error("Attempt to auto-create EvidenceVariable.version");
1290        else if (Configuration.doAutoCreate())
1291          this.version = new StringType(); // bb
1292      return this.version;
1293    }
1294
1295    public boolean hasVersionElement() { 
1296      return this.version != null && !this.version.isEmpty();
1297    }
1298
1299    public boolean hasVersion() { 
1300      return this.version != null && !this.version.isEmpty();
1301    }
1302
1303    /**
1304     * @param value {@link #version} (The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable 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
1305     */
1306    public EvidenceVariable setVersionElement(StringType value) { 
1307      this.version = value;
1308      return this;
1309    }
1310
1311    /**
1312     * @return The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable 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.
1313     */
1314    public String getVersion() { 
1315      return this.version == null ? null : this.version.getValue();
1316    }
1317
1318    /**
1319     * @param value The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable 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.
1320     */
1321    public EvidenceVariable setVersion(String value) { 
1322      if (Utilities.noString(value))
1323        this.version = null;
1324      else {
1325        if (this.version == null)
1326          this.version = new StringType();
1327        this.version.setValue(value);
1328      }
1329      return this;
1330    }
1331
1332    /**
1333     * @return {@link #name} (A natural language name identifying the evidence variable. 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
1334     */
1335    public StringType getNameElement() { 
1336      if (this.name == null)
1337        if (Configuration.errorOnAutoCreate())
1338          throw new Error("Attempt to auto-create EvidenceVariable.name");
1339        else if (Configuration.doAutoCreate())
1340          this.name = new StringType(); // bb
1341      return this.name;
1342    }
1343
1344    public boolean hasNameElement() { 
1345      return this.name != null && !this.name.isEmpty();
1346    }
1347
1348    public boolean hasName() { 
1349      return this.name != null && !this.name.isEmpty();
1350    }
1351
1352    /**
1353     * @param value {@link #name} (A natural language name identifying the evidence variable. 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
1354     */
1355    public EvidenceVariable setNameElement(StringType value) { 
1356      this.name = value;
1357      return this;
1358    }
1359
1360    /**
1361     * @return A natural language name identifying the evidence variable. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1362     */
1363    public String getName() { 
1364      return this.name == null ? null : this.name.getValue();
1365    }
1366
1367    /**
1368     * @param value A natural language name identifying the evidence variable. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1369     */
1370    public EvidenceVariable setName(String value) { 
1371      if (Utilities.noString(value))
1372        this.name = null;
1373      else {
1374        if (this.name == null)
1375          this.name = new StringType();
1376        this.name.setValue(value);
1377      }
1378      return this;
1379    }
1380
1381    /**
1382     * @return {@link #title} (A short, descriptive, user-friendly title for the evidence variable.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1383     */
1384    public StringType getTitleElement() { 
1385      if (this.title == null)
1386        if (Configuration.errorOnAutoCreate())
1387          throw new Error("Attempt to auto-create EvidenceVariable.title");
1388        else if (Configuration.doAutoCreate())
1389          this.title = new StringType(); // bb
1390      return this.title;
1391    }
1392
1393    public boolean hasTitleElement() { 
1394      return this.title != null && !this.title.isEmpty();
1395    }
1396
1397    public boolean hasTitle() { 
1398      return this.title != null && !this.title.isEmpty();
1399    }
1400
1401    /**
1402     * @param value {@link #title} (A short, descriptive, user-friendly title for the evidence variable.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1403     */
1404    public EvidenceVariable setTitleElement(StringType value) { 
1405      this.title = value;
1406      return this;
1407    }
1408
1409    /**
1410     * @return A short, descriptive, user-friendly title for the evidence variable.
1411     */
1412    public String getTitle() { 
1413      return this.title == null ? null : this.title.getValue();
1414    }
1415
1416    /**
1417     * @param value A short, descriptive, user-friendly title for the evidence variable.
1418     */
1419    public EvidenceVariable setTitle(String value) { 
1420      if (Utilities.noString(value))
1421        this.title = null;
1422      else {
1423        if (this.title == null)
1424          this.title = new StringType();
1425        this.title.setValue(value);
1426      }
1427      return this;
1428    }
1429
1430    /**
1431     * @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
1432     */
1433    public StringType getShortTitleElement() { 
1434      if (this.shortTitle == null)
1435        if (Configuration.errorOnAutoCreate())
1436          throw new Error("Attempt to auto-create EvidenceVariable.shortTitle");
1437        else if (Configuration.doAutoCreate())
1438          this.shortTitle = new StringType(); // bb
1439      return this.shortTitle;
1440    }
1441
1442    public boolean hasShortTitleElement() { 
1443      return this.shortTitle != null && !this.shortTitle.isEmpty();
1444    }
1445
1446    public boolean hasShortTitle() { 
1447      return this.shortTitle != null && !this.shortTitle.isEmpty();
1448    }
1449
1450    /**
1451     * @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
1452     */
1453    public EvidenceVariable setShortTitleElement(StringType value) { 
1454      this.shortTitle = value;
1455      return this;
1456    }
1457
1458    /**
1459     * @return The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
1460     */
1461    public String getShortTitle() { 
1462      return this.shortTitle == null ? null : this.shortTitle.getValue();
1463    }
1464
1465    /**
1466     * @param value The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
1467     */
1468    public EvidenceVariable setShortTitle(String value) { 
1469      if (Utilities.noString(value))
1470        this.shortTitle = null;
1471      else {
1472        if (this.shortTitle == null)
1473          this.shortTitle = new StringType();
1474        this.shortTitle.setValue(value);
1475      }
1476      return this;
1477    }
1478
1479    /**
1480     * @return {@link #subtitle} (An explanatory or alternate title for the EvidenceVariable 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
1481     */
1482    public StringType getSubtitleElement() { 
1483      if (this.subtitle == null)
1484        if (Configuration.errorOnAutoCreate())
1485          throw new Error("Attempt to auto-create EvidenceVariable.subtitle");
1486        else if (Configuration.doAutoCreate())
1487          this.subtitle = new StringType(); // bb
1488      return this.subtitle;
1489    }
1490
1491    public boolean hasSubtitleElement() { 
1492      return this.subtitle != null && !this.subtitle.isEmpty();
1493    }
1494
1495    public boolean hasSubtitle() { 
1496      return this.subtitle != null && !this.subtitle.isEmpty();
1497    }
1498
1499    /**
1500     * @param value {@link #subtitle} (An explanatory or alternate title for the EvidenceVariable 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
1501     */
1502    public EvidenceVariable setSubtitleElement(StringType value) { 
1503      this.subtitle = value;
1504      return this;
1505    }
1506
1507    /**
1508     * @return An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
1509     */
1510    public String getSubtitle() { 
1511      return this.subtitle == null ? null : this.subtitle.getValue();
1512    }
1513
1514    /**
1515     * @param value An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
1516     */
1517    public EvidenceVariable setSubtitle(String value) { 
1518      if (Utilities.noString(value))
1519        this.subtitle = null;
1520      else {
1521        if (this.subtitle == null)
1522          this.subtitle = new StringType();
1523        this.subtitle.setValue(value);
1524      }
1525      return this;
1526    }
1527
1528    /**
1529     * @return {@link #status} (The status of this evidence variable. 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
1530     */
1531    public Enumeration<PublicationStatus> getStatusElement() { 
1532      if (this.status == null)
1533        if (Configuration.errorOnAutoCreate())
1534          throw new Error("Attempt to auto-create EvidenceVariable.status");
1535        else if (Configuration.doAutoCreate())
1536          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
1537      return this.status;
1538    }
1539
1540    public boolean hasStatusElement() { 
1541      return this.status != null && !this.status.isEmpty();
1542    }
1543
1544    public boolean hasStatus() { 
1545      return this.status != null && !this.status.isEmpty();
1546    }
1547
1548    /**
1549     * @param value {@link #status} (The status of this evidence variable. 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
1550     */
1551    public EvidenceVariable setStatusElement(Enumeration<PublicationStatus> value) { 
1552      this.status = value;
1553      return this;
1554    }
1555
1556    /**
1557     * @return The status of this evidence variable. Enables tracking the life-cycle of the content.
1558     */
1559    public PublicationStatus getStatus() { 
1560      return this.status == null ? null : this.status.getValue();
1561    }
1562
1563    /**
1564     * @param value The status of this evidence variable. Enables tracking the life-cycle of the content.
1565     */
1566    public EvidenceVariable setStatus(PublicationStatus value) { 
1567        if (this.status == null)
1568          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
1569        this.status.setValue(value);
1570      return this;
1571    }
1572
1573    /**
1574     * @return {@link #date} (The date  (and optionally time) when the evidence variable 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 variable changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1575     */
1576    public DateTimeType getDateElement() { 
1577      if (this.date == null)
1578        if (Configuration.errorOnAutoCreate())
1579          throw new Error("Attempt to auto-create EvidenceVariable.date");
1580        else if (Configuration.doAutoCreate())
1581          this.date = new DateTimeType(); // bb
1582      return this.date;
1583    }
1584
1585    public boolean hasDateElement() { 
1586      return this.date != null && !this.date.isEmpty();
1587    }
1588
1589    public boolean hasDate() { 
1590      return this.date != null && !this.date.isEmpty();
1591    }
1592
1593    /**
1594     * @param value {@link #date} (The date  (and optionally time) when the evidence variable 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 variable changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1595     */
1596    public EvidenceVariable setDateElement(DateTimeType value) { 
1597      this.date = value;
1598      return this;
1599    }
1600
1601    /**
1602     * @return The date  (and optionally time) when the evidence variable 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 variable changes.
1603     */
1604    public Date getDate() { 
1605      return this.date == null ? null : this.date.getValue();
1606    }
1607
1608    /**
1609     * @param value The date  (and optionally time) when the evidence variable 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 variable changes.
1610     */
1611    public EvidenceVariable setDate(Date value) { 
1612      if (value == null)
1613        this.date = null;
1614      else {
1615        if (this.date == null)
1616          this.date = new DateTimeType();
1617        this.date.setValue(value);
1618      }
1619      return this;
1620    }
1621
1622    /**
1623     * @return {@link #publisher} (The name of the organization or individual that published the evidence variable.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
1624     */
1625    public StringType getPublisherElement() { 
1626      if (this.publisher == null)
1627        if (Configuration.errorOnAutoCreate())
1628          throw new Error("Attempt to auto-create EvidenceVariable.publisher");
1629        else if (Configuration.doAutoCreate())
1630          this.publisher = new StringType(); // bb
1631      return this.publisher;
1632    }
1633
1634    public boolean hasPublisherElement() { 
1635      return this.publisher != null && !this.publisher.isEmpty();
1636    }
1637
1638    public boolean hasPublisher() { 
1639      return this.publisher != null && !this.publisher.isEmpty();
1640    }
1641
1642    /**
1643     * @param value {@link #publisher} (The name of the organization or individual that published the evidence variable.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
1644     */
1645    public EvidenceVariable setPublisherElement(StringType value) { 
1646      this.publisher = value;
1647      return this;
1648    }
1649
1650    /**
1651     * @return The name of the organization or individual that published the evidence variable.
1652     */
1653    public String getPublisher() { 
1654      return this.publisher == null ? null : this.publisher.getValue();
1655    }
1656
1657    /**
1658     * @param value The name of the organization or individual that published the evidence variable.
1659     */
1660    public EvidenceVariable setPublisher(String value) { 
1661      if (Utilities.noString(value))
1662        this.publisher = null;
1663      else {
1664        if (this.publisher == null)
1665          this.publisher = new StringType();
1666        this.publisher.setValue(value);
1667      }
1668      return this;
1669    }
1670
1671    /**
1672     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
1673     */
1674    public List<ContactDetail> getContact() { 
1675      if (this.contact == null)
1676        this.contact = new ArrayList<ContactDetail>();
1677      return this.contact;
1678    }
1679
1680    /**
1681     * @return Returns a reference to <code>this</code> for easy method chaining
1682     */
1683    public EvidenceVariable setContact(List<ContactDetail> theContact) { 
1684      this.contact = theContact;
1685      return this;
1686    }
1687
1688    public boolean hasContact() { 
1689      if (this.contact == null)
1690        return false;
1691      for (ContactDetail item : this.contact)
1692        if (!item.isEmpty())
1693          return true;
1694      return false;
1695    }
1696
1697    public ContactDetail addContact() { //3
1698      ContactDetail t = new ContactDetail();
1699      if (this.contact == null)
1700        this.contact = new ArrayList<ContactDetail>();
1701      this.contact.add(t);
1702      return t;
1703    }
1704
1705    public EvidenceVariable addContact(ContactDetail t) { //3
1706      if (t == null)
1707        return this;
1708      if (this.contact == null)
1709        this.contact = new ArrayList<ContactDetail>();
1710      this.contact.add(t);
1711      return this;
1712    }
1713
1714    /**
1715     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
1716     */
1717    public ContactDetail getContactFirstRep() { 
1718      if (getContact().isEmpty()) {
1719        addContact();
1720      }
1721      return getContact().get(0);
1722    }
1723
1724    /**
1725     * @return {@link #description} (A free text natural language description of the evidence variable from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1726     */
1727    public MarkdownType getDescriptionElement() { 
1728      if (this.description == null)
1729        if (Configuration.errorOnAutoCreate())
1730          throw new Error("Attempt to auto-create EvidenceVariable.description");
1731        else if (Configuration.doAutoCreate())
1732          this.description = new MarkdownType(); // bb
1733      return this.description;
1734    }
1735
1736    public boolean hasDescriptionElement() { 
1737      return this.description != null && !this.description.isEmpty();
1738    }
1739
1740    public boolean hasDescription() { 
1741      return this.description != null && !this.description.isEmpty();
1742    }
1743
1744    /**
1745     * @param value {@link #description} (A free text natural language description of the evidence variable from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1746     */
1747    public EvidenceVariable setDescriptionElement(MarkdownType value) { 
1748      this.description = value;
1749      return this;
1750    }
1751
1752    /**
1753     * @return A free text natural language description of the evidence variable from a consumer's perspective.
1754     */
1755    public String getDescription() { 
1756      return this.description == null ? null : this.description.getValue();
1757    }
1758
1759    /**
1760     * @param value A free text natural language description of the evidence variable from a consumer's perspective.
1761     */
1762    public EvidenceVariable setDescription(String value) { 
1763      if (value == null)
1764        this.description = null;
1765      else {
1766        if (this.description == null)
1767          this.description = new MarkdownType();
1768        this.description.setValue(value);
1769      }
1770      return this;
1771    }
1772
1773    /**
1774     * @return {@link #note} (A human-readable string to clarify or explain concepts about the resource.)
1775     */
1776    public List<Annotation> getNote() { 
1777      if (this.note == null)
1778        this.note = new ArrayList<Annotation>();
1779      return this.note;
1780    }
1781
1782    /**
1783     * @return Returns a reference to <code>this</code> for easy method chaining
1784     */
1785    public EvidenceVariable setNote(List<Annotation> theNote) { 
1786      this.note = theNote;
1787      return this;
1788    }
1789
1790    public boolean hasNote() { 
1791      if (this.note == null)
1792        return false;
1793      for (Annotation item : this.note)
1794        if (!item.isEmpty())
1795          return true;
1796      return false;
1797    }
1798
1799    public Annotation addNote() { //3
1800      Annotation t = new Annotation();
1801      if (this.note == null)
1802        this.note = new ArrayList<Annotation>();
1803      this.note.add(t);
1804      return t;
1805    }
1806
1807    public EvidenceVariable addNote(Annotation t) { //3
1808      if (t == null)
1809        return this;
1810      if (this.note == null)
1811        this.note = new ArrayList<Annotation>();
1812      this.note.add(t);
1813      return this;
1814    }
1815
1816    /**
1817     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist
1818     */
1819    public Annotation getNoteFirstRep() { 
1820      if (getNote().isEmpty()) {
1821        addNote();
1822      }
1823      return getNote().get(0);
1824    }
1825
1826    /**
1827     * @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 variable instances.)
1828     */
1829    public List<UsageContext> getUseContext() { 
1830      if (this.useContext == null)
1831        this.useContext = new ArrayList<UsageContext>();
1832      return this.useContext;
1833    }
1834
1835    /**
1836     * @return Returns a reference to <code>this</code> for easy method chaining
1837     */
1838    public EvidenceVariable setUseContext(List<UsageContext> theUseContext) { 
1839      this.useContext = theUseContext;
1840      return this;
1841    }
1842
1843    public boolean hasUseContext() { 
1844      if (this.useContext == null)
1845        return false;
1846      for (UsageContext item : this.useContext)
1847        if (!item.isEmpty())
1848          return true;
1849      return false;
1850    }
1851
1852    public UsageContext addUseContext() { //3
1853      UsageContext t = new UsageContext();
1854      if (this.useContext == null)
1855        this.useContext = new ArrayList<UsageContext>();
1856      this.useContext.add(t);
1857      return t;
1858    }
1859
1860    public EvidenceVariable addUseContext(UsageContext t) { //3
1861      if (t == null)
1862        return this;
1863      if (this.useContext == null)
1864        this.useContext = new ArrayList<UsageContext>();
1865      this.useContext.add(t);
1866      return this;
1867    }
1868
1869    /**
1870     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
1871     */
1872    public UsageContext getUseContextFirstRep() { 
1873      if (getUseContext().isEmpty()) {
1874        addUseContext();
1875      }
1876      return getUseContext().get(0);
1877    }
1878
1879    /**
1880     * @return {@link #jurisdiction} (A legal or geographic region in which the evidence variable is intended to be used.)
1881     */
1882    public List<CodeableConcept> getJurisdiction() { 
1883      if (this.jurisdiction == null)
1884        this.jurisdiction = new ArrayList<CodeableConcept>();
1885      return this.jurisdiction;
1886    }
1887
1888    /**
1889     * @return Returns a reference to <code>this</code> for easy method chaining
1890     */
1891    public EvidenceVariable setJurisdiction(List<CodeableConcept> theJurisdiction) { 
1892      this.jurisdiction = theJurisdiction;
1893      return this;
1894    }
1895
1896    public boolean hasJurisdiction() { 
1897      if (this.jurisdiction == null)
1898        return false;
1899      for (CodeableConcept item : this.jurisdiction)
1900        if (!item.isEmpty())
1901          return true;
1902      return false;
1903    }
1904
1905    public CodeableConcept addJurisdiction() { //3
1906      CodeableConcept t = new CodeableConcept();
1907      if (this.jurisdiction == null)
1908        this.jurisdiction = new ArrayList<CodeableConcept>();
1909      this.jurisdiction.add(t);
1910      return t;
1911    }
1912
1913    public EvidenceVariable addJurisdiction(CodeableConcept t) { //3
1914      if (t == null)
1915        return this;
1916      if (this.jurisdiction == null)
1917        this.jurisdiction = new ArrayList<CodeableConcept>();
1918      this.jurisdiction.add(t);
1919      return this;
1920    }
1921
1922    /**
1923     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
1924     */
1925    public CodeableConcept getJurisdictionFirstRep() { 
1926      if (getJurisdiction().isEmpty()) {
1927        addJurisdiction();
1928      }
1929      return getJurisdiction().get(0);
1930    }
1931
1932    /**
1933     * @return {@link #copyright} (A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1934     */
1935    public MarkdownType getCopyrightElement() { 
1936      if (this.copyright == null)
1937        if (Configuration.errorOnAutoCreate())
1938          throw new Error("Attempt to auto-create EvidenceVariable.copyright");
1939        else if (Configuration.doAutoCreate())
1940          this.copyright = new MarkdownType(); // bb
1941      return this.copyright;
1942    }
1943
1944    public boolean hasCopyrightElement() { 
1945      return this.copyright != null && !this.copyright.isEmpty();
1946    }
1947
1948    public boolean hasCopyright() { 
1949      return this.copyright != null && !this.copyright.isEmpty();
1950    }
1951
1952    /**
1953     * @param value {@link #copyright} (A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1954     */
1955    public EvidenceVariable setCopyrightElement(MarkdownType value) { 
1956      this.copyright = value;
1957      return this;
1958    }
1959
1960    /**
1961     * @return A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.
1962     */
1963    public String getCopyright() { 
1964      return this.copyright == null ? null : this.copyright.getValue();
1965    }
1966
1967    /**
1968     * @param value A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.
1969     */
1970    public EvidenceVariable setCopyright(String value) { 
1971      if (value == null)
1972        this.copyright = null;
1973      else {
1974        if (this.copyright == null)
1975          this.copyright = new MarkdownType();
1976        this.copyright.setValue(value);
1977      }
1978      return this;
1979    }
1980
1981    /**
1982     * @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
1983     */
1984    public DateType getApprovalDateElement() { 
1985      if (this.approvalDate == null)
1986        if (Configuration.errorOnAutoCreate())
1987          throw new Error("Attempt to auto-create EvidenceVariable.approvalDate");
1988        else if (Configuration.doAutoCreate())
1989          this.approvalDate = new DateType(); // bb
1990      return this.approvalDate;
1991    }
1992
1993    public boolean hasApprovalDateElement() { 
1994      return this.approvalDate != null && !this.approvalDate.isEmpty();
1995    }
1996
1997    public boolean hasApprovalDate() { 
1998      return this.approvalDate != null && !this.approvalDate.isEmpty();
1999    }
2000
2001    /**
2002     * @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
2003     */
2004    public EvidenceVariable setApprovalDateElement(DateType value) { 
2005      this.approvalDate = value;
2006      return this;
2007    }
2008
2009    /**
2010     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
2011     */
2012    public Date getApprovalDate() { 
2013      return this.approvalDate == null ? null : this.approvalDate.getValue();
2014    }
2015
2016    /**
2017     * @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.
2018     */
2019    public EvidenceVariable setApprovalDate(Date value) { 
2020      if (value == null)
2021        this.approvalDate = null;
2022      else {
2023        if (this.approvalDate == null)
2024          this.approvalDate = new DateType();
2025        this.approvalDate.setValue(value);
2026      }
2027      return this;
2028    }
2029
2030    /**
2031     * @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
2032     */
2033    public DateType getLastReviewDateElement() { 
2034      if (this.lastReviewDate == null)
2035        if (Configuration.errorOnAutoCreate())
2036          throw new Error("Attempt to auto-create EvidenceVariable.lastReviewDate");
2037        else if (Configuration.doAutoCreate())
2038          this.lastReviewDate = new DateType(); // bb
2039      return this.lastReviewDate;
2040    }
2041
2042    public boolean hasLastReviewDateElement() { 
2043      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
2044    }
2045
2046    public boolean hasLastReviewDate() { 
2047      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
2048    }
2049
2050    /**
2051     * @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
2052     */
2053    public EvidenceVariable setLastReviewDateElement(DateType value) { 
2054      this.lastReviewDate = value;
2055      return this;
2056    }
2057
2058    /**
2059     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
2060     */
2061    public Date getLastReviewDate() { 
2062      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
2063    }
2064
2065    /**
2066     * @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.
2067     */
2068    public EvidenceVariable setLastReviewDate(Date value) { 
2069      if (value == null)
2070        this.lastReviewDate = null;
2071      else {
2072        if (this.lastReviewDate == null)
2073          this.lastReviewDate = new DateType();
2074        this.lastReviewDate.setValue(value);
2075      }
2076      return this;
2077    }
2078
2079    /**
2080     * @return {@link #effectivePeriod} (The period during which the evidence variable content was or is planned to be in active use.)
2081     */
2082    public Period getEffectivePeriod() { 
2083      if (this.effectivePeriod == null)
2084        if (Configuration.errorOnAutoCreate())
2085          throw new Error("Attempt to auto-create EvidenceVariable.effectivePeriod");
2086        else if (Configuration.doAutoCreate())
2087          this.effectivePeriod = new Period(); // cc
2088      return this.effectivePeriod;
2089    }
2090
2091    public boolean hasEffectivePeriod() { 
2092      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
2093    }
2094
2095    /**
2096     * @param value {@link #effectivePeriod} (The period during which the evidence variable content was or is planned to be in active use.)
2097     */
2098    public EvidenceVariable setEffectivePeriod(Period value) { 
2099      this.effectivePeriod = value;
2100      return this;
2101    }
2102
2103    /**
2104     * @return {@link #topic} (Descriptive topics related to the content of the EvidenceVariable. Topics provide a high-level categorization grouping types of EvidenceVariables that can be useful for filtering and searching.)
2105     */
2106    public List<CodeableConcept> getTopic() { 
2107      if (this.topic == null)
2108        this.topic = new ArrayList<CodeableConcept>();
2109      return this.topic;
2110    }
2111
2112    /**
2113     * @return Returns a reference to <code>this</code> for easy method chaining
2114     */
2115    public EvidenceVariable setTopic(List<CodeableConcept> theTopic) { 
2116      this.topic = theTopic;
2117      return this;
2118    }
2119
2120    public boolean hasTopic() { 
2121      if (this.topic == null)
2122        return false;
2123      for (CodeableConcept item : this.topic)
2124        if (!item.isEmpty())
2125          return true;
2126      return false;
2127    }
2128
2129    public CodeableConcept addTopic() { //3
2130      CodeableConcept t = new CodeableConcept();
2131      if (this.topic == null)
2132        this.topic = new ArrayList<CodeableConcept>();
2133      this.topic.add(t);
2134      return t;
2135    }
2136
2137    public EvidenceVariable addTopic(CodeableConcept t) { //3
2138      if (t == null)
2139        return this;
2140      if (this.topic == null)
2141        this.topic = new ArrayList<CodeableConcept>();
2142      this.topic.add(t);
2143      return this;
2144    }
2145
2146    /**
2147     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist
2148     */
2149    public CodeableConcept getTopicFirstRep() { 
2150      if (getTopic().isEmpty()) {
2151        addTopic();
2152      }
2153      return getTopic().get(0);
2154    }
2155
2156    /**
2157     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the content.)
2158     */
2159    public List<ContactDetail> getAuthor() { 
2160      if (this.author == null)
2161        this.author = new ArrayList<ContactDetail>();
2162      return this.author;
2163    }
2164
2165    /**
2166     * @return Returns a reference to <code>this</code> for easy method chaining
2167     */
2168    public EvidenceVariable setAuthor(List<ContactDetail> theAuthor) { 
2169      this.author = theAuthor;
2170      return this;
2171    }
2172
2173    public boolean hasAuthor() { 
2174      if (this.author == null)
2175        return false;
2176      for (ContactDetail item : this.author)
2177        if (!item.isEmpty())
2178          return true;
2179      return false;
2180    }
2181
2182    public ContactDetail addAuthor() { //3
2183      ContactDetail t = new ContactDetail();
2184      if (this.author == null)
2185        this.author = new ArrayList<ContactDetail>();
2186      this.author.add(t);
2187      return t;
2188    }
2189
2190    public EvidenceVariable addAuthor(ContactDetail t) { //3
2191      if (t == null)
2192        return this;
2193      if (this.author == null)
2194        this.author = new ArrayList<ContactDetail>();
2195      this.author.add(t);
2196      return this;
2197    }
2198
2199    /**
2200     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist
2201     */
2202    public ContactDetail getAuthorFirstRep() { 
2203      if (getAuthor().isEmpty()) {
2204        addAuthor();
2205      }
2206      return getAuthor().get(0);
2207    }
2208
2209    /**
2210     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the content.)
2211     */
2212    public List<ContactDetail> getEditor() { 
2213      if (this.editor == null)
2214        this.editor = new ArrayList<ContactDetail>();
2215      return this.editor;
2216    }
2217
2218    /**
2219     * @return Returns a reference to <code>this</code> for easy method chaining
2220     */
2221    public EvidenceVariable setEditor(List<ContactDetail> theEditor) { 
2222      this.editor = theEditor;
2223      return this;
2224    }
2225
2226    public boolean hasEditor() { 
2227      if (this.editor == null)
2228        return false;
2229      for (ContactDetail item : this.editor)
2230        if (!item.isEmpty())
2231          return true;
2232      return false;
2233    }
2234
2235    public ContactDetail addEditor() { //3
2236      ContactDetail t = new ContactDetail();
2237      if (this.editor == null)
2238        this.editor = new ArrayList<ContactDetail>();
2239      this.editor.add(t);
2240      return t;
2241    }
2242
2243    public EvidenceVariable addEditor(ContactDetail t) { //3
2244      if (t == null)
2245        return this;
2246      if (this.editor == null)
2247        this.editor = new ArrayList<ContactDetail>();
2248      this.editor.add(t);
2249      return this;
2250    }
2251
2252    /**
2253     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist
2254     */
2255    public ContactDetail getEditorFirstRep() { 
2256      if (getEditor().isEmpty()) {
2257        addEditor();
2258      }
2259      return getEditor().get(0);
2260    }
2261
2262    /**
2263     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the content.)
2264     */
2265    public List<ContactDetail> getReviewer() { 
2266      if (this.reviewer == null)
2267        this.reviewer = new ArrayList<ContactDetail>();
2268      return this.reviewer;
2269    }
2270
2271    /**
2272     * @return Returns a reference to <code>this</code> for easy method chaining
2273     */
2274    public EvidenceVariable setReviewer(List<ContactDetail> theReviewer) { 
2275      this.reviewer = theReviewer;
2276      return this;
2277    }
2278
2279    public boolean hasReviewer() { 
2280      if (this.reviewer == null)
2281        return false;
2282      for (ContactDetail item : this.reviewer)
2283        if (!item.isEmpty())
2284          return true;
2285      return false;
2286    }
2287
2288    public ContactDetail addReviewer() { //3
2289      ContactDetail t = new ContactDetail();
2290      if (this.reviewer == null)
2291        this.reviewer = new ArrayList<ContactDetail>();
2292      this.reviewer.add(t);
2293      return t;
2294    }
2295
2296    public EvidenceVariable addReviewer(ContactDetail t) { //3
2297      if (t == null)
2298        return this;
2299      if (this.reviewer == null)
2300        this.reviewer = new ArrayList<ContactDetail>();
2301      this.reviewer.add(t);
2302      return this;
2303    }
2304
2305    /**
2306     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist
2307     */
2308    public ContactDetail getReviewerFirstRep() { 
2309      if (getReviewer().isEmpty()) {
2310        addReviewer();
2311      }
2312      return getReviewer().get(0);
2313    }
2314
2315    /**
2316     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the content for use in some setting.)
2317     */
2318    public List<ContactDetail> getEndorser() { 
2319      if (this.endorser == null)
2320        this.endorser = new ArrayList<ContactDetail>();
2321      return this.endorser;
2322    }
2323
2324    /**
2325     * @return Returns a reference to <code>this</code> for easy method chaining
2326     */
2327    public EvidenceVariable setEndorser(List<ContactDetail> theEndorser) { 
2328      this.endorser = theEndorser;
2329      return this;
2330    }
2331
2332    public boolean hasEndorser() { 
2333      if (this.endorser == null)
2334        return false;
2335      for (ContactDetail item : this.endorser)
2336        if (!item.isEmpty())
2337          return true;
2338      return false;
2339    }
2340
2341    public ContactDetail addEndorser() { //3
2342      ContactDetail t = new ContactDetail();
2343      if (this.endorser == null)
2344        this.endorser = new ArrayList<ContactDetail>();
2345      this.endorser.add(t);
2346      return t;
2347    }
2348
2349    public EvidenceVariable addEndorser(ContactDetail t) { //3
2350      if (t == null)
2351        return this;
2352      if (this.endorser == null)
2353        this.endorser = new ArrayList<ContactDetail>();
2354      this.endorser.add(t);
2355      return this;
2356    }
2357
2358    /**
2359     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist
2360     */
2361    public ContactDetail getEndorserFirstRep() { 
2362      if (getEndorser().isEmpty()) {
2363        addEndorser();
2364      }
2365      return getEndorser().get(0);
2366    }
2367
2368    /**
2369     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, or bibliographic references.)
2370     */
2371    public List<RelatedArtifact> getRelatedArtifact() { 
2372      if (this.relatedArtifact == null)
2373        this.relatedArtifact = new ArrayList<RelatedArtifact>();
2374      return this.relatedArtifact;
2375    }
2376
2377    /**
2378     * @return Returns a reference to <code>this</code> for easy method chaining
2379     */
2380    public EvidenceVariable setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
2381      this.relatedArtifact = theRelatedArtifact;
2382      return this;
2383    }
2384
2385    public boolean hasRelatedArtifact() { 
2386      if (this.relatedArtifact == null)
2387        return false;
2388      for (RelatedArtifact item : this.relatedArtifact)
2389        if (!item.isEmpty())
2390          return true;
2391      return false;
2392    }
2393
2394    public RelatedArtifact addRelatedArtifact() { //3
2395      RelatedArtifact t = new RelatedArtifact();
2396      if (this.relatedArtifact == null)
2397        this.relatedArtifact = new ArrayList<RelatedArtifact>();
2398      this.relatedArtifact.add(t);
2399      return t;
2400    }
2401
2402    public EvidenceVariable addRelatedArtifact(RelatedArtifact t) { //3
2403      if (t == null)
2404        return this;
2405      if (this.relatedArtifact == null)
2406        this.relatedArtifact = new ArrayList<RelatedArtifact>();
2407      this.relatedArtifact.add(t);
2408      return this;
2409    }
2410
2411    /**
2412     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist
2413     */
2414    public RelatedArtifact getRelatedArtifactFirstRep() { 
2415      if (getRelatedArtifact().isEmpty()) {
2416        addRelatedArtifact();
2417      }
2418      return getRelatedArtifact().get(0);
2419    }
2420
2421    /**
2422     * @return {@link #type} (The type of evidence element, a population, an exposure, or an outcome.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2423     */
2424    public Enumeration<EvidenceVariableType> getTypeElement() { 
2425      if (this.type == null)
2426        if (Configuration.errorOnAutoCreate())
2427          throw new Error("Attempt to auto-create EvidenceVariable.type");
2428        else if (Configuration.doAutoCreate())
2429          this.type = new Enumeration<EvidenceVariableType>(new EvidenceVariableTypeEnumFactory()); // bb
2430      return this.type;
2431    }
2432
2433    public boolean hasTypeElement() { 
2434      return this.type != null && !this.type.isEmpty();
2435    }
2436
2437    public boolean hasType() { 
2438      return this.type != null && !this.type.isEmpty();
2439    }
2440
2441    /**
2442     * @param value {@link #type} (The type of evidence element, a population, an exposure, or an outcome.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2443     */
2444    public EvidenceVariable setTypeElement(Enumeration<EvidenceVariableType> value) { 
2445      this.type = value;
2446      return this;
2447    }
2448
2449    /**
2450     * @return The type of evidence element, a population, an exposure, or an outcome.
2451     */
2452    public EvidenceVariableType getType() { 
2453      return this.type == null ? null : this.type.getValue();
2454    }
2455
2456    /**
2457     * @param value The type of evidence element, a population, an exposure, or an outcome.
2458     */
2459    public EvidenceVariable setType(EvidenceVariableType value) { 
2460      if (value == null)
2461        this.type = null;
2462      else {
2463        if (this.type == null)
2464          this.type = new Enumeration<EvidenceVariableType>(new EvidenceVariableTypeEnumFactory());
2465        this.type.setValue(value);
2466      }
2467      return this;
2468    }
2469
2470    /**
2471     * @return {@link #characteristic} (A characteristic that defines the members of the evidence element. Multiple characteristics are applied with "and" semantics.)
2472     */
2473    public List<EvidenceVariableCharacteristicComponent> getCharacteristic() { 
2474      if (this.characteristic == null)
2475        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2476      return this.characteristic;
2477    }
2478
2479    /**
2480     * @return Returns a reference to <code>this</code> for easy method chaining
2481     */
2482    public EvidenceVariable setCharacteristic(List<EvidenceVariableCharacteristicComponent> theCharacteristic) { 
2483      this.characteristic = theCharacteristic;
2484      return this;
2485    }
2486
2487    public boolean hasCharacteristic() { 
2488      if (this.characteristic == null)
2489        return false;
2490      for (EvidenceVariableCharacteristicComponent item : this.characteristic)
2491        if (!item.isEmpty())
2492          return true;
2493      return false;
2494    }
2495
2496    public EvidenceVariableCharacteristicComponent addCharacteristic() { //3
2497      EvidenceVariableCharacteristicComponent t = new EvidenceVariableCharacteristicComponent();
2498      if (this.characteristic == null)
2499        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2500      this.characteristic.add(t);
2501      return t;
2502    }
2503
2504    public EvidenceVariable addCharacteristic(EvidenceVariableCharacteristicComponent t) { //3
2505      if (t == null)
2506        return this;
2507      if (this.characteristic == null)
2508        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2509      this.characteristic.add(t);
2510      return this;
2511    }
2512
2513    /**
2514     * @return The first repetition of repeating field {@link #characteristic}, creating it if it does not already exist
2515     */
2516    public EvidenceVariableCharacteristicComponent getCharacteristicFirstRep() { 
2517      if (getCharacteristic().isEmpty()) {
2518        addCharacteristic();
2519      }
2520      return getCharacteristic().get(0);
2521    }
2522
2523      protected void listChildren(List<Property> children) {
2524        super.listChildren(children);
2525        children.add(new Property("url", "uri", "An absolute URI that is used to identify this evidence variable 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 variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers.", 0, 1, url));
2526        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this evidence variable when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
2527        children.add(new Property("version", "string", "The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable 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));
2528        children.add(new Property("name", "string", "A natural language name identifying the evidence variable. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
2529        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the evidence variable.", 0, 1, title));
2530        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));
2531        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the EvidenceVariable giving additional information about its content.", 0, 1, subtitle));
2532        children.add(new Property("status", "code", "The status of this evidence variable. Enables tracking the life-cycle of the content.", 0, 1, status));
2533        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the evidence variable 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 variable changes.", 0, 1, date));
2534        children.add(new Property("publisher", "string", "The name of the organization or individual that published the evidence variable.", 0, 1, publisher));
2535        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));
2536        children.add(new Property("description", "markdown", "A free text natural language description of the evidence variable from a consumer's perspective.", 0, 1, description));
2537        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));
2538        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 variable instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
2539        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the evidence variable is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
2540        children.add(new Property("copyright", "markdown", "A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.", 0, 1, copyright));
2541        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));
2542        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));
2543        children.add(new Property("effectivePeriod", "Period", "The period during which the evidence variable content was or is planned to be in active use.", 0, 1, effectivePeriod));
2544        children.add(new Property("topic", "CodeableConcept", "Descriptive topics related to the content of the EvidenceVariable. Topics provide a high-level categorization grouping types of EvidenceVariables that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic));
2545        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));
2546        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));
2547        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));
2548        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));
2549        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
2550        children.add(new Property("type", "code", "The type of evidence element, a population, an exposure, or an outcome.", 0, 1, type));
2551        children.add(new Property("characteristic", "", "A characteristic that defines the members of the evidence element. Multiple characteristics are applied with \"and\" semantics.", 0, java.lang.Integer.MAX_VALUE, characteristic));
2552      }
2553
2554      @Override
2555      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2556        switch (_hash) {
2557        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this evidence variable 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 variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers.", 0, 1, url);
2558        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this evidence variable when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
2559        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable 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);
2560        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the evidence variable. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
2561        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the evidence variable.", 0, 1, title);
2562        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);
2563        case -2060497896: /*subtitle*/  return new Property("subtitle", "string", "An explanatory or alternate title for the EvidenceVariable giving additional information about its content.", 0, 1, subtitle);
2564        case -892481550: /*status*/  return new Property("status", "code", "The status of this evidence variable. Enables tracking the life-cycle of the content.", 0, 1, status);
2565        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the evidence variable 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 variable changes.", 0, 1, date);
2566        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the evidence variable.", 0, 1, publisher);
2567        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);
2568        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the evidence variable from a consumer's perspective.", 0, 1, description);
2569        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);
2570        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 variable instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
2571        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the evidence variable is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
2572        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable.", 0, 1, copyright);
2573        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);
2574        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);
2575        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the evidence variable content was or is planned to be in active use.", 0, 1, effectivePeriod);
2576        case 110546223: /*topic*/  return new Property("topic", "CodeableConcept", "Descriptive topics related to the content of the EvidenceVariable. Topics provide a high-level categorization grouping types of EvidenceVariables that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic);
2577        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);
2578        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);
2579        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);
2580        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);
2581        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);
2582        case 3575610: /*type*/  return new Property("type", "code", "The type of evidence element, a population, an exposure, or an outcome.", 0, 1, type);
2583        case 366313883: /*characteristic*/  return new Property("characteristic", "", "A characteristic that defines the members of the evidence element. Multiple characteristics are applied with \"and\" semantics.", 0, java.lang.Integer.MAX_VALUE, characteristic);
2584        default: return super.getNamedProperty(_hash, _name, _checkValid);
2585        }
2586
2587      }
2588
2589      @Override
2590      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2591        switch (hash) {
2592        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2593        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2594        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2595        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2596        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2597        case 1555503932: /*shortTitle*/ return this.shortTitle == null ? new Base[0] : new Base[] {this.shortTitle}; // StringType
2598        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
2599        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2600        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2601        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
2602        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
2603        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2604        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2605        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
2606        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
2607        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
2608        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
2609        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
2610        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
2611        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
2612        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
2613        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
2614        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
2615        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
2616        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
2617        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<EvidenceVariableType>
2618        case 366313883: /*characteristic*/ return this.characteristic == null ? new Base[0] : this.characteristic.toArray(new Base[this.characteristic.size()]); // EvidenceVariableCharacteristicComponent
2619        default: return super.getProperty(hash, name, checkValid);
2620        }
2621
2622      }
2623
2624      @Override
2625      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2626        switch (hash) {
2627        case 116079: // url
2628          this.url = castToUri(value); // UriType
2629          return value;
2630        case -1618432855: // identifier
2631          this.getIdentifier().add(castToIdentifier(value)); // Identifier
2632          return value;
2633        case 351608024: // version
2634          this.version = castToString(value); // StringType
2635          return value;
2636        case 3373707: // name
2637          this.name = castToString(value); // StringType
2638          return value;
2639        case 110371416: // title
2640          this.title = castToString(value); // StringType
2641          return value;
2642        case 1555503932: // shortTitle
2643          this.shortTitle = castToString(value); // StringType
2644          return value;
2645        case -2060497896: // subtitle
2646          this.subtitle = castToString(value); // StringType
2647          return value;
2648        case -892481550: // status
2649          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
2650          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2651          return value;
2652        case 3076014: // date
2653          this.date = castToDateTime(value); // DateTimeType
2654          return value;
2655        case 1447404028: // publisher
2656          this.publisher = castToString(value); // StringType
2657          return value;
2658        case 951526432: // contact
2659          this.getContact().add(castToContactDetail(value)); // ContactDetail
2660          return value;
2661        case -1724546052: // description
2662          this.description = castToMarkdown(value); // MarkdownType
2663          return value;
2664        case 3387378: // note
2665          this.getNote().add(castToAnnotation(value)); // Annotation
2666          return value;
2667        case -669707736: // useContext
2668          this.getUseContext().add(castToUsageContext(value)); // UsageContext
2669          return value;
2670        case -507075711: // jurisdiction
2671          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
2672          return value;
2673        case 1522889671: // copyright
2674          this.copyright = castToMarkdown(value); // MarkdownType
2675          return value;
2676        case 223539345: // approvalDate
2677          this.approvalDate = castToDate(value); // DateType
2678          return value;
2679        case -1687512484: // lastReviewDate
2680          this.lastReviewDate = castToDate(value); // DateType
2681          return value;
2682        case -403934648: // effectivePeriod
2683          this.effectivePeriod = castToPeriod(value); // Period
2684          return value;
2685        case 110546223: // topic
2686          this.getTopic().add(castToCodeableConcept(value)); // CodeableConcept
2687          return value;
2688        case -1406328437: // author
2689          this.getAuthor().add(castToContactDetail(value)); // ContactDetail
2690          return value;
2691        case -1307827859: // editor
2692          this.getEditor().add(castToContactDetail(value)); // ContactDetail
2693          return value;
2694        case -261190139: // reviewer
2695          this.getReviewer().add(castToContactDetail(value)); // ContactDetail
2696          return value;
2697        case 1740277666: // endorser
2698          this.getEndorser().add(castToContactDetail(value)); // ContactDetail
2699          return value;
2700        case 666807069: // relatedArtifact
2701          this.getRelatedArtifact().add(castToRelatedArtifact(value)); // RelatedArtifact
2702          return value;
2703        case 3575610: // type
2704          value = new EvidenceVariableTypeEnumFactory().fromType(castToCode(value));
2705          this.type = (Enumeration) value; // Enumeration<EvidenceVariableType>
2706          return value;
2707        case 366313883: // characteristic
2708          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value); // EvidenceVariableCharacteristicComponent
2709          return value;
2710        default: return super.setProperty(hash, name, value);
2711        }
2712
2713      }
2714
2715      @Override
2716      public Base setProperty(String name, Base value) throws FHIRException {
2717        if (name.equals("url")) {
2718          this.url = castToUri(value); // UriType
2719        } else if (name.equals("identifier")) {
2720          this.getIdentifier().add(castToIdentifier(value));
2721        } else if (name.equals("version")) {
2722          this.version = castToString(value); // StringType
2723        } else if (name.equals("name")) {
2724          this.name = castToString(value); // StringType
2725        } else if (name.equals("title")) {
2726          this.title = castToString(value); // StringType
2727        } else if (name.equals("shortTitle")) {
2728          this.shortTitle = castToString(value); // StringType
2729        } else if (name.equals("subtitle")) {
2730          this.subtitle = castToString(value); // StringType
2731        } else if (name.equals("status")) {
2732          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
2733          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2734        } else if (name.equals("date")) {
2735          this.date = castToDateTime(value); // DateTimeType
2736        } else if (name.equals("publisher")) {
2737          this.publisher = castToString(value); // StringType
2738        } else if (name.equals("contact")) {
2739          this.getContact().add(castToContactDetail(value));
2740        } else if (name.equals("description")) {
2741          this.description = castToMarkdown(value); // MarkdownType
2742        } else if (name.equals("note")) {
2743          this.getNote().add(castToAnnotation(value));
2744        } else if (name.equals("useContext")) {
2745          this.getUseContext().add(castToUsageContext(value));
2746        } else if (name.equals("jurisdiction")) {
2747          this.getJurisdiction().add(castToCodeableConcept(value));
2748        } else if (name.equals("copyright")) {
2749          this.copyright = castToMarkdown(value); // MarkdownType
2750        } else if (name.equals("approvalDate")) {
2751          this.approvalDate = castToDate(value); // DateType
2752        } else if (name.equals("lastReviewDate")) {
2753          this.lastReviewDate = castToDate(value); // DateType
2754        } else if (name.equals("effectivePeriod")) {
2755          this.effectivePeriod = castToPeriod(value); // Period
2756        } else if (name.equals("topic")) {
2757          this.getTopic().add(castToCodeableConcept(value));
2758        } else if (name.equals("author")) {
2759          this.getAuthor().add(castToContactDetail(value));
2760        } else if (name.equals("editor")) {
2761          this.getEditor().add(castToContactDetail(value));
2762        } else if (name.equals("reviewer")) {
2763          this.getReviewer().add(castToContactDetail(value));
2764        } else if (name.equals("endorser")) {
2765          this.getEndorser().add(castToContactDetail(value));
2766        } else if (name.equals("relatedArtifact")) {
2767          this.getRelatedArtifact().add(castToRelatedArtifact(value));
2768        } else if (name.equals("type")) {
2769          value = new EvidenceVariableTypeEnumFactory().fromType(castToCode(value));
2770          this.type = (Enumeration) value; // Enumeration<EvidenceVariableType>
2771        } else if (name.equals("characteristic")) {
2772          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value);
2773        } else
2774          return super.setProperty(name, value);
2775        return value;
2776      }
2777
2778      @Override
2779      public Base makeProperty(int hash, String name) throws FHIRException {
2780        switch (hash) {
2781        case 116079:  return getUrlElement();
2782        case -1618432855:  return addIdentifier(); 
2783        case 351608024:  return getVersionElement();
2784        case 3373707:  return getNameElement();
2785        case 110371416:  return getTitleElement();
2786        case 1555503932:  return getShortTitleElement();
2787        case -2060497896:  return getSubtitleElement();
2788        case -892481550:  return getStatusElement();
2789        case 3076014:  return getDateElement();
2790        case 1447404028:  return getPublisherElement();
2791        case 951526432:  return addContact(); 
2792        case -1724546052:  return getDescriptionElement();
2793        case 3387378:  return addNote(); 
2794        case -669707736:  return addUseContext(); 
2795        case -507075711:  return addJurisdiction(); 
2796        case 1522889671:  return getCopyrightElement();
2797        case 223539345:  return getApprovalDateElement();
2798        case -1687512484:  return getLastReviewDateElement();
2799        case -403934648:  return getEffectivePeriod(); 
2800        case 110546223:  return addTopic(); 
2801        case -1406328437:  return addAuthor(); 
2802        case -1307827859:  return addEditor(); 
2803        case -261190139:  return addReviewer(); 
2804        case 1740277666:  return addEndorser(); 
2805        case 666807069:  return addRelatedArtifact(); 
2806        case 3575610:  return getTypeElement();
2807        case 366313883:  return addCharacteristic(); 
2808        default: return super.makeProperty(hash, name);
2809        }
2810
2811      }
2812
2813      @Override
2814      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2815        switch (hash) {
2816        case 116079: /*url*/ return new String[] {"uri"};
2817        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2818        case 351608024: /*version*/ return new String[] {"string"};
2819        case 3373707: /*name*/ return new String[] {"string"};
2820        case 110371416: /*title*/ return new String[] {"string"};
2821        case 1555503932: /*shortTitle*/ return new String[] {"string"};
2822        case -2060497896: /*subtitle*/ return new String[] {"string"};
2823        case -892481550: /*status*/ return new String[] {"code"};
2824        case 3076014: /*date*/ return new String[] {"dateTime"};
2825        case 1447404028: /*publisher*/ return new String[] {"string"};
2826        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
2827        case -1724546052: /*description*/ return new String[] {"markdown"};
2828        case 3387378: /*note*/ return new String[] {"Annotation"};
2829        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
2830        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
2831        case 1522889671: /*copyright*/ return new String[] {"markdown"};
2832        case 223539345: /*approvalDate*/ return new String[] {"date"};
2833        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
2834        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
2835        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
2836        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
2837        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
2838        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
2839        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
2840        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
2841        case 3575610: /*type*/ return new String[] {"code"};
2842        case 366313883: /*characteristic*/ return new String[] {};
2843        default: return super.getTypesForProperty(hash, name);
2844        }
2845
2846      }
2847
2848      @Override
2849      public Base addChild(String name) throws FHIRException {
2850        if (name.equals("url")) {
2851          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.url");
2852        }
2853        else if (name.equals("identifier")) {
2854          return addIdentifier();
2855        }
2856        else if (name.equals("version")) {
2857          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.version");
2858        }
2859        else if (name.equals("name")) {
2860          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.name");
2861        }
2862        else if (name.equals("title")) {
2863          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.title");
2864        }
2865        else if (name.equals("shortTitle")) {
2866          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.shortTitle");
2867        }
2868        else if (name.equals("subtitle")) {
2869          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.subtitle");
2870        }
2871        else if (name.equals("status")) {
2872          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.status");
2873        }
2874        else if (name.equals("date")) {
2875          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.date");
2876        }
2877        else if (name.equals("publisher")) {
2878          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.publisher");
2879        }
2880        else if (name.equals("contact")) {
2881          return addContact();
2882        }
2883        else if (name.equals("description")) {
2884          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.description");
2885        }
2886        else if (name.equals("note")) {
2887          return addNote();
2888        }
2889        else if (name.equals("useContext")) {
2890          return addUseContext();
2891        }
2892        else if (name.equals("jurisdiction")) {
2893          return addJurisdiction();
2894        }
2895        else if (name.equals("copyright")) {
2896          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.copyright");
2897        }
2898        else if (name.equals("approvalDate")) {
2899          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.approvalDate");
2900        }
2901        else if (name.equals("lastReviewDate")) {
2902          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.lastReviewDate");
2903        }
2904        else if (name.equals("effectivePeriod")) {
2905          this.effectivePeriod = new Period();
2906          return this.effectivePeriod;
2907        }
2908        else if (name.equals("topic")) {
2909          return addTopic();
2910        }
2911        else if (name.equals("author")) {
2912          return addAuthor();
2913        }
2914        else if (name.equals("editor")) {
2915          return addEditor();
2916        }
2917        else if (name.equals("reviewer")) {
2918          return addReviewer();
2919        }
2920        else if (name.equals("endorser")) {
2921          return addEndorser();
2922        }
2923        else if (name.equals("relatedArtifact")) {
2924          return addRelatedArtifact();
2925        }
2926        else if (name.equals("type")) {
2927          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.type");
2928        }
2929        else if (name.equals("characteristic")) {
2930          return addCharacteristic();
2931        }
2932        else
2933          return super.addChild(name);
2934      }
2935
2936  public String fhirType() {
2937    return "EvidenceVariable";
2938
2939  }
2940
2941      public EvidenceVariable copy() {
2942        EvidenceVariable dst = new EvidenceVariable();
2943        copyValues(dst);
2944        dst.url = url == null ? null : url.copy();
2945        if (identifier != null) {
2946          dst.identifier = new ArrayList<Identifier>();
2947          for (Identifier i : identifier)
2948            dst.identifier.add(i.copy());
2949        };
2950        dst.version = version == null ? null : version.copy();
2951        dst.name = name == null ? null : name.copy();
2952        dst.title = title == null ? null : title.copy();
2953        dst.shortTitle = shortTitle == null ? null : shortTitle.copy();
2954        dst.subtitle = subtitle == null ? null : subtitle.copy();
2955        dst.status = status == null ? null : status.copy();
2956        dst.date = date == null ? null : date.copy();
2957        dst.publisher = publisher == null ? null : publisher.copy();
2958        if (contact != null) {
2959          dst.contact = new ArrayList<ContactDetail>();
2960          for (ContactDetail i : contact)
2961            dst.contact.add(i.copy());
2962        };
2963        dst.description = description == null ? null : description.copy();
2964        if (note != null) {
2965          dst.note = new ArrayList<Annotation>();
2966          for (Annotation i : note)
2967            dst.note.add(i.copy());
2968        };
2969        if (useContext != null) {
2970          dst.useContext = new ArrayList<UsageContext>();
2971          for (UsageContext i : useContext)
2972            dst.useContext.add(i.copy());
2973        };
2974        if (jurisdiction != null) {
2975          dst.jurisdiction = new ArrayList<CodeableConcept>();
2976          for (CodeableConcept i : jurisdiction)
2977            dst.jurisdiction.add(i.copy());
2978        };
2979        dst.copyright = copyright == null ? null : copyright.copy();
2980        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
2981        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
2982        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
2983        if (topic != null) {
2984          dst.topic = new ArrayList<CodeableConcept>();
2985          for (CodeableConcept i : topic)
2986            dst.topic.add(i.copy());
2987        };
2988        if (author != null) {
2989          dst.author = new ArrayList<ContactDetail>();
2990          for (ContactDetail i : author)
2991            dst.author.add(i.copy());
2992        };
2993        if (editor != null) {
2994          dst.editor = new ArrayList<ContactDetail>();
2995          for (ContactDetail i : editor)
2996            dst.editor.add(i.copy());
2997        };
2998        if (reviewer != null) {
2999          dst.reviewer = new ArrayList<ContactDetail>();
3000          for (ContactDetail i : reviewer)
3001            dst.reviewer.add(i.copy());
3002        };
3003        if (endorser != null) {
3004          dst.endorser = new ArrayList<ContactDetail>();
3005          for (ContactDetail i : endorser)
3006            dst.endorser.add(i.copy());
3007        };
3008        if (relatedArtifact != null) {
3009          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
3010          for (RelatedArtifact i : relatedArtifact)
3011            dst.relatedArtifact.add(i.copy());
3012        };
3013        dst.type = type == null ? null : type.copy();
3014        if (characteristic != null) {
3015          dst.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
3016          for (EvidenceVariableCharacteristicComponent i : characteristic)
3017            dst.characteristic.add(i.copy());
3018        };
3019        return dst;
3020      }
3021
3022      protected EvidenceVariable typedCopy() {
3023        return copy();
3024      }
3025
3026      @Override
3027      public boolean equalsDeep(Base other_) {
3028        if (!super.equalsDeep(other_))
3029          return false;
3030        if (!(other_ instanceof EvidenceVariable))
3031          return false;
3032        EvidenceVariable o = (EvidenceVariable) other_;
3033        return compareDeep(identifier, o.identifier, true) && compareDeep(shortTitle, o.shortTitle, true)
3034           && compareDeep(subtitle, o.subtitle, true) && compareDeep(note, o.note, true) && compareDeep(copyright, o.copyright, true)
3035           && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
3036           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true) && compareDeep(author, o.author, true)
3037           && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
3038           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(type, o.type, true) && compareDeep(characteristic, o.characteristic, true)
3039          ;
3040      }
3041
3042      @Override
3043      public boolean equalsShallow(Base other_) {
3044        if (!super.equalsShallow(other_))
3045          return false;
3046        if (!(other_ instanceof EvidenceVariable))
3047          return false;
3048        EvidenceVariable o = (EvidenceVariable) other_;
3049        return compareValues(shortTitle, o.shortTitle, true) && compareValues(subtitle, o.subtitle, true) && compareValues(copyright, o.copyright, true)
3050           && compareValues(approvalDate, o.approvalDate, true) && compareValues(lastReviewDate, o.lastReviewDate, true)
3051           && compareValues(type, o.type, true);
3052      }
3053
3054      public boolean isEmpty() {
3055        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, shortTitle, subtitle
3056          , note, copyright, approvalDate, lastReviewDate, effectivePeriod, topic, author
3057          , editor, reviewer, endorser, relatedArtifact, type, characteristic);
3058      }
3059
3060  @Override
3061  public ResourceType getResourceType() {
3062    return ResourceType.EvidenceVariable;
3063   }
3064
3065 /**
3066   * Search parameter: <b>date</b>
3067   * <p>
3068   * Description: <b>The evidence variable publication date</b><br>
3069   * Type: <b>date</b><br>
3070   * Path: <b>EvidenceVariable.date</b><br>
3071   * </p>
3072   */
3073  @SearchParamDefinition(name="date", path="EvidenceVariable.date", description="The evidence variable publication date", type="date" )
3074  public static final String SP_DATE = "date";
3075 /**
3076   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3077   * <p>
3078   * Description: <b>The evidence variable publication date</b><br>
3079   * Type: <b>date</b><br>
3080   * Path: <b>EvidenceVariable.date</b><br>
3081   * </p>
3082   */
3083  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3084
3085 /**
3086   * Search parameter: <b>identifier</b>
3087   * <p>
3088   * Description: <b>External identifier for the evidence variable</b><br>
3089   * Type: <b>token</b><br>
3090   * Path: <b>EvidenceVariable.identifier</b><br>
3091   * </p>
3092   */
3093  @SearchParamDefinition(name="identifier", path="EvidenceVariable.identifier", description="External identifier for the evidence variable", type="token" )
3094  public static final String SP_IDENTIFIER = "identifier";
3095 /**
3096   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3097   * <p>
3098   * Description: <b>External identifier for the evidence variable</b><br>
3099   * Type: <b>token</b><br>
3100   * Path: <b>EvidenceVariable.identifier</b><br>
3101   * </p>
3102   */
3103  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3104
3105 /**
3106   * Search parameter: <b>successor</b>
3107   * <p>
3108   * Description: <b>What resource is being referenced</b><br>
3109   * Type: <b>reference</b><br>
3110   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3111   * </p>
3112   */
3113  @SearchParamDefinition(name="successor", path="EvidenceVariable.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference" )
3114  public static final String SP_SUCCESSOR = "successor";
3115 /**
3116   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
3117   * <p>
3118   * Description: <b>What resource is being referenced</b><br>
3119   * Type: <b>reference</b><br>
3120   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3121   * </p>
3122   */
3123  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
3124
3125/**
3126   * Constant for fluent queries to be used to add include statements. Specifies
3127   * the path value of "<b>EvidenceVariable:successor</b>".
3128   */
3129  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("EvidenceVariable:successor").toLocked();
3130
3131 /**
3132   * Search parameter: <b>context-type-value</b>
3133   * <p>
3134   * Description: <b>A use context type and value assigned to the evidence variable</b><br>
3135   * Type: <b>composite</b><br>
3136   * Path: <b></b><br>
3137   * </p>
3138   */
3139  @SearchParamDefinition(name="context-type-value", path="EvidenceVariable.useContext", description="A use context type and value assigned to the evidence variable", type="composite", compositeOf={"context-type", "context"} )
3140  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3141 /**
3142   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3143   * <p>
3144   * Description: <b>A use context type and value assigned to the evidence variable</b><br>
3145   * Type: <b>composite</b><br>
3146   * Path: <b></b><br>
3147   * </p>
3148   */
3149  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);
3150
3151 /**
3152   * Search parameter: <b>jurisdiction</b>
3153   * <p>
3154   * Description: <b>Intended jurisdiction for the evidence variable</b><br>
3155   * Type: <b>token</b><br>
3156   * Path: <b>EvidenceVariable.jurisdiction</b><br>
3157   * </p>
3158   */
3159  @SearchParamDefinition(name="jurisdiction", path="EvidenceVariable.jurisdiction", description="Intended jurisdiction for the evidence variable", type="token" )
3160  public static final String SP_JURISDICTION = "jurisdiction";
3161 /**
3162   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
3163   * <p>
3164   * Description: <b>Intended jurisdiction for the evidence variable</b><br>
3165   * Type: <b>token</b><br>
3166   * Path: <b>EvidenceVariable.jurisdiction</b><br>
3167   * </p>
3168   */
3169  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
3170
3171 /**
3172   * Search parameter: <b>description</b>
3173   * <p>
3174   * Description: <b>The description of the evidence variable</b><br>
3175   * Type: <b>string</b><br>
3176   * Path: <b>EvidenceVariable.description</b><br>
3177   * </p>
3178   */
3179  @SearchParamDefinition(name="description", path="EvidenceVariable.description", description="The description of the evidence variable", type="string" )
3180  public static final String SP_DESCRIPTION = "description";
3181 /**
3182   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3183   * <p>
3184   * Description: <b>The description of the evidence variable</b><br>
3185   * Type: <b>string</b><br>
3186   * Path: <b>EvidenceVariable.description</b><br>
3187   * </p>
3188   */
3189  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3190
3191 /**
3192   * Search parameter: <b>derived-from</b>
3193   * <p>
3194   * Description: <b>What resource is being referenced</b><br>
3195   * Type: <b>reference</b><br>
3196   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3197   * </p>
3198   */
3199  @SearchParamDefinition(name="derived-from", path="EvidenceVariable.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference" )
3200  public static final String SP_DERIVED_FROM = "derived-from";
3201 /**
3202   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
3203   * <p>
3204   * Description: <b>What resource is being referenced</b><br>
3205   * Type: <b>reference</b><br>
3206   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3207   * </p>
3208   */
3209  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
3210
3211/**
3212   * Constant for fluent queries to be used to add include statements. Specifies
3213   * the path value of "<b>EvidenceVariable:derived-from</b>".
3214   */
3215  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("EvidenceVariable:derived-from").toLocked();
3216
3217 /**
3218   * Search parameter: <b>context-type</b>
3219   * <p>
3220   * Description: <b>A type of use context assigned to the evidence variable</b><br>
3221   * Type: <b>token</b><br>
3222   * Path: <b>EvidenceVariable.useContext.code</b><br>
3223   * </p>
3224   */
3225  @SearchParamDefinition(name="context-type", path="EvidenceVariable.useContext.code", description="A type of use context assigned to the evidence variable", type="token" )
3226  public static final String SP_CONTEXT_TYPE = "context-type";
3227 /**
3228   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3229   * <p>
3230   * Description: <b>A type of use context assigned to the evidence variable</b><br>
3231   * Type: <b>token</b><br>
3232   * Path: <b>EvidenceVariable.useContext.code</b><br>
3233   * </p>
3234   */
3235  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3236
3237 /**
3238   * Search parameter: <b>predecessor</b>
3239   * <p>
3240   * Description: <b>What resource is being referenced</b><br>
3241   * Type: <b>reference</b><br>
3242   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3243   * </p>
3244   */
3245  @SearchParamDefinition(name="predecessor", path="EvidenceVariable.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference" )
3246  public static final String SP_PREDECESSOR = "predecessor";
3247 /**
3248   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
3249   * <p>
3250   * Description: <b>What resource is being referenced</b><br>
3251   * Type: <b>reference</b><br>
3252   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3253   * </p>
3254   */
3255  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
3256
3257/**
3258   * Constant for fluent queries to be used to add include statements. Specifies
3259   * the path value of "<b>EvidenceVariable:predecessor</b>".
3260   */
3261  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("EvidenceVariable:predecessor").toLocked();
3262
3263 /**
3264   * Search parameter: <b>title</b>
3265   * <p>
3266   * Description: <b>The human-friendly name of the evidence variable</b><br>
3267   * Type: <b>string</b><br>
3268   * Path: <b>EvidenceVariable.title</b><br>
3269   * </p>
3270   */
3271  @SearchParamDefinition(name="title", path="EvidenceVariable.title", description="The human-friendly name of the evidence variable", type="string" )
3272  public static final String SP_TITLE = "title";
3273 /**
3274   * <b>Fluent Client</b> search parameter constant for <b>title</b>
3275   * <p>
3276   * Description: <b>The human-friendly name of the evidence variable</b><br>
3277   * Type: <b>string</b><br>
3278   * Path: <b>EvidenceVariable.title</b><br>
3279   * </p>
3280   */
3281  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
3282
3283 /**
3284   * Search parameter: <b>composed-of</b>
3285   * <p>
3286   * Description: <b>What resource is being referenced</b><br>
3287   * Type: <b>reference</b><br>
3288   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3289   * </p>
3290   */
3291  @SearchParamDefinition(name="composed-of", path="EvidenceVariable.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference" )
3292  public static final String SP_COMPOSED_OF = "composed-of";
3293 /**
3294   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
3295   * <p>
3296   * Description: <b>What resource is being referenced</b><br>
3297   * Type: <b>reference</b><br>
3298   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3299   * </p>
3300   */
3301  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
3302
3303/**
3304   * Constant for fluent queries to be used to add include statements. Specifies
3305   * the path value of "<b>EvidenceVariable:composed-of</b>".
3306   */
3307  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("EvidenceVariable:composed-of").toLocked();
3308
3309 /**
3310   * Search parameter: <b>version</b>
3311   * <p>
3312   * Description: <b>The business version of the evidence variable</b><br>
3313   * Type: <b>token</b><br>
3314   * Path: <b>EvidenceVariable.version</b><br>
3315   * </p>
3316   */
3317  @SearchParamDefinition(name="version", path="EvidenceVariable.version", description="The business version of the evidence variable", type="token" )
3318  public static final String SP_VERSION = "version";
3319 /**
3320   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3321   * <p>
3322   * Description: <b>The business version of the evidence variable</b><br>
3323   * Type: <b>token</b><br>
3324   * Path: <b>EvidenceVariable.version</b><br>
3325   * </p>
3326   */
3327  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3328
3329 /**
3330   * Search parameter: <b>url</b>
3331   * <p>
3332   * Description: <b>The uri that identifies the evidence variable</b><br>
3333   * Type: <b>uri</b><br>
3334   * Path: <b>EvidenceVariable.url</b><br>
3335   * </p>
3336   */
3337  @SearchParamDefinition(name="url", path="EvidenceVariable.url", description="The uri that identifies the evidence variable", type="uri" )
3338  public static final String SP_URL = "url";
3339 /**
3340   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3341   * <p>
3342   * Description: <b>The uri that identifies the evidence variable</b><br>
3343   * Type: <b>uri</b><br>
3344   * Path: <b>EvidenceVariable.url</b><br>
3345   * </p>
3346   */
3347  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3348
3349 /**
3350   * Search parameter: <b>context-quantity</b>
3351   * <p>
3352   * Description: <b>A quantity- or range-valued use context assigned to the evidence variable</b><br>
3353   * Type: <b>quantity</b><br>
3354   * Path: <b>EvidenceVariable.useContext.valueQuantity, EvidenceVariable.useContext.valueRange</b><br>
3355   * </p>
3356   */
3357  @SearchParamDefinition(name="context-quantity", path="(EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the evidence variable", type="quantity" )
3358  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
3359 /**
3360   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
3361   * <p>
3362   * Description: <b>A quantity- or range-valued use context assigned to the evidence variable</b><br>
3363   * Type: <b>quantity</b><br>
3364   * Path: <b>EvidenceVariable.useContext.valueQuantity, EvidenceVariable.useContext.valueRange</b><br>
3365   * </p>
3366   */
3367  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
3368
3369 /**
3370   * Search parameter: <b>effective</b>
3371   * <p>
3372   * Description: <b>The time during which the evidence variable is intended to be in use</b><br>
3373   * Type: <b>date</b><br>
3374   * Path: <b>EvidenceVariable.effectivePeriod</b><br>
3375   * </p>
3376   */
3377  @SearchParamDefinition(name="effective", path="EvidenceVariable.effectivePeriod", description="The time during which the evidence variable is intended to be in use", type="date" )
3378  public static final String SP_EFFECTIVE = "effective";
3379 /**
3380   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
3381   * <p>
3382   * Description: <b>The time during which the evidence variable is intended to be in use</b><br>
3383   * Type: <b>date</b><br>
3384   * Path: <b>EvidenceVariable.effectivePeriod</b><br>
3385   * </p>
3386   */
3387  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
3388
3389 /**
3390   * Search parameter: <b>depends-on</b>
3391   * <p>
3392   * Description: <b>What resource is being referenced</b><br>
3393   * Type: <b>reference</b><br>
3394   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3395   * </p>
3396   */
3397  @SearchParamDefinition(name="depends-on", path="EvidenceVariable.relatedArtifact.where(type='depends-on').resource", description="What resource is being referenced", type="reference" )
3398  public static final String SP_DEPENDS_ON = "depends-on";
3399 /**
3400   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
3401   * <p>
3402   * Description: <b>What resource is being referenced</b><br>
3403   * Type: <b>reference</b><br>
3404   * Path: <b>EvidenceVariable.relatedArtifact.resource</b><br>
3405   * </p>
3406   */
3407  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
3408
3409/**
3410   * Constant for fluent queries to be used to add include statements. Specifies
3411   * the path value of "<b>EvidenceVariable:depends-on</b>".
3412   */
3413  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("EvidenceVariable:depends-on").toLocked();
3414
3415 /**
3416   * Search parameter: <b>name</b>
3417   * <p>
3418   * Description: <b>Computationally friendly name of the evidence variable</b><br>
3419   * Type: <b>string</b><br>
3420   * Path: <b>EvidenceVariable.name</b><br>
3421   * </p>
3422   */
3423  @SearchParamDefinition(name="name", path="EvidenceVariable.name", description="Computationally friendly name of the evidence variable", type="string" )
3424  public static final String SP_NAME = "name";
3425 /**
3426   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3427   * <p>
3428   * Description: <b>Computationally friendly name of the evidence variable</b><br>
3429   * Type: <b>string</b><br>
3430   * Path: <b>EvidenceVariable.name</b><br>
3431   * </p>
3432   */
3433  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3434
3435 /**
3436   * Search parameter: <b>context</b>
3437   * <p>
3438   * Description: <b>A use context assigned to the evidence variable</b><br>
3439   * Type: <b>token</b><br>
3440   * Path: <b>EvidenceVariable.useContext.valueCodeableConcept</b><br>
3441   * </p>
3442   */
3443  @SearchParamDefinition(name="context", path="(EvidenceVariable.useContext.value as CodeableConcept)", description="A use context assigned to the evidence variable", type="token" )
3444  public static final String SP_CONTEXT = "context";
3445 /**
3446   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3447   * <p>
3448   * Description: <b>A use context assigned to the evidence variable</b><br>
3449   * Type: <b>token</b><br>
3450   * Path: <b>EvidenceVariable.useContext.valueCodeableConcept</b><br>
3451   * </p>
3452   */
3453  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3454
3455 /**
3456   * Search parameter: <b>publisher</b>
3457   * <p>
3458   * Description: <b>Name of the publisher of the evidence variable</b><br>
3459   * Type: <b>string</b><br>
3460   * Path: <b>EvidenceVariable.publisher</b><br>
3461   * </p>
3462   */
3463  @SearchParamDefinition(name="publisher", path="EvidenceVariable.publisher", description="Name of the publisher of the evidence variable", type="string" )
3464  public static final String SP_PUBLISHER = "publisher";
3465 /**
3466   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3467   * <p>
3468   * Description: <b>Name of the publisher of the evidence variable</b><br>
3469   * Type: <b>string</b><br>
3470   * Path: <b>EvidenceVariable.publisher</b><br>
3471   * </p>
3472   */
3473  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3474
3475 /**
3476   * Search parameter: <b>topic</b>
3477   * <p>
3478   * Description: <b>Topics associated with the EvidenceVariable</b><br>
3479   * Type: <b>token</b><br>
3480   * Path: <b>EvidenceVariable.topic</b><br>
3481   * </p>
3482   */
3483  @SearchParamDefinition(name="topic", path="EvidenceVariable.topic", description="Topics associated with the EvidenceVariable", type="token" )
3484  public static final String SP_TOPIC = "topic";
3485 /**
3486   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
3487   * <p>
3488   * Description: <b>Topics associated with the EvidenceVariable</b><br>
3489   * Type: <b>token</b><br>
3490   * Path: <b>EvidenceVariable.topic</b><br>
3491   * </p>
3492   */
3493  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
3494
3495 /**
3496   * Search parameter: <b>context-type-quantity</b>
3497   * <p>
3498   * Description: <b>A use context type and quantity- or range-based value assigned to the evidence variable</b><br>
3499   * Type: <b>composite</b><br>
3500   * Path: <b></b><br>
3501   * </p>
3502   */
3503  @SearchParamDefinition(name="context-type-quantity", path="EvidenceVariable.useContext", description="A use context type and quantity- or range-based value assigned to the evidence variable", type="composite", compositeOf={"context-type", "context-quantity"} )
3504  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3505 /**
3506   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3507   * <p>
3508   * Description: <b>A use context type and quantity- or range-based value assigned to the evidence variable</b><br>
3509   * Type: <b>composite</b><br>
3510   * Path: <b></b><br>
3511   * </p>
3512   */
3513  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);
3514
3515 /**
3516   * Search parameter: <b>status</b>
3517   * <p>
3518   * Description: <b>The current status of the evidence variable</b><br>
3519   * Type: <b>token</b><br>
3520   * Path: <b>EvidenceVariable.status</b><br>
3521   * </p>
3522   */
3523  @SearchParamDefinition(name="status", path="EvidenceVariable.status", description="The current status of the evidence variable", type="token" )
3524  public static final String SP_STATUS = "status";
3525 /**
3526   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3527   * <p>
3528   * Description: <b>The current status of the evidence variable</b><br>
3529   * Type: <b>token</b><br>
3530   * Path: <b>EvidenceVariable.status</b><br>
3531   * </p>
3532   */
3533  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3534
3535
3536}
3537