001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The EvidenceVariable resource describes an element that knowledge (Evidence) is about.
052 */
053@ResourceDef(name="EvidenceVariable", profile="http://hl7.org/fhir/StructureDefinition/EvidenceVariable")
054public class EvidenceVariable extends MetadataResource {
055
056    public enum CharacteristicCombination {
057        /**
058         * Combine characteristics with AND.
059         */
060        ALLOF, 
061        /**
062         * Combine characteristics with OR.
063         */
064        ANYOF, 
065        /**
066         * Meet at least the threshold number of characteristics for definition.
067         */
068        ATLEAST, 
069        /**
070         * Meet at most the threshold number of characteristics for definition.
071         */
072        ATMOST, 
073        /**
074         *  Combine characteristics statistically.
075         */
076        NETEFFECT, 
077        /**
078         * added to help the parsers with the generic types
079         */
080        NULL;
081        public static CharacteristicCombination fromCode(String codeString) throws FHIRException {
082            if (codeString == null || "".equals(codeString))
083                return null;
084        if ("all-of".equals(codeString))
085          return ALLOF;
086        if ("any-of".equals(codeString))
087          return ANYOF;
088        if ("at-least".equals(codeString))
089          return ATLEAST;
090        if ("at-most".equals(codeString))
091          return ATMOST;
092        if ("net-effect".equals(codeString))
093          return NETEFFECT;
094        if (Configuration.isAcceptInvalidEnums())
095          return null;
096        else
097          throw new FHIRException("Unknown CharacteristicCombination code '"+codeString+"'");
098        }
099        public String toCode() {
100          switch (this) {
101            case ALLOF: return "all-of";
102            case ANYOF: return "any-of";
103            case ATLEAST: return "at-least";
104            case ATMOST: return "at-most";
105            case NETEFFECT: return "net-effect";
106            default: return "?";
107          }
108        }
109        public String getSystem() {
110          switch (this) {
111            case ALLOF: return "http://hl7.org/fhir/characteristic-combination";
112            case ANYOF: return "http://hl7.org/fhir/characteristic-combination";
113            case ATLEAST: return "http://hl7.org/fhir/characteristic-combination";
114            case ATMOST: return "http://hl7.org/fhir/characteristic-combination";
115            case NETEFFECT: return "http://hl7.org/fhir/characteristic-combination";
116            default: return "?";
117          }
118        }
119        public String getDefinition() {
120          switch (this) {
121            case ALLOF: return "Combine characteristics with AND.";
122            case ANYOF: return "Combine characteristics with OR.";
123            case ATLEAST: return "Meet at least the threshold number of characteristics for definition.";
124            case ATMOST: return "Meet at most the threshold number of characteristics for definition.";
125            case NETEFFECT: return " Combine characteristics statistically.";
126            default: return "?";
127          }
128        }
129        public String getDisplay() {
130          switch (this) {
131            case ALLOF: return "All of";
132            case ANYOF: return "Any of";
133            case ATLEAST: return "At least";
134            case ATMOST: return "At most";
135            case NETEFFECT: return "Net effect";
136            default: return "?";
137          }
138        }
139    }
140
141  public static class CharacteristicCombinationEnumFactory implements EnumFactory<CharacteristicCombination> {
142    public CharacteristicCombination fromCode(String codeString) throws IllegalArgumentException {
143      if (codeString == null || "".equals(codeString))
144            if (codeString == null || "".equals(codeString))
145                return null;
146        if ("all-of".equals(codeString))
147          return CharacteristicCombination.ALLOF;
148        if ("any-of".equals(codeString))
149          return CharacteristicCombination.ANYOF;
150        if ("at-least".equals(codeString))
151          return CharacteristicCombination.ATLEAST;
152        if ("at-most".equals(codeString))
153          return CharacteristicCombination.ATMOST;
154        if ("net-effect".equals(codeString))
155          return CharacteristicCombination.NETEFFECT;
156        throw new IllegalArgumentException("Unknown CharacteristicCombination code '"+codeString+"'");
157        }
158        public Enumeration<CharacteristicCombination> fromType(Base code) throws FHIRException {
159          if (code == null)
160            return null;
161          if (code.isEmpty())
162            return new Enumeration<CharacteristicCombination>(this);
163          String codeString = ((PrimitiveType) code).asStringValue();
164          if (codeString == null || "".equals(codeString))
165            return null;
166        if ("all-of".equals(codeString))
167          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ALLOF);
168        if ("any-of".equals(codeString))
169          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ANYOF);
170        if ("at-least".equals(codeString))
171          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ATLEAST);
172        if ("at-most".equals(codeString))
173          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ATMOST);
174        if ("net-effect".equals(codeString))
175          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.NETEFFECT);
176        throw new FHIRException("Unknown CharacteristicCombination code '"+codeString+"'");
177        }
178    public String toCode(CharacteristicCombination code) {
179      if (code == CharacteristicCombination.ALLOF)
180        return "all-of";
181      if (code == CharacteristicCombination.ANYOF)
182        return "any-of";
183      if (code == CharacteristicCombination.ATLEAST)
184        return "at-least";
185      if (code == CharacteristicCombination.ATMOST)
186        return "at-most";
187      if (code == CharacteristicCombination.NETEFFECT)
188        return "net-effect";
189      return "?";
190      }
191    public String toSystem(CharacteristicCombination code) {
192      return code.getSystem();
193      }
194    }
195
196    public enum GroupMeasure {
197        /**
198         * Aggregated using Mean of participant values.
199         */
200        MEAN, 
201        /**
202         * Aggregated using Median of participant values.
203         */
204        MEDIAN, 
205        /**
206         * Aggregated using Mean of study mean values.
207         */
208        MEANOFMEAN, 
209        /**
210         * Aggregated using Mean of study median values.
211         */
212        MEANOFMEDIAN, 
213        /**
214         * Aggregated using Median of study mean values.
215         */
216        MEDIANOFMEAN, 
217        /**
218         * Aggregated using Median of study median values.
219         */
220        MEDIANOFMEDIAN, 
221        /**
222         * added to help the parsers with the generic types
223         */
224        NULL;
225        public static GroupMeasure fromCode(String codeString) throws FHIRException {
226            if (codeString == null || "".equals(codeString))
227                return null;
228        if ("mean".equals(codeString))
229          return MEAN;
230        if ("median".equals(codeString))
231          return MEDIAN;
232        if ("mean-of-mean".equals(codeString))
233          return MEANOFMEAN;
234        if ("mean-of-median".equals(codeString))
235          return MEANOFMEDIAN;
236        if ("median-of-mean".equals(codeString))
237          return MEDIANOFMEAN;
238        if ("median-of-median".equals(codeString))
239          return MEDIANOFMEDIAN;
240        if (Configuration.isAcceptInvalidEnums())
241          return null;
242        else
243          throw new FHIRException("Unknown GroupMeasure code '"+codeString+"'");
244        }
245        public String toCode() {
246          switch (this) {
247            case MEAN: return "mean";
248            case MEDIAN: return "median";
249            case MEANOFMEAN: return "mean-of-mean";
250            case MEANOFMEDIAN: return "mean-of-median";
251            case MEDIANOFMEAN: return "median-of-mean";
252            case MEDIANOFMEDIAN: return "median-of-median";
253            default: return "?";
254          }
255        }
256        public String getSystem() {
257          switch (this) {
258            case MEAN: return "http://hl7.org/fhir/group-measure";
259            case MEDIAN: return "http://hl7.org/fhir/group-measure";
260            case MEANOFMEAN: return "http://hl7.org/fhir/group-measure";
261            case MEANOFMEDIAN: return "http://hl7.org/fhir/group-measure";
262            case MEDIANOFMEAN: return "http://hl7.org/fhir/group-measure";
263            case MEDIANOFMEDIAN: return "http://hl7.org/fhir/group-measure";
264            default: return "?";
265          }
266        }
267        public String getDefinition() {
268          switch (this) {
269            case MEAN: return "Aggregated using Mean of participant values.";
270            case MEDIAN: return "Aggregated using Median of participant values.";
271            case MEANOFMEAN: return "Aggregated using Mean of study mean values.";
272            case MEANOFMEDIAN: return "Aggregated using Mean of study median values.";
273            case MEDIANOFMEAN: return "Aggregated using Median of study mean values.";
274            case MEDIANOFMEDIAN: return "Aggregated using Median of study median values.";
275            default: return "?";
276          }
277        }
278        public String getDisplay() {
279          switch (this) {
280            case MEAN: return "Mean";
281            case MEDIAN: return "Median";
282            case MEANOFMEAN: return "Mean of Study Means";
283            case MEANOFMEDIAN: return "Mean of Study Medins";
284            case MEDIANOFMEAN: return "Median of Study Means";
285            case MEDIANOFMEDIAN: return "Median of Study Medians";
286            default: return "?";
287          }
288        }
289    }
290
291  public static class GroupMeasureEnumFactory implements EnumFactory<GroupMeasure> {
292    public GroupMeasure fromCode(String codeString) throws IllegalArgumentException {
293      if (codeString == null || "".equals(codeString))
294            if (codeString == null || "".equals(codeString))
295                return null;
296        if ("mean".equals(codeString))
297          return GroupMeasure.MEAN;
298        if ("median".equals(codeString))
299          return GroupMeasure.MEDIAN;
300        if ("mean-of-mean".equals(codeString))
301          return GroupMeasure.MEANOFMEAN;
302        if ("mean-of-median".equals(codeString))
303          return GroupMeasure.MEANOFMEDIAN;
304        if ("median-of-mean".equals(codeString))
305          return GroupMeasure.MEDIANOFMEAN;
306        if ("median-of-median".equals(codeString))
307          return GroupMeasure.MEDIANOFMEDIAN;
308        throw new IllegalArgumentException("Unknown GroupMeasure code '"+codeString+"'");
309        }
310        public Enumeration<GroupMeasure> fromType(Base code) throws FHIRException {
311          if (code == null)
312            return null;
313          if (code.isEmpty())
314            return new Enumeration<GroupMeasure>(this);
315          String codeString = ((PrimitiveType) code).asStringValue();
316          if (codeString == null || "".equals(codeString))
317            return null;
318        if ("mean".equals(codeString))
319          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEAN);
320        if ("median".equals(codeString))
321          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIAN);
322        if ("mean-of-mean".equals(codeString))
323          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEANOFMEAN);
324        if ("mean-of-median".equals(codeString))
325          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEANOFMEDIAN);
326        if ("median-of-mean".equals(codeString))
327          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIANOFMEAN);
328        if ("median-of-median".equals(codeString))
329          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIANOFMEDIAN);
330        throw new FHIRException("Unknown GroupMeasure code '"+codeString+"'");
331        }
332    public String toCode(GroupMeasure code) {
333      if (code == GroupMeasure.MEAN)
334        return "mean";
335      if (code == GroupMeasure.MEDIAN)
336        return "median";
337      if (code == GroupMeasure.MEANOFMEAN)
338        return "mean-of-mean";
339      if (code == GroupMeasure.MEANOFMEDIAN)
340        return "mean-of-median";
341      if (code == GroupMeasure.MEDIANOFMEAN)
342        return "median-of-mean";
343      if (code == GroupMeasure.MEDIANOFMEDIAN)
344        return "median-of-median";
345      return "?";
346      }
347    public String toSystem(GroupMeasure code) {
348      return code.getSystem();
349      }
350    }
351
352    @Block()
353    public static class EvidenceVariableCharacteristicCombinationComponent extends BackboneElement implements IBaseBackboneElement {
354        /**
355         * Used to specify if two or more characteristics are combined with OR or AND.
356         */
357        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
358        @Description(shortDefinition="all-of | any-of | at-least | at-most | net-effect", formalDefinition="Used to specify if two or more characteristics are combined with OR or AND." )
359        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/characteristic-combination")
360        protected Enumeration<CharacteristicCombination> code;
361
362        /**
363         * Provides the value of "n" when "at-least" or "at-most" codes are used.
364         */
365        @Child(name = "threshold", type = {PositiveIntType.class}, order=2, min=0, max=1, modifier=false, summary=false)
366        @Description(shortDefinition="Provides the value of \"n\" when \"at-least\" or \"at-most\" codes are used", formalDefinition="Provides the value of \"n\" when \"at-least\" or \"at-most\" codes are used." )
367        protected PositiveIntType threshold;
368
369        private static final long serialVersionUID = 1699440811L;
370
371    /**
372     * Constructor
373     */
374      public EvidenceVariableCharacteristicCombinationComponent() {
375        super();
376      }
377
378    /**
379     * Constructor
380     */
381      public EvidenceVariableCharacteristicCombinationComponent(CharacteristicCombination code) {
382        super();
383        this.setCode(code);
384      }
385
386        /**
387         * @return {@link #code} (Used to specify if two or more characteristics are combined with OR or AND.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
388         */
389        public Enumeration<CharacteristicCombination> getCodeElement() { 
390          if (this.code == null)
391            if (Configuration.errorOnAutoCreate())
392              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicCombinationComponent.code");
393            else if (Configuration.doAutoCreate())
394              this.code = new Enumeration<CharacteristicCombination>(new CharacteristicCombinationEnumFactory()); // bb
395          return this.code;
396        }
397
398        public boolean hasCodeElement() { 
399          return this.code != null && !this.code.isEmpty();
400        }
401
402        public boolean hasCode() { 
403          return this.code != null && !this.code.isEmpty();
404        }
405
406        /**
407         * @param value {@link #code} (Used to specify if two or more characteristics are combined with OR or AND.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
408         */
409        public EvidenceVariableCharacteristicCombinationComponent setCodeElement(Enumeration<CharacteristicCombination> value) { 
410          this.code = value;
411          return this;
412        }
413
414        /**
415         * @return Used to specify if two or more characteristics are combined with OR or AND.
416         */
417        public CharacteristicCombination getCode() { 
418          return this.code == null ? null : this.code.getValue();
419        }
420
421        /**
422         * @param value Used to specify if two or more characteristics are combined with OR or AND.
423         */
424        public EvidenceVariableCharacteristicCombinationComponent setCode(CharacteristicCombination value) { 
425            if (this.code == null)
426              this.code = new Enumeration<CharacteristicCombination>(new CharacteristicCombinationEnumFactory());
427            this.code.setValue(value);
428          return this;
429        }
430
431        /**
432         * @return {@link #threshold} (Provides the value of "n" when "at-least" or "at-most" codes are used.). This is the underlying object with id, value and extensions. The accessor "getThreshold" gives direct access to the value
433         */
434        public PositiveIntType getThresholdElement() { 
435          if (this.threshold == null)
436            if (Configuration.errorOnAutoCreate())
437              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicCombinationComponent.threshold");
438            else if (Configuration.doAutoCreate())
439              this.threshold = new PositiveIntType(); // bb
440          return this.threshold;
441        }
442
443        public boolean hasThresholdElement() { 
444          return this.threshold != null && !this.threshold.isEmpty();
445        }
446
447        public boolean hasThreshold() { 
448          return this.threshold != null && !this.threshold.isEmpty();
449        }
450
451        /**
452         * @param value {@link #threshold} (Provides the value of "n" when "at-least" or "at-most" codes are used.). This is the underlying object with id, value and extensions. The accessor "getThreshold" gives direct access to the value
453         */
454        public EvidenceVariableCharacteristicCombinationComponent setThresholdElement(PositiveIntType value) { 
455          this.threshold = value;
456          return this;
457        }
458
459        /**
460         * @return Provides the value of "n" when "at-least" or "at-most" codes are used.
461         */
462        public int getThreshold() { 
463          return this.threshold == null || this.threshold.isEmpty() ? 0 : this.threshold.getValue();
464        }
465
466        /**
467         * @param value Provides the value of "n" when "at-least" or "at-most" codes are used.
468         */
469        public EvidenceVariableCharacteristicCombinationComponent setThreshold(int value) { 
470            if (this.threshold == null)
471              this.threshold = new PositiveIntType();
472            this.threshold.setValue(value);
473          return this;
474        }
475
476        protected void listChildren(List<Property> children) {
477          super.listChildren(children);
478          children.add(new Property("code", "code", "Used to specify if two or more characteristics are combined with OR or AND.", 0, 1, code));
479          children.add(new Property("threshold", "positiveInt", "Provides the value of \"n\" when \"at-least\" or \"at-most\" codes are used.", 0, 1, threshold));
480        }
481
482        @Override
483        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
484          switch (_hash) {
485          case 3059181: /*code*/  return new Property("code", "code", "Used to specify if two or more characteristics are combined with OR or AND.", 0, 1, code);
486          case -1545477013: /*threshold*/  return new Property("threshold", "positiveInt", "Provides the value of \"n\" when \"at-least\" or \"at-most\" codes are used.", 0, 1, threshold);
487          default: return super.getNamedProperty(_hash, _name, _checkValid);
488          }
489
490        }
491
492      @Override
493      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
494        switch (hash) {
495        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<CharacteristicCombination>
496        case -1545477013: /*threshold*/ return this.threshold == null ? new Base[0] : new Base[] {this.threshold}; // PositiveIntType
497        default: return super.getProperty(hash, name, checkValid);
498        }
499
500      }
501
502      @Override
503      public Base setProperty(int hash, String name, Base value) throws FHIRException {
504        switch (hash) {
505        case 3059181: // code
506          value = new CharacteristicCombinationEnumFactory().fromType(TypeConvertor.castToCode(value));
507          this.code = (Enumeration) value; // Enumeration<CharacteristicCombination>
508          return value;
509        case -1545477013: // threshold
510          this.threshold = TypeConvertor.castToPositiveInt(value); // PositiveIntType
511          return value;
512        default: return super.setProperty(hash, name, value);
513        }
514
515      }
516
517      @Override
518      public Base setProperty(String name, Base value) throws FHIRException {
519        if (name.equals("code")) {
520          value = new CharacteristicCombinationEnumFactory().fromType(TypeConvertor.castToCode(value));
521          this.code = (Enumeration) value; // Enumeration<CharacteristicCombination>
522        } else if (name.equals("threshold")) {
523          this.threshold = TypeConvertor.castToPositiveInt(value); // PositiveIntType
524        } else
525          return super.setProperty(name, value);
526        return value;
527      }
528
529      @Override
530      public Base makeProperty(int hash, String name) throws FHIRException {
531        switch (hash) {
532        case 3059181:  return getCodeElement();
533        case -1545477013:  return getThresholdElement();
534        default: return super.makeProperty(hash, name);
535        }
536
537      }
538
539      @Override
540      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
541        switch (hash) {
542        case 3059181: /*code*/ return new String[] {"code"};
543        case -1545477013: /*threshold*/ return new String[] {"positiveInt"};
544        default: return super.getTypesForProperty(hash, name);
545        }
546
547      }
548
549      @Override
550      public Base addChild(String name) throws FHIRException {
551        if (name.equals("code")) {
552          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristicCombination.code");
553        }
554        else if (name.equals("threshold")) {
555          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristicCombination.threshold");
556        }
557        else
558          return super.addChild(name);
559      }
560
561      public EvidenceVariableCharacteristicCombinationComponent copy() {
562        EvidenceVariableCharacteristicCombinationComponent dst = new EvidenceVariableCharacteristicCombinationComponent();
563        copyValues(dst);
564        return dst;
565      }
566
567      public void copyValues(EvidenceVariableCharacteristicCombinationComponent dst) {
568        super.copyValues(dst);
569        dst.code = code == null ? null : code.copy();
570        dst.threshold = threshold == null ? null : threshold.copy();
571      }
572
573      @Override
574      public boolean equalsDeep(Base other_) {
575        if (!super.equalsDeep(other_))
576          return false;
577        if (!(other_ instanceof EvidenceVariableCharacteristicCombinationComponent))
578          return false;
579        EvidenceVariableCharacteristicCombinationComponent o = (EvidenceVariableCharacteristicCombinationComponent) other_;
580        return compareDeep(code, o.code, true) && compareDeep(threshold, o.threshold, true);
581      }
582
583      @Override
584      public boolean equalsShallow(Base other_) {
585        if (!super.equalsShallow(other_))
586          return false;
587        if (!(other_ instanceof EvidenceVariableCharacteristicCombinationComponent))
588          return false;
589        EvidenceVariableCharacteristicCombinationComponent o = (EvidenceVariableCharacteristicCombinationComponent) other_;
590        return compareValues(code, o.code, true) && compareValues(threshold, o.threshold, true);
591      }
592
593      public boolean isEmpty() {
594        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, threshold);
595      }
596
597  public String fhirType() {
598    return "EvidenceVariable.characteristicCombination";
599
600  }
601
602  }
603
604    @Block()
605    public static class EvidenceVariableCharacteristicComponent extends BackboneElement implements IBaseBackboneElement {
606        /**
607         * A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
608         */
609        @Child(name = "description", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
610        @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." )
611        protected StringType description;
612
613        /**
614         * Used to expressing the type of characteristic.
615         */
616        @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
617        @Description(shortDefinition="Expresses the type of characteristic", formalDefinition="Used to expressing the type of characteristic." )
618        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/usage-context-type")
619        protected CodeableConcept type;
620
621        /**
622         * 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).
623         */
624        @Child(name = "definition", type = {Group.class, EvidenceVariable.class, CanonicalType.class, CodeableConcept.class, Expression.class}, order=3, min=1, max=1, modifier=false, summary=true)
625        @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)." )
626        protected DataType definition;
627
628        /**
629         * Method used for describing characteristic.
630         */
631        @Child(name = "method", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
632        @Description(shortDefinition="Method used for describing characteristic", formalDefinition="Method used for describing characteristic." )
633        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/characteristic-method")
634        protected CodeableConcept method;
635
636        /**
637         * Device used for determining characteristic.
638         */
639        @Child(name = "device", type = {Device.class, DeviceMetric.class}, order=5, min=0, max=1, modifier=false, summary=false)
640        @Description(shortDefinition="Device used for determining characteristic", formalDefinition="Device used for determining characteristic." )
641        protected Reference device;
642
643        /**
644         * When true, members with this characteristic are excluded from the element.
645         */
646        @Child(name = "exclude", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=false)
647        @Description(shortDefinition="Whether the characteristic includes or excludes members", formalDefinition="When true, members with this characteristic are excluded from the element." )
648        protected BooleanType exclude;
649
650        /**
651         * Observation time from study specified event.
652         */
653        @Child(name = "timeFromEvent", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
654        @Description(shortDefinition="Observation time from study specified event", formalDefinition="Observation time from study specified event." )
655        protected List<EvidenceVariableCharacteristicTimeFromEventComponent> timeFromEvent;
656
657        /**
658         * Value or set of values that define the grouping.
659         */
660        @Child(name = "groupMeasure", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=false)
661        @Description(shortDefinition="mean | median | mean-of-mean | mean-of-median | median-of-mean | median-of-median", formalDefinition="Value or set of values that define the grouping." )
662        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/group-measure")
663        protected Enumeration<GroupMeasure> groupMeasure;
664
665        private static final long serialVersionUID = 1870376402L;
666
667    /**
668     * Constructor
669     */
670      public EvidenceVariableCharacteristicComponent() {
671        super();
672      }
673
674    /**
675     * Constructor
676     */
677      public EvidenceVariableCharacteristicComponent(DataType definition) {
678        super();
679        this.setDefinition(definition);
680      }
681
682        /**
683         * @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
684         */
685        public StringType getDescriptionElement() { 
686          if (this.description == null)
687            if (Configuration.errorOnAutoCreate())
688              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.description");
689            else if (Configuration.doAutoCreate())
690              this.description = new StringType(); // bb
691          return this.description;
692        }
693
694        public boolean hasDescriptionElement() { 
695          return this.description != null && !this.description.isEmpty();
696        }
697
698        public boolean hasDescription() { 
699          return this.description != null && !this.description.isEmpty();
700        }
701
702        /**
703         * @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
704         */
705        public EvidenceVariableCharacteristicComponent setDescriptionElement(StringType value) { 
706          this.description = value;
707          return this;
708        }
709
710        /**
711         * @return A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
712         */
713        public String getDescription() { 
714          return this.description == null ? null : this.description.getValue();
715        }
716
717        /**
718         * @param value A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
719         */
720        public EvidenceVariableCharacteristicComponent setDescription(String value) { 
721          if (Utilities.noString(value))
722            this.description = null;
723          else {
724            if (this.description == null)
725              this.description = new StringType();
726            this.description.setValue(value);
727          }
728          return this;
729        }
730
731        /**
732         * @return {@link #type} (Used to expressing the type of characteristic.)
733         */
734        public CodeableConcept getType() { 
735          if (this.type == null)
736            if (Configuration.errorOnAutoCreate())
737              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.type");
738            else if (Configuration.doAutoCreate())
739              this.type = new CodeableConcept(); // cc
740          return this.type;
741        }
742
743        public boolean hasType() { 
744          return this.type != null && !this.type.isEmpty();
745        }
746
747        /**
748         * @param value {@link #type} (Used to expressing the type of characteristic.)
749         */
750        public EvidenceVariableCharacteristicComponent setType(CodeableConcept value) { 
751          this.type = value;
752          return this;
753        }
754
755        /**
756         * @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).)
757         */
758        public DataType getDefinition() { 
759          return this.definition;
760        }
761
762        /**
763         * @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).)
764         */
765        public Reference getDefinitionReference() throws FHIRException { 
766          if (this.definition == null)
767            this.definition = new Reference();
768          if (!(this.definition instanceof Reference))
769            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.definition.getClass().getName()+" was encountered");
770          return (Reference) this.definition;
771        }
772
773        public boolean hasDefinitionReference() { 
774          return this != null && this.definition instanceof Reference;
775        }
776
777        /**
778         * @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).)
779         */
780        public CanonicalType getDefinitionCanonicalType() throws FHIRException { 
781          if (this.definition == null)
782            this.definition = new CanonicalType();
783          if (!(this.definition instanceof CanonicalType))
784            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.definition.getClass().getName()+" was encountered");
785          return (CanonicalType) this.definition;
786        }
787
788        public boolean hasDefinitionCanonicalType() { 
789          return this != null && this.definition instanceof CanonicalType;
790        }
791
792        /**
793         * @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).)
794         */
795        public CodeableConcept getDefinitionCodeableConcept() throws FHIRException { 
796          if (this.definition == null)
797            this.definition = new CodeableConcept();
798          if (!(this.definition instanceof CodeableConcept))
799            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.definition.getClass().getName()+" was encountered");
800          return (CodeableConcept) this.definition;
801        }
802
803        public boolean hasDefinitionCodeableConcept() { 
804          return this != null && this.definition instanceof CodeableConcept;
805        }
806
807        /**
808         * @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).)
809         */
810        public Expression getDefinitionExpression() throws FHIRException { 
811          if (this.definition == null)
812            this.definition = new Expression();
813          if (!(this.definition instanceof Expression))
814            throw new FHIRException("Type mismatch: the type Expression was expected, but "+this.definition.getClass().getName()+" was encountered");
815          return (Expression) this.definition;
816        }
817
818        public boolean hasDefinitionExpression() { 
819          return this != null && this.definition instanceof Expression;
820        }
821
822        public boolean hasDefinition() { 
823          return this.definition != null && !this.definition.isEmpty();
824        }
825
826        /**
827         * @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).)
828         */
829        public EvidenceVariableCharacteristicComponent setDefinition(DataType value) { 
830          if (value != null && !(value instanceof Reference || value instanceof CanonicalType || value instanceof CodeableConcept || value instanceof Expression))
831            throw new Error("Not the right type for EvidenceVariable.characteristic.definition[x]: "+value.fhirType());
832          this.definition = value;
833          return this;
834        }
835
836        /**
837         * @return {@link #method} (Method used for describing characteristic.)
838         */
839        public CodeableConcept getMethod() { 
840          if (this.method == null)
841            if (Configuration.errorOnAutoCreate())
842              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.method");
843            else if (Configuration.doAutoCreate())
844              this.method = new CodeableConcept(); // cc
845          return this.method;
846        }
847
848        public boolean hasMethod() { 
849          return this.method != null && !this.method.isEmpty();
850        }
851
852        /**
853         * @param value {@link #method} (Method used for describing characteristic.)
854         */
855        public EvidenceVariableCharacteristicComponent setMethod(CodeableConcept value) { 
856          this.method = value;
857          return this;
858        }
859
860        /**
861         * @return {@link #device} (Device used for determining characteristic.)
862         */
863        public Reference getDevice() { 
864          if (this.device == null)
865            if (Configuration.errorOnAutoCreate())
866              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.device");
867            else if (Configuration.doAutoCreate())
868              this.device = new Reference(); // cc
869          return this.device;
870        }
871
872        public boolean hasDevice() { 
873          return this.device != null && !this.device.isEmpty();
874        }
875
876        /**
877         * @param value {@link #device} (Device used for determining characteristic.)
878         */
879        public EvidenceVariableCharacteristicComponent setDevice(Reference value) { 
880          this.device = value;
881          return this;
882        }
883
884        /**
885         * @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
886         */
887        public BooleanType getExcludeElement() { 
888          if (this.exclude == null)
889            if (Configuration.errorOnAutoCreate())
890              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.exclude");
891            else if (Configuration.doAutoCreate())
892              this.exclude = new BooleanType(); // bb
893          return this.exclude;
894        }
895
896        public boolean hasExcludeElement() { 
897          return this.exclude != null && !this.exclude.isEmpty();
898        }
899
900        public boolean hasExclude() { 
901          return this.exclude != null && !this.exclude.isEmpty();
902        }
903
904        /**
905         * @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
906         */
907        public EvidenceVariableCharacteristicComponent setExcludeElement(BooleanType value) { 
908          this.exclude = value;
909          return this;
910        }
911
912        /**
913         * @return When true, members with this characteristic are excluded from the element.
914         */
915        public boolean getExclude() { 
916          return this.exclude == null || this.exclude.isEmpty() ? false : this.exclude.getValue();
917        }
918
919        /**
920         * @param value When true, members with this characteristic are excluded from the element.
921         */
922        public EvidenceVariableCharacteristicComponent setExclude(boolean value) { 
923            if (this.exclude == null)
924              this.exclude = new BooleanType();
925            this.exclude.setValue(value);
926          return this;
927        }
928
929        /**
930         * @return {@link #timeFromEvent} (Observation time from study specified event.)
931         */
932        public List<EvidenceVariableCharacteristicTimeFromEventComponent> getTimeFromEvent() { 
933          if (this.timeFromEvent == null)
934            this.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
935          return this.timeFromEvent;
936        }
937
938        /**
939         * @return Returns a reference to <code>this</code> for easy method chaining
940         */
941        public EvidenceVariableCharacteristicComponent setTimeFromEvent(List<EvidenceVariableCharacteristicTimeFromEventComponent> theTimeFromEvent) { 
942          this.timeFromEvent = theTimeFromEvent;
943          return this;
944        }
945
946        public boolean hasTimeFromEvent() { 
947          if (this.timeFromEvent == null)
948            return false;
949          for (EvidenceVariableCharacteristicTimeFromEventComponent item : this.timeFromEvent)
950            if (!item.isEmpty())
951              return true;
952          return false;
953        }
954
955        public EvidenceVariableCharacteristicTimeFromEventComponent addTimeFromEvent() { //3
956          EvidenceVariableCharacteristicTimeFromEventComponent t = new EvidenceVariableCharacteristicTimeFromEventComponent();
957          if (this.timeFromEvent == null)
958            this.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
959          this.timeFromEvent.add(t);
960          return t;
961        }
962
963        public EvidenceVariableCharacteristicComponent addTimeFromEvent(EvidenceVariableCharacteristicTimeFromEventComponent t) { //3
964          if (t == null)
965            return this;
966          if (this.timeFromEvent == null)
967            this.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
968          this.timeFromEvent.add(t);
969          return this;
970        }
971
972        /**
973         * @return The first repetition of repeating field {@link #timeFromEvent}, creating it if it does not already exist {3}
974         */
975        public EvidenceVariableCharacteristicTimeFromEventComponent getTimeFromEventFirstRep() { 
976          if (getTimeFromEvent().isEmpty()) {
977            addTimeFromEvent();
978          }
979          return getTimeFromEvent().get(0);
980        }
981
982        /**
983         * @return {@link #groupMeasure} (Value or set of values that define the grouping.). This is the underlying object with id, value and extensions. The accessor "getGroupMeasure" gives direct access to the value
984         */
985        public Enumeration<GroupMeasure> getGroupMeasureElement() { 
986          if (this.groupMeasure == null)
987            if (Configuration.errorOnAutoCreate())
988              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.groupMeasure");
989            else if (Configuration.doAutoCreate())
990              this.groupMeasure = new Enumeration<GroupMeasure>(new GroupMeasureEnumFactory()); // bb
991          return this.groupMeasure;
992        }
993
994        public boolean hasGroupMeasureElement() { 
995          return this.groupMeasure != null && !this.groupMeasure.isEmpty();
996        }
997
998        public boolean hasGroupMeasure() { 
999          return this.groupMeasure != null && !this.groupMeasure.isEmpty();
1000        }
1001
1002        /**
1003         * @param value {@link #groupMeasure} (Value or set of values that define the grouping.). This is the underlying object with id, value and extensions. The accessor "getGroupMeasure" gives direct access to the value
1004         */
1005        public EvidenceVariableCharacteristicComponent setGroupMeasureElement(Enumeration<GroupMeasure> value) { 
1006          this.groupMeasure = value;
1007          return this;
1008        }
1009
1010        /**
1011         * @return Value or set of values that define the grouping.
1012         */
1013        public GroupMeasure getGroupMeasure() { 
1014          return this.groupMeasure == null ? null : this.groupMeasure.getValue();
1015        }
1016
1017        /**
1018         * @param value Value or set of values that define the grouping.
1019         */
1020        public EvidenceVariableCharacteristicComponent setGroupMeasure(GroupMeasure value) { 
1021          if (value == null)
1022            this.groupMeasure = null;
1023          else {
1024            if (this.groupMeasure == null)
1025              this.groupMeasure = new Enumeration<GroupMeasure>(new GroupMeasureEnumFactory());
1026            this.groupMeasure.setValue(value);
1027          }
1028          return this;
1029        }
1030
1031        protected void listChildren(List<Property> children) {
1032          super.listChildren(children);
1033          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));
1034          children.add(new Property("type", "CodeableConcept", "Used to expressing the type of characteristic.", 0, 1, type));
1035          children.add(new Property("definition[x]", "Reference(Group|EvidenceVariable)|canonical(Any)|CodeableConcept|Expression", "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));
1036          children.add(new Property("method", "CodeableConcept", "Method used for describing characteristic.", 0, 1, method));
1037          children.add(new Property("device", "Reference(Device|DeviceMetric)", "Device used for determining characteristic.", 0, 1, device));
1038          children.add(new Property("exclude", "boolean", "When true, members with this characteristic are excluded from the element.", 0, 1, exclude));
1039          children.add(new Property("timeFromEvent", "", "Observation time from study specified event.", 0, java.lang.Integer.MAX_VALUE, timeFromEvent));
1040          children.add(new Property("groupMeasure", "code", "Value or set of values that define the grouping.", 0, 1, groupMeasure));
1041        }
1042
1043        @Override
1044        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1045          switch (_hash) {
1046          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);
1047          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Used to expressing the type of characteristic.", 0, 1, type);
1048          case -1139422643: /*definition[x]*/  return new Property("definition[x]", "Reference(Group|EvidenceVariable)|canonical(Any)|CodeableConcept|Expression", "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);
1049          case -1014418093: /*definition*/  return new Property("definition[x]", "Reference(Group|EvidenceVariable)|canonical(Any)|CodeableConcept|Expression", "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);
1050          case -820021448: /*definitionReference*/  return new Property("definition[x]", "Reference(Group|EvidenceVariable)", "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);
1051          case 933485793: /*definitionCanonical*/  return new Property("definition[x]", "canonical(Any)", "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);
1052          case -1446002226: /*definitionCodeableConcept*/  return new Property("definition[x]", "CodeableConcept", "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);
1053          case 1463703627: /*definitionExpression*/  return new Property("definition[x]", "Expression", "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);
1054          case -1077554975: /*method*/  return new Property("method", "CodeableConcept", "Method used for describing characteristic.", 0, 1, method);
1055          case -1335157162: /*device*/  return new Property("device", "Reference(Device|DeviceMetric)", "Device used for determining characteristic.", 0, 1, device);
1056          case -1321148966: /*exclude*/  return new Property("exclude", "boolean", "When true, members with this characteristic are excluded from the element.", 0, 1, exclude);
1057          case 2087274691: /*timeFromEvent*/  return new Property("timeFromEvent", "", "Observation time from study specified event.", 0, java.lang.Integer.MAX_VALUE, timeFromEvent);
1058          case 588892639: /*groupMeasure*/  return new Property("groupMeasure", "code", "Value or set of values that define the grouping.", 0, 1, groupMeasure);
1059          default: return super.getNamedProperty(_hash, _name, _checkValid);
1060          }
1061
1062        }
1063
1064      @Override
1065      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1066        switch (hash) {
1067        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1068        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1069        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // DataType
1070        case -1077554975: /*method*/ return this.method == null ? new Base[0] : new Base[] {this.method}; // CodeableConcept
1071        case -1335157162: /*device*/ return this.device == null ? new Base[0] : new Base[] {this.device}; // Reference
1072        case -1321148966: /*exclude*/ return this.exclude == null ? new Base[0] : new Base[] {this.exclude}; // BooleanType
1073        case 2087274691: /*timeFromEvent*/ return this.timeFromEvent == null ? new Base[0] : this.timeFromEvent.toArray(new Base[this.timeFromEvent.size()]); // EvidenceVariableCharacteristicTimeFromEventComponent
1074        case 588892639: /*groupMeasure*/ return this.groupMeasure == null ? new Base[0] : new Base[] {this.groupMeasure}; // Enumeration<GroupMeasure>
1075        default: return super.getProperty(hash, name, checkValid);
1076        }
1077
1078      }
1079
1080      @Override
1081      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1082        switch (hash) {
1083        case -1724546052: // description
1084          this.description = TypeConvertor.castToString(value); // StringType
1085          return value;
1086        case 3575610: // type
1087          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1088          return value;
1089        case -1014418093: // definition
1090          this.definition = TypeConvertor.castToType(value); // DataType
1091          return value;
1092        case -1077554975: // method
1093          this.method = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1094          return value;
1095        case -1335157162: // device
1096          this.device = TypeConvertor.castToReference(value); // Reference
1097          return value;
1098        case -1321148966: // exclude
1099          this.exclude = TypeConvertor.castToBoolean(value); // BooleanType
1100          return value;
1101        case 2087274691: // timeFromEvent
1102          this.getTimeFromEvent().add((EvidenceVariableCharacteristicTimeFromEventComponent) value); // EvidenceVariableCharacteristicTimeFromEventComponent
1103          return value;
1104        case 588892639: // groupMeasure
1105          value = new GroupMeasureEnumFactory().fromType(TypeConvertor.castToCode(value));
1106          this.groupMeasure = (Enumeration) value; // Enumeration<GroupMeasure>
1107          return value;
1108        default: return super.setProperty(hash, name, value);
1109        }
1110
1111      }
1112
1113      @Override
1114      public Base setProperty(String name, Base value) throws FHIRException {
1115        if (name.equals("description")) {
1116          this.description = TypeConvertor.castToString(value); // StringType
1117        } else if (name.equals("type")) {
1118          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1119        } else if (name.equals("definition[x]")) {
1120          this.definition = TypeConvertor.castToType(value); // DataType
1121        } else if (name.equals("method")) {
1122          this.method = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1123        } else if (name.equals("device")) {
1124          this.device = TypeConvertor.castToReference(value); // Reference
1125        } else if (name.equals("exclude")) {
1126          this.exclude = TypeConvertor.castToBoolean(value); // BooleanType
1127        } else if (name.equals("timeFromEvent")) {
1128          this.getTimeFromEvent().add((EvidenceVariableCharacteristicTimeFromEventComponent) value);
1129        } else if (name.equals("groupMeasure")) {
1130          value = new GroupMeasureEnumFactory().fromType(TypeConvertor.castToCode(value));
1131          this.groupMeasure = (Enumeration) value; // Enumeration<GroupMeasure>
1132        } else
1133          return super.setProperty(name, value);
1134        return value;
1135      }
1136
1137      @Override
1138      public Base makeProperty(int hash, String name) throws FHIRException {
1139        switch (hash) {
1140        case -1724546052:  return getDescriptionElement();
1141        case 3575610:  return getType();
1142        case -1139422643:  return getDefinition();
1143        case -1014418093:  return getDefinition();
1144        case -1077554975:  return getMethod();
1145        case -1335157162:  return getDevice();
1146        case -1321148966:  return getExcludeElement();
1147        case 2087274691:  return addTimeFromEvent(); 
1148        case 588892639:  return getGroupMeasureElement();
1149        default: return super.makeProperty(hash, name);
1150        }
1151
1152      }
1153
1154      @Override
1155      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1156        switch (hash) {
1157        case -1724546052: /*description*/ return new String[] {"string"};
1158        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1159        case -1014418093: /*definition*/ return new String[] {"Reference", "canonical", "CodeableConcept", "Expression"};
1160        case -1077554975: /*method*/ return new String[] {"CodeableConcept"};
1161        case -1335157162: /*device*/ return new String[] {"Reference"};
1162        case -1321148966: /*exclude*/ return new String[] {"boolean"};
1163        case 2087274691: /*timeFromEvent*/ return new String[] {};
1164        case 588892639: /*groupMeasure*/ return new String[] {"code"};
1165        default: return super.getTypesForProperty(hash, name);
1166        }
1167
1168      }
1169
1170      @Override
1171      public Base addChild(String name) throws FHIRException {
1172        if (name.equals("description")) {
1173          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.description");
1174        }
1175        else if (name.equals("type")) {
1176          this.type = new CodeableConcept();
1177          return this.type;
1178        }
1179        else if (name.equals("definitionReference")) {
1180          this.definition = new Reference();
1181          return this.definition;
1182        }
1183        else if (name.equals("definitionCanonical")) {
1184          this.definition = new CanonicalType();
1185          return this.definition;
1186        }
1187        else if (name.equals("definitionCodeableConcept")) {
1188          this.definition = new CodeableConcept();
1189          return this.definition;
1190        }
1191        else if (name.equals("definitionExpression")) {
1192          this.definition = new Expression();
1193          return this.definition;
1194        }
1195        else if (name.equals("method")) {
1196          this.method = new CodeableConcept();
1197          return this.method;
1198        }
1199        else if (name.equals("device")) {
1200          this.device = new Reference();
1201          return this.device;
1202        }
1203        else if (name.equals("exclude")) {
1204          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.exclude");
1205        }
1206        else if (name.equals("timeFromEvent")) {
1207          return addTimeFromEvent();
1208        }
1209        else if (name.equals("groupMeasure")) {
1210          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.groupMeasure");
1211        }
1212        else
1213          return super.addChild(name);
1214      }
1215
1216      public EvidenceVariableCharacteristicComponent copy() {
1217        EvidenceVariableCharacteristicComponent dst = new EvidenceVariableCharacteristicComponent();
1218        copyValues(dst);
1219        return dst;
1220      }
1221
1222      public void copyValues(EvidenceVariableCharacteristicComponent dst) {
1223        super.copyValues(dst);
1224        dst.description = description == null ? null : description.copy();
1225        dst.type = type == null ? null : type.copy();
1226        dst.definition = definition == null ? null : definition.copy();
1227        dst.method = method == null ? null : method.copy();
1228        dst.device = device == null ? null : device.copy();
1229        dst.exclude = exclude == null ? null : exclude.copy();
1230        if (timeFromEvent != null) {
1231          dst.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
1232          for (EvidenceVariableCharacteristicTimeFromEventComponent i : timeFromEvent)
1233            dst.timeFromEvent.add(i.copy());
1234        };
1235        dst.groupMeasure = groupMeasure == null ? null : groupMeasure.copy();
1236      }
1237
1238      @Override
1239      public boolean equalsDeep(Base other_) {
1240        if (!super.equalsDeep(other_))
1241          return false;
1242        if (!(other_ instanceof EvidenceVariableCharacteristicComponent))
1243          return false;
1244        EvidenceVariableCharacteristicComponent o = (EvidenceVariableCharacteristicComponent) other_;
1245        return compareDeep(description, o.description, true) && compareDeep(type, o.type, true) && compareDeep(definition, o.definition, true)
1246           && compareDeep(method, o.method, true) && compareDeep(device, o.device, true) && compareDeep(exclude, o.exclude, true)
1247           && compareDeep(timeFromEvent, o.timeFromEvent, true) && compareDeep(groupMeasure, o.groupMeasure, true)
1248          ;
1249      }
1250
1251      @Override
1252      public boolean equalsShallow(Base other_) {
1253        if (!super.equalsShallow(other_))
1254          return false;
1255        if (!(other_ instanceof EvidenceVariableCharacteristicComponent))
1256          return false;
1257        EvidenceVariableCharacteristicComponent o = (EvidenceVariableCharacteristicComponent) other_;
1258        return compareValues(description, o.description, true) && compareValues(exclude, o.exclude, true) && compareValues(groupMeasure, o.groupMeasure, true)
1259          ;
1260      }
1261
1262      public boolean isEmpty() {
1263        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, type, definition
1264          , method, device, exclude, timeFromEvent, groupMeasure);
1265      }
1266
1267  public String fhirType() {
1268    return "EvidenceVariable.characteristic";
1269
1270  }
1271
1272  }
1273
1274    @Block()
1275    public static class EvidenceVariableCharacteristicTimeFromEventComponent extends BackboneElement implements IBaseBackboneElement {
1276        /**
1277         * Human readable description.
1278         */
1279        @Child(name = "description", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1280        @Description(shortDefinition="Human readable description", formalDefinition="Human readable description." )
1281        protected StringType description;
1282
1283        /**
1284         * The event used as a base point (reference point) in time.
1285         */
1286        @Child(name = "event", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
1287        @Description(shortDefinition="The event used as a base point (reference point) in time", formalDefinition="The event used as a base point (reference point) in time." )
1288        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/evidence-variable-event")
1289        protected CodeableConcept event;
1290
1291        /**
1292         * Used to express the observation at a defined amount of time after the study start.
1293         */
1294        @Child(name = "quantity", type = {Quantity.class}, order=3, min=0, max=1, modifier=false, summary=false)
1295        @Description(shortDefinition="Used to express the observation at a defined amount of time after the study start", formalDefinition="Used to express the observation at a defined amount of time after the study start." )
1296        protected Quantity quantity;
1297
1298        /**
1299         * Used to express the observation within a period after the study start.
1300         */
1301        @Child(name = "range", type = {Range.class}, order=4, min=0, max=1, modifier=false, summary=false)
1302        @Description(shortDefinition="Used to express the observation within a period after the study start", formalDefinition="Used to express the observation within a period after the study start." )
1303        protected Range range;
1304
1305        /**
1306         * A human-readable string to clarify or explain concepts about the resource.
1307         */
1308        @Child(name = "note", type = {Annotation.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1309        @Description(shortDefinition="Used for footnotes or explanatory notes", formalDefinition="A human-readable string to clarify or explain concepts about the resource." )
1310        protected List<Annotation> note;
1311
1312        private static final long serialVersionUID = 1217037073L;
1313
1314    /**
1315     * Constructor
1316     */
1317      public EvidenceVariableCharacteristicTimeFromEventComponent() {
1318        super();
1319      }
1320
1321        /**
1322         * @return {@link #description} (Human readable description.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1323         */
1324        public StringType getDescriptionElement() { 
1325          if (this.description == null)
1326            if (Configuration.errorOnAutoCreate())
1327              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.description");
1328            else if (Configuration.doAutoCreate())
1329              this.description = new StringType(); // bb
1330          return this.description;
1331        }
1332
1333        public boolean hasDescriptionElement() { 
1334          return this.description != null && !this.description.isEmpty();
1335        }
1336
1337        public boolean hasDescription() { 
1338          return this.description != null && !this.description.isEmpty();
1339        }
1340
1341        /**
1342         * @param value {@link #description} (Human readable description.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1343         */
1344        public EvidenceVariableCharacteristicTimeFromEventComponent setDescriptionElement(StringType value) { 
1345          this.description = value;
1346          return this;
1347        }
1348
1349        /**
1350         * @return Human readable description.
1351         */
1352        public String getDescription() { 
1353          return this.description == null ? null : this.description.getValue();
1354        }
1355
1356        /**
1357         * @param value Human readable description.
1358         */
1359        public EvidenceVariableCharacteristicTimeFromEventComponent setDescription(String value) { 
1360          if (Utilities.noString(value))
1361            this.description = null;
1362          else {
1363            if (this.description == null)
1364              this.description = new StringType();
1365            this.description.setValue(value);
1366          }
1367          return this;
1368        }
1369
1370        /**
1371         * @return {@link #event} (The event used as a base point (reference point) in time.)
1372         */
1373        public CodeableConcept getEvent() { 
1374          if (this.event == null)
1375            if (Configuration.errorOnAutoCreate())
1376              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.event");
1377            else if (Configuration.doAutoCreate())
1378              this.event = new CodeableConcept(); // cc
1379          return this.event;
1380        }
1381
1382        public boolean hasEvent() { 
1383          return this.event != null && !this.event.isEmpty();
1384        }
1385
1386        /**
1387         * @param value {@link #event} (The event used as a base point (reference point) in time.)
1388         */
1389        public EvidenceVariableCharacteristicTimeFromEventComponent setEvent(CodeableConcept value) { 
1390          this.event = value;
1391          return this;
1392        }
1393
1394        /**
1395         * @return {@link #quantity} (Used to express the observation at a defined amount of time after the study start.)
1396         */
1397        public Quantity getQuantity() { 
1398          if (this.quantity == null)
1399            if (Configuration.errorOnAutoCreate())
1400              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.quantity");
1401            else if (Configuration.doAutoCreate())
1402              this.quantity = new Quantity(); // cc
1403          return this.quantity;
1404        }
1405
1406        public boolean hasQuantity() { 
1407          return this.quantity != null && !this.quantity.isEmpty();
1408        }
1409
1410        /**
1411         * @param value {@link #quantity} (Used to express the observation at a defined amount of time after the study start.)
1412         */
1413        public EvidenceVariableCharacteristicTimeFromEventComponent setQuantity(Quantity value) { 
1414          this.quantity = value;
1415          return this;
1416        }
1417
1418        /**
1419         * @return {@link #range} (Used to express the observation within a period after the study start.)
1420         */
1421        public Range getRange() { 
1422          if (this.range == null)
1423            if (Configuration.errorOnAutoCreate())
1424              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.range");
1425            else if (Configuration.doAutoCreate())
1426              this.range = new Range(); // cc
1427          return this.range;
1428        }
1429
1430        public boolean hasRange() { 
1431          return this.range != null && !this.range.isEmpty();
1432        }
1433
1434        /**
1435         * @param value {@link #range} (Used to express the observation within a period after the study start.)
1436         */
1437        public EvidenceVariableCharacteristicTimeFromEventComponent setRange(Range value) { 
1438          this.range = value;
1439          return this;
1440        }
1441
1442        /**
1443         * @return {@link #note} (A human-readable string to clarify or explain concepts about the resource.)
1444         */
1445        public List<Annotation> getNote() { 
1446          if (this.note == null)
1447            this.note = new ArrayList<Annotation>();
1448          return this.note;
1449        }
1450
1451        /**
1452         * @return Returns a reference to <code>this</code> for easy method chaining
1453         */
1454        public EvidenceVariableCharacteristicTimeFromEventComponent setNote(List<Annotation> theNote) { 
1455          this.note = theNote;
1456          return this;
1457        }
1458
1459        public boolean hasNote() { 
1460          if (this.note == null)
1461            return false;
1462          for (Annotation item : this.note)
1463            if (!item.isEmpty())
1464              return true;
1465          return false;
1466        }
1467
1468        public Annotation addNote() { //3
1469          Annotation t = new Annotation();
1470          if (this.note == null)
1471            this.note = new ArrayList<Annotation>();
1472          this.note.add(t);
1473          return t;
1474        }
1475
1476        public EvidenceVariableCharacteristicTimeFromEventComponent addNote(Annotation t) { //3
1477          if (t == null)
1478            return this;
1479          if (this.note == null)
1480            this.note = new ArrayList<Annotation>();
1481          this.note.add(t);
1482          return this;
1483        }
1484
1485        /**
1486         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1487         */
1488        public Annotation getNoteFirstRep() { 
1489          if (getNote().isEmpty()) {
1490            addNote();
1491          }
1492          return getNote().get(0);
1493        }
1494
1495        protected void listChildren(List<Property> children) {
1496          super.listChildren(children);
1497          children.add(new Property("description", "string", "Human readable description.", 0, 1, description));
1498          children.add(new Property("event", "CodeableConcept", "The event used as a base point (reference point) in time.", 0, 1, event));
1499          children.add(new Property("quantity", "Quantity", "Used to express the observation at a defined amount of time after the study start.", 0, 1, quantity));
1500          children.add(new Property("range", "Range", "Used to express the observation within a period after the study start.", 0, 1, range));
1501          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));
1502        }
1503
1504        @Override
1505        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1506          switch (_hash) {
1507          case -1724546052: /*description*/  return new Property("description", "string", "Human readable description.", 0, 1, description);
1508          case 96891546: /*event*/  return new Property("event", "CodeableConcept", "The event used as a base point (reference point) in time.", 0, 1, event);
1509          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "Used to express the observation at a defined amount of time after the study start.", 0, 1, quantity);
1510          case 108280125: /*range*/  return new Property("range", "Range", "Used to express the observation within a period after the study start.", 0, 1, range);
1511          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);
1512          default: return super.getNamedProperty(_hash, _name, _checkValid);
1513          }
1514
1515        }
1516
1517      @Override
1518      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1519        switch (hash) {
1520        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1521        case 96891546: /*event*/ return this.event == null ? new Base[0] : new Base[] {this.event}; // CodeableConcept
1522        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
1523        case 108280125: /*range*/ return this.range == null ? new Base[0] : new Base[] {this.range}; // Range
1524        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1525        default: return super.getProperty(hash, name, checkValid);
1526        }
1527
1528      }
1529
1530      @Override
1531      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1532        switch (hash) {
1533        case -1724546052: // description
1534          this.description = TypeConvertor.castToString(value); // StringType
1535          return value;
1536        case 96891546: // event
1537          this.event = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1538          return value;
1539        case -1285004149: // quantity
1540          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1541          return value;
1542        case 108280125: // range
1543          this.range = TypeConvertor.castToRange(value); // Range
1544          return value;
1545        case 3387378: // note
1546          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1547          return value;
1548        default: return super.setProperty(hash, name, value);
1549        }
1550
1551      }
1552
1553      @Override
1554      public Base setProperty(String name, Base value) throws FHIRException {
1555        if (name.equals("description")) {
1556          this.description = TypeConvertor.castToString(value); // StringType
1557        } else if (name.equals("event")) {
1558          this.event = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1559        } else if (name.equals("quantity")) {
1560          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1561        } else if (name.equals("range")) {
1562          this.range = TypeConvertor.castToRange(value); // Range
1563        } else if (name.equals("note")) {
1564          this.getNote().add(TypeConvertor.castToAnnotation(value));
1565        } else
1566          return super.setProperty(name, value);
1567        return value;
1568      }
1569
1570      @Override
1571      public Base makeProperty(int hash, String name) throws FHIRException {
1572        switch (hash) {
1573        case -1724546052:  return getDescriptionElement();
1574        case 96891546:  return getEvent();
1575        case -1285004149:  return getQuantity();
1576        case 108280125:  return getRange();
1577        case 3387378:  return addNote(); 
1578        default: return super.makeProperty(hash, name);
1579        }
1580
1581      }
1582
1583      @Override
1584      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1585        switch (hash) {
1586        case -1724546052: /*description*/ return new String[] {"string"};
1587        case 96891546: /*event*/ return new String[] {"CodeableConcept"};
1588        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
1589        case 108280125: /*range*/ return new String[] {"Range"};
1590        case 3387378: /*note*/ return new String[] {"Annotation"};
1591        default: return super.getTypesForProperty(hash, name);
1592        }
1593
1594      }
1595
1596      @Override
1597      public Base addChild(String name) throws FHIRException {
1598        if (name.equals("description")) {
1599          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.timeFromEvent.description");
1600        }
1601        else if (name.equals("event")) {
1602          this.event = new CodeableConcept();
1603          return this.event;
1604        }
1605        else if (name.equals("quantity")) {
1606          this.quantity = new Quantity();
1607          return this.quantity;
1608        }
1609        else if (name.equals("range")) {
1610          this.range = new Range();
1611          return this.range;
1612        }
1613        else if (name.equals("note")) {
1614          return addNote();
1615        }
1616        else
1617          return super.addChild(name);
1618      }
1619
1620      public EvidenceVariableCharacteristicTimeFromEventComponent copy() {
1621        EvidenceVariableCharacteristicTimeFromEventComponent dst = new EvidenceVariableCharacteristicTimeFromEventComponent();
1622        copyValues(dst);
1623        return dst;
1624      }
1625
1626      public void copyValues(EvidenceVariableCharacteristicTimeFromEventComponent dst) {
1627        super.copyValues(dst);
1628        dst.description = description == null ? null : description.copy();
1629        dst.event = event == null ? null : event.copy();
1630        dst.quantity = quantity == null ? null : quantity.copy();
1631        dst.range = range == null ? null : range.copy();
1632        if (note != null) {
1633          dst.note = new ArrayList<Annotation>();
1634          for (Annotation i : note)
1635            dst.note.add(i.copy());
1636        };
1637      }
1638
1639      @Override
1640      public boolean equalsDeep(Base other_) {
1641        if (!super.equalsDeep(other_))
1642          return false;
1643        if (!(other_ instanceof EvidenceVariableCharacteristicTimeFromEventComponent))
1644          return false;
1645        EvidenceVariableCharacteristicTimeFromEventComponent o = (EvidenceVariableCharacteristicTimeFromEventComponent) other_;
1646        return compareDeep(description, o.description, true) && compareDeep(event, o.event, true) && compareDeep(quantity, o.quantity, true)
1647           && compareDeep(range, o.range, true) && compareDeep(note, o.note, true);
1648      }
1649
1650      @Override
1651      public boolean equalsShallow(Base other_) {
1652        if (!super.equalsShallow(other_))
1653          return false;
1654        if (!(other_ instanceof EvidenceVariableCharacteristicTimeFromEventComponent))
1655          return false;
1656        EvidenceVariableCharacteristicTimeFromEventComponent o = (EvidenceVariableCharacteristicTimeFromEventComponent) other_;
1657        return compareValues(description, o.description, true);
1658      }
1659
1660      public boolean isEmpty() {
1661        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, event, quantity
1662          , range, note);
1663      }
1664
1665  public String fhirType() {
1666    return "EvidenceVariable.characteristic.timeFromEvent";
1667
1668  }
1669
1670  }
1671
1672    @Block()
1673    public static class EvidenceVariableCategoryComponent extends BackboneElement implements IBaseBackboneElement {
1674        /**
1675         * Description of the grouping.
1676         */
1677        @Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1678        @Description(shortDefinition="Description of the grouping", formalDefinition="Description of the grouping." )
1679        protected StringType name;
1680
1681        /**
1682         * Definition of the grouping.
1683         */
1684        @Child(name = "value", type = {CodeableConcept.class, Quantity.class, Range.class}, order=2, min=0, max=1, modifier=false, summary=false)
1685        @Description(shortDefinition="Definition of the grouping", formalDefinition="Definition of the grouping." )
1686        protected DataType value;
1687
1688        private static final long serialVersionUID = 1839679495L;
1689
1690    /**
1691     * Constructor
1692     */
1693      public EvidenceVariableCategoryComponent() {
1694        super();
1695      }
1696
1697        /**
1698         * @return {@link #name} (Description of the grouping.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1699         */
1700        public StringType getNameElement() { 
1701          if (this.name == null)
1702            if (Configuration.errorOnAutoCreate())
1703              throw new Error("Attempt to auto-create EvidenceVariableCategoryComponent.name");
1704            else if (Configuration.doAutoCreate())
1705              this.name = new StringType(); // bb
1706          return this.name;
1707        }
1708
1709        public boolean hasNameElement() { 
1710          return this.name != null && !this.name.isEmpty();
1711        }
1712
1713        public boolean hasName() { 
1714          return this.name != null && !this.name.isEmpty();
1715        }
1716
1717        /**
1718         * @param value {@link #name} (Description of the grouping.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1719         */
1720        public EvidenceVariableCategoryComponent setNameElement(StringType value) { 
1721          this.name = value;
1722          return this;
1723        }
1724
1725        /**
1726         * @return Description of the grouping.
1727         */
1728        public String getName() { 
1729          return this.name == null ? null : this.name.getValue();
1730        }
1731
1732        /**
1733         * @param value Description of the grouping.
1734         */
1735        public EvidenceVariableCategoryComponent setName(String value) { 
1736          if (Utilities.noString(value))
1737            this.name = null;
1738          else {
1739            if (this.name == null)
1740              this.name = new StringType();
1741            this.name.setValue(value);
1742          }
1743          return this;
1744        }
1745
1746        /**
1747         * @return {@link #value} (Definition of the grouping.)
1748         */
1749        public DataType getValue() { 
1750          return this.value;
1751        }
1752
1753        /**
1754         * @return {@link #value} (Definition of the grouping.)
1755         */
1756        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
1757          if (this.value == null)
1758            this.value = new CodeableConcept();
1759          if (!(this.value instanceof CodeableConcept))
1760            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
1761          return (CodeableConcept) this.value;
1762        }
1763
1764        public boolean hasValueCodeableConcept() { 
1765          return this != null && this.value instanceof CodeableConcept;
1766        }
1767
1768        /**
1769         * @return {@link #value} (Definition of the grouping.)
1770         */
1771        public Quantity getValueQuantity() throws FHIRException { 
1772          if (this.value == null)
1773            this.value = new Quantity();
1774          if (!(this.value instanceof Quantity))
1775            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
1776          return (Quantity) this.value;
1777        }
1778
1779        public boolean hasValueQuantity() { 
1780          return this != null && this.value instanceof Quantity;
1781        }
1782
1783        /**
1784         * @return {@link #value} (Definition of the grouping.)
1785         */
1786        public Range getValueRange() throws FHIRException { 
1787          if (this.value == null)
1788            this.value = new Range();
1789          if (!(this.value instanceof Range))
1790            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
1791          return (Range) this.value;
1792        }
1793
1794        public boolean hasValueRange() { 
1795          return this != null && this.value instanceof Range;
1796        }
1797
1798        public boolean hasValue() { 
1799          return this.value != null && !this.value.isEmpty();
1800        }
1801
1802        /**
1803         * @param value {@link #value} (Definition of the grouping.)
1804         */
1805        public EvidenceVariableCategoryComponent setValue(DataType value) { 
1806          if (value != null && !(value instanceof CodeableConcept || value instanceof Quantity || value instanceof Range))
1807            throw new Error("Not the right type for EvidenceVariable.category.value[x]: "+value.fhirType());
1808          this.value = value;
1809          return this;
1810        }
1811
1812        protected void listChildren(List<Property> children) {
1813          super.listChildren(children);
1814          children.add(new Property("name", "string", "Description of the grouping.", 0, 1, name));
1815          children.add(new Property("value[x]", "CodeableConcept|Quantity|Range", "Definition of the grouping.", 0, 1, value));
1816        }
1817
1818        @Override
1819        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1820          switch (_hash) {
1821          case 3373707: /*name*/  return new Property("name", "string", "Description of the grouping.", 0, 1, name);
1822          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|Quantity|Range", "Definition of the grouping.", 0, 1, value);
1823          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|Quantity|Range", "Definition of the grouping.", 0, 1, value);
1824          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "Definition of the grouping.", 0, 1, value);
1825          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "Definition of the grouping.", 0, 1, value);
1826          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "Definition of the grouping.", 0, 1, value);
1827          default: return super.getNamedProperty(_hash, _name, _checkValid);
1828          }
1829
1830        }
1831
1832      @Override
1833      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1834        switch (hash) {
1835        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1836        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
1837        default: return super.getProperty(hash, name, checkValid);
1838        }
1839
1840      }
1841
1842      @Override
1843      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1844        switch (hash) {
1845        case 3373707: // name
1846          this.name = TypeConvertor.castToString(value); // StringType
1847          return value;
1848        case 111972721: // value
1849          this.value = TypeConvertor.castToType(value); // DataType
1850          return value;
1851        default: return super.setProperty(hash, name, value);
1852        }
1853
1854      }
1855
1856      @Override
1857      public Base setProperty(String name, Base value) throws FHIRException {
1858        if (name.equals("name")) {
1859          this.name = TypeConvertor.castToString(value); // StringType
1860        } else if (name.equals("value[x]")) {
1861          this.value = TypeConvertor.castToType(value); // DataType
1862        } else
1863          return super.setProperty(name, value);
1864        return value;
1865      }
1866
1867      @Override
1868      public Base makeProperty(int hash, String name) throws FHIRException {
1869        switch (hash) {
1870        case 3373707:  return getNameElement();
1871        case -1410166417:  return getValue();
1872        case 111972721:  return getValue();
1873        default: return super.makeProperty(hash, name);
1874        }
1875
1876      }
1877
1878      @Override
1879      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1880        switch (hash) {
1881        case 3373707: /*name*/ return new String[] {"string"};
1882        case 111972721: /*value*/ return new String[] {"CodeableConcept", "Quantity", "Range"};
1883        default: return super.getTypesForProperty(hash, name);
1884        }
1885
1886      }
1887
1888      @Override
1889      public Base addChild(String name) throws FHIRException {
1890        if (name.equals("name")) {
1891          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.category.name");
1892        }
1893        else if (name.equals("valueCodeableConcept")) {
1894          this.value = new CodeableConcept();
1895          return this.value;
1896        }
1897        else if (name.equals("valueQuantity")) {
1898          this.value = new Quantity();
1899          return this.value;
1900        }
1901        else if (name.equals("valueRange")) {
1902          this.value = new Range();
1903          return this.value;
1904        }
1905        else
1906          return super.addChild(name);
1907      }
1908
1909      public EvidenceVariableCategoryComponent copy() {
1910        EvidenceVariableCategoryComponent dst = new EvidenceVariableCategoryComponent();
1911        copyValues(dst);
1912        return dst;
1913      }
1914
1915      public void copyValues(EvidenceVariableCategoryComponent dst) {
1916        super.copyValues(dst);
1917        dst.name = name == null ? null : name.copy();
1918        dst.value = value == null ? null : value.copy();
1919      }
1920
1921      @Override
1922      public boolean equalsDeep(Base other_) {
1923        if (!super.equalsDeep(other_))
1924          return false;
1925        if (!(other_ instanceof EvidenceVariableCategoryComponent))
1926          return false;
1927        EvidenceVariableCategoryComponent o = (EvidenceVariableCategoryComponent) other_;
1928        return compareDeep(name, o.name, true) && compareDeep(value, o.value, true);
1929      }
1930
1931      @Override
1932      public boolean equalsShallow(Base other_) {
1933        if (!super.equalsShallow(other_))
1934          return false;
1935        if (!(other_ instanceof EvidenceVariableCategoryComponent))
1936          return false;
1937        EvidenceVariableCategoryComponent o = (EvidenceVariableCategoryComponent) other_;
1938        return compareValues(name, o.name, true);
1939      }
1940
1941      public boolean isEmpty() {
1942        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, value);
1943      }
1944
1945  public String fhirType() {
1946    return "EvidenceVariable.category";
1947
1948  }
1949
1950  }
1951
1952    /**
1953     * 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.
1954     */
1955    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
1956    @Description(shortDefinition="Canonical identifier for this evidence variable, represented as a URI (globally unique)", formalDefinition="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." )
1957    protected UriType url;
1958
1959    /**
1960     * 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.
1961     */
1962    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1963    @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." )
1964    protected List<Identifier> identifier;
1965
1966    /**
1967     * 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.
1968     */
1969    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1970    @Description(shortDefinition="Business version of the evidence variable", formalDefinition="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." )
1971    protected StringType version;
1972
1973    /**
1974     * 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.
1975     */
1976    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
1977    @Description(shortDefinition="Name for this evidence variable (computer friendly)", formalDefinition="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." )
1978    protected StringType name;
1979
1980    /**
1981     * A short, descriptive, user-friendly title for the evidence variable.
1982     */
1983    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1984    @Description(shortDefinition="Name for this evidence variable (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the evidence variable." )
1985    protected StringType title;
1986
1987    /**
1988     * The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
1989     */
1990    @Child(name = "shortTitle", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
1991    @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." )
1992    protected StringType shortTitle;
1993
1994    /**
1995     * An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
1996     */
1997    @Child(name = "subtitle", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
1998    @Description(shortDefinition="Subordinate title of the EvidenceVariable", formalDefinition="An explanatory or alternate title for the EvidenceVariable giving additional information about its content." )
1999    protected StringType subtitle;
2000
2001    /**
2002     * The status of this evidence variable. Enables tracking the life-cycle of the content.
2003     */
2004    @Child(name = "status", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
2005    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this evidence variable. Enables tracking the life-cycle of the content." )
2006    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
2007    protected Enumeration<PublicationStatus> status;
2008
2009    /**
2010     * 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.
2011     */
2012    @Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
2013    @Description(shortDefinition="Date last changed", formalDefinition="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." )
2014    protected DateTimeType date;
2015
2016    /**
2017     * A free text natural language description of the evidence variable from a consumer's perspective.
2018     */
2019    @Child(name = "description", type = {MarkdownType.class}, order=9, min=0, max=1, modifier=false, summary=true)
2020    @Description(shortDefinition="Natural language description of the evidence variable", formalDefinition="A free text natural language description of the evidence variable from a consumer's perspective." )
2021    protected MarkdownType description;
2022
2023    /**
2024     * A human-readable string to clarify or explain concepts about the resource.
2025     */
2026    @Child(name = "note", type = {Annotation.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2027    @Description(shortDefinition="Used for footnotes or explanatory notes", formalDefinition="A human-readable string to clarify or explain concepts about the resource." )
2028    protected List<Annotation> note;
2029
2030    /**
2031     * 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.
2032     */
2033    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2034    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="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." )
2035    protected List<UsageContext> useContext;
2036
2037    /**
2038     * The name of the organization or individual that published the evidence variable.
2039     */
2040    @Child(name = "publisher", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=true)
2041    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the evidence variable." )
2042    protected StringType publisher;
2043
2044    /**
2045     * Contact details to assist a user in finding and communicating with the publisher.
2046     */
2047    @Child(name = "contact", type = {ContactDetail.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2048    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
2049    protected List<ContactDetail> contact;
2050
2051    /**
2052     * An individiual or organization primarily involved in the creation and maintenance of the content.
2053     */
2054    @Child(name = "author", type = {ContactDetail.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2055    @Description(shortDefinition="Who authored the content", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the content." )
2056    protected List<ContactDetail> author;
2057
2058    /**
2059     * An individual or organization primarily responsible for internal coherence of the content.
2060     */
2061    @Child(name = "editor", type = {ContactDetail.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2062    @Description(shortDefinition="Who edited the content", formalDefinition="An individual or organization primarily responsible for internal coherence of the content." )
2063    protected List<ContactDetail> editor;
2064
2065    /**
2066     * An individual or organization primarily responsible for review of some aspect of the content.
2067     */
2068    @Child(name = "reviewer", type = {ContactDetail.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2069    @Description(shortDefinition="Who reviewed the content", formalDefinition="An individual or organization primarily responsible for review of some aspect of the content." )
2070    protected List<ContactDetail> reviewer;
2071
2072    /**
2073     * An individual or organization responsible for officially endorsing the content for use in some setting.
2074     */
2075    @Child(name = "endorser", type = {ContactDetail.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2076    @Description(shortDefinition="Who endorsed the content", formalDefinition="An individual or organization responsible for officially endorsing the content for use in some setting." )
2077    protected List<ContactDetail> endorser;
2078
2079    /**
2080     * Related artifacts such as additional documentation, justification, or bibliographic references.
2081     */
2082    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2083    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, or bibliographic references." )
2084    protected List<RelatedArtifact> relatedArtifact;
2085
2086    /**
2087     * True if the actual variable measured, false if a conceptual representation of the intended variable.
2088     */
2089    @Child(name = "actual", type = {BooleanType.class}, order=19, min=0, max=1, modifier=false, summary=false)
2090    @Description(shortDefinition="Actual or conceptual", formalDefinition="True if the actual variable measured, false if a conceptual representation of the intended variable." )
2091    protected BooleanType actual;
2092
2093    /**
2094     * Used to specify how two or more characteristics are combined.
2095     */
2096    @Child(name = "characteristicCombination", type = {}, order=20, min=0, max=1, modifier=false, summary=false)
2097    @Description(shortDefinition="Used to specify how two or more characteristics are combined", formalDefinition="Used to specify how two or more characteristics are combined." )
2098    protected EvidenceVariableCharacteristicCombinationComponent characteristicCombination;
2099
2100    /**
2101     * A characteristic that defines the members of the evidence element. Multiple characteristics are applied with "and" semantics.
2102     */
2103    @Child(name = "characteristic", type = {}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2104    @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." )
2105    protected List<EvidenceVariableCharacteristicComponent> characteristic;
2106
2107    /**
2108     * continuous | dichotomous | ordinal | polychotomous.
2109     */
2110    @Child(name = "handling", type = {CodeType.class}, order=22, min=0, max=1, modifier=false, summary=false)
2111    @Description(shortDefinition="continuous | dichotomous | ordinal | polychotomous", formalDefinition="continuous | dichotomous | ordinal | polychotomous." )
2112    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/variable-handling")
2113    protected Enumeration<EvidenceVariableHandling> handling;
2114
2115    /**
2116     * A grouping for ordinal or polychotomous variables.
2117     */
2118    @Child(name = "category", type = {}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2119    @Description(shortDefinition="A grouping for ordinal or polychotomous variables", formalDefinition="A grouping for ordinal or polychotomous variables." )
2120    protected List<EvidenceVariableCategoryComponent> category;
2121
2122    private static final long serialVersionUID = -208109028L;
2123
2124  /**
2125   * Constructor
2126   */
2127    public EvidenceVariable() {
2128      super();
2129    }
2130
2131  /**
2132   * Constructor
2133   */
2134    public EvidenceVariable(PublicationStatus status) {
2135      super();
2136      this.setStatus(status);
2137    }
2138
2139    /**
2140     * @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
2141     */
2142    public UriType getUrlElement() { 
2143      if (this.url == null)
2144        if (Configuration.errorOnAutoCreate())
2145          throw new Error("Attempt to auto-create EvidenceVariable.url");
2146        else if (Configuration.doAutoCreate())
2147          this.url = new UriType(); // bb
2148      return this.url;
2149    }
2150
2151    public boolean hasUrlElement() { 
2152      return this.url != null && !this.url.isEmpty();
2153    }
2154
2155    public boolean hasUrl() { 
2156      return this.url != null && !this.url.isEmpty();
2157    }
2158
2159    /**
2160     * @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
2161     */
2162    public EvidenceVariable setUrlElement(UriType value) { 
2163      this.url = value;
2164      return this;
2165    }
2166
2167    /**
2168     * @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.
2169     */
2170    public String getUrl() { 
2171      return this.url == null ? null : this.url.getValue();
2172    }
2173
2174    /**
2175     * @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.
2176     */
2177    public EvidenceVariable setUrl(String value) { 
2178      if (Utilities.noString(value))
2179        this.url = null;
2180      else {
2181        if (this.url == null)
2182          this.url = new UriType();
2183        this.url.setValue(value);
2184      }
2185      return this;
2186    }
2187
2188    /**
2189     * @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.)
2190     */
2191    public List<Identifier> getIdentifier() { 
2192      if (this.identifier == null)
2193        this.identifier = new ArrayList<Identifier>();
2194      return this.identifier;
2195    }
2196
2197    /**
2198     * @return Returns a reference to <code>this</code> for easy method chaining
2199     */
2200    public EvidenceVariable setIdentifier(List<Identifier> theIdentifier) { 
2201      this.identifier = theIdentifier;
2202      return this;
2203    }
2204
2205    public boolean hasIdentifier() { 
2206      if (this.identifier == null)
2207        return false;
2208      for (Identifier item : this.identifier)
2209        if (!item.isEmpty())
2210          return true;
2211      return false;
2212    }
2213
2214    public Identifier addIdentifier() { //3
2215      Identifier t = new Identifier();
2216      if (this.identifier == null)
2217        this.identifier = new ArrayList<Identifier>();
2218      this.identifier.add(t);
2219      return t;
2220    }
2221
2222    public EvidenceVariable addIdentifier(Identifier t) { //3
2223      if (t == null)
2224        return this;
2225      if (this.identifier == null)
2226        this.identifier = new ArrayList<Identifier>();
2227      this.identifier.add(t);
2228      return this;
2229    }
2230
2231    /**
2232     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2233     */
2234    public Identifier getIdentifierFirstRep() { 
2235      if (getIdentifier().isEmpty()) {
2236        addIdentifier();
2237      }
2238      return getIdentifier().get(0);
2239    }
2240
2241    /**
2242     * @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
2243     */
2244    public StringType getVersionElement() { 
2245      if (this.version == null)
2246        if (Configuration.errorOnAutoCreate())
2247          throw new Error("Attempt to auto-create EvidenceVariable.version");
2248        else if (Configuration.doAutoCreate())
2249          this.version = new StringType(); // bb
2250      return this.version;
2251    }
2252
2253    public boolean hasVersionElement() { 
2254      return this.version != null && !this.version.isEmpty();
2255    }
2256
2257    public boolean hasVersion() { 
2258      return this.version != null && !this.version.isEmpty();
2259    }
2260
2261    /**
2262     * @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
2263     */
2264    public EvidenceVariable setVersionElement(StringType value) { 
2265      this.version = value;
2266      return this;
2267    }
2268
2269    /**
2270     * @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.
2271     */
2272    public String getVersion() { 
2273      return this.version == null ? null : this.version.getValue();
2274    }
2275
2276    /**
2277     * @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.
2278     */
2279    public EvidenceVariable setVersion(String value) { 
2280      if (Utilities.noString(value))
2281        this.version = null;
2282      else {
2283        if (this.version == null)
2284          this.version = new StringType();
2285        this.version.setValue(value);
2286      }
2287      return this;
2288    }
2289
2290    /**
2291     * @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
2292     */
2293    public StringType getNameElement() { 
2294      if (this.name == null)
2295        if (Configuration.errorOnAutoCreate())
2296          throw new Error("Attempt to auto-create EvidenceVariable.name");
2297        else if (Configuration.doAutoCreate())
2298          this.name = new StringType(); // bb
2299      return this.name;
2300    }
2301
2302    public boolean hasNameElement() { 
2303      return this.name != null && !this.name.isEmpty();
2304    }
2305
2306    public boolean hasName() { 
2307      return this.name != null && !this.name.isEmpty();
2308    }
2309
2310    /**
2311     * @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
2312     */
2313    public EvidenceVariable setNameElement(StringType value) { 
2314      this.name = value;
2315      return this;
2316    }
2317
2318    /**
2319     * @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.
2320     */
2321    public String getName() { 
2322      return this.name == null ? null : this.name.getValue();
2323    }
2324
2325    /**
2326     * @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.
2327     */
2328    public EvidenceVariable setName(String value) { 
2329      if (Utilities.noString(value))
2330        this.name = null;
2331      else {
2332        if (this.name == null)
2333          this.name = new StringType();
2334        this.name.setValue(value);
2335      }
2336      return this;
2337    }
2338
2339    /**
2340     * @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
2341     */
2342    public StringType getTitleElement() { 
2343      if (this.title == null)
2344        if (Configuration.errorOnAutoCreate())
2345          throw new Error("Attempt to auto-create EvidenceVariable.title");
2346        else if (Configuration.doAutoCreate())
2347          this.title = new StringType(); // bb
2348      return this.title;
2349    }
2350
2351    public boolean hasTitleElement() { 
2352      return this.title != null && !this.title.isEmpty();
2353    }
2354
2355    public boolean hasTitle() { 
2356      return this.title != null && !this.title.isEmpty();
2357    }
2358
2359    /**
2360     * @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
2361     */
2362    public EvidenceVariable setTitleElement(StringType value) { 
2363      this.title = value;
2364      return this;
2365    }
2366
2367    /**
2368     * @return A short, descriptive, user-friendly title for the evidence variable.
2369     */
2370    public String getTitle() { 
2371      return this.title == null ? null : this.title.getValue();
2372    }
2373
2374    /**
2375     * @param value A short, descriptive, user-friendly title for the evidence variable.
2376     */
2377    public EvidenceVariable setTitle(String value) { 
2378      if (Utilities.noString(value))
2379        this.title = null;
2380      else {
2381        if (this.title == null)
2382          this.title = new StringType();
2383        this.title.setValue(value);
2384      }
2385      return this;
2386    }
2387
2388    /**
2389     * @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
2390     */
2391    public StringType getShortTitleElement() { 
2392      if (this.shortTitle == null)
2393        if (Configuration.errorOnAutoCreate())
2394          throw new Error("Attempt to auto-create EvidenceVariable.shortTitle");
2395        else if (Configuration.doAutoCreate())
2396          this.shortTitle = new StringType(); // bb
2397      return this.shortTitle;
2398    }
2399
2400    public boolean hasShortTitleElement() { 
2401      return this.shortTitle != null && !this.shortTitle.isEmpty();
2402    }
2403
2404    public boolean hasShortTitle() { 
2405      return this.shortTitle != null && !this.shortTitle.isEmpty();
2406    }
2407
2408    /**
2409     * @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
2410     */
2411    public EvidenceVariable setShortTitleElement(StringType value) { 
2412      this.shortTitle = value;
2413      return this;
2414    }
2415
2416    /**
2417     * @return The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
2418     */
2419    public String getShortTitle() { 
2420      return this.shortTitle == null ? null : this.shortTitle.getValue();
2421    }
2422
2423    /**
2424     * @param value The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
2425     */
2426    public EvidenceVariable setShortTitle(String value) { 
2427      if (Utilities.noString(value))
2428        this.shortTitle = null;
2429      else {
2430        if (this.shortTitle == null)
2431          this.shortTitle = new StringType();
2432        this.shortTitle.setValue(value);
2433      }
2434      return this;
2435    }
2436
2437    /**
2438     * @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
2439     */
2440    public StringType getSubtitleElement() { 
2441      if (this.subtitle == null)
2442        if (Configuration.errorOnAutoCreate())
2443          throw new Error("Attempt to auto-create EvidenceVariable.subtitle");
2444        else if (Configuration.doAutoCreate())
2445          this.subtitle = new StringType(); // bb
2446      return this.subtitle;
2447    }
2448
2449    public boolean hasSubtitleElement() { 
2450      return this.subtitle != null && !this.subtitle.isEmpty();
2451    }
2452
2453    public boolean hasSubtitle() { 
2454      return this.subtitle != null && !this.subtitle.isEmpty();
2455    }
2456
2457    /**
2458     * @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
2459     */
2460    public EvidenceVariable setSubtitleElement(StringType value) { 
2461      this.subtitle = value;
2462      return this;
2463    }
2464
2465    /**
2466     * @return An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
2467     */
2468    public String getSubtitle() { 
2469      return this.subtitle == null ? null : this.subtitle.getValue();
2470    }
2471
2472    /**
2473     * @param value An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
2474     */
2475    public EvidenceVariable setSubtitle(String value) { 
2476      if (Utilities.noString(value))
2477        this.subtitle = null;
2478      else {
2479        if (this.subtitle == null)
2480          this.subtitle = new StringType();
2481        this.subtitle.setValue(value);
2482      }
2483      return this;
2484    }
2485
2486    /**
2487     * @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
2488     */
2489    public Enumeration<PublicationStatus> getStatusElement() { 
2490      if (this.status == null)
2491        if (Configuration.errorOnAutoCreate())
2492          throw new Error("Attempt to auto-create EvidenceVariable.status");
2493        else if (Configuration.doAutoCreate())
2494          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2495      return this.status;
2496    }
2497
2498    public boolean hasStatusElement() { 
2499      return this.status != null && !this.status.isEmpty();
2500    }
2501
2502    public boolean hasStatus() { 
2503      return this.status != null && !this.status.isEmpty();
2504    }
2505
2506    /**
2507     * @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
2508     */
2509    public EvidenceVariable setStatusElement(Enumeration<PublicationStatus> value) { 
2510      this.status = value;
2511      return this;
2512    }
2513
2514    /**
2515     * @return The status of this evidence variable. Enables tracking the life-cycle of the content.
2516     */
2517    public PublicationStatus getStatus() { 
2518      return this.status == null ? null : this.status.getValue();
2519    }
2520
2521    /**
2522     * @param value The status of this evidence variable. Enables tracking the life-cycle of the content.
2523     */
2524    public EvidenceVariable setStatus(PublicationStatus value) { 
2525        if (this.status == null)
2526          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
2527        this.status.setValue(value);
2528      return this;
2529    }
2530
2531    /**
2532     * @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
2533     */
2534    public DateTimeType getDateElement() { 
2535      if (this.date == null)
2536        if (Configuration.errorOnAutoCreate())
2537          throw new Error("Attempt to auto-create EvidenceVariable.date");
2538        else if (Configuration.doAutoCreate())
2539          this.date = new DateTimeType(); // bb
2540      return this.date;
2541    }
2542
2543    public boolean hasDateElement() { 
2544      return this.date != null && !this.date.isEmpty();
2545    }
2546
2547    public boolean hasDate() { 
2548      return this.date != null && !this.date.isEmpty();
2549    }
2550
2551    /**
2552     * @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
2553     */
2554    public EvidenceVariable setDateElement(DateTimeType value) { 
2555      this.date = value;
2556      return this;
2557    }
2558
2559    /**
2560     * @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.
2561     */
2562    public Date getDate() { 
2563      return this.date == null ? null : this.date.getValue();
2564    }
2565
2566    /**
2567     * @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.
2568     */
2569    public EvidenceVariable setDate(Date value) { 
2570      if (value == null)
2571        this.date = null;
2572      else {
2573        if (this.date == null)
2574          this.date = new DateTimeType();
2575        this.date.setValue(value);
2576      }
2577      return this;
2578    }
2579
2580    /**
2581     * @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
2582     */
2583    public MarkdownType getDescriptionElement() { 
2584      if (this.description == null)
2585        if (Configuration.errorOnAutoCreate())
2586          throw new Error("Attempt to auto-create EvidenceVariable.description");
2587        else if (Configuration.doAutoCreate())
2588          this.description = new MarkdownType(); // bb
2589      return this.description;
2590    }
2591
2592    public boolean hasDescriptionElement() { 
2593      return this.description != null && !this.description.isEmpty();
2594    }
2595
2596    public boolean hasDescription() { 
2597      return this.description != null && !this.description.isEmpty();
2598    }
2599
2600    /**
2601     * @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
2602     */
2603    public EvidenceVariable setDescriptionElement(MarkdownType value) { 
2604      this.description = value;
2605      return this;
2606    }
2607
2608    /**
2609     * @return A free text natural language description of the evidence variable from a consumer's perspective.
2610     */
2611    public String getDescription() { 
2612      return this.description == null ? null : this.description.getValue();
2613    }
2614
2615    /**
2616     * @param value A free text natural language description of the evidence variable from a consumer's perspective.
2617     */
2618    public EvidenceVariable setDescription(String value) { 
2619      if (value == null)
2620        this.description = null;
2621      else {
2622        if (this.description == null)
2623          this.description = new MarkdownType();
2624        this.description.setValue(value);
2625      }
2626      return this;
2627    }
2628
2629    /**
2630     * @return {@link #note} (A human-readable string to clarify or explain concepts about the resource.)
2631     */
2632    public List<Annotation> getNote() { 
2633      if (this.note == null)
2634        this.note = new ArrayList<Annotation>();
2635      return this.note;
2636    }
2637
2638    /**
2639     * @return Returns a reference to <code>this</code> for easy method chaining
2640     */
2641    public EvidenceVariable setNote(List<Annotation> theNote) { 
2642      this.note = theNote;
2643      return this;
2644    }
2645
2646    public boolean hasNote() { 
2647      if (this.note == null)
2648        return false;
2649      for (Annotation item : this.note)
2650        if (!item.isEmpty())
2651          return true;
2652      return false;
2653    }
2654
2655    public Annotation addNote() { //3
2656      Annotation t = new Annotation();
2657      if (this.note == null)
2658        this.note = new ArrayList<Annotation>();
2659      this.note.add(t);
2660      return t;
2661    }
2662
2663    public EvidenceVariable addNote(Annotation t) { //3
2664      if (t == null)
2665        return this;
2666      if (this.note == null)
2667        this.note = new ArrayList<Annotation>();
2668      this.note.add(t);
2669      return this;
2670    }
2671
2672    /**
2673     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2674     */
2675    public Annotation getNoteFirstRep() { 
2676      if (getNote().isEmpty()) {
2677        addNote();
2678      }
2679      return getNote().get(0);
2680    }
2681
2682    /**
2683     * @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.)
2684     */
2685    public List<UsageContext> getUseContext() { 
2686      if (this.useContext == null)
2687        this.useContext = new ArrayList<UsageContext>();
2688      return this.useContext;
2689    }
2690
2691    /**
2692     * @return Returns a reference to <code>this</code> for easy method chaining
2693     */
2694    public EvidenceVariable setUseContext(List<UsageContext> theUseContext) { 
2695      this.useContext = theUseContext;
2696      return this;
2697    }
2698
2699    public boolean hasUseContext() { 
2700      if (this.useContext == null)
2701        return false;
2702      for (UsageContext item : this.useContext)
2703        if (!item.isEmpty())
2704          return true;
2705      return false;
2706    }
2707
2708    public UsageContext addUseContext() { //3
2709      UsageContext t = new UsageContext();
2710      if (this.useContext == null)
2711        this.useContext = new ArrayList<UsageContext>();
2712      this.useContext.add(t);
2713      return t;
2714    }
2715
2716    public EvidenceVariable addUseContext(UsageContext t) { //3
2717      if (t == null)
2718        return this;
2719      if (this.useContext == null)
2720        this.useContext = new ArrayList<UsageContext>();
2721      this.useContext.add(t);
2722      return this;
2723    }
2724
2725    /**
2726     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
2727     */
2728    public UsageContext getUseContextFirstRep() { 
2729      if (getUseContext().isEmpty()) {
2730        addUseContext();
2731      }
2732      return getUseContext().get(0);
2733    }
2734
2735    /**
2736     * @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
2737     */
2738    public StringType getPublisherElement() { 
2739      if (this.publisher == null)
2740        if (Configuration.errorOnAutoCreate())
2741          throw new Error("Attempt to auto-create EvidenceVariable.publisher");
2742        else if (Configuration.doAutoCreate())
2743          this.publisher = new StringType(); // bb
2744      return this.publisher;
2745    }
2746
2747    public boolean hasPublisherElement() { 
2748      return this.publisher != null && !this.publisher.isEmpty();
2749    }
2750
2751    public boolean hasPublisher() { 
2752      return this.publisher != null && !this.publisher.isEmpty();
2753    }
2754
2755    /**
2756     * @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
2757     */
2758    public EvidenceVariable setPublisherElement(StringType value) { 
2759      this.publisher = value;
2760      return this;
2761    }
2762
2763    /**
2764     * @return The name of the organization or individual that published the evidence variable.
2765     */
2766    public String getPublisher() { 
2767      return this.publisher == null ? null : this.publisher.getValue();
2768    }
2769
2770    /**
2771     * @param value The name of the organization or individual that published the evidence variable.
2772     */
2773    public EvidenceVariable setPublisher(String value) { 
2774      if (Utilities.noString(value))
2775        this.publisher = null;
2776      else {
2777        if (this.publisher == null)
2778          this.publisher = new StringType();
2779        this.publisher.setValue(value);
2780      }
2781      return this;
2782    }
2783
2784    /**
2785     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2786     */
2787    public List<ContactDetail> getContact() { 
2788      if (this.contact == null)
2789        this.contact = new ArrayList<ContactDetail>();
2790      return this.contact;
2791    }
2792
2793    /**
2794     * @return Returns a reference to <code>this</code> for easy method chaining
2795     */
2796    public EvidenceVariable setContact(List<ContactDetail> theContact) { 
2797      this.contact = theContact;
2798      return this;
2799    }
2800
2801    public boolean hasContact() { 
2802      if (this.contact == null)
2803        return false;
2804      for (ContactDetail item : this.contact)
2805        if (!item.isEmpty())
2806          return true;
2807      return false;
2808    }
2809
2810    public ContactDetail addContact() { //3
2811      ContactDetail t = new ContactDetail();
2812      if (this.contact == null)
2813        this.contact = new ArrayList<ContactDetail>();
2814      this.contact.add(t);
2815      return t;
2816    }
2817
2818    public EvidenceVariable addContact(ContactDetail t) { //3
2819      if (t == null)
2820        return this;
2821      if (this.contact == null)
2822        this.contact = new ArrayList<ContactDetail>();
2823      this.contact.add(t);
2824      return this;
2825    }
2826
2827    /**
2828     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
2829     */
2830    public ContactDetail getContactFirstRep() { 
2831      if (getContact().isEmpty()) {
2832        addContact();
2833      }
2834      return getContact().get(0);
2835    }
2836
2837    /**
2838     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the content.)
2839     */
2840    public List<ContactDetail> getAuthor() { 
2841      if (this.author == null)
2842        this.author = new ArrayList<ContactDetail>();
2843      return this.author;
2844    }
2845
2846    /**
2847     * @return Returns a reference to <code>this</code> for easy method chaining
2848     */
2849    public EvidenceVariable setAuthor(List<ContactDetail> theAuthor) { 
2850      this.author = theAuthor;
2851      return this;
2852    }
2853
2854    public boolean hasAuthor() { 
2855      if (this.author == null)
2856        return false;
2857      for (ContactDetail item : this.author)
2858        if (!item.isEmpty())
2859          return true;
2860      return false;
2861    }
2862
2863    public ContactDetail addAuthor() { //3
2864      ContactDetail t = new ContactDetail();
2865      if (this.author == null)
2866        this.author = new ArrayList<ContactDetail>();
2867      this.author.add(t);
2868      return t;
2869    }
2870
2871    public EvidenceVariable addAuthor(ContactDetail t) { //3
2872      if (t == null)
2873        return this;
2874      if (this.author == null)
2875        this.author = new ArrayList<ContactDetail>();
2876      this.author.add(t);
2877      return this;
2878    }
2879
2880    /**
2881     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
2882     */
2883    public ContactDetail getAuthorFirstRep() { 
2884      if (getAuthor().isEmpty()) {
2885        addAuthor();
2886      }
2887      return getAuthor().get(0);
2888    }
2889
2890    /**
2891     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the content.)
2892     */
2893    public List<ContactDetail> getEditor() { 
2894      if (this.editor == null)
2895        this.editor = new ArrayList<ContactDetail>();
2896      return this.editor;
2897    }
2898
2899    /**
2900     * @return Returns a reference to <code>this</code> for easy method chaining
2901     */
2902    public EvidenceVariable setEditor(List<ContactDetail> theEditor) { 
2903      this.editor = theEditor;
2904      return this;
2905    }
2906
2907    public boolean hasEditor() { 
2908      if (this.editor == null)
2909        return false;
2910      for (ContactDetail item : this.editor)
2911        if (!item.isEmpty())
2912          return true;
2913      return false;
2914    }
2915
2916    public ContactDetail addEditor() { //3
2917      ContactDetail t = new ContactDetail();
2918      if (this.editor == null)
2919        this.editor = new ArrayList<ContactDetail>();
2920      this.editor.add(t);
2921      return t;
2922    }
2923
2924    public EvidenceVariable addEditor(ContactDetail t) { //3
2925      if (t == null)
2926        return this;
2927      if (this.editor == null)
2928        this.editor = new ArrayList<ContactDetail>();
2929      this.editor.add(t);
2930      return this;
2931    }
2932
2933    /**
2934     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist {3}
2935     */
2936    public ContactDetail getEditorFirstRep() { 
2937      if (getEditor().isEmpty()) {
2938        addEditor();
2939      }
2940      return getEditor().get(0);
2941    }
2942
2943    /**
2944     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the content.)
2945     */
2946    public List<ContactDetail> getReviewer() { 
2947      if (this.reviewer == null)
2948        this.reviewer = new ArrayList<ContactDetail>();
2949      return this.reviewer;
2950    }
2951
2952    /**
2953     * @return Returns a reference to <code>this</code> for easy method chaining
2954     */
2955    public EvidenceVariable setReviewer(List<ContactDetail> theReviewer) { 
2956      this.reviewer = theReviewer;
2957      return this;
2958    }
2959
2960    public boolean hasReviewer() { 
2961      if (this.reviewer == null)
2962        return false;
2963      for (ContactDetail item : this.reviewer)
2964        if (!item.isEmpty())
2965          return true;
2966      return false;
2967    }
2968
2969    public ContactDetail addReviewer() { //3
2970      ContactDetail t = new ContactDetail();
2971      if (this.reviewer == null)
2972        this.reviewer = new ArrayList<ContactDetail>();
2973      this.reviewer.add(t);
2974      return t;
2975    }
2976
2977    public EvidenceVariable addReviewer(ContactDetail t) { //3
2978      if (t == null)
2979        return this;
2980      if (this.reviewer == null)
2981        this.reviewer = new ArrayList<ContactDetail>();
2982      this.reviewer.add(t);
2983      return this;
2984    }
2985
2986    /**
2987     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist {3}
2988     */
2989    public ContactDetail getReviewerFirstRep() { 
2990      if (getReviewer().isEmpty()) {
2991        addReviewer();
2992      }
2993      return getReviewer().get(0);
2994    }
2995
2996    /**
2997     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the content for use in some setting.)
2998     */
2999    public List<ContactDetail> getEndorser() { 
3000      if (this.endorser == null)
3001        this.endorser = new ArrayList<ContactDetail>();
3002      return this.endorser;
3003    }
3004
3005    /**
3006     * @return Returns a reference to <code>this</code> for easy method chaining
3007     */
3008    public EvidenceVariable setEndorser(List<ContactDetail> theEndorser) { 
3009      this.endorser = theEndorser;
3010      return this;
3011    }
3012
3013    public boolean hasEndorser() { 
3014      if (this.endorser == null)
3015        return false;
3016      for (ContactDetail item : this.endorser)
3017        if (!item.isEmpty())
3018          return true;
3019      return false;
3020    }
3021
3022    public ContactDetail addEndorser() { //3
3023      ContactDetail t = new ContactDetail();
3024      if (this.endorser == null)
3025        this.endorser = new ArrayList<ContactDetail>();
3026      this.endorser.add(t);
3027      return t;
3028    }
3029
3030    public EvidenceVariable addEndorser(ContactDetail t) { //3
3031      if (t == null)
3032        return this;
3033      if (this.endorser == null)
3034        this.endorser = new ArrayList<ContactDetail>();
3035      this.endorser.add(t);
3036      return this;
3037    }
3038
3039    /**
3040     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist {3}
3041     */
3042    public ContactDetail getEndorserFirstRep() { 
3043      if (getEndorser().isEmpty()) {
3044        addEndorser();
3045      }
3046      return getEndorser().get(0);
3047    }
3048
3049    /**
3050     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, or bibliographic references.)
3051     */
3052    public List<RelatedArtifact> getRelatedArtifact() { 
3053      if (this.relatedArtifact == null)
3054        this.relatedArtifact = new ArrayList<RelatedArtifact>();
3055      return this.relatedArtifact;
3056    }
3057
3058    /**
3059     * @return Returns a reference to <code>this</code> for easy method chaining
3060     */
3061    public EvidenceVariable setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
3062      this.relatedArtifact = theRelatedArtifact;
3063      return this;
3064    }
3065
3066    public boolean hasRelatedArtifact() { 
3067      if (this.relatedArtifact == null)
3068        return false;
3069      for (RelatedArtifact item : this.relatedArtifact)
3070        if (!item.isEmpty())
3071          return true;
3072      return false;
3073    }
3074
3075    public RelatedArtifact addRelatedArtifact() { //3
3076      RelatedArtifact t = new RelatedArtifact();
3077      if (this.relatedArtifact == null)
3078        this.relatedArtifact = new ArrayList<RelatedArtifact>();
3079      this.relatedArtifact.add(t);
3080      return t;
3081    }
3082
3083    public EvidenceVariable addRelatedArtifact(RelatedArtifact t) { //3
3084      if (t == null)
3085        return this;
3086      if (this.relatedArtifact == null)
3087        this.relatedArtifact = new ArrayList<RelatedArtifact>();
3088      this.relatedArtifact.add(t);
3089      return this;
3090    }
3091
3092    /**
3093     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist {3}
3094     */
3095    public RelatedArtifact getRelatedArtifactFirstRep() { 
3096      if (getRelatedArtifact().isEmpty()) {
3097        addRelatedArtifact();
3098      }
3099      return getRelatedArtifact().get(0);
3100    }
3101
3102    /**
3103     * @return {@link #actual} (True if the actual variable measured, false if a conceptual representation of the intended variable.). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value
3104     */
3105    public BooleanType getActualElement() { 
3106      if (this.actual == null)
3107        if (Configuration.errorOnAutoCreate())
3108          throw new Error("Attempt to auto-create EvidenceVariable.actual");
3109        else if (Configuration.doAutoCreate())
3110          this.actual = new BooleanType(); // bb
3111      return this.actual;
3112    }
3113
3114    public boolean hasActualElement() { 
3115      return this.actual != null && !this.actual.isEmpty();
3116    }
3117
3118    public boolean hasActual() { 
3119      return this.actual != null && !this.actual.isEmpty();
3120    }
3121
3122    /**
3123     * @param value {@link #actual} (True if the actual variable measured, false if a conceptual representation of the intended variable.). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value
3124     */
3125    public EvidenceVariable setActualElement(BooleanType value) { 
3126      this.actual = value;
3127      return this;
3128    }
3129
3130    /**
3131     * @return True if the actual variable measured, false if a conceptual representation of the intended variable.
3132     */
3133    public boolean getActual() { 
3134      return this.actual == null || this.actual.isEmpty() ? false : this.actual.getValue();
3135    }
3136
3137    /**
3138     * @param value True if the actual variable measured, false if a conceptual representation of the intended variable.
3139     */
3140    public EvidenceVariable setActual(boolean value) { 
3141        if (this.actual == null)
3142          this.actual = new BooleanType();
3143        this.actual.setValue(value);
3144      return this;
3145    }
3146
3147    /**
3148     * @return {@link #characteristicCombination} (Used to specify how two or more characteristics are combined.)
3149     */
3150    public EvidenceVariableCharacteristicCombinationComponent getCharacteristicCombination() { 
3151      if (this.characteristicCombination == null)
3152        if (Configuration.errorOnAutoCreate())
3153          throw new Error("Attempt to auto-create EvidenceVariable.characteristicCombination");
3154        else if (Configuration.doAutoCreate())
3155          this.characteristicCombination = new EvidenceVariableCharacteristicCombinationComponent(); // cc
3156      return this.characteristicCombination;
3157    }
3158
3159    public boolean hasCharacteristicCombination() { 
3160      return this.characteristicCombination != null && !this.characteristicCombination.isEmpty();
3161    }
3162
3163    /**
3164     * @param value {@link #characteristicCombination} (Used to specify how two or more characteristics are combined.)
3165     */
3166    public EvidenceVariable setCharacteristicCombination(EvidenceVariableCharacteristicCombinationComponent value) { 
3167      this.characteristicCombination = value;
3168      return this;
3169    }
3170
3171    /**
3172     * @return {@link #characteristic} (A characteristic that defines the members of the evidence element. Multiple characteristics are applied with "and" semantics.)
3173     */
3174    public List<EvidenceVariableCharacteristicComponent> getCharacteristic() { 
3175      if (this.characteristic == null)
3176        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
3177      return this.characteristic;
3178    }
3179
3180    /**
3181     * @return Returns a reference to <code>this</code> for easy method chaining
3182     */
3183    public EvidenceVariable setCharacteristic(List<EvidenceVariableCharacteristicComponent> theCharacteristic) { 
3184      this.characteristic = theCharacteristic;
3185      return this;
3186    }
3187
3188    public boolean hasCharacteristic() { 
3189      if (this.characteristic == null)
3190        return false;
3191      for (EvidenceVariableCharacteristicComponent item : this.characteristic)
3192        if (!item.isEmpty())
3193          return true;
3194      return false;
3195    }
3196
3197    public EvidenceVariableCharacteristicComponent addCharacteristic() { //3
3198      EvidenceVariableCharacteristicComponent t = new EvidenceVariableCharacteristicComponent();
3199      if (this.characteristic == null)
3200        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
3201      this.characteristic.add(t);
3202      return t;
3203    }
3204
3205    public EvidenceVariable addCharacteristic(EvidenceVariableCharacteristicComponent t) { //3
3206      if (t == null)
3207        return this;
3208      if (this.characteristic == null)
3209        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
3210      this.characteristic.add(t);
3211      return this;
3212    }
3213
3214    /**
3215     * @return The first repetition of repeating field {@link #characteristic}, creating it if it does not already exist {3}
3216     */
3217    public EvidenceVariableCharacteristicComponent getCharacteristicFirstRep() { 
3218      if (getCharacteristic().isEmpty()) {
3219        addCharacteristic();
3220      }
3221      return getCharacteristic().get(0);
3222    }
3223
3224    /**
3225     * @return {@link #handling} (continuous | dichotomous | ordinal | polychotomous.). This is the underlying object with id, value and extensions. The accessor "getHandling" gives direct access to the value
3226     */
3227    public Enumeration<EvidenceVariableHandling> getHandlingElement() { 
3228      if (this.handling == null)
3229        if (Configuration.errorOnAutoCreate())
3230          throw new Error("Attempt to auto-create EvidenceVariable.handling");
3231        else if (Configuration.doAutoCreate())
3232          this.handling = new Enumeration<EvidenceVariableHandling>(new EvidenceVariableHandlingEnumFactory()); // bb
3233      return this.handling;
3234    }
3235
3236    public boolean hasHandlingElement() { 
3237      return this.handling != null && !this.handling.isEmpty();
3238    }
3239
3240    public boolean hasHandling() { 
3241      return this.handling != null && !this.handling.isEmpty();
3242    }
3243
3244    /**
3245     * @param value {@link #handling} (continuous | dichotomous | ordinal | polychotomous.). This is the underlying object with id, value and extensions. The accessor "getHandling" gives direct access to the value
3246     */
3247    public EvidenceVariable setHandlingElement(Enumeration<EvidenceVariableHandling> value) { 
3248      this.handling = value;
3249      return this;
3250    }
3251
3252    /**
3253     * @return continuous | dichotomous | ordinal | polychotomous.
3254     */
3255    public EvidenceVariableHandling getHandling() { 
3256      return this.handling == null ? null : this.handling.getValue();
3257    }
3258
3259    /**
3260     * @param value continuous | dichotomous | ordinal | polychotomous.
3261     */
3262    public EvidenceVariable setHandling(EvidenceVariableHandling value) { 
3263      if (value == null)
3264        this.handling = null;
3265      else {
3266        if (this.handling == null)
3267          this.handling = new Enumeration<EvidenceVariableHandling>(new EvidenceVariableHandlingEnumFactory());
3268        this.handling.setValue(value);
3269      }
3270      return this;
3271    }
3272
3273    /**
3274     * @return {@link #category} (A grouping for ordinal or polychotomous variables.)
3275     */
3276    public List<EvidenceVariableCategoryComponent> getCategory() { 
3277      if (this.category == null)
3278        this.category = new ArrayList<EvidenceVariableCategoryComponent>();
3279      return this.category;
3280    }
3281
3282    /**
3283     * @return Returns a reference to <code>this</code> for easy method chaining
3284     */
3285    public EvidenceVariable setCategory(List<EvidenceVariableCategoryComponent> theCategory) { 
3286      this.category = theCategory;
3287      return this;
3288    }
3289
3290    public boolean hasCategory() { 
3291      if (this.category == null)
3292        return false;
3293      for (EvidenceVariableCategoryComponent item : this.category)
3294        if (!item.isEmpty())
3295          return true;
3296      return false;
3297    }
3298
3299    public EvidenceVariableCategoryComponent addCategory() { //3
3300      EvidenceVariableCategoryComponent t = new EvidenceVariableCategoryComponent();
3301      if (this.category == null)
3302        this.category = new ArrayList<EvidenceVariableCategoryComponent>();
3303      this.category.add(t);
3304      return t;
3305    }
3306
3307    public EvidenceVariable addCategory(EvidenceVariableCategoryComponent t) { //3
3308      if (t == null)
3309        return this;
3310      if (this.category == null)
3311        this.category = new ArrayList<EvidenceVariableCategoryComponent>();
3312      this.category.add(t);
3313      return this;
3314    }
3315
3316    /**
3317     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
3318     */
3319    public EvidenceVariableCategoryComponent getCategoryFirstRep() { 
3320      if (getCategory().isEmpty()) {
3321        addCategory();
3322      }
3323      return getCategory().get(0);
3324    }
3325
3326    /**
3327     * not supported on this implementation
3328     */
3329    @Override
3330    public int getExperimentalMax() { 
3331      return 0;
3332    }
3333    /**
3334     * @return {@link #experimental} (A Boolean value to indicate that this evidence variable is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
3335     */
3336    public BooleanType getExperimentalElement() { 
3337      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"experimental\"");
3338    }
3339
3340    public boolean hasExperimentalElement() { 
3341      return false;
3342    }
3343    public boolean hasExperimental() {
3344      return false;
3345    }
3346
3347    /**
3348     * @param value {@link #experimental} (A Boolean value to indicate that this evidence variable is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
3349     */
3350    public EvidenceVariable setExperimentalElement(BooleanType value) { 
3351      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"experimental\"");
3352    }
3353    public boolean getExperimental() { 
3354      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"experimental\"");
3355    }
3356    /**
3357     * @param value A Boolean value to indicate that this evidence variable is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3358     */
3359    public EvidenceVariable setExperimental(boolean value) { 
3360      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"experimental\"");
3361    }
3362    /**
3363     * not supported on this implementation
3364     */
3365    @Override
3366    public int getJurisdictionMax() { 
3367      return 0;
3368    }
3369    /**
3370     * @return {@link #jurisdiction} (A legal or geographic region in which the evidence variable is intended to be used.)
3371     */
3372    public List<CodeableConcept> getJurisdiction() { 
3373      return new ArrayList<>();
3374    }
3375    /**
3376     * @return Returns a reference to <code>this</code> for easy method chaining
3377     */
3378    public EvidenceVariable setJurisdiction(List<CodeableConcept> theJurisdiction) { 
3379      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
3380    }
3381    public boolean hasJurisdiction() { 
3382      return false;
3383    }
3384
3385    public CodeableConcept addJurisdiction() { //3
3386      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
3387    }
3388    public EvidenceVariable addJurisdiction(CodeableConcept t) { //3
3389      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
3390    }
3391    /**
3392     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {2}
3393     */
3394    public CodeableConcept getJurisdictionFirstRep() { 
3395      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
3396    }
3397    /**
3398     * not supported on this implementation
3399     */
3400    @Override
3401    public int getPurposeMax() { 
3402      return 0;
3403    }
3404    /**
3405     * @return {@link #purpose} (Explanation of why this evidence variable is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
3406     */
3407    public MarkdownType getPurposeElement() { 
3408      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
3409    }
3410
3411    public boolean hasPurposeElement() { 
3412      return false;
3413    }
3414    public boolean hasPurpose() {
3415      return false;
3416    }
3417
3418    /**
3419     * @param value {@link #purpose} (Explanation of why this evidence variable is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
3420     */
3421    public EvidenceVariable setPurposeElement(MarkdownType value) { 
3422      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
3423    }
3424    public String getPurpose() { 
3425      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
3426    }
3427    /**
3428     * @param value Explanation of why this evidence variable is needed and why it has been designed as it has.
3429     */
3430    public EvidenceVariable setPurpose(String value) { 
3431      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
3432    }
3433    /**
3434     * not supported on this implementation
3435     */
3436    @Override
3437    public int getCopyrightMax() { 
3438      return 0;
3439    }
3440    /**
3441     * @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
3442     */
3443    public MarkdownType getCopyrightElement() { 
3444      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"copyright\"");
3445    }
3446
3447    public boolean hasCopyrightElement() { 
3448      return false;
3449    }
3450    public boolean hasCopyright() {
3451      return false;
3452    }
3453
3454    /**
3455     * @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
3456     */
3457    public EvidenceVariable setCopyrightElement(MarkdownType value) { 
3458      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"copyright\"");
3459    }
3460    public String getCopyright() { 
3461      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"copyright\"");
3462    }
3463    /**
3464     * @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.
3465     */
3466    public EvidenceVariable setCopyright(String value) { 
3467      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"copyright\"");
3468    }
3469    /**
3470     * not supported on this implementation
3471     */
3472    @Override
3473    public int getApprovalDateMax() { 
3474      return 0;
3475    }
3476    /**
3477     * @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
3478     */
3479    public DateType getApprovalDateElement() { 
3480      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"approvalDate\"");
3481    }
3482
3483    public boolean hasApprovalDateElement() { 
3484      return false;
3485    }
3486    public boolean hasApprovalDate() {
3487      return false;
3488    }
3489
3490    /**
3491     * @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
3492     */
3493    public EvidenceVariable setApprovalDateElement(DateType value) { 
3494      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"approvalDate\"");
3495    }
3496    public Date getApprovalDate() { 
3497      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"approvalDate\"");
3498    }
3499    /**
3500     * @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.
3501     */
3502    public EvidenceVariable setApprovalDate(Date value) { 
3503      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"approvalDate\"");
3504    }
3505    /**
3506     * not supported on this implementation
3507     */
3508    @Override
3509    public int getLastReviewDateMax() { 
3510      return 0;
3511    }
3512    /**
3513     * @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
3514     */
3515    public DateType getLastReviewDateElement() { 
3516      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"lastReviewDate\"");
3517    }
3518
3519    public boolean hasLastReviewDateElement() { 
3520      return false;
3521    }
3522    public boolean hasLastReviewDate() {
3523      return false;
3524    }
3525
3526    /**
3527     * @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
3528     */
3529    public EvidenceVariable setLastReviewDateElement(DateType value) { 
3530      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"lastReviewDate\"");
3531    }
3532    public Date getLastReviewDate() { 
3533      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"lastReviewDate\"");
3534    }
3535    /**
3536     * @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.
3537     */
3538    public EvidenceVariable setLastReviewDate(Date value) { 
3539      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"lastReviewDate\"");
3540    }
3541    /**
3542     * not supported on this implementation
3543     */
3544    @Override
3545    public int getEffectivePeriodMax() { 
3546      return 0;
3547    }
3548    /**
3549     * @return {@link #effectivePeriod} (The period during which the evidence variable content was or is planned to be in active use.)
3550     */
3551    public Period getEffectivePeriod() { 
3552      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"effectivePeriod\"");
3553    }
3554    public boolean hasEffectivePeriod() { 
3555      return false;
3556    }
3557    /**
3558     * @param value {@link #effectivePeriod} (The period during which the evidence variable content was or is planned to be in active use.)
3559     */
3560    public EvidenceVariable setEffectivePeriod(Period value) { 
3561      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"effectivePeriod\"");
3562    }
3563
3564    /**
3565     * not supported on this implementation
3566     */
3567    @Override
3568    public int getTopicMax() { 
3569      return 0;
3570    }
3571    /**
3572     * @return {@link #topic} (Descriptive topics related to the content of the library. Topics provide a high-level categorization of the library that can be useful for filtering and searching.)
3573     */
3574    public List<CodeableConcept> getTopic() { 
3575      return new ArrayList<>();
3576    }
3577    /**
3578     * @return Returns a reference to <code>this</code> for easy method chaining
3579     */
3580    public EvidenceVariable setTopic(List<CodeableConcept> theTopic) { 
3581      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
3582    }
3583    public boolean hasTopic() { 
3584      return false;
3585    }
3586
3587    public CodeableConcept addTopic() { //3
3588      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
3589    }
3590    public EvidenceVariable addTopic(CodeableConcept t) { //3
3591      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
3592    }
3593    /**
3594     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist {2}
3595     */
3596    public CodeableConcept getTopicFirstRep() { 
3597      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
3598    }
3599      protected void listChildren(List<Property> children) {
3600        super.listChildren(children);
3601        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));
3602        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));
3603        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));
3604        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));
3605        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the evidence variable.", 0, 1, title));
3606        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));
3607        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the EvidenceVariable giving additional information about its content.", 0, 1, subtitle));
3608        children.add(new Property("status", "code", "The status of this evidence variable. Enables tracking the life-cycle of the content.", 0, 1, status));
3609        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));
3610        children.add(new Property("description", "markdown", "A free text natural language description of the evidence variable from a consumer's perspective.", 0, 1, description));
3611        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));
3612        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));
3613        children.add(new Property("publisher", "string", "The name of the organization or individual that published the evidence variable.", 0, 1, publisher));
3614        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));
3615        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));
3616        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));
3617        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));
3618        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));
3619        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
3620        children.add(new Property("actual", "boolean", "True if the actual variable measured, false if a conceptual representation of the intended variable.", 0, 1, actual));
3621        children.add(new Property("characteristicCombination", "", "Used to specify how two or more characteristics are combined.", 0, 1, characteristicCombination));
3622        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));
3623        children.add(new Property("handling", "code", "continuous | dichotomous | ordinal | polychotomous.", 0, 1, handling));
3624        children.add(new Property("category", "", "A grouping for ordinal or polychotomous variables.", 0, java.lang.Integer.MAX_VALUE, category));
3625      }
3626
3627      @Override
3628      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3629        switch (_hash) {
3630        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);
3631        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);
3632        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);
3633        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);
3634        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the evidence variable.", 0, 1, title);
3635        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);
3636        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);
3637        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);
3638        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);
3639        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);
3640        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);
3641        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);
3642        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the evidence variable.", 0, 1, publisher);
3643        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);
3644        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);
3645        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);
3646        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);
3647        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);
3648        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);
3649        case -1422939762: /*actual*/  return new Property("actual", "boolean", "True if the actual variable measured, false if a conceptual representation of the intended variable.", 0, 1, actual);
3650        case -861347276: /*characteristicCombination*/  return new Property("characteristicCombination", "", "Used to specify how two or more characteristics are combined.", 0, 1, characteristicCombination);
3651        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);
3652        case 2072805: /*handling*/  return new Property("handling", "code", "continuous | dichotomous | ordinal | polychotomous.", 0, 1, handling);
3653        case 50511102: /*category*/  return new Property("category", "", "A grouping for ordinal or polychotomous variables.", 0, java.lang.Integer.MAX_VALUE, category);
3654        default: return super.getNamedProperty(_hash, _name, _checkValid);
3655        }
3656
3657      }
3658
3659      @Override
3660      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3661        switch (hash) {
3662        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3663        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3664        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3665        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3666        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3667        case 1555503932: /*shortTitle*/ return this.shortTitle == null ? new Base[0] : new Base[] {this.shortTitle}; // StringType
3668        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
3669        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
3670        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3671        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3672        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
3673        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3674        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3675        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3676        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
3677        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
3678        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
3679        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
3680        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
3681        case -1422939762: /*actual*/ return this.actual == null ? new Base[0] : new Base[] {this.actual}; // BooleanType
3682        case -861347276: /*characteristicCombination*/ return this.characteristicCombination == null ? new Base[0] : new Base[] {this.characteristicCombination}; // EvidenceVariableCharacteristicCombinationComponent
3683        case 366313883: /*characteristic*/ return this.characteristic == null ? new Base[0] : this.characteristic.toArray(new Base[this.characteristic.size()]); // EvidenceVariableCharacteristicComponent
3684        case 2072805: /*handling*/ return this.handling == null ? new Base[0] : new Base[] {this.handling}; // Enumeration<EvidenceVariableHandling>
3685        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // EvidenceVariableCategoryComponent
3686        default: return super.getProperty(hash, name, checkValid);
3687        }
3688
3689      }
3690
3691      @Override
3692      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3693        switch (hash) {
3694        case 116079: // url
3695          this.url = TypeConvertor.castToUri(value); // UriType
3696          return value;
3697        case -1618432855: // identifier
3698          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3699          return value;
3700        case 351608024: // version
3701          this.version = TypeConvertor.castToString(value); // StringType
3702          return value;
3703        case 3373707: // name
3704          this.name = TypeConvertor.castToString(value); // StringType
3705          return value;
3706        case 110371416: // title
3707          this.title = TypeConvertor.castToString(value); // StringType
3708          return value;
3709        case 1555503932: // shortTitle
3710          this.shortTitle = TypeConvertor.castToString(value); // StringType
3711          return value;
3712        case -2060497896: // subtitle
3713          this.subtitle = TypeConvertor.castToString(value); // StringType
3714          return value;
3715        case -892481550: // status
3716          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3717          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3718          return value;
3719        case 3076014: // date
3720          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3721          return value;
3722        case -1724546052: // description
3723          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3724          return value;
3725        case 3387378: // note
3726          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
3727          return value;
3728        case -669707736: // useContext
3729          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
3730          return value;
3731        case 1447404028: // publisher
3732          this.publisher = TypeConvertor.castToString(value); // StringType
3733          return value;
3734        case 951526432: // contact
3735          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3736          return value;
3737        case -1406328437: // author
3738          this.getAuthor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3739          return value;
3740        case -1307827859: // editor
3741          this.getEditor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3742          return value;
3743        case -261190139: // reviewer
3744          this.getReviewer().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3745          return value;
3746        case 1740277666: // endorser
3747          this.getEndorser().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3748          return value;
3749        case 666807069: // relatedArtifact
3750          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value)); // RelatedArtifact
3751          return value;
3752        case -1422939762: // actual
3753          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
3754          return value;
3755        case -861347276: // characteristicCombination
3756          this.characteristicCombination = (EvidenceVariableCharacteristicCombinationComponent) value; // EvidenceVariableCharacteristicCombinationComponent
3757          return value;
3758        case 366313883: // characteristic
3759          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value); // EvidenceVariableCharacteristicComponent
3760          return value;
3761        case 2072805: // handling
3762          value = new EvidenceVariableHandlingEnumFactory().fromType(TypeConvertor.castToCode(value));
3763          this.handling = (Enumeration) value; // Enumeration<EvidenceVariableHandling>
3764          return value;
3765        case 50511102: // category
3766          this.getCategory().add((EvidenceVariableCategoryComponent) value); // EvidenceVariableCategoryComponent
3767          return value;
3768        default: return super.setProperty(hash, name, value);
3769        }
3770
3771      }
3772
3773      @Override
3774      public Base setProperty(String name, Base value) throws FHIRException {
3775        if (name.equals("url")) {
3776          this.url = TypeConvertor.castToUri(value); // UriType
3777        } else if (name.equals("identifier")) {
3778          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3779        } else if (name.equals("version")) {
3780          this.version = TypeConvertor.castToString(value); // StringType
3781        } else if (name.equals("name")) {
3782          this.name = TypeConvertor.castToString(value); // StringType
3783        } else if (name.equals("title")) {
3784          this.title = TypeConvertor.castToString(value); // StringType
3785        } else if (name.equals("shortTitle")) {
3786          this.shortTitle = TypeConvertor.castToString(value); // StringType
3787        } else if (name.equals("subtitle")) {
3788          this.subtitle = TypeConvertor.castToString(value); // StringType
3789        } else if (name.equals("status")) {
3790          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3791          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3792        } else if (name.equals("date")) {
3793          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3794        } else if (name.equals("description")) {
3795          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3796        } else if (name.equals("note")) {
3797          this.getNote().add(TypeConvertor.castToAnnotation(value));
3798        } else if (name.equals("useContext")) {
3799          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3800        } else if (name.equals("publisher")) {
3801          this.publisher = TypeConvertor.castToString(value); // StringType
3802        } else if (name.equals("contact")) {
3803          this.getContact().add(TypeConvertor.castToContactDetail(value));
3804        } else if (name.equals("author")) {
3805          this.getAuthor().add(TypeConvertor.castToContactDetail(value));
3806        } else if (name.equals("editor")) {
3807          this.getEditor().add(TypeConvertor.castToContactDetail(value));
3808        } else if (name.equals("reviewer")) {
3809          this.getReviewer().add(TypeConvertor.castToContactDetail(value));
3810        } else if (name.equals("endorser")) {
3811          this.getEndorser().add(TypeConvertor.castToContactDetail(value));
3812        } else if (name.equals("relatedArtifact")) {
3813          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value));
3814        } else if (name.equals("actual")) {
3815          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
3816        } else if (name.equals("characteristicCombination")) {
3817          this.characteristicCombination = (EvidenceVariableCharacteristicCombinationComponent) value; // EvidenceVariableCharacteristicCombinationComponent
3818        } else if (name.equals("characteristic")) {
3819          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value);
3820        } else if (name.equals("handling")) {
3821          value = new EvidenceVariableHandlingEnumFactory().fromType(TypeConvertor.castToCode(value));
3822          this.handling = (Enumeration) value; // Enumeration<EvidenceVariableHandling>
3823        } else if (name.equals("category")) {
3824          this.getCategory().add((EvidenceVariableCategoryComponent) value);
3825        } else
3826          return super.setProperty(name, value);
3827        return value;
3828      }
3829
3830      @Override
3831      public Base makeProperty(int hash, String name) throws FHIRException {
3832        switch (hash) {
3833        case 116079:  return getUrlElement();
3834        case -1618432855:  return addIdentifier(); 
3835        case 351608024:  return getVersionElement();
3836        case 3373707:  return getNameElement();
3837        case 110371416:  return getTitleElement();
3838        case 1555503932:  return getShortTitleElement();
3839        case -2060497896:  return getSubtitleElement();
3840        case -892481550:  return getStatusElement();
3841        case 3076014:  return getDateElement();
3842        case -1724546052:  return getDescriptionElement();
3843        case 3387378:  return addNote(); 
3844        case -669707736:  return addUseContext(); 
3845        case 1447404028:  return getPublisherElement();
3846        case 951526432:  return addContact(); 
3847        case -1406328437:  return addAuthor(); 
3848        case -1307827859:  return addEditor(); 
3849        case -261190139:  return addReviewer(); 
3850        case 1740277666:  return addEndorser(); 
3851        case 666807069:  return addRelatedArtifact(); 
3852        case -1422939762:  return getActualElement();
3853        case -861347276:  return getCharacteristicCombination();
3854        case 366313883:  return addCharacteristic(); 
3855        case 2072805:  return getHandlingElement();
3856        case 50511102:  return addCategory(); 
3857        default: return super.makeProperty(hash, name);
3858        }
3859
3860      }
3861
3862      @Override
3863      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3864        switch (hash) {
3865        case 116079: /*url*/ return new String[] {"uri"};
3866        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3867        case 351608024: /*version*/ return new String[] {"string"};
3868        case 3373707: /*name*/ return new String[] {"string"};
3869        case 110371416: /*title*/ return new String[] {"string"};
3870        case 1555503932: /*shortTitle*/ return new String[] {"string"};
3871        case -2060497896: /*subtitle*/ return new String[] {"string"};
3872        case -892481550: /*status*/ return new String[] {"code"};
3873        case 3076014: /*date*/ return new String[] {"dateTime"};
3874        case -1724546052: /*description*/ return new String[] {"markdown"};
3875        case 3387378: /*note*/ return new String[] {"Annotation"};
3876        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3877        case 1447404028: /*publisher*/ return new String[] {"string"};
3878        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3879        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
3880        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
3881        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
3882        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
3883        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
3884        case -1422939762: /*actual*/ return new String[] {"boolean"};
3885        case -861347276: /*characteristicCombination*/ return new String[] {};
3886        case 366313883: /*characteristic*/ return new String[] {};
3887        case 2072805: /*handling*/ return new String[] {"code"};
3888        case 50511102: /*category*/ return new String[] {};
3889        default: return super.getTypesForProperty(hash, name);
3890        }
3891
3892      }
3893
3894      @Override
3895      public Base addChild(String name) throws FHIRException {
3896        if (name.equals("url")) {
3897          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.url");
3898        }
3899        else if (name.equals("identifier")) {
3900          return addIdentifier();
3901        }
3902        else if (name.equals("version")) {
3903          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.version");
3904        }
3905        else if (name.equals("name")) {
3906          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.name");
3907        }
3908        else if (name.equals("title")) {
3909          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.title");
3910        }
3911        else if (name.equals("shortTitle")) {
3912          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.shortTitle");
3913        }
3914        else if (name.equals("subtitle")) {
3915          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.subtitle");
3916        }
3917        else if (name.equals("status")) {
3918          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.status");
3919        }
3920        else if (name.equals("date")) {
3921          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.date");
3922        }
3923        else if (name.equals("description")) {
3924          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.description");
3925        }
3926        else if (name.equals("note")) {
3927          return addNote();
3928        }
3929        else if (name.equals("useContext")) {
3930          return addUseContext();
3931        }
3932        else if (name.equals("publisher")) {
3933          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.publisher");
3934        }
3935        else if (name.equals("contact")) {
3936          return addContact();
3937        }
3938        else if (name.equals("author")) {
3939          return addAuthor();
3940        }
3941        else if (name.equals("editor")) {
3942          return addEditor();
3943        }
3944        else if (name.equals("reviewer")) {
3945          return addReviewer();
3946        }
3947        else if (name.equals("endorser")) {
3948          return addEndorser();
3949        }
3950        else if (name.equals("relatedArtifact")) {
3951          return addRelatedArtifact();
3952        }
3953        else if (name.equals("actual")) {
3954          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.actual");
3955        }
3956        else if (name.equals("characteristicCombination")) {
3957          this.characteristicCombination = new EvidenceVariableCharacteristicCombinationComponent();
3958          return this.characteristicCombination;
3959        }
3960        else if (name.equals("characteristic")) {
3961          return addCharacteristic();
3962        }
3963        else if (name.equals("handling")) {
3964          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.handling");
3965        }
3966        else if (name.equals("category")) {
3967          return addCategory();
3968        }
3969        else
3970          return super.addChild(name);
3971      }
3972
3973  public String fhirType() {
3974    return "EvidenceVariable";
3975
3976  }
3977
3978      public EvidenceVariable copy() {
3979        EvidenceVariable dst = new EvidenceVariable();
3980        copyValues(dst);
3981        return dst;
3982      }
3983
3984      public void copyValues(EvidenceVariable dst) {
3985        super.copyValues(dst);
3986        dst.url = url == null ? null : url.copy();
3987        if (identifier != null) {
3988          dst.identifier = new ArrayList<Identifier>();
3989          for (Identifier i : identifier)
3990            dst.identifier.add(i.copy());
3991        };
3992        dst.version = version == null ? null : version.copy();
3993        dst.name = name == null ? null : name.copy();
3994        dst.title = title == null ? null : title.copy();
3995        dst.shortTitle = shortTitle == null ? null : shortTitle.copy();
3996        dst.subtitle = subtitle == null ? null : subtitle.copy();
3997        dst.status = status == null ? null : status.copy();
3998        dst.date = date == null ? null : date.copy();
3999        dst.description = description == null ? null : description.copy();
4000        if (note != null) {
4001          dst.note = new ArrayList<Annotation>();
4002          for (Annotation i : note)
4003            dst.note.add(i.copy());
4004        };
4005        if (useContext != null) {
4006          dst.useContext = new ArrayList<UsageContext>();
4007          for (UsageContext i : useContext)
4008            dst.useContext.add(i.copy());
4009        };
4010        dst.publisher = publisher == null ? null : publisher.copy();
4011        if (contact != null) {
4012          dst.contact = new ArrayList<ContactDetail>();
4013          for (ContactDetail i : contact)
4014            dst.contact.add(i.copy());
4015        };
4016        if (author != null) {
4017          dst.author = new ArrayList<ContactDetail>();
4018          for (ContactDetail i : author)
4019            dst.author.add(i.copy());
4020        };
4021        if (editor != null) {
4022          dst.editor = new ArrayList<ContactDetail>();
4023          for (ContactDetail i : editor)
4024            dst.editor.add(i.copy());
4025        };
4026        if (reviewer != null) {
4027          dst.reviewer = new ArrayList<ContactDetail>();
4028          for (ContactDetail i : reviewer)
4029            dst.reviewer.add(i.copy());
4030        };
4031        if (endorser != null) {
4032          dst.endorser = new ArrayList<ContactDetail>();
4033          for (ContactDetail i : endorser)
4034            dst.endorser.add(i.copy());
4035        };
4036        if (relatedArtifact != null) {
4037          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
4038          for (RelatedArtifact i : relatedArtifact)
4039            dst.relatedArtifact.add(i.copy());
4040        };
4041        dst.actual = actual == null ? null : actual.copy();
4042        dst.characteristicCombination = characteristicCombination == null ? null : characteristicCombination.copy();
4043        if (characteristic != null) {
4044          dst.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
4045          for (EvidenceVariableCharacteristicComponent i : characteristic)
4046            dst.characteristic.add(i.copy());
4047        };
4048        dst.handling = handling == null ? null : handling.copy();
4049        if (category != null) {
4050          dst.category = new ArrayList<EvidenceVariableCategoryComponent>();
4051          for (EvidenceVariableCategoryComponent i : category)
4052            dst.category.add(i.copy());
4053        };
4054      }
4055
4056      protected EvidenceVariable typedCopy() {
4057        return copy();
4058      }
4059
4060      @Override
4061      public boolean equalsDeep(Base other_) {
4062        if (!super.equalsDeep(other_))
4063          return false;
4064        if (!(other_ instanceof EvidenceVariable))
4065          return false;
4066        EvidenceVariable o = (EvidenceVariable) other_;
4067        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
4068           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(shortTitle, o.shortTitle, true)
4069           && compareDeep(subtitle, o.subtitle, true) && compareDeep(status, o.status, true) && compareDeep(date, o.date, true)
4070           && compareDeep(description, o.description, true) && compareDeep(note, o.note, true) && compareDeep(useContext, o.useContext, true)
4071           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(author, o.author, true)
4072           && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
4073           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(actual, o.actual, true)
4074           && compareDeep(characteristicCombination, o.characteristicCombination, true) && compareDeep(characteristic, o.characteristic, true)
4075           && compareDeep(handling, o.handling, true) && compareDeep(category, o.category, true);
4076      }
4077
4078      @Override
4079      public boolean equalsShallow(Base other_) {
4080        if (!super.equalsShallow(other_))
4081          return false;
4082        if (!(other_ instanceof EvidenceVariable))
4083          return false;
4084        EvidenceVariable o = (EvidenceVariable) other_;
4085        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
4086           && compareValues(title, o.title, true) && compareValues(shortTitle, o.shortTitle, true) && compareValues(subtitle, o.subtitle, true)
4087           && compareValues(status, o.status, true) && compareValues(date, o.date, true) && compareValues(description, o.description, true)
4088           && compareValues(publisher, o.publisher, true) && compareValues(actual, o.actual, true) && compareValues(handling, o.handling, true)
4089          ;
4090      }
4091
4092      public boolean isEmpty() {
4093        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
4094          , name, title, shortTitle, subtitle, status, date, description, note, useContext
4095          , publisher, contact, author, editor, reviewer, endorser, relatedArtifact, actual
4096          , characteristicCombination, characteristic, handling, category);
4097      }
4098
4099  @Override
4100  public ResourceType getResourceType() {
4101    return ResourceType.EvidenceVariable;
4102   }
4103
4104 /**
4105   * Search parameter: <b>composed-of</b>
4106   * <p>
4107   * Description: <b>What resource is being referenced</b><br>
4108   * Type: <b>reference</b><br>
4109   * Path: <b>EvidenceVariable.relatedArtifact.where(type='composed-of').resource</b><br>
4110   * </p>
4111   */
4112  @SearchParamDefinition(name="composed-of", path="EvidenceVariable.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
4113  public static final String SP_COMPOSED_OF = "composed-of";
4114 /**
4115   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
4116   * <p>
4117   * Description: <b>What resource is being referenced</b><br>
4118   * Type: <b>reference</b><br>
4119   * Path: <b>EvidenceVariable.relatedArtifact.where(type='composed-of').resource</b><br>
4120   * </p>
4121   */
4122  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
4123
4124/**
4125   * Constant for fluent queries to be used to add include statements. Specifies
4126   * the path value of "<b>EvidenceVariable:composed-of</b>".
4127   */
4128  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("EvidenceVariable:composed-of").toLocked();
4129
4130 /**
4131   * Search parameter: <b>context-quantity</b>
4132   * <p>
4133   * Description: <b>A quantity- or range-valued use context assigned to the evidence variable</b><br>
4134   * Type: <b>quantity</b><br>
4135   * Path: <b>(EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range)</b><br>
4136   * </p>
4137   */
4138  @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" )
4139  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
4140 /**
4141   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
4142   * <p>
4143   * Description: <b>A quantity- or range-valued use context assigned to the evidence variable</b><br>
4144   * Type: <b>quantity</b><br>
4145   * Path: <b>(EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range)</b><br>
4146   * </p>
4147   */
4148  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
4149
4150 /**
4151   * Search parameter: <b>context-type-quantity</b>
4152   * <p>
4153   * Description: <b>A use context type and quantity- or range-based value assigned to the evidence variable</b><br>
4154   * Type: <b>composite</b><br>
4155   * Path: <b>EvidenceVariable.useContext</b><br>
4156   * </p>
4157   */
4158  @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"} )
4159  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
4160 /**
4161   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
4162   * <p>
4163   * Description: <b>A use context type and quantity- or range-based value assigned to the evidence variable</b><br>
4164   * Type: <b>composite</b><br>
4165   * Path: <b>EvidenceVariable.useContext</b><br>
4166   * </p>
4167   */
4168  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);
4169
4170 /**
4171   * Search parameter: <b>context-type-value</b>
4172   * <p>
4173   * Description: <b>A use context type and value assigned to the evidence variable</b><br>
4174   * Type: <b>composite</b><br>
4175   * Path: <b>EvidenceVariable.useContext</b><br>
4176   * </p>
4177   */
4178  @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"} )
4179  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4180 /**
4181   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4182   * <p>
4183   * Description: <b>A use context type and value assigned to the evidence variable</b><br>
4184   * Type: <b>composite</b><br>
4185   * Path: <b>EvidenceVariable.useContext</b><br>
4186   * </p>
4187   */
4188  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);
4189
4190 /**
4191   * Search parameter: <b>context-type</b>
4192   * <p>
4193   * Description: <b>A type of use context assigned to the evidence variable</b><br>
4194   * Type: <b>token</b><br>
4195   * Path: <b>EvidenceVariable.useContext.code</b><br>
4196   * </p>
4197   */
4198  @SearchParamDefinition(name="context-type", path="EvidenceVariable.useContext.code", description="A type of use context assigned to the evidence variable", type="token" )
4199  public static final String SP_CONTEXT_TYPE = "context-type";
4200 /**
4201   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4202   * <p>
4203   * Description: <b>A type of use context assigned to the evidence variable</b><br>
4204   * Type: <b>token</b><br>
4205   * Path: <b>EvidenceVariable.useContext.code</b><br>
4206   * </p>
4207   */
4208  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4209
4210 /**
4211   * Search parameter: <b>context</b>
4212   * <p>
4213   * Description: <b>A use context assigned to the evidence variable</b><br>
4214   * Type: <b>token</b><br>
4215   * Path: <b>(EvidenceVariable.useContext.value as CodeableConcept)</b><br>
4216   * </p>
4217   */
4218  @SearchParamDefinition(name="context", path="(EvidenceVariable.useContext.value as CodeableConcept)", description="A use context assigned to the evidence variable", type="token" )
4219  public static final String SP_CONTEXT = "context";
4220 /**
4221   * <b>Fluent Client</b> search parameter constant for <b>context</b>
4222   * <p>
4223   * Description: <b>A use context assigned to the evidence variable</b><br>
4224   * Type: <b>token</b><br>
4225   * Path: <b>(EvidenceVariable.useContext.value as CodeableConcept)</b><br>
4226   * </p>
4227   */
4228  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
4229
4230 /**
4231   * Search parameter: <b>date</b>
4232   * <p>
4233   * Description: <b>The evidence variable publication date</b><br>
4234   * Type: <b>date</b><br>
4235   * Path: <b>EvidenceVariable.date</b><br>
4236   * </p>
4237   */
4238  @SearchParamDefinition(name="date", path="EvidenceVariable.date", description="The evidence variable publication date", type="date" )
4239  public static final String SP_DATE = "date";
4240 /**
4241   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4242   * <p>
4243   * Description: <b>The evidence variable publication date</b><br>
4244   * Type: <b>date</b><br>
4245   * Path: <b>EvidenceVariable.date</b><br>
4246   * </p>
4247   */
4248  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4249
4250 /**
4251   * Search parameter: <b>depends-on</b>
4252   * <p>
4253   * Description: <b>What resource is being referenced</b><br>
4254   * Type: <b>reference</b><br>
4255   * Path: <b>EvidenceVariable.relatedArtifact.where(type='depends-on').resource</b><br>
4256   * </p>
4257   */
4258  @SearchParamDefinition(name="depends-on", path="EvidenceVariable.relatedArtifact.where(type='depends-on').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
4259  public static final String SP_DEPENDS_ON = "depends-on";
4260 /**
4261   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
4262   * <p>
4263   * Description: <b>What resource is being referenced</b><br>
4264   * Type: <b>reference</b><br>
4265   * Path: <b>EvidenceVariable.relatedArtifact.where(type='depends-on').resource</b><br>
4266   * </p>
4267   */
4268  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
4269
4270/**
4271   * Constant for fluent queries to be used to add include statements. Specifies
4272   * the path value of "<b>EvidenceVariable:depends-on</b>".
4273   */
4274  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("EvidenceVariable:depends-on").toLocked();
4275
4276 /**
4277   * Search parameter: <b>derived-from</b>
4278   * <p>
4279   * Description: <b>What resource is being referenced</b><br>
4280   * Type: <b>reference</b><br>
4281   * Path: <b>EvidenceVariable.relatedArtifact.where(type='derived-from').resource</b><br>
4282   * </p>
4283   */
4284  @SearchParamDefinition(name="derived-from", path="EvidenceVariable.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
4285  public static final String SP_DERIVED_FROM = "derived-from";
4286 /**
4287   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
4288   * <p>
4289   * Description: <b>What resource is being referenced</b><br>
4290   * Type: <b>reference</b><br>
4291   * Path: <b>EvidenceVariable.relatedArtifact.where(type='derived-from').resource</b><br>
4292   * </p>
4293   */
4294  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
4295
4296/**
4297   * Constant for fluent queries to be used to add include statements. Specifies
4298   * the path value of "<b>EvidenceVariable:derived-from</b>".
4299   */
4300  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("EvidenceVariable:derived-from").toLocked();
4301
4302 /**
4303   * Search parameter: <b>description</b>
4304   * <p>
4305   * Description: <b>The description of the evidence variable</b><br>
4306   * Type: <b>string</b><br>
4307   * Path: <b>EvidenceVariable.description</b><br>
4308   * </p>
4309   */
4310  @SearchParamDefinition(name="description", path="EvidenceVariable.description", description="The description of the evidence variable", type="string" )
4311  public static final String SP_DESCRIPTION = "description";
4312 /**
4313   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4314   * <p>
4315   * Description: <b>The description of the evidence variable</b><br>
4316   * Type: <b>string</b><br>
4317   * Path: <b>EvidenceVariable.description</b><br>
4318   * </p>
4319   */
4320  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4321
4322 /**
4323   * Search parameter: <b>identifier</b>
4324   * <p>
4325   * Description: <b>External identifier for the evidence variable</b><br>
4326   * Type: <b>token</b><br>
4327   * Path: <b>EvidenceVariable.identifier</b><br>
4328   * </p>
4329   */
4330  @SearchParamDefinition(name="identifier", path="EvidenceVariable.identifier", description="External identifier for the evidence variable", type="token" )
4331  public static final String SP_IDENTIFIER = "identifier";
4332 /**
4333   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4334   * <p>
4335   * Description: <b>External identifier for the evidence variable</b><br>
4336   * Type: <b>token</b><br>
4337   * Path: <b>EvidenceVariable.identifier</b><br>
4338   * </p>
4339   */
4340  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4341
4342 /**
4343   * Search parameter: <b>name</b>
4344   * <p>
4345   * Description: <b>Computationally friendly name of the evidence variable</b><br>
4346   * Type: <b>string</b><br>
4347   * Path: <b>EvidenceVariable.name</b><br>
4348   * </p>
4349   */
4350  @SearchParamDefinition(name="name", path="EvidenceVariable.name", description="Computationally friendly name of the evidence variable", type="string" )
4351  public static final String SP_NAME = "name";
4352 /**
4353   * <b>Fluent Client</b> search parameter constant for <b>name</b>
4354   * <p>
4355   * Description: <b>Computationally friendly name of the evidence variable</b><br>
4356   * Type: <b>string</b><br>
4357   * Path: <b>EvidenceVariable.name</b><br>
4358   * </p>
4359   */
4360  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
4361
4362 /**
4363   * Search parameter: <b>predecessor</b>
4364   * <p>
4365   * Description: <b>What resource is being referenced</b><br>
4366   * Type: <b>reference</b><br>
4367   * Path: <b>EvidenceVariable.relatedArtifact.where(type='predecessor').resource</b><br>
4368   * </p>
4369   */
4370  @SearchParamDefinition(name="predecessor", path="EvidenceVariable.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
4371  public static final String SP_PREDECESSOR = "predecessor";
4372 /**
4373   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
4374   * <p>
4375   * Description: <b>What resource is being referenced</b><br>
4376   * Type: <b>reference</b><br>
4377   * Path: <b>EvidenceVariable.relatedArtifact.where(type='predecessor').resource</b><br>
4378   * </p>
4379   */
4380  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
4381
4382/**
4383   * Constant for fluent queries to be used to add include statements. Specifies
4384   * the path value of "<b>EvidenceVariable:predecessor</b>".
4385   */
4386  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("EvidenceVariable:predecessor").toLocked();
4387
4388 /**
4389   * Search parameter: <b>publisher</b>
4390   * <p>
4391   * Description: <b>Name of the publisher of the evidence variable</b><br>
4392   * Type: <b>string</b><br>
4393   * Path: <b>EvidenceVariable.publisher</b><br>
4394   * </p>
4395   */
4396  @SearchParamDefinition(name="publisher", path="EvidenceVariable.publisher", description="Name of the publisher of the evidence variable", type="string" )
4397  public static final String SP_PUBLISHER = "publisher";
4398 /**
4399   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
4400   * <p>
4401   * Description: <b>Name of the publisher of the evidence variable</b><br>
4402   * Type: <b>string</b><br>
4403   * Path: <b>EvidenceVariable.publisher</b><br>
4404   * </p>
4405   */
4406  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
4407
4408 /**
4409   * Search parameter: <b>status</b>
4410   * <p>
4411   * Description: <b>The current status of the evidence variable</b><br>
4412   * Type: <b>token</b><br>
4413   * Path: <b>EvidenceVariable.status</b><br>
4414   * </p>
4415   */
4416  @SearchParamDefinition(name="status", path="EvidenceVariable.status", description="The current status of the evidence variable", type="token" )
4417  public static final String SP_STATUS = "status";
4418 /**
4419   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4420   * <p>
4421   * Description: <b>The current status of the evidence variable</b><br>
4422   * Type: <b>token</b><br>
4423   * Path: <b>EvidenceVariable.status</b><br>
4424   * </p>
4425   */
4426  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4427
4428 /**
4429   * Search parameter: <b>successor</b>
4430   * <p>
4431   * Description: <b>What resource is being referenced</b><br>
4432   * Type: <b>reference</b><br>
4433   * Path: <b>EvidenceVariable.relatedArtifact.where(type='successor').resource</b><br>
4434   * </p>
4435   */
4436  @SearchParamDefinition(name="successor", path="EvidenceVariable.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
4437  public static final String SP_SUCCESSOR = "successor";
4438 /**
4439   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
4440   * <p>
4441   * Description: <b>What resource is being referenced</b><br>
4442   * Type: <b>reference</b><br>
4443   * Path: <b>EvidenceVariable.relatedArtifact.where(type='successor').resource</b><br>
4444   * </p>
4445   */
4446  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
4447
4448/**
4449   * Constant for fluent queries to be used to add include statements. Specifies
4450   * the path value of "<b>EvidenceVariable:successor</b>".
4451   */
4452  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("EvidenceVariable:successor").toLocked();
4453
4454 /**
4455   * Search parameter: <b>title</b>
4456   * <p>
4457   * Description: <b>The human-friendly name of the evidence variable</b><br>
4458   * Type: <b>string</b><br>
4459   * Path: <b>EvidenceVariable.title</b><br>
4460   * </p>
4461   */
4462  @SearchParamDefinition(name="title", path="EvidenceVariable.title", description="The human-friendly name of the evidence variable", type="string" )
4463  public static final String SP_TITLE = "title";
4464 /**
4465   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4466   * <p>
4467   * Description: <b>The human-friendly name of the evidence variable</b><br>
4468   * Type: <b>string</b><br>
4469   * Path: <b>EvidenceVariable.title</b><br>
4470   * </p>
4471   */
4472  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4473
4474 /**
4475   * Search parameter: <b>topic</b>
4476   * <p>
4477   * Description: <b>Topics associated with the EvidenceVariable</b><br>
4478   * Type: <b>token</b><br>
4479   * Path: <b>null</b><br>
4480   * </p>
4481   */
4482  @SearchParamDefinition(name="topic", path="", description="Topics associated with the EvidenceVariable", type="token" )
4483  public static final String SP_TOPIC = "topic";
4484 /**
4485   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
4486   * <p>
4487   * Description: <b>Topics associated with the EvidenceVariable</b><br>
4488   * Type: <b>token</b><br>
4489   * Path: <b>null</b><br>
4490   * </p>
4491   */
4492  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
4493
4494 /**
4495   * Search parameter: <b>url</b>
4496   * <p>
4497   * Description: <b>The uri that identifies the evidence variable</b><br>
4498   * Type: <b>uri</b><br>
4499   * Path: <b>EvidenceVariable.url</b><br>
4500   * </p>
4501   */
4502  @SearchParamDefinition(name="url", path="EvidenceVariable.url", description="The uri that identifies the evidence variable", type="uri" )
4503  public static final String SP_URL = "url";
4504 /**
4505   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4506   * <p>
4507   * Description: <b>The uri that identifies the evidence variable</b><br>
4508   * Type: <b>uri</b><br>
4509   * Path: <b>EvidenceVariable.url</b><br>
4510   * </p>
4511   */
4512  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4513
4514 /**
4515   * Search parameter: <b>version</b>
4516   * <p>
4517   * Description: <b>The business version of the evidence variable</b><br>
4518   * Type: <b>token</b><br>
4519   * Path: <b>EvidenceVariable.version</b><br>
4520   * </p>
4521   */
4522  @SearchParamDefinition(name="version", path="EvidenceVariable.version", description="The business version of the evidence variable", type="token" )
4523  public static final String SP_VERSION = "version";
4524 /**
4525   * <b>Fluent Client</b> search parameter constant for <b>version</b>
4526   * <p>
4527   * Description: <b>The business version of the evidence variable</b><br>
4528   * Type: <b>token</b><br>
4529   * Path: <b>EvidenceVariable.version</b><br>
4530   * </p>
4531   */
4532  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
4533
4534
4535}
4536