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