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 Fri, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
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. Use method to specify the statistical method.
075         */
076        STATISTICAL, 
077        /**
078         * Combine characteristics by addition of benefits and subtraction of harms.
079         */
080        NETEFFECT, 
081        /**
082         * Combine characteristics as a collection used as the dataset.
083         */
084        DATASET, 
085        /**
086         * added to help the parsers with the generic types
087         */
088        NULL;
089        public static CharacteristicCombination fromCode(String codeString) throws FHIRException {
090            if (codeString == null || "".equals(codeString))
091                return null;
092        if ("all-of".equals(codeString))
093          return ALLOF;
094        if ("any-of".equals(codeString))
095          return ANYOF;
096        if ("at-least".equals(codeString))
097          return ATLEAST;
098        if ("at-most".equals(codeString))
099          return ATMOST;
100        if ("statistical".equals(codeString))
101          return STATISTICAL;
102        if ("net-effect".equals(codeString))
103          return NETEFFECT;
104        if ("dataset".equals(codeString))
105          return DATASET;
106        if (Configuration.isAcceptInvalidEnums())
107          return null;
108        else
109          throw new FHIRException("Unknown CharacteristicCombination code '"+codeString+"'");
110        }
111        public String toCode() {
112          switch (this) {
113            case ALLOF: return "all-of";
114            case ANYOF: return "any-of";
115            case ATLEAST: return "at-least";
116            case ATMOST: return "at-most";
117            case STATISTICAL: return "statistical";
118            case NETEFFECT: return "net-effect";
119            case DATASET: return "dataset";
120            case NULL: return null;
121            default: return "?";
122          }
123        }
124        public String getSystem() {
125          switch (this) {
126            case ALLOF: return "http://hl7.org/fhir/characteristic-combination";
127            case ANYOF: return "http://hl7.org/fhir/characteristic-combination";
128            case ATLEAST: return "http://hl7.org/fhir/characteristic-combination";
129            case ATMOST: return "http://hl7.org/fhir/characteristic-combination";
130            case STATISTICAL: return "http://hl7.org/fhir/characteristic-combination";
131            case NETEFFECT: return "http://hl7.org/fhir/characteristic-combination";
132            case DATASET: return "http://hl7.org/fhir/characteristic-combination";
133            case NULL: return null;
134            default: return "?";
135          }
136        }
137        public String getDefinition() {
138          switch (this) {
139            case ALLOF: return "Combine characteristics with AND.";
140            case ANYOF: return "Combine characteristics with OR.";
141            case ATLEAST: return "Meet at least the threshold number of characteristics for definition.";
142            case ATMOST: return "Meet at most the threshold number of characteristics for definition.";
143            case STATISTICAL: return "Combine characteristics statistically. Use method to specify the statistical method.";
144            case NETEFFECT: return "Combine characteristics by addition of benefits and subtraction of harms.";
145            case DATASET: return "Combine characteristics as a collection used as the dataset.";
146            case NULL: return null;
147            default: return "?";
148          }
149        }
150        public String getDisplay() {
151          switch (this) {
152            case ALLOF: return "All of";
153            case ANYOF: return "Any of";
154            case ATLEAST: return "At least";
155            case ATMOST: return "At most";
156            case STATISTICAL: return "Statistical";
157            case NETEFFECT: return "Net effect";
158            case DATASET: return "Dataset";
159            case NULL: return null;
160            default: return "?";
161          }
162        }
163    }
164
165  public static class CharacteristicCombinationEnumFactory implements EnumFactory<CharacteristicCombination> {
166    public CharacteristicCombination fromCode(String codeString) throws IllegalArgumentException {
167      if (codeString == null || "".equals(codeString))
168            if (codeString == null || "".equals(codeString))
169                return null;
170        if ("all-of".equals(codeString))
171          return CharacteristicCombination.ALLOF;
172        if ("any-of".equals(codeString))
173          return CharacteristicCombination.ANYOF;
174        if ("at-least".equals(codeString))
175          return CharacteristicCombination.ATLEAST;
176        if ("at-most".equals(codeString))
177          return CharacteristicCombination.ATMOST;
178        if ("statistical".equals(codeString))
179          return CharacteristicCombination.STATISTICAL;
180        if ("net-effect".equals(codeString))
181          return CharacteristicCombination.NETEFFECT;
182        if ("dataset".equals(codeString))
183          return CharacteristicCombination.DATASET;
184        throw new IllegalArgumentException("Unknown CharacteristicCombination code '"+codeString+"'");
185        }
186        public Enumeration<CharacteristicCombination> fromType(Base code) throws FHIRException {
187          if (code == null)
188            return null;
189          if (code.isEmpty())
190            return new Enumeration<CharacteristicCombination>(this);
191          String codeString = ((PrimitiveType) code).asStringValue();
192          if (codeString == null || "".equals(codeString))
193            return null;
194        if ("all-of".equals(codeString))
195          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ALLOF);
196        if ("any-of".equals(codeString))
197          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ANYOF);
198        if ("at-least".equals(codeString))
199          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ATLEAST);
200        if ("at-most".equals(codeString))
201          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.ATMOST);
202        if ("statistical".equals(codeString))
203          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.STATISTICAL);
204        if ("net-effect".equals(codeString))
205          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.NETEFFECT);
206        if ("dataset".equals(codeString))
207          return new Enumeration<CharacteristicCombination>(this, CharacteristicCombination.DATASET);
208        throw new FHIRException("Unknown CharacteristicCombination code '"+codeString+"'");
209        }
210    public String toCode(CharacteristicCombination code) {
211      if (code == CharacteristicCombination.ALLOF)
212        return "all-of";
213      if (code == CharacteristicCombination.ANYOF)
214        return "any-of";
215      if (code == CharacteristicCombination.ATLEAST)
216        return "at-least";
217      if (code == CharacteristicCombination.ATMOST)
218        return "at-most";
219      if (code == CharacteristicCombination.STATISTICAL)
220        return "statistical";
221      if (code == CharacteristicCombination.NETEFFECT)
222        return "net-effect";
223      if (code == CharacteristicCombination.DATASET)
224        return "dataset";
225      return "?";
226      }
227    public String toSystem(CharacteristicCombination code) {
228      return code.getSystem();
229      }
230    }
231
232    public enum GroupMeasure {
233        /**
234         * Aggregated using Mean of participant values.
235         */
236        MEAN, 
237        /**
238         * Aggregated using Median of participant values.
239         */
240        MEDIAN, 
241        /**
242         * Aggregated using Mean of study mean values.
243         */
244        MEANOFMEAN, 
245        /**
246         * Aggregated using Mean of study median values.
247         */
248        MEANOFMEDIAN, 
249        /**
250         * Aggregated using Median of study mean values.
251         */
252        MEDIANOFMEAN, 
253        /**
254         * Aggregated using Median of study median values.
255         */
256        MEDIANOFMEDIAN, 
257        /**
258         * added to help the parsers with the generic types
259         */
260        NULL;
261        public static GroupMeasure fromCode(String codeString) throws FHIRException {
262            if (codeString == null || "".equals(codeString))
263                return null;
264        if ("mean".equals(codeString))
265          return MEAN;
266        if ("median".equals(codeString))
267          return MEDIAN;
268        if ("mean-of-mean".equals(codeString))
269          return MEANOFMEAN;
270        if ("mean-of-median".equals(codeString))
271          return MEANOFMEDIAN;
272        if ("median-of-mean".equals(codeString))
273          return MEDIANOFMEAN;
274        if ("median-of-median".equals(codeString))
275          return MEDIANOFMEDIAN;
276        if (Configuration.isAcceptInvalidEnums())
277          return null;
278        else
279          throw new FHIRException("Unknown GroupMeasure code '"+codeString+"'");
280        }
281        public String toCode() {
282          switch (this) {
283            case MEAN: return "mean";
284            case MEDIAN: return "median";
285            case MEANOFMEAN: return "mean-of-mean";
286            case MEANOFMEDIAN: return "mean-of-median";
287            case MEDIANOFMEAN: return "median-of-mean";
288            case MEDIANOFMEDIAN: return "median-of-median";
289            case NULL: return null;
290            default: return "?";
291          }
292        }
293        public String getSystem() {
294          switch (this) {
295            case MEAN: return "http://hl7.org/fhir/group-measure";
296            case MEDIAN: return "http://hl7.org/fhir/group-measure";
297            case MEANOFMEAN: return "http://hl7.org/fhir/group-measure";
298            case MEANOFMEDIAN: return "http://hl7.org/fhir/group-measure";
299            case MEDIANOFMEAN: return "http://hl7.org/fhir/group-measure";
300            case MEDIANOFMEDIAN: return "http://hl7.org/fhir/group-measure";
301            case NULL: return null;
302            default: return "?";
303          }
304        }
305        public String getDefinition() {
306          switch (this) {
307            case MEAN: return "Aggregated using Mean of participant values.";
308            case MEDIAN: return "Aggregated using Median of participant values.";
309            case MEANOFMEAN: return "Aggregated using Mean of study mean values.";
310            case MEANOFMEDIAN: return "Aggregated using Mean of study median values.";
311            case MEDIANOFMEAN: return "Aggregated using Median of study mean values.";
312            case MEDIANOFMEDIAN: return "Aggregated using Median of study median values.";
313            case NULL: return null;
314            default: return "?";
315          }
316        }
317        public String getDisplay() {
318          switch (this) {
319            case MEAN: return "Mean";
320            case MEDIAN: return "Median";
321            case MEANOFMEAN: return "Mean of Study Means";
322            case MEANOFMEDIAN: return "Mean of Study Medins";
323            case MEDIANOFMEAN: return "Median of Study Means";
324            case MEDIANOFMEDIAN: return "Median of Study Medians";
325            case NULL: return null;
326            default: return "?";
327          }
328        }
329    }
330
331  public static class GroupMeasureEnumFactory implements EnumFactory<GroupMeasure> {
332    public GroupMeasure fromCode(String codeString) throws IllegalArgumentException {
333      if (codeString == null || "".equals(codeString))
334            if (codeString == null || "".equals(codeString))
335                return null;
336        if ("mean".equals(codeString))
337          return GroupMeasure.MEAN;
338        if ("median".equals(codeString))
339          return GroupMeasure.MEDIAN;
340        if ("mean-of-mean".equals(codeString))
341          return GroupMeasure.MEANOFMEAN;
342        if ("mean-of-median".equals(codeString))
343          return GroupMeasure.MEANOFMEDIAN;
344        if ("median-of-mean".equals(codeString))
345          return GroupMeasure.MEDIANOFMEAN;
346        if ("median-of-median".equals(codeString))
347          return GroupMeasure.MEDIANOFMEDIAN;
348        throw new IllegalArgumentException("Unknown GroupMeasure code '"+codeString+"'");
349        }
350        public Enumeration<GroupMeasure> fromType(Base code) throws FHIRException {
351          if (code == null)
352            return null;
353          if (code.isEmpty())
354            return new Enumeration<GroupMeasure>(this);
355          String codeString = ((PrimitiveType) code).asStringValue();
356          if (codeString == null || "".equals(codeString))
357            return null;
358        if ("mean".equals(codeString))
359          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEAN);
360        if ("median".equals(codeString))
361          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIAN);
362        if ("mean-of-mean".equals(codeString))
363          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEANOFMEAN);
364        if ("mean-of-median".equals(codeString))
365          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEANOFMEDIAN);
366        if ("median-of-mean".equals(codeString))
367          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIANOFMEAN);
368        if ("median-of-median".equals(codeString))
369          return new Enumeration<GroupMeasure>(this, GroupMeasure.MEDIANOFMEDIAN);
370        throw new FHIRException("Unknown GroupMeasure code '"+codeString+"'");
371        }
372    public String toCode(GroupMeasure code) {
373      if (code == GroupMeasure.MEAN)
374        return "mean";
375      if (code == GroupMeasure.MEDIAN)
376        return "median";
377      if (code == GroupMeasure.MEANOFMEAN)
378        return "mean-of-mean";
379      if (code == GroupMeasure.MEANOFMEDIAN)
380        return "mean-of-median";
381      if (code == GroupMeasure.MEDIANOFMEAN)
382        return "median-of-mean";
383      if (code == GroupMeasure.MEDIANOFMEDIAN)
384        return "median-of-median";
385      return "?";
386      }
387    public String toSystem(GroupMeasure code) {
388      return code.getSystem();
389      }
390    }
391
392    @Block()
393    public static class EvidenceVariableCharacteristicComponent extends BackboneElement implements IBaseBackboneElement {
394        /**
395         * Label used for when a characteristic refers to another characteristic.
396         */
397        @Child(name = "linkId", type = {IdType.class}, order=1, min=0, max=1, modifier=false, summary=false)
398        @Description(shortDefinition="Label for internal linking", formalDefinition="Label used for when a characteristic refers to another characteristic." )
399        protected IdType linkId;
400
401        /**
402         * A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
403         */
404        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
405        @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." )
406        protected StringType description;
407
408        /**
409         * A human-readable string to clarify or explain concepts about the characteristic.
410         */
411        @Child(name = "note", type = {Annotation.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
412        @Description(shortDefinition="Used for footnotes or explanatory notes", formalDefinition="A human-readable string to clarify or explain concepts about the characteristic." )
413        protected List<Annotation> note;
414
415        /**
416         * When true, members with this characteristic are excluded from the element.
417         */
418        @Child(name = "exclude", type = {BooleanType.class}, order=4, min=0, max=1, modifier=false, summary=false)
419        @Description(shortDefinition="Whether the characteristic includes or excludes members", formalDefinition="When true, members with this characteristic are excluded from the element." )
420        protected BooleanType exclude;
421
422        /**
423         * Defines the characteristic using a Reference.
424         */
425        @Child(name = "definitionReference", type = {EvidenceVariable.class, Group.class, Evidence.class}, order=5, min=0, max=1, modifier=false, summary=true)
426        @Description(shortDefinition="Defines the characteristic (without using type and value) by a Reference", formalDefinition="Defines the characteristic using a Reference." )
427        protected Reference definitionReference;
428
429        /**
430         * Defines the characteristic using Canonical.
431         */
432        @Child(name = "definitionCanonical", type = {CanonicalType.class}, order=6, min=0, max=1, modifier=false, summary=true)
433        @Description(shortDefinition="Defines the characteristic (without using type and value) by a Canonical", formalDefinition="Defines the characteristic using Canonical." )
434        protected CanonicalType definitionCanonical;
435
436        /**
437         * Defines the characteristic using CodeableConcept.
438         */
439        @Child(name = "definitionCodeableConcept", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=true)
440        @Description(shortDefinition="Defines the characteristic (without using type and value) by a CodeableConcept", formalDefinition="Defines the characteristic using CodeableConcept." )
441        protected CodeableConcept definitionCodeableConcept;
442
443        /**
444         * Defines the characteristic using Expression.
445         */
446        @Child(name = "definitionExpression", type = {Expression.class}, order=8, min=0, max=1, modifier=false, summary=true)
447        @Description(shortDefinition="Defines the characteristic (without using type and value) by a Expression", formalDefinition="Defines the characteristic using Expression." )
448        protected Expression definitionExpression;
449
450        /**
451         * Defines the characteristic using id.
452         */
453        @Child(name = "definitionId", type = {IdType.class}, order=9, min=0, max=1, modifier=false, summary=true)
454        @Description(shortDefinition="Defines the characteristic (without using type and value) by a id", formalDefinition="Defines the characteristic using id." )
455        protected IdType definitionId;
456
457        /**
458         * Defines the characteristic using both a type[x] and value[x] elements.
459         */
460        @Child(name = "definitionByTypeAndValue", type = {}, order=10, min=0, max=1, modifier=false, summary=true)
461        @Description(shortDefinition="Defines the characteristic using type and value", formalDefinition="Defines the characteristic using both a type[x] and value[x] elements." )
462        protected EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent definitionByTypeAndValue;
463
464        /**
465         * Defines the characteristic as a combination of two or more characteristics.
466         */
467        @Child(name = "definitionByCombination", type = {}, order=11, min=0, max=1, modifier=false, summary=false)
468        @Description(shortDefinition="Used to specify how two or more characteristics are combined", formalDefinition="Defines the characteristic as a combination of two or more characteristics." )
469        protected EvidenceVariableCharacteristicDefinitionByCombinationComponent definitionByCombination;
470
471        /**
472         * Method used for describing characteristic.
473         */
474        @Child(name = "method", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
475        @Description(shortDefinition="Method used for describing characteristic", formalDefinition="Method used for describing characteristic." )
476        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/characteristic-method")
477        protected List<CodeableConcept> method;
478
479        /**
480         * Device used for determining characteristic.
481         */
482        @Child(name = "device", type = {Device.class, DeviceMetric.class}, order=13, min=0, max=1, modifier=false, summary=false)
483        @Description(shortDefinition="Device used for determining characteristic", formalDefinition="Device used for determining characteristic." )
484        protected Reference device;
485
486        /**
487         * Observation time from study specified event.
488         */
489        @Child(name = "timeFromEvent", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
490        @Description(shortDefinition="Observation time from study specified event", formalDefinition="Observation time from study specified event." )
491        protected List<EvidenceVariableCharacteristicTimeFromEventComponent> timeFromEvent;
492
493        /**
494         * Value or set of values that define the grouping.
495         */
496        @Child(name = "groupMeasure", type = {CodeType.class}, order=15, min=0, max=1, modifier=false, summary=false)
497        @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." )
498        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/group-measure")
499        protected Enumeration<GroupMeasure> groupMeasure;
500
501        private static final long serialVersionUID = 2100589620L;
502
503    /**
504     * Constructor
505     */
506      public EvidenceVariableCharacteristicComponent() {
507        super();
508      }
509
510        /**
511         * @return {@link #linkId} (Label used for when a characteristic refers to another characteristic.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
512         */
513        public IdType getLinkIdElement() { 
514          if (this.linkId == null)
515            if (Configuration.errorOnAutoCreate())
516              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.linkId");
517            else if (Configuration.doAutoCreate())
518              this.linkId = new IdType(); // bb
519          return this.linkId;
520        }
521
522        public boolean hasLinkIdElement() { 
523          return this.linkId != null && !this.linkId.isEmpty();
524        }
525
526        public boolean hasLinkId() { 
527          return this.linkId != null && !this.linkId.isEmpty();
528        }
529
530        /**
531         * @param value {@link #linkId} (Label used for when a characteristic refers to another characteristic.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
532         */
533        public EvidenceVariableCharacteristicComponent setLinkIdElement(IdType value) { 
534          this.linkId = value;
535          return this;
536        }
537
538        /**
539         * @return Label used for when a characteristic refers to another characteristic.
540         */
541        public String getLinkId() { 
542          return this.linkId == null ? null : this.linkId.getValue();
543        }
544
545        /**
546         * @param value Label used for when a characteristic refers to another characteristic.
547         */
548        public EvidenceVariableCharacteristicComponent setLinkId(String value) { 
549          if (Utilities.noString(value))
550            this.linkId = null;
551          else {
552            if (this.linkId == null)
553              this.linkId = new IdType();
554            this.linkId.setValue(value);
555          }
556          return this;
557        }
558
559        /**
560         * @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
561         */
562        public StringType getDescriptionElement() { 
563          if (this.description == null)
564            if (Configuration.errorOnAutoCreate())
565              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.description");
566            else if (Configuration.doAutoCreate())
567              this.description = new StringType(); // bb
568          return this.description;
569        }
570
571        public boolean hasDescriptionElement() { 
572          return this.description != null && !this.description.isEmpty();
573        }
574
575        public boolean hasDescription() { 
576          return this.description != null && !this.description.isEmpty();
577        }
578
579        /**
580         * @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
581         */
582        public EvidenceVariableCharacteristicComponent setDescriptionElement(StringType value) { 
583          this.description = value;
584          return this;
585        }
586
587        /**
588         * @return A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
589         */
590        public String getDescription() { 
591          return this.description == null ? null : this.description.getValue();
592        }
593
594        /**
595         * @param value A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user.
596         */
597        public EvidenceVariableCharacteristicComponent setDescription(String value) { 
598          if (Utilities.noString(value))
599            this.description = null;
600          else {
601            if (this.description == null)
602              this.description = new StringType();
603            this.description.setValue(value);
604          }
605          return this;
606        }
607
608        /**
609         * @return {@link #note} (A human-readable string to clarify or explain concepts about the characteristic.)
610         */
611        public List<Annotation> getNote() { 
612          if (this.note == null)
613            this.note = new ArrayList<Annotation>();
614          return this.note;
615        }
616
617        /**
618         * @return Returns a reference to <code>this</code> for easy method chaining
619         */
620        public EvidenceVariableCharacteristicComponent setNote(List<Annotation> theNote) { 
621          this.note = theNote;
622          return this;
623        }
624
625        public boolean hasNote() { 
626          if (this.note == null)
627            return false;
628          for (Annotation item : this.note)
629            if (!item.isEmpty())
630              return true;
631          return false;
632        }
633
634        public Annotation addNote() { //3
635          Annotation t = new Annotation();
636          if (this.note == null)
637            this.note = new ArrayList<Annotation>();
638          this.note.add(t);
639          return t;
640        }
641
642        public EvidenceVariableCharacteristicComponent addNote(Annotation t) { //3
643          if (t == null)
644            return this;
645          if (this.note == null)
646            this.note = new ArrayList<Annotation>();
647          this.note.add(t);
648          return this;
649        }
650
651        /**
652         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
653         */
654        public Annotation getNoteFirstRep() { 
655          if (getNote().isEmpty()) {
656            addNote();
657          }
658          return getNote().get(0);
659        }
660
661        /**
662         * @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
663         */
664        public BooleanType getExcludeElement() { 
665          if (this.exclude == null)
666            if (Configuration.errorOnAutoCreate())
667              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.exclude");
668            else if (Configuration.doAutoCreate())
669              this.exclude = new BooleanType(); // bb
670          return this.exclude;
671        }
672
673        public boolean hasExcludeElement() { 
674          return this.exclude != null && !this.exclude.isEmpty();
675        }
676
677        public boolean hasExclude() { 
678          return this.exclude != null && !this.exclude.isEmpty();
679        }
680
681        /**
682         * @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
683         */
684        public EvidenceVariableCharacteristicComponent setExcludeElement(BooleanType value) { 
685          this.exclude = value;
686          return this;
687        }
688
689        /**
690         * @return When true, members with this characteristic are excluded from the element.
691         */
692        public boolean getExclude() { 
693          return this.exclude == null || this.exclude.isEmpty() ? false : this.exclude.getValue();
694        }
695
696        /**
697         * @param value When true, members with this characteristic are excluded from the element.
698         */
699        public EvidenceVariableCharacteristicComponent setExclude(boolean value) { 
700            if (this.exclude == null)
701              this.exclude = new BooleanType();
702            this.exclude.setValue(value);
703          return this;
704        }
705
706        /**
707         * @return {@link #definitionReference} (Defines the characteristic using a Reference.)
708         */
709        public Reference getDefinitionReference() { 
710          if (this.definitionReference == null)
711            if (Configuration.errorOnAutoCreate())
712              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionReference");
713            else if (Configuration.doAutoCreate())
714              this.definitionReference = new Reference(); // cc
715          return this.definitionReference;
716        }
717
718        public boolean hasDefinitionReference() { 
719          return this.definitionReference != null && !this.definitionReference.isEmpty();
720        }
721
722        /**
723         * @param value {@link #definitionReference} (Defines the characteristic using a Reference.)
724         */
725        public EvidenceVariableCharacteristicComponent setDefinitionReference(Reference value) { 
726          this.definitionReference = value;
727          return this;
728        }
729
730        /**
731         * @return {@link #definitionCanonical} (Defines the characteristic using Canonical.). This is the underlying object with id, value and extensions. The accessor "getDefinitionCanonical" gives direct access to the value
732         */
733        public CanonicalType getDefinitionCanonicalElement() { 
734          if (this.definitionCanonical == null)
735            if (Configuration.errorOnAutoCreate())
736              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionCanonical");
737            else if (Configuration.doAutoCreate())
738              this.definitionCanonical = new CanonicalType(); // bb
739          return this.definitionCanonical;
740        }
741
742        public boolean hasDefinitionCanonicalElement() { 
743          return this.definitionCanonical != null && !this.definitionCanonical.isEmpty();
744        }
745
746        public boolean hasDefinitionCanonical() { 
747          return this.definitionCanonical != null && !this.definitionCanonical.isEmpty();
748        }
749
750        /**
751         * @param value {@link #definitionCanonical} (Defines the characteristic using Canonical.). This is the underlying object with id, value and extensions. The accessor "getDefinitionCanonical" gives direct access to the value
752         */
753        public EvidenceVariableCharacteristicComponent setDefinitionCanonicalElement(CanonicalType value) { 
754          this.definitionCanonical = value;
755          return this;
756        }
757
758        /**
759         * @return Defines the characteristic using Canonical.
760         */
761        public String getDefinitionCanonical() { 
762          return this.definitionCanonical == null ? null : this.definitionCanonical.getValue();
763        }
764
765        /**
766         * @param value Defines the characteristic using Canonical.
767         */
768        public EvidenceVariableCharacteristicComponent setDefinitionCanonical(String value) { 
769          if (Utilities.noString(value))
770            this.definitionCanonical = null;
771          else {
772            if (this.definitionCanonical == null)
773              this.definitionCanonical = new CanonicalType();
774            this.definitionCanonical.setValue(value);
775          }
776          return this;
777        }
778
779        /**
780         * @return {@link #definitionCodeableConcept} (Defines the characteristic using CodeableConcept.)
781         */
782        public CodeableConcept getDefinitionCodeableConcept() { 
783          if (this.definitionCodeableConcept == null)
784            if (Configuration.errorOnAutoCreate())
785              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionCodeableConcept");
786            else if (Configuration.doAutoCreate())
787              this.definitionCodeableConcept = new CodeableConcept(); // cc
788          return this.definitionCodeableConcept;
789        }
790
791        public boolean hasDefinitionCodeableConcept() { 
792          return this.definitionCodeableConcept != null && !this.definitionCodeableConcept.isEmpty();
793        }
794
795        /**
796         * @param value {@link #definitionCodeableConcept} (Defines the characteristic using CodeableConcept.)
797         */
798        public EvidenceVariableCharacteristicComponent setDefinitionCodeableConcept(CodeableConcept value) { 
799          this.definitionCodeableConcept = value;
800          return this;
801        }
802
803        /**
804         * @return {@link #definitionExpression} (Defines the characteristic using Expression.)
805         */
806        public Expression getDefinitionExpression() { 
807          if (this.definitionExpression == null)
808            if (Configuration.errorOnAutoCreate())
809              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionExpression");
810            else if (Configuration.doAutoCreate())
811              this.definitionExpression = new Expression(); // cc
812          return this.definitionExpression;
813        }
814
815        public boolean hasDefinitionExpression() { 
816          return this.definitionExpression != null && !this.definitionExpression.isEmpty();
817        }
818
819        /**
820         * @param value {@link #definitionExpression} (Defines the characteristic using Expression.)
821         */
822        public EvidenceVariableCharacteristicComponent setDefinitionExpression(Expression value) { 
823          this.definitionExpression = value;
824          return this;
825        }
826
827        /**
828         * @return {@link #definitionId} (Defines the characteristic using id.). This is the underlying object with id, value and extensions. The accessor "getDefinitionId" gives direct access to the value
829         */
830        public IdType getDefinitionIdElement() { 
831          if (this.definitionId == null)
832            if (Configuration.errorOnAutoCreate())
833              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionId");
834            else if (Configuration.doAutoCreate())
835              this.definitionId = new IdType(); // bb
836          return this.definitionId;
837        }
838
839        public boolean hasDefinitionIdElement() { 
840          return this.definitionId != null && !this.definitionId.isEmpty();
841        }
842
843        public boolean hasDefinitionId() { 
844          return this.definitionId != null && !this.definitionId.isEmpty();
845        }
846
847        /**
848         * @param value {@link #definitionId} (Defines the characteristic using id.). This is the underlying object with id, value and extensions. The accessor "getDefinitionId" gives direct access to the value
849         */
850        public EvidenceVariableCharacteristicComponent setDefinitionIdElement(IdType value) { 
851          this.definitionId = value;
852          return this;
853        }
854
855        /**
856         * @return Defines the characteristic using id.
857         */
858        public String getDefinitionId() { 
859          return this.definitionId == null ? null : this.definitionId.getValue();
860        }
861
862        /**
863         * @param value Defines the characteristic using id.
864         */
865        public EvidenceVariableCharacteristicComponent setDefinitionId(String value) { 
866          if (Utilities.noString(value))
867            this.definitionId = null;
868          else {
869            if (this.definitionId == null)
870              this.definitionId = new IdType();
871            this.definitionId.setValue(value);
872          }
873          return this;
874        }
875
876        /**
877         * @return {@link #definitionByTypeAndValue} (Defines the characteristic using both a type[x] and value[x] elements.)
878         */
879        public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent getDefinitionByTypeAndValue() { 
880          if (this.definitionByTypeAndValue == null)
881            if (Configuration.errorOnAutoCreate())
882              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionByTypeAndValue");
883            else if (Configuration.doAutoCreate())
884              this.definitionByTypeAndValue = new EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent(); // cc
885          return this.definitionByTypeAndValue;
886        }
887
888        public boolean hasDefinitionByTypeAndValue() { 
889          return this.definitionByTypeAndValue != null && !this.definitionByTypeAndValue.isEmpty();
890        }
891
892        /**
893         * @param value {@link #definitionByTypeAndValue} (Defines the characteristic using both a type[x] and value[x] elements.)
894         */
895        public EvidenceVariableCharacteristicComponent setDefinitionByTypeAndValue(EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent value) { 
896          this.definitionByTypeAndValue = value;
897          return this;
898        }
899
900        /**
901         * @return {@link #definitionByCombination} (Defines the characteristic as a combination of two or more characteristics.)
902         */
903        public EvidenceVariableCharacteristicDefinitionByCombinationComponent getDefinitionByCombination() { 
904          if (this.definitionByCombination == null)
905            if (Configuration.errorOnAutoCreate())
906              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.definitionByCombination");
907            else if (Configuration.doAutoCreate())
908              this.definitionByCombination = new EvidenceVariableCharacteristicDefinitionByCombinationComponent(); // cc
909          return this.definitionByCombination;
910        }
911
912        public boolean hasDefinitionByCombination() { 
913          return this.definitionByCombination != null && !this.definitionByCombination.isEmpty();
914        }
915
916        /**
917         * @param value {@link #definitionByCombination} (Defines the characteristic as a combination of two or more characteristics.)
918         */
919        public EvidenceVariableCharacteristicComponent setDefinitionByCombination(EvidenceVariableCharacteristicDefinitionByCombinationComponent value) { 
920          this.definitionByCombination = value;
921          return this;
922        }
923
924        /**
925         * @return {@link #method} (Method used for describing characteristic.)
926         */
927        public List<CodeableConcept> getMethod() { 
928          if (this.method == null)
929            this.method = new ArrayList<CodeableConcept>();
930          return this.method;
931        }
932
933        /**
934         * @return Returns a reference to <code>this</code> for easy method chaining
935         */
936        public EvidenceVariableCharacteristicComponent setMethod(List<CodeableConcept> theMethod) { 
937          this.method = theMethod;
938          return this;
939        }
940
941        public boolean hasMethod() { 
942          if (this.method == null)
943            return false;
944          for (CodeableConcept item : this.method)
945            if (!item.isEmpty())
946              return true;
947          return false;
948        }
949
950        public CodeableConcept addMethod() { //3
951          CodeableConcept t = new CodeableConcept();
952          if (this.method == null)
953            this.method = new ArrayList<CodeableConcept>();
954          this.method.add(t);
955          return t;
956        }
957
958        public EvidenceVariableCharacteristicComponent addMethod(CodeableConcept t) { //3
959          if (t == null)
960            return this;
961          if (this.method == null)
962            this.method = new ArrayList<CodeableConcept>();
963          this.method.add(t);
964          return this;
965        }
966
967        /**
968         * @return The first repetition of repeating field {@link #method}, creating it if it does not already exist {3}
969         */
970        public CodeableConcept getMethodFirstRep() { 
971          if (getMethod().isEmpty()) {
972            addMethod();
973          }
974          return getMethod().get(0);
975        }
976
977        /**
978         * @return {@link #device} (Device used for determining characteristic.)
979         */
980        public Reference getDevice() { 
981          if (this.device == null)
982            if (Configuration.errorOnAutoCreate())
983              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.device");
984            else if (Configuration.doAutoCreate())
985              this.device = new Reference(); // cc
986          return this.device;
987        }
988
989        public boolean hasDevice() { 
990          return this.device != null && !this.device.isEmpty();
991        }
992
993        /**
994         * @param value {@link #device} (Device used for determining characteristic.)
995         */
996        public EvidenceVariableCharacteristicComponent setDevice(Reference value) { 
997          this.device = value;
998          return this;
999        }
1000
1001        /**
1002         * @return {@link #timeFromEvent} (Observation time from study specified event.)
1003         */
1004        public List<EvidenceVariableCharacteristicTimeFromEventComponent> getTimeFromEvent() { 
1005          if (this.timeFromEvent == null)
1006            this.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
1007          return this.timeFromEvent;
1008        }
1009
1010        /**
1011         * @return Returns a reference to <code>this</code> for easy method chaining
1012         */
1013        public EvidenceVariableCharacteristicComponent setTimeFromEvent(List<EvidenceVariableCharacteristicTimeFromEventComponent> theTimeFromEvent) { 
1014          this.timeFromEvent = theTimeFromEvent;
1015          return this;
1016        }
1017
1018        public boolean hasTimeFromEvent() { 
1019          if (this.timeFromEvent == null)
1020            return false;
1021          for (EvidenceVariableCharacteristicTimeFromEventComponent item : this.timeFromEvent)
1022            if (!item.isEmpty())
1023              return true;
1024          return false;
1025        }
1026
1027        public EvidenceVariableCharacteristicTimeFromEventComponent addTimeFromEvent() { //3
1028          EvidenceVariableCharacteristicTimeFromEventComponent t = new EvidenceVariableCharacteristicTimeFromEventComponent();
1029          if (this.timeFromEvent == null)
1030            this.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
1031          this.timeFromEvent.add(t);
1032          return t;
1033        }
1034
1035        public EvidenceVariableCharacteristicComponent addTimeFromEvent(EvidenceVariableCharacteristicTimeFromEventComponent t) { //3
1036          if (t == null)
1037            return this;
1038          if (this.timeFromEvent == null)
1039            this.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
1040          this.timeFromEvent.add(t);
1041          return this;
1042        }
1043
1044        /**
1045         * @return The first repetition of repeating field {@link #timeFromEvent}, creating it if it does not already exist {3}
1046         */
1047        public EvidenceVariableCharacteristicTimeFromEventComponent getTimeFromEventFirstRep() { 
1048          if (getTimeFromEvent().isEmpty()) {
1049            addTimeFromEvent();
1050          }
1051          return getTimeFromEvent().get(0);
1052        }
1053
1054        /**
1055         * @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
1056         */
1057        public Enumeration<GroupMeasure> getGroupMeasureElement() { 
1058          if (this.groupMeasure == null)
1059            if (Configuration.errorOnAutoCreate())
1060              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicComponent.groupMeasure");
1061            else if (Configuration.doAutoCreate())
1062              this.groupMeasure = new Enumeration<GroupMeasure>(new GroupMeasureEnumFactory()); // bb
1063          return this.groupMeasure;
1064        }
1065
1066        public boolean hasGroupMeasureElement() { 
1067          return this.groupMeasure != null && !this.groupMeasure.isEmpty();
1068        }
1069
1070        public boolean hasGroupMeasure() { 
1071          return this.groupMeasure != null && !this.groupMeasure.isEmpty();
1072        }
1073
1074        /**
1075         * @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
1076         */
1077        public EvidenceVariableCharacteristicComponent setGroupMeasureElement(Enumeration<GroupMeasure> value) { 
1078          this.groupMeasure = value;
1079          return this;
1080        }
1081
1082        /**
1083         * @return Value or set of values that define the grouping.
1084         */
1085        public GroupMeasure getGroupMeasure() { 
1086          return this.groupMeasure == null ? null : this.groupMeasure.getValue();
1087        }
1088
1089        /**
1090         * @param value Value or set of values that define the grouping.
1091         */
1092        public EvidenceVariableCharacteristicComponent setGroupMeasure(GroupMeasure value) { 
1093          if (value == null)
1094            this.groupMeasure = null;
1095          else {
1096            if (this.groupMeasure == null)
1097              this.groupMeasure = new Enumeration<GroupMeasure>(new GroupMeasureEnumFactory());
1098            this.groupMeasure.setValue(value);
1099          }
1100          return this;
1101        }
1102
1103        protected void listChildren(List<Property> children) {
1104          super.listChildren(children);
1105          children.add(new Property("linkId", "id", "Label used for when a characteristic refers to another characteristic.", 0, 1, linkId));
1106          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));
1107          children.add(new Property("note", "Annotation", "A human-readable string to clarify or explain concepts about the characteristic.", 0, java.lang.Integer.MAX_VALUE, note));
1108          children.add(new Property("exclude", "boolean", "When true, members with this characteristic are excluded from the element.", 0, 1, exclude));
1109          children.add(new Property("definitionReference", "Reference(EvidenceVariable|Group|Evidence)", "Defines the characteristic using a Reference.", 0, 1, definitionReference));
1110          children.add(new Property("definitionCanonical", "canonical(EvidenceVariable|Group|Evidence)", "Defines the characteristic using Canonical.", 0, 1, definitionCanonical));
1111          children.add(new Property("definitionCodeableConcept", "CodeableConcept", "Defines the characteristic using CodeableConcept.", 0, 1, definitionCodeableConcept));
1112          children.add(new Property("definitionExpression", "Expression", "Defines the characteristic using Expression.", 0, 1, definitionExpression));
1113          children.add(new Property("definitionId", "id", "Defines the characteristic using id.", 0, 1, definitionId));
1114          children.add(new Property("definitionByTypeAndValue", "", "Defines the characteristic using both a type[x] and value[x] elements.", 0, 1, definitionByTypeAndValue));
1115          children.add(new Property("definitionByCombination", "", "Defines the characteristic as a combination of two or more characteristics.", 0, 1, definitionByCombination));
1116          children.add(new Property("method", "CodeableConcept", "Method used for describing characteristic.", 0, java.lang.Integer.MAX_VALUE, method));
1117          children.add(new Property("device", "Reference(Device|DeviceMetric)", "Device used for determining characteristic.", 0, 1, device));
1118          children.add(new Property("timeFromEvent", "", "Observation time from study specified event.", 0, java.lang.Integer.MAX_VALUE, timeFromEvent));
1119          children.add(new Property("groupMeasure", "code", "Value or set of values that define the grouping.", 0, 1, groupMeasure));
1120        }
1121
1122        @Override
1123        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1124          switch (_hash) {
1125          case -1102667083: /*linkId*/  return new Property("linkId", "id", "Label used for when a characteristic refers to another characteristic.", 0, 1, linkId);
1126          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);
1127          case 3387378: /*note*/  return new Property("note", "Annotation", "A human-readable string to clarify or explain concepts about the characteristic.", 0, java.lang.Integer.MAX_VALUE, note);
1128          case -1321148966: /*exclude*/  return new Property("exclude", "boolean", "When true, members with this characteristic are excluded from the element.", 0, 1, exclude);
1129          case -820021448: /*definitionReference*/  return new Property("definitionReference", "Reference(EvidenceVariable|Group|Evidence)", "Defines the characteristic using a Reference.", 0, 1, definitionReference);
1130          case 933485793: /*definitionCanonical*/  return new Property("definitionCanonical", "canonical(EvidenceVariable|Group|Evidence)", "Defines the characteristic using Canonical.", 0, 1, definitionCanonical);
1131          case -1446002226: /*definitionCodeableConcept*/  return new Property("definitionCodeableConcept", "CodeableConcept", "Defines the characteristic using CodeableConcept.", 0, 1, definitionCodeableConcept);
1132          case 1463703627: /*definitionExpression*/  return new Property("definitionExpression", "Expression", "Defines the characteristic using Expression.", 0, 1, definitionExpression);
1133          case 101791182: /*definitionId*/  return new Property("definitionId", "id", "Defines the characteristic using id.", 0, 1, definitionId);
1134          case -164357794: /*definitionByTypeAndValue*/  return new Property("definitionByTypeAndValue", "", "Defines the characteristic using both a type[x] and value[x] elements.", 0, 1, definitionByTypeAndValue);
1135          case -2043280539: /*definitionByCombination*/  return new Property("definitionByCombination", "", "Defines the characteristic as a combination of two or more characteristics.", 0, 1, definitionByCombination);
1136          case -1077554975: /*method*/  return new Property("method", "CodeableConcept", "Method used for describing characteristic.", 0, java.lang.Integer.MAX_VALUE, method);
1137          case -1335157162: /*device*/  return new Property("device", "Reference(Device|DeviceMetric)", "Device used for determining characteristic.", 0, 1, device);
1138          case 2087274691: /*timeFromEvent*/  return new Property("timeFromEvent", "", "Observation time from study specified event.", 0, java.lang.Integer.MAX_VALUE, timeFromEvent);
1139          case 588892639: /*groupMeasure*/  return new Property("groupMeasure", "code", "Value or set of values that define the grouping.", 0, 1, groupMeasure);
1140          default: return super.getNamedProperty(_hash, _name, _checkValid);
1141          }
1142
1143        }
1144
1145      @Override
1146      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1147        switch (hash) {
1148        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : new Base[] {this.linkId}; // IdType
1149        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1150        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1151        case -1321148966: /*exclude*/ return this.exclude == null ? new Base[0] : new Base[] {this.exclude}; // BooleanType
1152        case -820021448: /*definitionReference*/ return this.definitionReference == null ? new Base[0] : new Base[] {this.definitionReference}; // Reference
1153        case 933485793: /*definitionCanonical*/ return this.definitionCanonical == null ? new Base[0] : new Base[] {this.definitionCanonical}; // CanonicalType
1154        case -1446002226: /*definitionCodeableConcept*/ return this.definitionCodeableConcept == null ? new Base[0] : new Base[] {this.definitionCodeableConcept}; // CodeableConcept
1155        case 1463703627: /*definitionExpression*/ return this.definitionExpression == null ? new Base[0] : new Base[] {this.definitionExpression}; // Expression
1156        case 101791182: /*definitionId*/ return this.definitionId == null ? new Base[0] : new Base[] {this.definitionId}; // IdType
1157        case -164357794: /*definitionByTypeAndValue*/ return this.definitionByTypeAndValue == null ? new Base[0] : new Base[] {this.definitionByTypeAndValue}; // EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent
1158        case -2043280539: /*definitionByCombination*/ return this.definitionByCombination == null ? new Base[0] : new Base[] {this.definitionByCombination}; // EvidenceVariableCharacteristicDefinitionByCombinationComponent
1159        case -1077554975: /*method*/ return this.method == null ? new Base[0] : this.method.toArray(new Base[this.method.size()]); // CodeableConcept
1160        case -1335157162: /*device*/ return this.device == null ? new Base[0] : new Base[] {this.device}; // Reference
1161        case 2087274691: /*timeFromEvent*/ return this.timeFromEvent == null ? new Base[0] : this.timeFromEvent.toArray(new Base[this.timeFromEvent.size()]); // EvidenceVariableCharacteristicTimeFromEventComponent
1162        case 588892639: /*groupMeasure*/ return this.groupMeasure == null ? new Base[0] : new Base[] {this.groupMeasure}; // Enumeration<GroupMeasure>
1163        default: return super.getProperty(hash, name, checkValid);
1164        }
1165
1166      }
1167
1168      @Override
1169      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1170        switch (hash) {
1171        case -1102667083: // linkId
1172          this.linkId = TypeConvertor.castToId(value); // IdType
1173          return value;
1174        case -1724546052: // description
1175          this.description = TypeConvertor.castToString(value); // StringType
1176          return value;
1177        case 3387378: // note
1178          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1179          return value;
1180        case -1321148966: // exclude
1181          this.exclude = TypeConvertor.castToBoolean(value); // BooleanType
1182          return value;
1183        case -820021448: // definitionReference
1184          this.definitionReference = TypeConvertor.castToReference(value); // Reference
1185          return value;
1186        case 933485793: // definitionCanonical
1187          this.definitionCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
1188          return value;
1189        case -1446002226: // definitionCodeableConcept
1190          this.definitionCodeableConcept = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1191          return value;
1192        case 1463703627: // definitionExpression
1193          this.definitionExpression = TypeConvertor.castToExpression(value); // Expression
1194          return value;
1195        case 101791182: // definitionId
1196          this.definitionId = TypeConvertor.castToId(value); // IdType
1197          return value;
1198        case -164357794: // definitionByTypeAndValue
1199          this.definitionByTypeAndValue = (EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent) value; // EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent
1200          return value;
1201        case -2043280539: // definitionByCombination
1202          this.definitionByCombination = (EvidenceVariableCharacteristicDefinitionByCombinationComponent) value; // EvidenceVariableCharacteristicDefinitionByCombinationComponent
1203          return value;
1204        case -1077554975: // method
1205          this.getMethod().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1206          return value;
1207        case -1335157162: // device
1208          this.device = TypeConvertor.castToReference(value); // Reference
1209          return value;
1210        case 2087274691: // timeFromEvent
1211          this.getTimeFromEvent().add((EvidenceVariableCharacteristicTimeFromEventComponent) value); // EvidenceVariableCharacteristicTimeFromEventComponent
1212          return value;
1213        case 588892639: // groupMeasure
1214          value = new GroupMeasureEnumFactory().fromType(TypeConvertor.castToCode(value));
1215          this.groupMeasure = (Enumeration) value; // Enumeration<GroupMeasure>
1216          return value;
1217        default: return super.setProperty(hash, name, value);
1218        }
1219
1220      }
1221
1222      @Override
1223      public Base setProperty(String name, Base value) throws FHIRException {
1224        if (name.equals("linkId")) {
1225          this.linkId = TypeConvertor.castToId(value); // IdType
1226        } else if (name.equals("description")) {
1227          this.description = TypeConvertor.castToString(value); // StringType
1228        } else if (name.equals("note")) {
1229          this.getNote().add(TypeConvertor.castToAnnotation(value));
1230        } else if (name.equals("exclude")) {
1231          this.exclude = TypeConvertor.castToBoolean(value); // BooleanType
1232        } else if (name.equals("definitionReference")) {
1233          this.definitionReference = TypeConvertor.castToReference(value); // Reference
1234        } else if (name.equals("definitionCanonical")) {
1235          this.definitionCanonical = TypeConvertor.castToCanonical(value); // CanonicalType
1236        } else if (name.equals("definitionCodeableConcept")) {
1237          this.definitionCodeableConcept = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1238        } else if (name.equals("definitionExpression")) {
1239          this.definitionExpression = TypeConvertor.castToExpression(value); // Expression
1240        } else if (name.equals("definitionId")) {
1241          this.definitionId = TypeConvertor.castToId(value); // IdType
1242        } else if (name.equals("definitionByTypeAndValue")) {
1243          this.definitionByTypeAndValue = (EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent) value; // EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent
1244        } else if (name.equals("definitionByCombination")) {
1245          this.definitionByCombination = (EvidenceVariableCharacteristicDefinitionByCombinationComponent) value; // EvidenceVariableCharacteristicDefinitionByCombinationComponent
1246        } else if (name.equals("method")) {
1247          this.getMethod().add(TypeConvertor.castToCodeableConcept(value));
1248        } else if (name.equals("device")) {
1249          this.device = TypeConvertor.castToReference(value); // Reference
1250        } else if (name.equals("timeFromEvent")) {
1251          this.getTimeFromEvent().add((EvidenceVariableCharacteristicTimeFromEventComponent) value);
1252        } else if (name.equals("groupMeasure")) {
1253          value = new GroupMeasureEnumFactory().fromType(TypeConvertor.castToCode(value));
1254          this.groupMeasure = (Enumeration) value; // Enumeration<GroupMeasure>
1255        } else
1256          return super.setProperty(name, value);
1257        return value;
1258      }
1259
1260      @Override
1261      public Base makeProperty(int hash, String name) throws FHIRException {
1262        switch (hash) {
1263        case -1102667083:  return getLinkIdElement();
1264        case -1724546052:  return getDescriptionElement();
1265        case 3387378:  return addNote(); 
1266        case -1321148966:  return getExcludeElement();
1267        case -820021448:  return getDefinitionReference();
1268        case 933485793:  return getDefinitionCanonicalElement();
1269        case -1446002226:  return getDefinitionCodeableConcept();
1270        case 1463703627:  return getDefinitionExpression();
1271        case 101791182:  return getDefinitionIdElement();
1272        case -164357794:  return getDefinitionByTypeAndValue();
1273        case -2043280539:  return getDefinitionByCombination();
1274        case -1077554975:  return addMethod(); 
1275        case -1335157162:  return getDevice();
1276        case 2087274691:  return addTimeFromEvent(); 
1277        case 588892639:  return getGroupMeasureElement();
1278        default: return super.makeProperty(hash, name);
1279        }
1280
1281      }
1282
1283      @Override
1284      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1285        switch (hash) {
1286        case -1102667083: /*linkId*/ return new String[] {"id"};
1287        case -1724546052: /*description*/ return new String[] {"string"};
1288        case 3387378: /*note*/ return new String[] {"Annotation"};
1289        case -1321148966: /*exclude*/ return new String[] {"boolean"};
1290        case -820021448: /*definitionReference*/ return new String[] {"Reference"};
1291        case 933485793: /*definitionCanonical*/ return new String[] {"canonical"};
1292        case -1446002226: /*definitionCodeableConcept*/ return new String[] {"CodeableConcept"};
1293        case 1463703627: /*definitionExpression*/ return new String[] {"Expression"};
1294        case 101791182: /*definitionId*/ return new String[] {"id"};
1295        case -164357794: /*definitionByTypeAndValue*/ return new String[] {};
1296        case -2043280539: /*definitionByCombination*/ return new String[] {};
1297        case -1077554975: /*method*/ return new String[] {"CodeableConcept"};
1298        case -1335157162: /*device*/ return new String[] {"Reference"};
1299        case 2087274691: /*timeFromEvent*/ return new String[] {};
1300        case 588892639: /*groupMeasure*/ return new String[] {"code"};
1301        default: return super.getTypesForProperty(hash, name);
1302        }
1303
1304      }
1305
1306      @Override
1307      public Base addChild(String name) throws FHIRException {
1308        if (name.equals("linkId")) {
1309          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.linkId");
1310        }
1311        else if (name.equals("description")) {
1312          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.description");
1313        }
1314        else if (name.equals("note")) {
1315          return addNote();
1316        }
1317        else if (name.equals("exclude")) {
1318          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.exclude");
1319        }
1320        else if (name.equals("definitionReference")) {
1321          this.definitionReference = new Reference();
1322          return this.definitionReference;
1323        }
1324        else if (name.equals("definitionCanonical")) {
1325          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.definitionCanonical");
1326        }
1327        else if (name.equals("definitionCodeableConcept")) {
1328          this.definitionCodeableConcept = new CodeableConcept();
1329          return this.definitionCodeableConcept;
1330        }
1331        else if (name.equals("definitionExpression")) {
1332          this.definitionExpression = new Expression();
1333          return this.definitionExpression;
1334        }
1335        else if (name.equals("definitionId")) {
1336          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.definitionId");
1337        }
1338        else if (name.equals("definitionByTypeAndValue")) {
1339          this.definitionByTypeAndValue = new EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent();
1340          return this.definitionByTypeAndValue;
1341        }
1342        else if (name.equals("definitionByCombination")) {
1343          this.definitionByCombination = new EvidenceVariableCharacteristicDefinitionByCombinationComponent();
1344          return this.definitionByCombination;
1345        }
1346        else if (name.equals("method")) {
1347          return addMethod();
1348        }
1349        else if (name.equals("device")) {
1350          this.device = new Reference();
1351          return this.device;
1352        }
1353        else if (name.equals("timeFromEvent")) {
1354          return addTimeFromEvent();
1355        }
1356        else if (name.equals("groupMeasure")) {
1357          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.groupMeasure");
1358        }
1359        else
1360          return super.addChild(name);
1361      }
1362
1363      public EvidenceVariableCharacteristicComponent copy() {
1364        EvidenceVariableCharacteristicComponent dst = new EvidenceVariableCharacteristicComponent();
1365        copyValues(dst);
1366        return dst;
1367      }
1368
1369      public void copyValues(EvidenceVariableCharacteristicComponent dst) {
1370        super.copyValues(dst);
1371        dst.linkId = linkId == null ? null : linkId.copy();
1372        dst.description = description == null ? null : description.copy();
1373        if (note != null) {
1374          dst.note = new ArrayList<Annotation>();
1375          for (Annotation i : note)
1376            dst.note.add(i.copy());
1377        };
1378        dst.exclude = exclude == null ? null : exclude.copy();
1379        dst.definitionReference = definitionReference == null ? null : definitionReference.copy();
1380        dst.definitionCanonical = definitionCanonical == null ? null : definitionCanonical.copy();
1381        dst.definitionCodeableConcept = definitionCodeableConcept == null ? null : definitionCodeableConcept.copy();
1382        dst.definitionExpression = definitionExpression == null ? null : definitionExpression.copy();
1383        dst.definitionId = definitionId == null ? null : definitionId.copy();
1384        dst.definitionByTypeAndValue = definitionByTypeAndValue == null ? null : definitionByTypeAndValue.copy();
1385        dst.definitionByCombination = definitionByCombination == null ? null : definitionByCombination.copy();
1386        if (method != null) {
1387          dst.method = new ArrayList<CodeableConcept>();
1388          for (CodeableConcept i : method)
1389            dst.method.add(i.copy());
1390        };
1391        dst.device = device == null ? null : device.copy();
1392        if (timeFromEvent != null) {
1393          dst.timeFromEvent = new ArrayList<EvidenceVariableCharacteristicTimeFromEventComponent>();
1394          for (EvidenceVariableCharacteristicTimeFromEventComponent i : timeFromEvent)
1395            dst.timeFromEvent.add(i.copy());
1396        };
1397        dst.groupMeasure = groupMeasure == null ? null : groupMeasure.copy();
1398      }
1399
1400      @Override
1401      public boolean equalsDeep(Base other_) {
1402        if (!super.equalsDeep(other_))
1403          return false;
1404        if (!(other_ instanceof EvidenceVariableCharacteristicComponent))
1405          return false;
1406        EvidenceVariableCharacteristicComponent o = (EvidenceVariableCharacteristicComponent) other_;
1407        return compareDeep(linkId, o.linkId, true) && compareDeep(description, o.description, true) && compareDeep(note, o.note, true)
1408           && compareDeep(exclude, o.exclude, true) && compareDeep(definitionReference, o.definitionReference, true)
1409           && compareDeep(definitionCanonical, o.definitionCanonical, true) && compareDeep(definitionCodeableConcept, o.definitionCodeableConcept, true)
1410           && compareDeep(definitionExpression, o.definitionExpression, true) && compareDeep(definitionId, o.definitionId, true)
1411           && compareDeep(definitionByTypeAndValue, o.definitionByTypeAndValue, true) && compareDeep(definitionByCombination, o.definitionByCombination, true)
1412           && compareDeep(method, o.method, true) && compareDeep(device, o.device, true) && compareDeep(timeFromEvent, o.timeFromEvent, true)
1413           && compareDeep(groupMeasure, o.groupMeasure, true);
1414      }
1415
1416      @Override
1417      public boolean equalsShallow(Base other_) {
1418        if (!super.equalsShallow(other_))
1419          return false;
1420        if (!(other_ instanceof EvidenceVariableCharacteristicComponent))
1421          return false;
1422        EvidenceVariableCharacteristicComponent o = (EvidenceVariableCharacteristicComponent) other_;
1423        return compareValues(linkId, o.linkId, true) && compareValues(description, o.description, true) && compareValues(exclude, o.exclude, true)
1424           && compareValues(definitionCanonical, o.definitionCanonical, true) && compareValues(definitionId, o.definitionId, true)
1425           && compareValues(groupMeasure, o.groupMeasure, true);
1426      }
1427
1428      public boolean isEmpty() {
1429        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, description, note
1430          , exclude, definitionReference, definitionCanonical, definitionCodeableConcept, definitionExpression
1431          , definitionId, definitionByTypeAndValue, definitionByCombination, method, device
1432          , timeFromEvent, groupMeasure);
1433      }
1434
1435  public String fhirType() {
1436    return "EvidenceVariable.characteristic";
1437
1438  }
1439
1440  }
1441
1442    @Block()
1443    public static class EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent extends BackboneElement implements IBaseBackboneElement {
1444        /**
1445         * Used to express the type of characteristic.
1446         */
1447        @Child(name = "type", type = {CodeableConcept.class, EvidenceVariable.class, IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
1448        @Description(shortDefinition="Expresses the type of characteristic", formalDefinition="Used to express the type of characteristic." )
1449        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/usage-context-type")
1450        protected DataType type;
1451
1452        /**
1453         * Defines the characteristic when paired with characteristic.type[x].
1454         */
1455        @Child(name = "value", type = {CodeableConcept.class, BooleanType.class, Quantity.class, Range.class, Reference.class, IdType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1456        @Description(shortDefinition="Defines the characteristic when coupled with characteristic.type[x]", formalDefinition="Defines the characteristic when paired with characteristic.type[x]." )
1457        protected DataType value;
1458
1459        /**
1460         * Defines the reference point for comparison when valueQuantity is not compared to zero.
1461         */
1462        @Child(name = "offset", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1463        @Description(shortDefinition="Reference point for valueQuantity", formalDefinition="Defines the reference point for comparison when valueQuantity is not compared to zero." )
1464        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/characteristic-offset")
1465        protected CodeableConcept offset;
1466
1467        private static final long serialVersionUID = 920507767L;
1468
1469    /**
1470     * Constructor
1471     */
1472      public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent() {
1473        super();
1474      }
1475
1476    /**
1477     * Constructor
1478     */
1479      public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent(DataType type, DataType value) {
1480        super();
1481        this.setType(type);
1482        this.setValue(value);
1483      }
1484
1485        /**
1486         * @return {@link #type} (Used to express the type of characteristic.)
1487         */
1488        public DataType getType() { 
1489          return this.type;
1490        }
1491
1492        /**
1493         * @return {@link #type} (Used to express the type of characteristic.)
1494         */
1495        public CodeableConcept getTypeCodeableConcept() throws FHIRException { 
1496          if (this.type == null)
1497            this.type = new CodeableConcept();
1498          if (!(this.type instanceof CodeableConcept))
1499            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.type.getClass().getName()+" was encountered");
1500          return (CodeableConcept) this.type;
1501        }
1502
1503        public boolean hasTypeCodeableConcept() { 
1504          return this != null && this.type instanceof CodeableConcept;
1505        }
1506
1507        /**
1508         * @return {@link #type} (Used to express the type of characteristic.)
1509         */
1510        public Reference getTypeReference() throws FHIRException { 
1511          if (this.type == null)
1512            this.type = new Reference();
1513          if (!(this.type instanceof Reference))
1514            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.type.getClass().getName()+" was encountered");
1515          return (Reference) this.type;
1516        }
1517
1518        public boolean hasTypeReference() { 
1519          return this != null && this.type instanceof Reference;
1520        }
1521
1522        /**
1523         * @return {@link #type} (Used to express the type of characteristic.)
1524         */
1525        public IdType getTypeIdType() throws FHIRException { 
1526          if (this.type == null)
1527            this.type = new IdType();
1528          if (!(this.type instanceof IdType))
1529            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.type.getClass().getName()+" was encountered");
1530          return (IdType) this.type;
1531        }
1532
1533        public boolean hasTypeIdType() { 
1534          return this != null && this.type instanceof IdType;
1535        }
1536
1537        public boolean hasType() { 
1538          return this.type != null && !this.type.isEmpty();
1539        }
1540
1541        /**
1542         * @param value {@link #type} (Used to express the type of characteristic.)
1543         */
1544        public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent setType(DataType value) { 
1545          if (value != null && !(value instanceof CodeableConcept || value instanceof Reference || value instanceof IdType))
1546            throw new Error("Not the right type for EvidenceVariable.characteristic.definitionByTypeAndValue.type[x]: "+value.fhirType());
1547          this.type = value;
1548          return this;
1549        }
1550
1551        /**
1552         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1553         */
1554        public DataType getValue() { 
1555          return this.value;
1556        }
1557
1558        /**
1559         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1560         */
1561        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
1562          if (this.value == null)
1563            this.value = new CodeableConcept();
1564          if (!(this.value instanceof CodeableConcept))
1565            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
1566          return (CodeableConcept) this.value;
1567        }
1568
1569        public boolean hasValueCodeableConcept() { 
1570          return this != null && this.value instanceof CodeableConcept;
1571        }
1572
1573        /**
1574         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1575         */
1576        public BooleanType getValueBooleanType() throws FHIRException { 
1577          if (this.value == null)
1578            this.value = new BooleanType();
1579          if (!(this.value instanceof BooleanType))
1580            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
1581          return (BooleanType) this.value;
1582        }
1583
1584        public boolean hasValueBooleanType() { 
1585          return this != null && this.value instanceof BooleanType;
1586        }
1587
1588        /**
1589         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1590         */
1591        public Quantity getValueQuantity() throws FHIRException { 
1592          if (this.value == null)
1593            this.value = new Quantity();
1594          if (!(this.value instanceof Quantity))
1595            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
1596          return (Quantity) this.value;
1597        }
1598
1599        public boolean hasValueQuantity() { 
1600          return this != null && this.value instanceof Quantity;
1601        }
1602
1603        /**
1604         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1605         */
1606        public Range getValueRange() throws FHIRException { 
1607          if (this.value == null)
1608            this.value = new Range();
1609          if (!(this.value instanceof Range))
1610            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
1611          return (Range) this.value;
1612        }
1613
1614        public boolean hasValueRange() { 
1615          return this != null && this.value instanceof Range;
1616        }
1617
1618        /**
1619         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1620         */
1621        public Reference getValueReference() throws FHIRException { 
1622          if (this.value == null)
1623            this.value = new Reference();
1624          if (!(this.value instanceof Reference))
1625            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered");
1626          return (Reference) this.value;
1627        }
1628
1629        public boolean hasValueReference() { 
1630          return this != null && this.value instanceof Reference;
1631        }
1632
1633        /**
1634         * @return {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1635         */
1636        public IdType getValueIdType() throws FHIRException { 
1637          if (this.value == null)
1638            this.value = new IdType();
1639          if (!(this.value instanceof IdType))
1640            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.value.getClass().getName()+" was encountered");
1641          return (IdType) this.value;
1642        }
1643
1644        public boolean hasValueIdType() { 
1645          return this != null && this.value instanceof IdType;
1646        }
1647
1648        public boolean hasValue() { 
1649          return this.value != null && !this.value.isEmpty();
1650        }
1651
1652        /**
1653         * @param value {@link #value} (Defines the characteristic when paired with characteristic.type[x].)
1654         */
1655        public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent setValue(DataType value) { 
1656          if (value != null && !(value instanceof CodeableConcept || value instanceof BooleanType || value instanceof Quantity || value instanceof Range || value instanceof Reference || value instanceof IdType))
1657            throw new Error("Not the right type for EvidenceVariable.characteristic.definitionByTypeAndValue.value[x]: "+value.fhirType());
1658          this.value = value;
1659          return this;
1660        }
1661
1662        /**
1663         * @return {@link #offset} (Defines the reference point for comparison when valueQuantity is not compared to zero.)
1664         */
1665        public CodeableConcept getOffset() { 
1666          if (this.offset == null)
1667            if (Configuration.errorOnAutoCreate())
1668              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent.offset");
1669            else if (Configuration.doAutoCreate())
1670              this.offset = new CodeableConcept(); // cc
1671          return this.offset;
1672        }
1673
1674        public boolean hasOffset() { 
1675          return this.offset != null && !this.offset.isEmpty();
1676        }
1677
1678        /**
1679         * @param value {@link #offset} (Defines the reference point for comparison when valueQuantity is not compared to zero.)
1680         */
1681        public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent setOffset(CodeableConcept value) { 
1682          this.offset = value;
1683          return this;
1684        }
1685
1686        protected void listChildren(List<Property> children) {
1687          super.listChildren(children);
1688          children.add(new Property("type[x]", "CodeableConcept|Reference(EvidenceVariable)|id", "Used to express the type of characteristic.", 0, 1, type));
1689          children.add(new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference|id", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value));
1690          children.add(new Property("offset", "CodeableConcept", "Defines the reference point for comparison when valueQuantity is not compared to zero.", 0, 1, offset));
1691        }
1692
1693        @Override
1694        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1695          switch (_hash) {
1696          case -853093626: /*type[x]*/  return new Property("type[x]", "CodeableConcept|Reference(EvidenceVariable)|id", "Used to express the type of characteristic.", 0, 1, type);
1697          case 3575610: /*type*/  return new Property("type[x]", "CodeableConcept|Reference(EvidenceVariable)|id", "Used to express the type of characteristic.", 0, 1, type);
1698          case 507804935: /*typeCodeableConcept*/  return new Property("type[x]", "CodeableConcept", "Used to express the type of characteristic.", 0, 1, type);
1699          case 2074825009: /*typeReference*/  return new Property("type[x]", "Reference(EvidenceVariable)", "Used to express the type of characteristic.", 0, 1, type);
1700          case -858803723: /*typeId*/  return new Property("type[x]", "id", "Used to express the type of characteristic.", 0, 1, type);
1701          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference|id", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1702          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference|id", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1703          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1704          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1705          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1706          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1707          case 1755241690: /*valueReference*/  return new Property("value[x]", "Reference", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1708          case 231604844: /*valueId*/  return new Property("value[x]", "id", "Defines the characteristic when paired with characteristic.type[x].", 0, 1, value);
1709          case -1019779949: /*offset*/  return new Property("offset", "CodeableConcept", "Defines the reference point for comparison when valueQuantity is not compared to zero.", 0, 1, offset);
1710          default: return super.getNamedProperty(_hash, _name, _checkValid);
1711          }
1712
1713        }
1714
1715      @Override
1716      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1717        switch (hash) {
1718        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // DataType
1719        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
1720        case -1019779949: /*offset*/ return this.offset == null ? new Base[0] : new Base[] {this.offset}; // CodeableConcept
1721        default: return super.getProperty(hash, name, checkValid);
1722        }
1723
1724      }
1725
1726      @Override
1727      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1728        switch (hash) {
1729        case 3575610: // type
1730          this.type = TypeConvertor.castToType(value); // DataType
1731          return value;
1732        case 111972721: // value
1733          this.value = TypeConvertor.castToType(value); // DataType
1734          return value;
1735        case -1019779949: // offset
1736          this.offset = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1737          return value;
1738        default: return super.setProperty(hash, name, value);
1739        }
1740
1741      }
1742
1743      @Override
1744      public Base setProperty(String name, Base value) throws FHIRException {
1745        if (name.equals("type[x]")) {
1746          this.type = TypeConvertor.castToType(value); // DataType
1747        } else if (name.equals("value[x]")) {
1748          this.value = TypeConvertor.castToType(value); // DataType
1749        } else if (name.equals("offset")) {
1750          this.offset = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1751        } else
1752          return super.setProperty(name, value);
1753        return value;
1754      }
1755
1756      @Override
1757      public Base makeProperty(int hash, String name) throws FHIRException {
1758        switch (hash) {
1759        case -853093626:  return getType();
1760        case 3575610:  return getType();
1761        case -1410166417:  return getValue();
1762        case 111972721:  return getValue();
1763        case -1019779949:  return getOffset();
1764        default: return super.makeProperty(hash, name);
1765        }
1766
1767      }
1768
1769      @Override
1770      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1771        switch (hash) {
1772        case 3575610: /*type*/ return new String[] {"CodeableConcept", "Reference", "id"};
1773        case 111972721: /*value*/ return new String[] {"CodeableConcept", "boolean", "Quantity", "Range", "Reference", "id"};
1774        case -1019779949: /*offset*/ return new String[] {"CodeableConcept"};
1775        default: return super.getTypesForProperty(hash, name);
1776        }
1777
1778      }
1779
1780      @Override
1781      public Base addChild(String name) throws FHIRException {
1782        if (name.equals("typeCodeableConcept")) {
1783          this.type = new CodeableConcept();
1784          return this.type;
1785        }
1786        else if (name.equals("typeReference")) {
1787          this.type = new Reference();
1788          return this.type;
1789        }
1790        else if (name.equals("typeId")) {
1791          this.type = new IdType();
1792          return this.type;
1793        }
1794        else if (name.equals("valueCodeableConcept")) {
1795          this.value = new CodeableConcept();
1796          return this.value;
1797        }
1798        else if (name.equals("valueBoolean")) {
1799          this.value = new BooleanType();
1800          return this.value;
1801        }
1802        else if (name.equals("valueQuantity")) {
1803          this.value = new Quantity();
1804          return this.value;
1805        }
1806        else if (name.equals("valueRange")) {
1807          this.value = new Range();
1808          return this.value;
1809        }
1810        else if (name.equals("valueReference")) {
1811          this.value = new Reference();
1812          return this.value;
1813        }
1814        else if (name.equals("valueId")) {
1815          this.value = new IdType();
1816          return this.value;
1817        }
1818        else if (name.equals("offset")) {
1819          this.offset = new CodeableConcept();
1820          return this.offset;
1821        }
1822        else
1823          return super.addChild(name);
1824      }
1825
1826      public EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent copy() {
1827        EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent dst = new EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent();
1828        copyValues(dst);
1829        return dst;
1830      }
1831
1832      public void copyValues(EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent dst) {
1833        super.copyValues(dst);
1834        dst.type = type == null ? null : type.copy();
1835        dst.value = value == null ? null : value.copy();
1836        dst.offset = offset == null ? null : offset.copy();
1837      }
1838
1839      @Override
1840      public boolean equalsDeep(Base other_) {
1841        if (!super.equalsDeep(other_))
1842          return false;
1843        if (!(other_ instanceof EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent))
1844          return false;
1845        EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent o = (EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent) other_;
1846        return compareDeep(type, o.type, true) && compareDeep(value, o.value, true) && compareDeep(offset, o.offset, true)
1847          ;
1848      }
1849
1850      @Override
1851      public boolean equalsShallow(Base other_) {
1852        if (!super.equalsShallow(other_))
1853          return false;
1854        if (!(other_ instanceof EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent))
1855          return false;
1856        EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent o = (EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent) other_;
1857        return true;
1858      }
1859
1860      public boolean isEmpty() {
1861        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, value, offset);
1862      }
1863
1864  public String fhirType() {
1865    return "EvidenceVariable.characteristic.definitionByTypeAndValue";
1866
1867  }
1868
1869  }
1870
1871    @Block()
1872    public static class EvidenceVariableCharacteristicDefinitionByCombinationComponent extends BackboneElement implements IBaseBackboneElement {
1873        /**
1874         * Used to specify if two or more characteristics are combined with OR or AND.
1875         */
1876        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1877        @Description(shortDefinition="all-of | any-of | at-least | at-most | statistical | net-effect | dataset", formalDefinition="Used to specify if two or more characteristics are combined with OR or AND." )
1878        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/characteristic-combination")
1879        protected Enumeration<CharacteristicCombination> code;
1880
1881        /**
1882         * Provides the value of "n" when "at-least" or "at-most" codes are used.
1883         */
1884        @Child(name = "threshold", type = {PositiveIntType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1885        @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." )
1886        protected PositiveIntType threshold;
1887
1888        /**
1889         * A defining factor of the characteristic.
1890         */
1891        @Child(name = "characteristic", type = {EvidenceVariableCharacteristicComponent.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1892        @Description(shortDefinition="A defining factor of the characteristic", formalDefinition="A defining factor of the characteristic." )
1893        protected List<EvidenceVariableCharacteristicComponent> characteristic;
1894
1895        private static final long serialVersionUID = -2053118515L;
1896
1897    /**
1898     * Constructor
1899     */
1900      public EvidenceVariableCharacteristicDefinitionByCombinationComponent() {
1901        super();
1902      }
1903
1904    /**
1905     * Constructor
1906     */
1907      public EvidenceVariableCharacteristicDefinitionByCombinationComponent(CharacteristicCombination code, EvidenceVariableCharacteristicComponent characteristic) {
1908        super();
1909        this.setCode(code);
1910        this.addCharacteristic(characteristic);
1911      }
1912
1913        /**
1914         * @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
1915         */
1916        public Enumeration<CharacteristicCombination> getCodeElement() { 
1917          if (this.code == null)
1918            if (Configuration.errorOnAutoCreate())
1919              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicDefinitionByCombinationComponent.code");
1920            else if (Configuration.doAutoCreate())
1921              this.code = new Enumeration<CharacteristicCombination>(new CharacteristicCombinationEnumFactory()); // bb
1922          return this.code;
1923        }
1924
1925        public boolean hasCodeElement() { 
1926          return this.code != null && !this.code.isEmpty();
1927        }
1928
1929        public boolean hasCode() { 
1930          return this.code != null && !this.code.isEmpty();
1931        }
1932
1933        /**
1934         * @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
1935         */
1936        public EvidenceVariableCharacteristicDefinitionByCombinationComponent setCodeElement(Enumeration<CharacteristicCombination> value) { 
1937          this.code = value;
1938          return this;
1939        }
1940
1941        /**
1942         * @return Used to specify if two or more characteristics are combined with OR or AND.
1943         */
1944        public CharacteristicCombination getCode() { 
1945          return this.code == null ? null : this.code.getValue();
1946        }
1947
1948        /**
1949         * @param value Used to specify if two or more characteristics are combined with OR or AND.
1950         */
1951        public EvidenceVariableCharacteristicDefinitionByCombinationComponent setCode(CharacteristicCombination value) { 
1952            if (this.code == null)
1953              this.code = new Enumeration<CharacteristicCombination>(new CharacteristicCombinationEnumFactory());
1954            this.code.setValue(value);
1955          return this;
1956        }
1957
1958        /**
1959         * @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
1960         */
1961        public PositiveIntType getThresholdElement() { 
1962          if (this.threshold == null)
1963            if (Configuration.errorOnAutoCreate())
1964              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicDefinitionByCombinationComponent.threshold");
1965            else if (Configuration.doAutoCreate())
1966              this.threshold = new PositiveIntType(); // bb
1967          return this.threshold;
1968        }
1969
1970        public boolean hasThresholdElement() { 
1971          return this.threshold != null && !this.threshold.isEmpty();
1972        }
1973
1974        public boolean hasThreshold() { 
1975          return this.threshold != null && !this.threshold.isEmpty();
1976        }
1977
1978        /**
1979         * @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
1980         */
1981        public EvidenceVariableCharacteristicDefinitionByCombinationComponent setThresholdElement(PositiveIntType value) { 
1982          this.threshold = value;
1983          return this;
1984        }
1985
1986        /**
1987         * @return Provides the value of "n" when "at-least" or "at-most" codes are used.
1988         */
1989        public int getThreshold() { 
1990          return this.threshold == null || this.threshold.isEmpty() ? 0 : this.threshold.getValue();
1991        }
1992
1993        /**
1994         * @param value Provides the value of "n" when "at-least" or "at-most" codes are used.
1995         */
1996        public EvidenceVariableCharacteristicDefinitionByCombinationComponent setThreshold(int value) { 
1997            if (this.threshold == null)
1998              this.threshold = new PositiveIntType();
1999            this.threshold.setValue(value);
2000          return this;
2001        }
2002
2003        /**
2004         * @return {@link #characteristic} (A defining factor of the characteristic.)
2005         */
2006        public List<EvidenceVariableCharacteristicComponent> getCharacteristic() { 
2007          if (this.characteristic == null)
2008            this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2009          return this.characteristic;
2010        }
2011
2012        /**
2013         * @return Returns a reference to <code>this</code> for easy method chaining
2014         */
2015        public EvidenceVariableCharacteristicDefinitionByCombinationComponent setCharacteristic(List<EvidenceVariableCharacteristicComponent> theCharacteristic) { 
2016          this.characteristic = theCharacteristic;
2017          return this;
2018        }
2019
2020        public boolean hasCharacteristic() { 
2021          if (this.characteristic == null)
2022            return false;
2023          for (EvidenceVariableCharacteristicComponent item : this.characteristic)
2024            if (!item.isEmpty())
2025              return true;
2026          return false;
2027        }
2028
2029        public EvidenceVariableCharacteristicComponent addCharacteristic() { //3
2030          EvidenceVariableCharacteristicComponent t = new EvidenceVariableCharacteristicComponent();
2031          if (this.characteristic == null)
2032            this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2033          this.characteristic.add(t);
2034          return t;
2035        }
2036
2037        public EvidenceVariableCharacteristicDefinitionByCombinationComponent addCharacteristic(EvidenceVariableCharacteristicComponent t) { //3
2038          if (t == null)
2039            return this;
2040          if (this.characteristic == null)
2041            this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2042          this.characteristic.add(t);
2043          return this;
2044        }
2045
2046        /**
2047         * @return The first repetition of repeating field {@link #characteristic}, creating it if it does not already exist {3}
2048         */
2049        public EvidenceVariableCharacteristicComponent getCharacteristicFirstRep() { 
2050          if (getCharacteristic().isEmpty()) {
2051            addCharacteristic();
2052          }
2053          return getCharacteristic().get(0);
2054        }
2055
2056        protected void listChildren(List<Property> children) {
2057          super.listChildren(children);
2058          children.add(new Property("code", "code", "Used to specify if two or more characteristics are combined with OR or AND.", 0, 1, code));
2059          children.add(new Property("threshold", "positiveInt", "Provides the value of \"n\" when \"at-least\" or \"at-most\" codes are used.", 0, 1, threshold));
2060          children.add(new Property("characteristic", "@EvidenceVariable.characteristic", "A defining factor of the characteristic.", 0, java.lang.Integer.MAX_VALUE, characteristic));
2061        }
2062
2063        @Override
2064        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2065          switch (_hash) {
2066          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);
2067          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);
2068          case 366313883: /*characteristic*/  return new Property("characteristic", "@EvidenceVariable.characteristic", "A defining factor of the characteristic.", 0, java.lang.Integer.MAX_VALUE, characteristic);
2069          default: return super.getNamedProperty(_hash, _name, _checkValid);
2070          }
2071
2072        }
2073
2074      @Override
2075      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2076        switch (hash) {
2077        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<CharacteristicCombination>
2078        case -1545477013: /*threshold*/ return this.threshold == null ? new Base[0] : new Base[] {this.threshold}; // PositiveIntType
2079        case 366313883: /*characteristic*/ return this.characteristic == null ? new Base[0] : this.characteristic.toArray(new Base[this.characteristic.size()]); // EvidenceVariableCharacteristicComponent
2080        default: return super.getProperty(hash, name, checkValid);
2081        }
2082
2083      }
2084
2085      @Override
2086      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2087        switch (hash) {
2088        case 3059181: // code
2089          value = new CharacteristicCombinationEnumFactory().fromType(TypeConvertor.castToCode(value));
2090          this.code = (Enumeration) value; // Enumeration<CharacteristicCombination>
2091          return value;
2092        case -1545477013: // threshold
2093          this.threshold = TypeConvertor.castToPositiveInt(value); // PositiveIntType
2094          return value;
2095        case 366313883: // characteristic
2096          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value); // EvidenceVariableCharacteristicComponent
2097          return value;
2098        default: return super.setProperty(hash, name, value);
2099        }
2100
2101      }
2102
2103      @Override
2104      public Base setProperty(String name, Base value) throws FHIRException {
2105        if (name.equals("code")) {
2106          value = new CharacteristicCombinationEnumFactory().fromType(TypeConvertor.castToCode(value));
2107          this.code = (Enumeration) value; // Enumeration<CharacteristicCombination>
2108        } else if (name.equals("threshold")) {
2109          this.threshold = TypeConvertor.castToPositiveInt(value); // PositiveIntType
2110        } else if (name.equals("characteristic")) {
2111          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value);
2112        } else
2113          return super.setProperty(name, value);
2114        return value;
2115      }
2116
2117      @Override
2118      public Base makeProperty(int hash, String name) throws FHIRException {
2119        switch (hash) {
2120        case 3059181:  return getCodeElement();
2121        case -1545477013:  return getThresholdElement();
2122        case 366313883:  return addCharacteristic(); 
2123        default: return super.makeProperty(hash, name);
2124        }
2125
2126      }
2127
2128      @Override
2129      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2130        switch (hash) {
2131        case 3059181: /*code*/ return new String[] {"code"};
2132        case -1545477013: /*threshold*/ return new String[] {"positiveInt"};
2133        case 366313883: /*characteristic*/ return new String[] {"@EvidenceVariable.characteristic"};
2134        default: return super.getTypesForProperty(hash, name);
2135        }
2136
2137      }
2138
2139      @Override
2140      public Base addChild(String name) throws FHIRException {
2141        if (name.equals("code")) {
2142          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.definitionByCombination.code");
2143        }
2144        else if (name.equals("threshold")) {
2145          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.definitionByCombination.threshold");
2146        }
2147        else if (name.equals("characteristic")) {
2148          return addCharacteristic();
2149        }
2150        else
2151          return super.addChild(name);
2152      }
2153
2154      public EvidenceVariableCharacteristicDefinitionByCombinationComponent copy() {
2155        EvidenceVariableCharacteristicDefinitionByCombinationComponent dst = new EvidenceVariableCharacteristicDefinitionByCombinationComponent();
2156        copyValues(dst);
2157        return dst;
2158      }
2159
2160      public void copyValues(EvidenceVariableCharacteristicDefinitionByCombinationComponent dst) {
2161        super.copyValues(dst);
2162        dst.code = code == null ? null : code.copy();
2163        dst.threshold = threshold == null ? null : threshold.copy();
2164        if (characteristic != null) {
2165          dst.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
2166          for (EvidenceVariableCharacteristicComponent i : characteristic)
2167            dst.characteristic.add(i.copy());
2168        };
2169      }
2170
2171      @Override
2172      public boolean equalsDeep(Base other_) {
2173        if (!super.equalsDeep(other_))
2174          return false;
2175        if (!(other_ instanceof EvidenceVariableCharacteristicDefinitionByCombinationComponent))
2176          return false;
2177        EvidenceVariableCharacteristicDefinitionByCombinationComponent o = (EvidenceVariableCharacteristicDefinitionByCombinationComponent) other_;
2178        return compareDeep(code, o.code, true) && compareDeep(threshold, o.threshold, true) && compareDeep(characteristic, o.characteristic, true)
2179          ;
2180      }
2181
2182      @Override
2183      public boolean equalsShallow(Base other_) {
2184        if (!super.equalsShallow(other_))
2185          return false;
2186        if (!(other_ instanceof EvidenceVariableCharacteristicDefinitionByCombinationComponent))
2187          return false;
2188        EvidenceVariableCharacteristicDefinitionByCombinationComponent o = (EvidenceVariableCharacteristicDefinitionByCombinationComponent) other_;
2189        return compareValues(code, o.code, true) && compareValues(threshold, o.threshold, true);
2190      }
2191
2192      public boolean isEmpty() {
2193        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, threshold, characteristic
2194          );
2195      }
2196
2197  public String fhirType() {
2198    return "EvidenceVariable.characteristic.definitionByCombination";
2199
2200  }
2201
2202  }
2203
2204    @Block()
2205    public static class EvidenceVariableCharacteristicTimeFromEventComponent extends BackboneElement implements IBaseBackboneElement {
2206        /**
2207         * Human readable description.
2208         */
2209        @Child(name = "description", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2210        @Description(shortDefinition="Human readable description", formalDefinition="Human readable description." )
2211        protected StringType description;
2212
2213        /**
2214         * A human-readable string to clarify or explain concepts about the timeFromEvent.
2215         */
2216        @Child(name = "note", type = {Annotation.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2217        @Description(shortDefinition="Used for footnotes or explanatory notes", formalDefinition="A human-readable string to clarify or explain concepts about the timeFromEvent." )
2218        protected List<Annotation> note;
2219
2220        /**
2221         * The event used as a base point (reference point) in time.
2222         */
2223        @Child(name = "event", type = {CodeableConcept.class, Reference.class, DateTimeType.class, IdType.class}, order=3, min=0, max=1, modifier=false, summary=false)
2224        @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." )
2225        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/evidence-variable-event")
2226        protected DataType event;
2227
2228        /**
2229         * Used to express the observation at a defined amount of time after the study start.
2230         */
2231        @Child(name = "quantity", type = {Quantity.class}, order=4, min=0, max=1, modifier=false, summary=false)
2232        @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." )
2233        protected Quantity quantity;
2234
2235        /**
2236         * Used to express the observation within a period after the study start.
2237         */
2238        @Child(name = "range", type = {Range.class}, order=5, min=0, max=1, modifier=false, summary=false)
2239        @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." )
2240        protected Range range;
2241
2242        private static final long serialVersionUID = 858422874L;
2243
2244    /**
2245     * Constructor
2246     */
2247      public EvidenceVariableCharacteristicTimeFromEventComponent() {
2248        super();
2249      }
2250
2251        /**
2252         * @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
2253         */
2254        public StringType getDescriptionElement() { 
2255          if (this.description == null)
2256            if (Configuration.errorOnAutoCreate())
2257              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.description");
2258            else if (Configuration.doAutoCreate())
2259              this.description = new StringType(); // bb
2260          return this.description;
2261        }
2262
2263        public boolean hasDescriptionElement() { 
2264          return this.description != null && !this.description.isEmpty();
2265        }
2266
2267        public boolean hasDescription() { 
2268          return this.description != null && !this.description.isEmpty();
2269        }
2270
2271        /**
2272         * @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
2273         */
2274        public EvidenceVariableCharacteristicTimeFromEventComponent setDescriptionElement(StringType value) { 
2275          this.description = value;
2276          return this;
2277        }
2278
2279        /**
2280         * @return Human readable description.
2281         */
2282        public String getDescription() { 
2283          return this.description == null ? null : this.description.getValue();
2284        }
2285
2286        /**
2287         * @param value Human readable description.
2288         */
2289        public EvidenceVariableCharacteristicTimeFromEventComponent setDescription(String value) { 
2290          if (Utilities.noString(value))
2291            this.description = null;
2292          else {
2293            if (this.description == null)
2294              this.description = new StringType();
2295            this.description.setValue(value);
2296          }
2297          return this;
2298        }
2299
2300        /**
2301         * @return {@link #note} (A human-readable string to clarify or explain concepts about the timeFromEvent.)
2302         */
2303        public List<Annotation> getNote() { 
2304          if (this.note == null)
2305            this.note = new ArrayList<Annotation>();
2306          return this.note;
2307        }
2308
2309        /**
2310         * @return Returns a reference to <code>this</code> for easy method chaining
2311         */
2312        public EvidenceVariableCharacteristicTimeFromEventComponent setNote(List<Annotation> theNote) { 
2313          this.note = theNote;
2314          return this;
2315        }
2316
2317        public boolean hasNote() { 
2318          if (this.note == null)
2319            return false;
2320          for (Annotation item : this.note)
2321            if (!item.isEmpty())
2322              return true;
2323          return false;
2324        }
2325
2326        public Annotation addNote() { //3
2327          Annotation t = new Annotation();
2328          if (this.note == null)
2329            this.note = new ArrayList<Annotation>();
2330          this.note.add(t);
2331          return t;
2332        }
2333
2334        public EvidenceVariableCharacteristicTimeFromEventComponent addNote(Annotation t) { //3
2335          if (t == null)
2336            return this;
2337          if (this.note == null)
2338            this.note = new ArrayList<Annotation>();
2339          this.note.add(t);
2340          return this;
2341        }
2342
2343        /**
2344         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2345         */
2346        public Annotation getNoteFirstRep() { 
2347          if (getNote().isEmpty()) {
2348            addNote();
2349          }
2350          return getNote().get(0);
2351        }
2352
2353        /**
2354         * @return {@link #event} (The event used as a base point (reference point) in time.)
2355         */
2356        public DataType getEvent() { 
2357          return this.event;
2358        }
2359
2360        /**
2361         * @return {@link #event} (The event used as a base point (reference point) in time.)
2362         */
2363        public CodeableConcept getEventCodeableConcept() throws FHIRException { 
2364          if (this.event == null)
2365            this.event = new CodeableConcept();
2366          if (!(this.event instanceof CodeableConcept))
2367            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.event.getClass().getName()+" was encountered");
2368          return (CodeableConcept) this.event;
2369        }
2370
2371        public boolean hasEventCodeableConcept() { 
2372          return this != null && this.event instanceof CodeableConcept;
2373        }
2374
2375        /**
2376         * @return {@link #event} (The event used as a base point (reference point) in time.)
2377         */
2378        public Reference getEventReference() throws FHIRException { 
2379          if (this.event == null)
2380            this.event = new Reference();
2381          if (!(this.event instanceof Reference))
2382            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.event.getClass().getName()+" was encountered");
2383          return (Reference) this.event;
2384        }
2385
2386        public boolean hasEventReference() { 
2387          return this != null && this.event instanceof Reference;
2388        }
2389
2390        /**
2391         * @return {@link #event} (The event used as a base point (reference point) in time.)
2392         */
2393        public DateTimeType getEventDateTimeType() throws FHIRException { 
2394          if (this.event == null)
2395            this.event = new DateTimeType();
2396          if (!(this.event instanceof DateTimeType))
2397            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.event.getClass().getName()+" was encountered");
2398          return (DateTimeType) this.event;
2399        }
2400
2401        public boolean hasEventDateTimeType() { 
2402          return this != null && this.event instanceof DateTimeType;
2403        }
2404
2405        /**
2406         * @return {@link #event} (The event used as a base point (reference point) in time.)
2407         */
2408        public IdType getEventIdType() throws FHIRException { 
2409          if (this.event == null)
2410            this.event = new IdType();
2411          if (!(this.event instanceof IdType))
2412            throw new FHIRException("Type mismatch: the type IdType was expected, but "+this.event.getClass().getName()+" was encountered");
2413          return (IdType) this.event;
2414        }
2415
2416        public boolean hasEventIdType() { 
2417          return this != null && this.event instanceof IdType;
2418        }
2419
2420        public boolean hasEvent() { 
2421          return this.event != null && !this.event.isEmpty();
2422        }
2423
2424        /**
2425         * @param value {@link #event} (The event used as a base point (reference point) in time.)
2426         */
2427        public EvidenceVariableCharacteristicTimeFromEventComponent setEvent(DataType value) { 
2428          if (value != null && !(value instanceof CodeableConcept || value instanceof Reference || value instanceof DateTimeType || value instanceof IdType))
2429            throw new Error("Not the right type for EvidenceVariable.characteristic.timeFromEvent.event[x]: "+value.fhirType());
2430          this.event = value;
2431          return this;
2432        }
2433
2434        /**
2435         * @return {@link #quantity} (Used to express the observation at a defined amount of time after the study start.)
2436         */
2437        public Quantity getQuantity() { 
2438          if (this.quantity == null)
2439            if (Configuration.errorOnAutoCreate())
2440              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.quantity");
2441            else if (Configuration.doAutoCreate())
2442              this.quantity = new Quantity(); // cc
2443          return this.quantity;
2444        }
2445
2446        public boolean hasQuantity() { 
2447          return this.quantity != null && !this.quantity.isEmpty();
2448        }
2449
2450        /**
2451         * @param value {@link #quantity} (Used to express the observation at a defined amount of time after the study start.)
2452         */
2453        public EvidenceVariableCharacteristicTimeFromEventComponent setQuantity(Quantity value) { 
2454          this.quantity = value;
2455          return this;
2456        }
2457
2458        /**
2459         * @return {@link #range} (Used to express the observation within a period after the study start.)
2460         */
2461        public Range getRange() { 
2462          if (this.range == null)
2463            if (Configuration.errorOnAutoCreate())
2464              throw new Error("Attempt to auto-create EvidenceVariableCharacteristicTimeFromEventComponent.range");
2465            else if (Configuration.doAutoCreate())
2466              this.range = new Range(); // cc
2467          return this.range;
2468        }
2469
2470        public boolean hasRange() { 
2471          return this.range != null && !this.range.isEmpty();
2472        }
2473
2474        /**
2475         * @param value {@link #range} (Used to express the observation within a period after the study start.)
2476         */
2477        public EvidenceVariableCharacteristicTimeFromEventComponent setRange(Range value) { 
2478          this.range = value;
2479          return this;
2480        }
2481
2482        protected void listChildren(List<Property> children) {
2483          super.listChildren(children);
2484          children.add(new Property("description", "string", "Human readable description.", 0, 1, description));
2485          children.add(new Property("note", "Annotation", "A human-readable string to clarify or explain concepts about the timeFromEvent.", 0, java.lang.Integer.MAX_VALUE, note));
2486          children.add(new Property("event[x]", "CodeableConcept|Reference|dateTime|id", "The event used as a base point (reference point) in time.", 0, 1, event));
2487          children.add(new Property("quantity", "Quantity", "Used to express the observation at a defined amount of time after the study start.", 0, 1, quantity));
2488          children.add(new Property("range", "Range", "Used to express the observation within a period after the study start.", 0, 1, range));
2489        }
2490
2491        @Override
2492        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2493          switch (_hash) {
2494          case -1724546052: /*description*/  return new Property("description", "string", "Human readable description.", 0, 1, description);
2495          case 3387378: /*note*/  return new Property("note", "Annotation", "A human-readable string to clarify or explain concepts about the timeFromEvent.", 0, java.lang.Integer.MAX_VALUE, note);
2496          case 278115238: /*event[x]*/  return new Property("event[x]", "CodeableConcept|Reference|dateTime|id", "The event used as a base point (reference point) in time.", 0, 1, event);
2497          case 96891546: /*event*/  return new Property("event[x]", "CodeableConcept|Reference|dateTime|id", "The event used as a base point (reference point) in time.", 0, 1, event);
2498          case 1464167847: /*eventCodeableConcept*/  return new Property("event[x]", "CodeableConcept", "The event used as a base point (reference point) in time.", 0, 1, event);
2499          case 30751185: /*eventReference*/  return new Property("event[x]", "Reference", "The event used as a base point (reference point) in time.", 0, 1, event);
2500          case -116077483: /*eventDateTime*/  return new Property("event[x]", "dateTime", "The event used as a base point (reference point) in time.", 0, 1, event);
2501          case -1376502443: /*eventId*/  return new Property("event[x]", "id", "The event used as a base point (reference point) in time.", 0, 1, event);
2502          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);
2503          case 108280125: /*range*/  return new Property("range", "Range", "Used to express the observation within a period after the study start.", 0, 1, range);
2504          default: return super.getNamedProperty(_hash, _name, _checkValid);
2505          }
2506
2507        }
2508
2509      @Override
2510      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2511        switch (hash) {
2512        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
2513        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2514        case 96891546: /*event*/ return this.event == null ? new Base[0] : new Base[] {this.event}; // DataType
2515        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
2516        case 108280125: /*range*/ return this.range == null ? new Base[0] : new Base[] {this.range}; // Range
2517        default: return super.getProperty(hash, name, checkValid);
2518        }
2519
2520      }
2521
2522      @Override
2523      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2524        switch (hash) {
2525        case -1724546052: // description
2526          this.description = TypeConvertor.castToString(value); // StringType
2527          return value;
2528        case 3387378: // note
2529          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2530          return value;
2531        case 96891546: // event
2532          this.event = TypeConvertor.castToType(value); // DataType
2533          return value;
2534        case -1285004149: // quantity
2535          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
2536          return value;
2537        case 108280125: // range
2538          this.range = TypeConvertor.castToRange(value); // Range
2539          return value;
2540        default: return super.setProperty(hash, name, value);
2541        }
2542
2543      }
2544
2545      @Override
2546      public Base setProperty(String name, Base value) throws FHIRException {
2547        if (name.equals("description")) {
2548          this.description = TypeConvertor.castToString(value); // StringType
2549        } else if (name.equals("note")) {
2550          this.getNote().add(TypeConvertor.castToAnnotation(value));
2551        } else if (name.equals("event[x]")) {
2552          this.event = TypeConvertor.castToType(value); // DataType
2553        } else if (name.equals("quantity")) {
2554          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
2555        } else if (name.equals("range")) {
2556          this.range = TypeConvertor.castToRange(value); // Range
2557        } else
2558          return super.setProperty(name, value);
2559        return value;
2560      }
2561
2562      @Override
2563      public Base makeProperty(int hash, String name) throws FHIRException {
2564        switch (hash) {
2565        case -1724546052:  return getDescriptionElement();
2566        case 3387378:  return addNote(); 
2567        case 278115238:  return getEvent();
2568        case 96891546:  return getEvent();
2569        case -1285004149:  return getQuantity();
2570        case 108280125:  return getRange();
2571        default: return super.makeProperty(hash, name);
2572        }
2573
2574      }
2575
2576      @Override
2577      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2578        switch (hash) {
2579        case -1724546052: /*description*/ return new String[] {"string"};
2580        case 3387378: /*note*/ return new String[] {"Annotation"};
2581        case 96891546: /*event*/ return new String[] {"CodeableConcept", "Reference", "dateTime", "id"};
2582        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
2583        case 108280125: /*range*/ return new String[] {"Range"};
2584        default: return super.getTypesForProperty(hash, name);
2585        }
2586
2587      }
2588
2589      @Override
2590      public Base addChild(String name) throws FHIRException {
2591        if (name.equals("description")) {
2592          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.characteristic.timeFromEvent.description");
2593        }
2594        else if (name.equals("note")) {
2595          return addNote();
2596        }
2597        else if (name.equals("eventCodeableConcept")) {
2598          this.event = new CodeableConcept();
2599          return this.event;
2600        }
2601        else if (name.equals("eventReference")) {
2602          this.event = new Reference();
2603          return this.event;
2604        }
2605        else if (name.equals("eventDateTime")) {
2606          this.event = new DateTimeType();
2607          return this.event;
2608        }
2609        else if (name.equals("eventId")) {
2610          this.event = new IdType();
2611          return this.event;
2612        }
2613        else if (name.equals("quantity")) {
2614          this.quantity = new Quantity();
2615          return this.quantity;
2616        }
2617        else if (name.equals("range")) {
2618          this.range = new Range();
2619          return this.range;
2620        }
2621        else
2622          return super.addChild(name);
2623      }
2624
2625      public EvidenceVariableCharacteristicTimeFromEventComponent copy() {
2626        EvidenceVariableCharacteristicTimeFromEventComponent dst = new EvidenceVariableCharacteristicTimeFromEventComponent();
2627        copyValues(dst);
2628        return dst;
2629      }
2630
2631      public void copyValues(EvidenceVariableCharacteristicTimeFromEventComponent dst) {
2632        super.copyValues(dst);
2633        dst.description = description == null ? null : description.copy();
2634        if (note != null) {
2635          dst.note = new ArrayList<Annotation>();
2636          for (Annotation i : note)
2637            dst.note.add(i.copy());
2638        };
2639        dst.event = event == null ? null : event.copy();
2640        dst.quantity = quantity == null ? null : quantity.copy();
2641        dst.range = range == null ? null : range.copy();
2642      }
2643
2644      @Override
2645      public boolean equalsDeep(Base other_) {
2646        if (!super.equalsDeep(other_))
2647          return false;
2648        if (!(other_ instanceof EvidenceVariableCharacteristicTimeFromEventComponent))
2649          return false;
2650        EvidenceVariableCharacteristicTimeFromEventComponent o = (EvidenceVariableCharacteristicTimeFromEventComponent) other_;
2651        return compareDeep(description, o.description, true) && compareDeep(note, o.note, true) && compareDeep(event, o.event, true)
2652           && compareDeep(quantity, o.quantity, true) && compareDeep(range, o.range, true);
2653      }
2654
2655      @Override
2656      public boolean equalsShallow(Base other_) {
2657        if (!super.equalsShallow(other_))
2658          return false;
2659        if (!(other_ instanceof EvidenceVariableCharacteristicTimeFromEventComponent))
2660          return false;
2661        EvidenceVariableCharacteristicTimeFromEventComponent o = (EvidenceVariableCharacteristicTimeFromEventComponent) other_;
2662        return compareValues(description, o.description, true);
2663      }
2664
2665      public boolean isEmpty() {
2666        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, note, event
2667          , quantity, range);
2668      }
2669
2670  public String fhirType() {
2671    return "EvidenceVariable.characteristic.timeFromEvent";
2672
2673  }
2674
2675  }
2676
2677    @Block()
2678    public static class EvidenceVariableCategoryComponent extends BackboneElement implements IBaseBackboneElement {
2679        /**
2680         * Description of the grouping.
2681         */
2682        @Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2683        @Description(shortDefinition="Description of the grouping", formalDefinition="Description of the grouping." )
2684        protected StringType name;
2685
2686        /**
2687         * Definition of the grouping.
2688         */
2689        @Child(name = "value", type = {CodeableConcept.class, Quantity.class, Range.class}, order=2, min=0, max=1, modifier=false, summary=false)
2690        @Description(shortDefinition="Definition of the grouping", formalDefinition="Definition of the grouping." )
2691        protected DataType value;
2692
2693        private static final long serialVersionUID = 1839679495L;
2694
2695    /**
2696     * Constructor
2697     */
2698      public EvidenceVariableCategoryComponent() {
2699        super();
2700      }
2701
2702        /**
2703         * @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
2704         */
2705        public StringType getNameElement() { 
2706          if (this.name == null)
2707            if (Configuration.errorOnAutoCreate())
2708              throw new Error("Attempt to auto-create EvidenceVariableCategoryComponent.name");
2709            else if (Configuration.doAutoCreate())
2710              this.name = new StringType(); // bb
2711          return this.name;
2712        }
2713
2714        public boolean hasNameElement() { 
2715          return this.name != null && !this.name.isEmpty();
2716        }
2717
2718        public boolean hasName() { 
2719          return this.name != null && !this.name.isEmpty();
2720        }
2721
2722        /**
2723         * @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
2724         */
2725        public EvidenceVariableCategoryComponent setNameElement(StringType value) { 
2726          this.name = value;
2727          return this;
2728        }
2729
2730        /**
2731         * @return Description of the grouping.
2732         */
2733        public String getName() { 
2734          return this.name == null ? null : this.name.getValue();
2735        }
2736
2737        /**
2738         * @param value Description of the grouping.
2739         */
2740        public EvidenceVariableCategoryComponent setName(String value) { 
2741          if (Utilities.noString(value))
2742            this.name = null;
2743          else {
2744            if (this.name == null)
2745              this.name = new StringType();
2746            this.name.setValue(value);
2747          }
2748          return this;
2749        }
2750
2751        /**
2752         * @return {@link #value} (Definition of the grouping.)
2753         */
2754        public DataType getValue() { 
2755          return this.value;
2756        }
2757
2758        /**
2759         * @return {@link #value} (Definition of the grouping.)
2760         */
2761        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
2762          if (this.value == null)
2763            this.value = new CodeableConcept();
2764          if (!(this.value instanceof CodeableConcept))
2765            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
2766          return (CodeableConcept) this.value;
2767        }
2768
2769        public boolean hasValueCodeableConcept() { 
2770          return this != null && this.value instanceof CodeableConcept;
2771        }
2772
2773        /**
2774         * @return {@link #value} (Definition of the grouping.)
2775         */
2776        public Quantity getValueQuantity() throws FHIRException { 
2777          if (this.value == null)
2778            this.value = new Quantity();
2779          if (!(this.value instanceof Quantity))
2780            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
2781          return (Quantity) this.value;
2782        }
2783
2784        public boolean hasValueQuantity() { 
2785          return this != null && this.value instanceof Quantity;
2786        }
2787
2788        /**
2789         * @return {@link #value} (Definition of the grouping.)
2790         */
2791        public Range getValueRange() throws FHIRException { 
2792          if (this.value == null)
2793            this.value = new Range();
2794          if (!(this.value instanceof Range))
2795            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
2796          return (Range) this.value;
2797        }
2798
2799        public boolean hasValueRange() { 
2800          return this != null && this.value instanceof Range;
2801        }
2802
2803        public boolean hasValue() { 
2804          return this.value != null && !this.value.isEmpty();
2805        }
2806
2807        /**
2808         * @param value {@link #value} (Definition of the grouping.)
2809         */
2810        public EvidenceVariableCategoryComponent setValue(DataType value) { 
2811          if (value != null && !(value instanceof CodeableConcept || value instanceof Quantity || value instanceof Range))
2812            throw new Error("Not the right type for EvidenceVariable.category.value[x]: "+value.fhirType());
2813          this.value = value;
2814          return this;
2815        }
2816
2817        protected void listChildren(List<Property> children) {
2818          super.listChildren(children);
2819          children.add(new Property("name", "string", "Description of the grouping.", 0, 1, name));
2820          children.add(new Property("value[x]", "CodeableConcept|Quantity|Range", "Definition of the grouping.", 0, 1, value));
2821        }
2822
2823        @Override
2824        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2825          switch (_hash) {
2826          case 3373707: /*name*/  return new Property("name", "string", "Description of the grouping.", 0, 1, name);
2827          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|Quantity|Range", "Definition of the grouping.", 0, 1, value);
2828          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|Quantity|Range", "Definition of the grouping.", 0, 1, value);
2829          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "Definition of the grouping.", 0, 1, value);
2830          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "Definition of the grouping.", 0, 1, value);
2831          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "Definition of the grouping.", 0, 1, value);
2832          default: return super.getNamedProperty(_hash, _name, _checkValid);
2833          }
2834
2835        }
2836
2837      @Override
2838      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2839        switch (hash) {
2840        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2841        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
2842        default: return super.getProperty(hash, name, checkValid);
2843        }
2844
2845      }
2846
2847      @Override
2848      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2849        switch (hash) {
2850        case 3373707: // name
2851          this.name = TypeConvertor.castToString(value); // StringType
2852          return value;
2853        case 111972721: // value
2854          this.value = TypeConvertor.castToType(value); // DataType
2855          return value;
2856        default: return super.setProperty(hash, name, value);
2857        }
2858
2859      }
2860
2861      @Override
2862      public Base setProperty(String name, Base value) throws FHIRException {
2863        if (name.equals("name")) {
2864          this.name = TypeConvertor.castToString(value); // StringType
2865        } else if (name.equals("value[x]")) {
2866          this.value = TypeConvertor.castToType(value); // DataType
2867        } else
2868          return super.setProperty(name, value);
2869        return value;
2870      }
2871
2872      @Override
2873      public Base makeProperty(int hash, String name) throws FHIRException {
2874        switch (hash) {
2875        case 3373707:  return getNameElement();
2876        case -1410166417:  return getValue();
2877        case 111972721:  return getValue();
2878        default: return super.makeProperty(hash, name);
2879        }
2880
2881      }
2882
2883      @Override
2884      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2885        switch (hash) {
2886        case 3373707: /*name*/ return new String[] {"string"};
2887        case 111972721: /*value*/ return new String[] {"CodeableConcept", "Quantity", "Range"};
2888        default: return super.getTypesForProperty(hash, name);
2889        }
2890
2891      }
2892
2893      @Override
2894      public Base addChild(String name) throws FHIRException {
2895        if (name.equals("name")) {
2896          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.category.name");
2897        }
2898        else if (name.equals("valueCodeableConcept")) {
2899          this.value = new CodeableConcept();
2900          return this.value;
2901        }
2902        else if (name.equals("valueQuantity")) {
2903          this.value = new Quantity();
2904          return this.value;
2905        }
2906        else if (name.equals("valueRange")) {
2907          this.value = new Range();
2908          return this.value;
2909        }
2910        else
2911          return super.addChild(name);
2912      }
2913
2914      public EvidenceVariableCategoryComponent copy() {
2915        EvidenceVariableCategoryComponent dst = new EvidenceVariableCategoryComponent();
2916        copyValues(dst);
2917        return dst;
2918      }
2919
2920      public void copyValues(EvidenceVariableCategoryComponent dst) {
2921        super.copyValues(dst);
2922        dst.name = name == null ? null : name.copy();
2923        dst.value = value == null ? null : value.copy();
2924      }
2925
2926      @Override
2927      public boolean equalsDeep(Base other_) {
2928        if (!super.equalsDeep(other_))
2929          return false;
2930        if (!(other_ instanceof EvidenceVariableCategoryComponent))
2931          return false;
2932        EvidenceVariableCategoryComponent o = (EvidenceVariableCategoryComponent) other_;
2933        return compareDeep(name, o.name, true) && compareDeep(value, o.value, true);
2934      }
2935
2936      @Override
2937      public boolean equalsShallow(Base other_) {
2938        if (!super.equalsShallow(other_))
2939          return false;
2940        if (!(other_ instanceof EvidenceVariableCategoryComponent))
2941          return false;
2942        EvidenceVariableCategoryComponent o = (EvidenceVariableCategoryComponent) other_;
2943        return compareValues(name, o.name, true);
2944      }
2945
2946      public boolean isEmpty() {
2947        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, value);
2948      }
2949
2950  public String fhirType() {
2951    return "EvidenceVariable.category";
2952
2953  }
2954
2955  }
2956
2957    /**
2958     * 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.
2959     */
2960    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
2961    @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." )
2962    protected UriType url;
2963
2964    /**
2965     * 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.
2966     */
2967    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2968    @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." )
2969    protected List<Identifier> identifier;
2970
2971    /**
2972     * 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.
2973     */
2974    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2975    @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." )
2976    protected StringType version;
2977
2978    /**
2979     * 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.
2980     */
2981    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
2982    @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." )
2983    protected StringType name;
2984
2985    /**
2986     * A short, descriptive, user-friendly title for the evidence variable.
2987     */
2988    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
2989    @Description(shortDefinition="Name for this evidence variable (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the evidence variable." )
2990    protected StringType title;
2991
2992    /**
2993     * The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
2994     */
2995    @Child(name = "shortTitle", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
2996    @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." )
2997    protected StringType shortTitle;
2998
2999    /**
3000     * An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
3001     */
3002    @Child(name = "subtitle", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
3003    @Description(shortDefinition="Subordinate title of the EvidenceVariable", formalDefinition="An explanatory or alternate title for the EvidenceVariable giving additional information about its content." )
3004    protected StringType subtitle;
3005
3006    /**
3007     * The status of this evidence variable. Enables tracking the life-cycle of the content.
3008     */
3009    @Child(name = "status", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
3010    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this evidence variable. Enables tracking the life-cycle of the content." )
3011    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
3012    protected Enumeration<PublicationStatus> status;
3013
3014    /**
3015     * A Boolean value to indicate that this resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3016     */
3017    @Child(name = "experimental", type = {BooleanType.class}, order=8, min=0, max=1, modifier=false, summary=false)
3018    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
3019    protected BooleanType experimental;
3020
3021    /**
3022     * 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.
3023     */
3024    @Child(name = "date", type = {DateTimeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
3025    @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." )
3026    protected DateTimeType date;
3027
3028    /**
3029     * The name of the organization or individual that published the evidence variable.
3030     */
3031    @Child(name = "publisher", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=true)
3032    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the evidence variable." )
3033    protected StringType publisher;
3034
3035    /**
3036     * Contact details to assist a user in finding and communicating with the publisher.
3037     */
3038    @Child(name = "contact", type = {ContactDetail.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3039    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
3040    protected List<ContactDetail> contact;
3041
3042    /**
3043     * A free text natural language description of the evidence variable from a consumer's perspective.
3044     */
3045    @Child(name = "description", type = {MarkdownType.class}, order=12, min=0, max=1, modifier=false, summary=true)
3046    @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." )
3047    protected MarkdownType description;
3048
3049    /**
3050     * A human-readable string to clarify or explain concepts about the resource.
3051     */
3052    @Child(name = "note", type = {Annotation.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3053    @Description(shortDefinition="Used for footnotes or explanatory notes", formalDefinition="A human-readable string to clarify or explain concepts about the resource." )
3054    protected List<Annotation> note;
3055
3056    /**
3057     * 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.
3058     */
3059    @Child(name = "useContext", type = {UsageContext.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3060    @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." )
3061    protected List<UsageContext> useContext;
3062
3063    /**
3064     * A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.
3065     */
3066    @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
3067    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource." )
3068    protected MarkdownType copyright;
3069
3070    /**
3071     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
3072     */
3073    @Child(name = "approvalDate", type = {DateType.class}, order=16, min=0, max=1, modifier=false, summary=false)
3074    @Description(shortDefinition="When the resource was approved by publisher", formalDefinition="The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
3075    protected DateType approvalDate;
3076
3077    /**
3078     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
3079     */
3080    @Child(name = "lastReviewDate", type = {DateType.class}, order=17, min=0, max=1, modifier=false, summary=false)
3081    @Description(shortDefinition="When the resource was last reviewed", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date." )
3082    protected DateType lastReviewDate;
3083
3084    /**
3085     * The period during which the resource content was or is planned to be in active use.
3086     */
3087    @Child(name = "effectivePeriod", type = {Period.class}, order=18, min=0, max=1, modifier=false, summary=false)
3088    @Description(shortDefinition="When the resource is expected to be used", formalDefinition="The period during which the resource content was or is planned to be in active use." )
3089    protected Period effectivePeriod;
3090
3091    /**
3092     * An individiual or organization primarily involved in the creation and maintenance of the content.
3093     */
3094    @Child(name = "author", type = {ContactDetail.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3095    @Description(shortDefinition="Who authored the content", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the content." )
3096    protected List<ContactDetail> author;
3097
3098    /**
3099     * An individual or organization primarily responsible for internal coherence of the content.
3100     */
3101    @Child(name = "editor", type = {ContactDetail.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3102    @Description(shortDefinition="Who edited the content", formalDefinition="An individual or organization primarily responsible for internal coherence of the content." )
3103    protected List<ContactDetail> editor;
3104
3105    /**
3106     * An individual or organization primarily responsible for review of some aspect of the content.
3107     */
3108    @Child(name = "reviewer", type = {ContactDetail.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3109    @Description(shortDefinition="Who reviewed the content", formalDefinition="An individual or organization primarily responsible for review of some aspect of the content." )
3110    protected List<ContactDetail> reviewer;
3111
3112    /**
3113     * An individual or organization responsible for officially endorsing the content for use in some setting.
3114     */
3115    @Child(name = "endorser", type = {ContactDetail.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3116    @Description(shortDefinition="Who endorsed the content", formalDefinition="An individual or organization responsible for officially endorsing the content for use in some setting." )
3117    protected List<ContactDetail> endorser;
3118
3119    /**
3120     * Related artifacts such as additional documentation, justification, or bibliographic references.
3121     */
3122    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3123    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, or bibliographic references." )
3124    protected List<RelatedArtifact> relatedArtifact;
3125
3126    /**
3127     * True if the actual variable measured, false if a conceptual representation of the intended variable.
3128     */
3129    @Child(name = "actual", type = {BooleanType.class}, order=24, min=0, max=1, modifier=false, summary=false)
3130    @Description(shortDefinition="Actual or conceptual", formalDefinition="True if the actual variable measured, false if a conceptual representation of the intended variable." )
3131    protected BooleanType actual;
3132
3133    /**
3134     * A defining factor of the EvidenceVariable. Multiple characteristics are applied with "and" semantics.
3135     */
3136    @Child(name = "characteristic", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3137    @Description(shortDefinition="A defining factor of the EvidenceVariable", formalDefinition="A defining factor of the EvidenceVariable. Multiple characteristics are applied with \"and\" semantics." )
3138    protected List<EvidenceVariableCharacteristicComponent> characteristic;
3139
3140    /**
3141     * The method of handling in statistical analysis.
3142     */
3143    @Child(name = "handling", type = {CodeType.class}, order=26, min=0, max=1, modifier=false, summary=false)
3144    @Description(shortDefinition="continuous | dichotomous | ordinal | polychotomous", formalDefinition="The method of handling in statistical analysis." )
3145    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/variable-handling")
3146    protected Enumeration<EvidenceVariableHandling> handling;
3147
3148    /**
3149     * A grouping for ordinal or polychotomous variables.
3150     */
3151    @Child(name = "category", type = {}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3152    @Description(shortDefinition="A grouping for ordinal or polychotomous variables", formalDefinition="A grouping for ordinal or polychotomous variables." )
3153    protected List<EvidenceVariableCategoryComponent> category;
3154
3155    private static final long serialVersionUID = -532650354L;
3156
3157  /**
3158   * Constructor
3159   */
3160    public EvidenceVariable() {
3161      super();
3162    }
3163
3164  /**
3165   * Constructor
3166   */
3167    public EvidenceVariable(PublicationStatus status) {
3168      super();
3169      this.setStatus(status);
3170    }
3171
3172    /**
3173     * @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
3174     */
3175    public UriType getUrlElement() { 
3176      if (this.url == null)
3177        if (Configuration.errorOnAutoCreate())
3178          throw new Error("Attempt to auto-create EvidenceVariable.url");
3179        else if (Configuration.doAutoCreate())
3180          this.url = new UriType(); // bb
3181      return this.url;
3182    }
3183
3184    public boolean hasUrlElement() { 
3185      return this.url != null && !this.url.isEmpty();
3186    }
3187
3188    public boolean hasUrl() { 
3189      return this.url != null && !this.url.isEmpty();
3190    }
3191
3192    /**
3193     * @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
3194     */
3195    public EvidenceVariable setUrlElement(UriType value) { 
3196      this.url = value;
3197      return this;
3198    }
3199
3200    /**
3201     * @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.
3202     */
3203    public String getUrl() { 
3204      return this.url == null ? null : this.url.getValue();
3205    }
3206
3207    /**
3208     * @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.
3209     */
3210    public EvidenceVariable setUrl(String value) { 
3211      if (Utilities.noString(value))
3212        this.url = null;
3213      else {
3214        if (this.url == null)
3215          this.url = new UriType();
3216        this.url.setValue(value);
3217      }
3218      return this;
3219    }
3220
3221    /**
3222     * @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.)
3223     */
3224    public List<Identifier> getIdentifier() { 
3225      if (this.identifier == null)
3226        this.identifier = new ArrayList<Identifier>();
3227      return this.identifier;
3228    }
3229
3230    /**
3231     * @return Returns a reference to <code>this</code> for easy method chaining
3232     */
3233    public EvidenceVariable setIdentifier(List<Identifier> theIdentifier) { 
3234      this.identifier = theIdentifier;
3235      return this;
3236    }
3237
3238    public boolean hasIdentifier() { 
3239      if (this.identifier == null)
3240        return false;
3241      for (Identifier item : this.identifier)
3242        if (!item.isEmpty())
3243          return true;
3244      return false;
3245    }
3246
3247    public Identifier addIdentifier() { //3
3248      Identifier t = new Identifier();
3249      if (this.identifier == null)
3250        this.identifier = new ArrayList<Identifier>();
3251      this.identifier.add(t);
3252      return t;
3253    }
3254
3255    public EvidenceVariable addIdentifier(Identifier t) { //3
3256      if (t == null)
3257        return this;
3258      if (this.identifier == null)
3259        this.identifier = new ArrayList<Identifier>();
3260      this.identifier.add(t);
3261      return this;
3262    }
3263
3264    /**
3265     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
3266     */
3267    public Identifier getIdentifierFirstRep() { 
3268      if (getIdentifier().isEmpty()) {
3269        addIdentifier();
3270      }
3271      return getIdentifier().get(0);
3272    }
3273
3274    /**
3275     * @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
3276     */
3277    public StringType getVersionElement() { 
3278      if (this.version == null)
3279        if (Configuration.errorOnAutoCreate())
3280          throw new Error("Attempt to auto-create EvidenceVariable.version");
3281        else if (Configuration.doAutoCreate())
3282          this.version = new StringType(); // bb
3283      return this.version;
3284    }
3285
3286    public boolean hasVersionElement() { 
3287      return this.version != null && !this.version.isEmpty();
3288    }
3289
3290    public boolean hasVersion() { 
3291      return this.version != null && !this.version.isEmpty();
3292    }
3293
3294    /**
3295     * @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
3296     */
3297    public EvidenceVariable setVersionElement(StringType value) { 
3298      this.version = value;
3299      return this;
3300    }
3301
3302    /**
3303     * @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.
3304     */
3305    public String getVersion() { 
3306      return this.version == null ? null : this.version.getValue();
3307    }
3308
3309    /**
3310     * @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.
3311     */
3312    public EvidenceVariable setVersion(String value) { 
3313      if (Utilities.noString(value))
3314        this.version = null;
3315      else {
3316        if (this.version == null)
3317          this.version = new StringType();
3318        this.version.setValue(value);
3319      }
3320      return this;
3321    }
3322
3323    /**
3324     * @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
3325     */
3326    public StringType getNameElement() { 
3327      if (this.name == null)
3328        if (Configuration.errorOnAutoCreate())
3329          throw new Error("Attempt to auto-create EvidenceVariable.name");
3330        else if (Configuration.doAutoCreate())
3331          this.name = new StringType(); // bb
3332      return this.name;
3333    }
3334
3335    public boolean hasNameElement() { 
3336      return this.name != null && !this.name.isEmpty();
3337    }
3338
3339    public boolean hasName() { 
3340      return this.name != null && !this.name.isEmpty();
3341    }
3342
3343    /**
3344     * @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
3345     */
3346    public EvidenceVariable setNameElement(StringType value) { 
3347      this.name = value;
3348      return this;
3349    }
3350
3351    /**
3352     * @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.
3353     */
3354    public String getName() { 
3355      return this.name == null ? null : this.name.getValue();
3356    }
3357
3358    /**
3359     * @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.
3360     */
3361    public EvidenceVariable setName(String value) { 
3362      if (Utilities.noString(value))
3363        this.name = null;
3364      else {
3365        if (this.name == null)
3366          this.name = new StringType();
3367        this.name.setValue(value);
3368      }
3369      return this;
3370    }
3371
3372    /**
3373     * @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
3374     */
3375    public StringType getTitleElement() { 
3376      if (this.title == null)
3377        if (Configuration.errorOnAutoCreate())
3378          throw new Error("Attempt to auto-create EvidenceVariable.title");
3379        else if (Configuration.doAutoCreate())
3380          this.title = new StringType(); // bb
3381      return this.title;
3382    }
3383
3384    public boolean hasTitleElement() { 
3385      return this.title != null && !this.title.isEmpty();
3386    }
3387
3388    public boolean hasTitle() { 
3389      return this.title != null && !this.title.isEmpty();
3390    }
3391
3392    /**
3393     * @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
3394     */
3395    public EvidenceVariable setTitleElement(StringType value) { 
3396      this.title = value;
3397      return this;
3398    }
3399
3400    /**
3401     * @return A short, descriptive, user-friendly title for the evidence variable.
3402     */
3403    public String getTitle() { 
3404      return this.title == null ? null : this.title.getValue();
3405    }
3406
3407    /**
3408     * @param value A short, descriptive, user-friendly title for the evidence variable.
3409     */
3410    public EvidenceVariable setTitle(String value) { 
3411      if (Utilities.noString(value))
3412        this.title = null;
3413      else {
3414        if (this.title == null)
3415          this.title = new StringType();
3416        this.title.setValue(value);
3417      }
3418      return this;
3419    }
3420
3421    /**
3422     * @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
3423     */
3424    public StringType getShortTitleElement() { 
3425      if (this.shortTitle == null)
3426        if (Configuration.errorOnAutoCreate())
3427          throw new Error("Attempt to auto-create EvidenceVariable.shortTitle");
3428        else if (Configuration.doAutoCreate())
3429          this.shortTitle = new StringType(); // bb
3430      return this.shortTitle;
3431    }
3432
3433    public boolean hasShortTitleElement() { 
3434      return this.shortTitle != null && !this.shortTitle.isEmpty();
3435    }
3436
3437    public boolean hasShortTitle() { 
3438      return this.shortTitle != null && !this.shortTitle.isEmpty();
3439    }
3440
3441    /**
3442     * @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
3443     */
3444    public EvidenceVariable setShortTitleElement(StringType value) { 
3445      this.shortTitle = value;
3446      return this;
3447    }
3448
3449    /**
3450     * @return The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
3451     */
3452    public String getShortTitle() { 
3453      return this.shortTitle == null ? null : this.shortTitle.getValue();
3454    }
3455
3456    /**
3457     * @param value The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary.
3458     */
3459    public EvidenceVariable setShortTitle(String value) { 
3460      if (Utilities.noString(value))
3461        this.shortTitle = null;
3462      else {
3463        if (this.shortTitle == null)
3464          this.shortTitle = new StringType();
3465        this.shortTitle.setValue(value);
3466      }
3467      return this;
3468    }
3469
3470    /**
3471     * @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
3472     */
3473    public StringType getSubtitleElement() { 
3474      if (this.subtitle == null)
3475        if (Configuration.errorOnAutoCreate())
3476          throw new Error("Attempt to auto-create EvidenceVariable.subtitle");
3477        else if (Configuration.doAutoCreate())
3478          this.subtitle = new StringType(); // bb
3479      return this.subtitle;
3480    }
3481
3482    public boolean hasSubtitleElement() { 
3483      return this.subtitle != null && !this.subtitle.isEmpty();
3484    }
3485
3486    public boolean hasSubtitle() { 
3487      return this.subtitle != null && !this.subtitle.isEmpty();
3488    }
3489
3490    /**
3491     * @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
3492     */
3493    public EvidenceVariable setSubtitleElement(StringType value) { 
3494      this.subtitle = value;
3495      return this;
3496    }
3497
3498    /**
3499     * @return An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
3500     */
3501    public String getSubtitle() { 
3502      return this.subtitle == null ? null : this.subtitle.getValue();
3503    }
3504
3505    /**
3506     * @param value An explanatory or alternate title for the EvidenceVariable giving additional information about its content.
3507     */
3508    public EvidenceVariable setSubtitle(String value) { 
3509      if (Utilities.noString(value))
3510        this.subtitle = null;
3511      else {
3512        if (this.subtitle == null)
3513          this.subtitle = new StringType();
3514        this.subtitle.setValue(value);
3515      }
3516      return this;
3517    }
3518
3519    /**
3520     * @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
3521     */
3522    public Enumeration<PublicationStatus> getStatusElement() { 
3523      if (this.status == null)
3524        if (Configuration.errorOnAutoCreate())
3525          throw new Error("Attempt to auto-create EvidenceVariable.status");
3526        else if (Configuration.doAutoCreate())
3527          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
3528      return this.status;
3529    }
3530
3531    public boolean hasStatusElement() { 
3532      return this.status != null && !this.status.isEmpty();
3533    }
3534
3535    public boolean hasStatus() { 
3536      return this.status != null && !this.status.isEmpty();
3537    }
3538
3539    /**
3540     * @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
3541     */
3542    public EvidenceVariable setStatusElement(Enumeration<PublicationStatus> value) { 
3543      this.status = value;
3544      return this;
3545    }
3546
3547    /**
3548     * @return The status of this evidence variable. Enables tracking the life-cycle of the content.
3549     */
3550    public PublicationStatus getStatus() { 
3551      return this.status == null ? null : this.status.getValue();
3552    }
3553
3554    /**
3555     * @param value The status of this evidence variable. Enables tracking the life-cycle of the content.
3556     */
3557    public EvidenceVariable setStatus(PublicationStatus value) { 
3558        if (this.status == null)
3559          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
3560        this.status.setValue(value);
3561      return this;
3562    }
3563
3564    /**
3565     * @return {@link #experimental} (A Boolean value to indicate that this resource 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
3566     */
3567    public BooleanType getExperimentalElement() { 
3568      if (this.experimental == null)
3569        if (Configuration.errorOnAutoCreate())
3570          throw new Error("Attempt to auto-create EvidenceVariable.experimental");
3571        else if (Configuration.doAutoCreate())
3572          this.experimental = new BooleanType(); // bb
3573      return this.experimental;
3574    }
3575
3576    public boolean hasExperimentalElement() { 
3577      return this.experimental != null && !this.experimental.isEmpty();
3578    }
3579
3580    public boolean hasExperimental() { 
3581      return this.experimental != null && !this.experimental.isEmpty();
3582    }
3583
3584    /**
3585     * @param value {@link #experimental} (A Boolean value to indicate that this resource 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
3586     */
3587    public EvidenceVariable setExperimentalElement(BooleanType value) { 
3588      this.experimental = value;
3589      return this;
3590    }
3591
3592    /**
3593     * @return A Boolean value to indicate that this resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3594     */
3595    public boolean getExperimental() { 
3596      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
3597    }
3598
3599    /**
3600     * @param value A Boolean value to indicate that this resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3601     */
3602    public EvidenceVariable setExperimental(boolean value) { 
3603        if (this.experimental == null)
3604          this.experimental = new BooleanType();
3605        this.experimental.setValue(value);
3606      return this;
3607    }
3608
3609    /**
3610     * @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
3611     */
3612    public DateTimeType getDateElement() { 
3613      if (this.date == null)
3614        if (Configuration.errorOnAutoCreate())
3615          throw new Error("Attempt to auto-create EvidenceVariable.date");
3616        else if (Configuration.doAutoCreate())
3617          this.date = new DateTimeType(); // bb
3618      return this.date;
3619    }
3620
3621    public boolean hasDateElement() { 
3622      return this.date != null && !this.date.isEmpty();
3623    }
3624
3625    public boolean hasDate() { 
3626      return this.date != null && !this.date.isEmpty();
3627    }
3628
3629    /**
3630     * @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
3631     */
3632    public EvidenceVariable setDateElement(DateTimeType value) { 
3633      this.date = value;
3634      return this;
3635    }
3636
3637    /**
3638     * @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.
3639     */
3640    public Date getDate() { 
3641      return this.date == null ? null : this.date.getValue();
3642    }
3643
3644    /**
3645     * @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.
3646     */
3647    public EvidenceVariable setDate(Date value) { 
3648      if (value == null)
3649        this.date = null;
3650      else {
3651        if (this.date == null)
3652          this.date = new DateTimeType();
3653        this.date.setValue(value);
3654      }
3655      return this;
3656    }
3657
3658    /**
3659     * @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
3660     */
3661    public StringType getPublisherElement() { 
3662      if (this.publisher == null)
3663        if (Configuration.errorOnAutoCreate())
3664          throw new Error("Attempt to auto-create EvidenceVariable.publisher");
3665        else if (Configuration.doAutoCreate())
3666          this.publisher = new StringType(); // bb
3667      return this.publisher;
3668    }
3669
3670    public boolean hasPublisherElement() { 
3671      return this.publisher != null && !this.publisher.isEmpty();
3672    }
3673
3674    public boolean hasPublisher() { 
3675      return this.publisher != null && !this.publisher.isEmpty();
3676    }
3677
3678    /**
3679     * @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
3680     */
3681    public EvidenceVariable setPublisherElement(StringType value) { 
3682      this.publisher = value;
3683      return this;
3684    }
3685
3686    /**
3687     * @return The name of the organization or individual that published the evidence variable.
3688     */
3689    public String getPublisher() { 
3690      return this.publisher == null ? null : this.publisher.getValue();
3691    }
3692
3693    /**
3694     * @param value The name of the organization or individual that published the evidence variable.
3695     */
3696    public EvidenceVariable setPublisher(String value) { 
3697      if (Utilities.noString(value))
3698        this.publisher = null;
3699      else {
3700        if (this.publisher == null)
3701          this.publisher = new StringType();
3702        this.publisher.setValue(value);
3703      }
3704      return this;
3705    }
3706
3707    /**
3708     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
3709     */
3710    public List<ContactDetail> getContact() { 
3711      if (this.contact == null)
3712        this.contact = new ArrayList<ContactDetail>();
3713      return this.contact;
3714    }
3715
3716    /**
3717     * @return Returns a reference to <code>this</code> for easy method chaining
3718     */
3719    public EvidenceVariable setContact(List<ContactDetail> theContact) { 
3720      this.contact = theContact;
3721      return this;
3722    }
3723
3724    public boolean hasContact() { 
3725      if (this.contact == null)
3726        return false;
3727      for (ContactDetail item : this.contact)
3728        if (!item.isEmpty())
3729          return true;
3730      return false;
3731    }
3732
3733    public ContactDetail addContact() { //3
3734      ContactDetail t = new ContactDetail();
3735      if (this.contact == null)
3736        this.contact = new ArrayList<ContactDetail>();
3737      this.contact.add(t);
3738      return t;
3739    }
3740
3741    public EvidenceVariable addContact(ContactDetail t) { //3
3742      if (t == null)
3743        return this;
3744      if (this.contact == null)
3745        this.contact = new ArrayList<ContactDetail>();
3746      this.contact.add(t);
3747      return this;
3748    }
3749
3750    /**
3751     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
3752     */
3753    public ContactDetail getContactFirstRep() { 
3754      if (getContact().isEmpty()) {
3755        addContact();
3756      }
3757      return getContact().get(0);
3758    }
3759
3760    /**
3761     * @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
3762     */
3763    public MarkdownType getDescriptionElement() { 
3764      if (this.description == null)
3765        if (Configuration.errorOnAutoCreate())
3766          throw new Error("Attempt to auto-create EvidenceVariable.description");
3767        else if (Configuration.doAutoCreate())
3768          this.description = new MarkdownType(); // bb
3769      return this.description;
3770    }
3771
3772    public boolean hasDescriptionElement() { 
3773      return this.description != null && !this.description.isEmpty();
3774    }
3775
3776    public boolean hasDescription() { 
3777      return this.description != null && !this.description.isEmpty();
3778    }
3779
3780    /**
3781     * @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
3782     */
3783    public EvidenceVariable setDescriptionElement(MarkdownType value) { 
3784      this.description = value;
3785      return this;
3786    }
3787
3788    /**
3789     * @return A free text natural language description of the evidence variable from a consumer's perspective.
3790     */
3791    public String getDescription() { 
3792      return this.description == null ? null : this.description.getValue();
3793    }
3794
3795    /**
3796     * @param value A free text natural language description of the evidence variable from a consumer's perspective.
3797     */
3798    public EvidenceVariable setDescription(String value) { 
3799      if (value == null)
3800        this.description = null;
3801      else {
3802        if (this.description == null)
3803          this.description = new MarkdownType();
3804        this.description.setValue(value);
3805      }
3806      return this;
3807    }
3808
3809    /**
3810     * @return {@link #note} (A human-readable string to clarify or explain concepts about the resource.)
3811     */
3812    public List<Annotation> getNote() { 
3813      if (this.note == null)
3814        this.note = new ArrayList<Annotation>();
3815      return this.note;
3816    }
3817
3818    /**
3819     * @return Returns a reference to <code>this</code> for easy method chaining
3820     */
3821    public EvidenceVariable setNote(List<Annotation> theNote) { 
3822      this.note = theNote;
3823      return this;
3824    }
3825
3826    public boolean hasNote() { 
3827      if (this.note == null)
3828        return false;
3829      for (Annotation item : this.note)
3830        if (!item.isEmpty())
3831          return true;
3832      return false;
3833    }
3834
3835    public Annotation addNote() { //3
3836      Annotation t = new Annotation();
3837      if (this.note == null)
3838        this.note = new ArrayList<Annotation>();
3839      this.note.add(t);
3840      return t;
3841    }
3842
3843    public EvidenceVariable addNote(Annotation t) { //3
3844      if (t == null)
3845        return this;
3846      if (this.note == null)
3847        this.note = new ArrayList<Annotation>();
3848      this.note.add(t);
3849      return this;
3850    }
3851
3852    /**
3853     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
3854     */
3855    public Annotation getNoteFirstRep() { 
3856      if (getNote().isEmpty()) {
3857        addNote();
3858      }
3859      return getNote().get(0);
3860    }
3861
3862    /**
3863     * @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.)
3864     */
3865    public List<UsageContext> getUseContext() { 
3866      if (this.useContext == null)
3867        this.useContext = new ArrayList<UsageContext>();
3868      return this.useContext;
3869    }
3870
3871    /**
3872     * @return Returns a reference to <code>this</code> for easy method chaining
3873     */
3874    public EvidenceVariable setUseContext(List<UsageContext> theUseContext) { 
3875      this.useContext = theUseContext;
3876      return this;
3877    }
3878
3879    public boolean hasUseContext() { 
3880      if (this.useContext == null)
3881        return false;
3882      for (UsageContext item : this.useContext)
3883        if (!item.isEmpty())
3884          return true;
3885      return false;
3886    }
3887
3888    public UsageContext addUseContext() { //3
3889      UsageContext t = new UsageContext();
3890      if (this.useContext == null)
3891        this.useContext = new ArrayList<UsageContext>();
3892      this.useContext.add(t);
3893      return t;
3894    }
3895
3896    public EvidenceVariable addUseContext(UsageContext t) { //3
3897      if (t == null)
3898        return this;
3899      if (this.useContext == null)
3900        this.useContext = new ArrayList<UsageContext>();
3901      this.useContext.add(t);
3902      return this;
3903    }
3904
3905    /**
3906     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
3907     */
3908    public UsageContext getUseContextFirstRep() { 
3909      if (getUseContext().isEmpty()) {
3910        addUseContext();
3911      }
3912      return getUseContext().get(0);
3913    }
3914
3915    /**
3916     * @return {@link #copyright} (A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3917     */
3918    public MarkdownType getCopyrightElement() { 
3919      if (this.copyright == null)
3920        if (Configuration.errorOnAutoCreate())
3921          throw new Error("Attempt to auto-create EvidenceVariable.copyright");
3922        else if (Configuration.doAutoCreate())
3923          this.copyright = new MarkdownType(); // bb
3924      return this.copyright;
3925    }
3926
3927    public boolean hasCopyrightElement() { 
3928      return this.copyright != null && !this.copyright.isEmpty();
3929    }
3930
3931    public boolean hasCopyright() { 
3932      return this.copyright != null && !this.copyright.isEmpty();
3933    }
3934
3935    /**
3936     * @param value {@link #copyright} (A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3937     */
3938    public EvidenceVariable setCopyrightElement(MarkdownType value) { 
3939      this.copyright = value;
3940      return this;
3941    }
3942
3943    /**
3944     * @return A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.
3945     */
3946    public String getCopyright() { 
3947      return this.copyright == null ? null : this.copyright.getValue();
3948    }
3949
3950    /**
3951     * @param value A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.
3952     */
3953    public EvidenceVariable setCopyright(String value) { 
3954      if (value == null)
3955        this.copyright = null;
3956      else {
3957        if (this.copyright == null)
3958          this.copyright = new MarkdownType();
3959        this.copyright.setValue(value);
3960      }
3961      return this;
3962    }
3963
3964    /**
3965     * @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
3966     */
3967    public DateType getApprovalDateElement() { 
3968      if (this.approvalDate == null)
3969        if (Configuration.errorOnAutoCreate())
3970          throw new Error("Attempt to auto-create EvidenceVariable.approvalDate");
3971        else if (Configuration.doAutoCreate())
3972          this.approvalDate = new DateType(); // bb
3973      return this.approvalDate;
3974    }
3975
3976    public boolean hasApprovalDateElement() { 
3977      return this.approvalDate != null && !this.approvalDate.isEmpty();
3978    }
3979
3980    public boolean hasApprovalDate() { 
3981      return this.approvalDate != null && !this.approvalDate.isEmpty();
3982    }
3983
3984    /**
3985     * @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
3986     */
3987    public EvidenceVariable setApprovalDateElement(DateType value) { 
3988      this.approvalDate = value;
3989      return this;
3990    }
3991
3992    /**
3993     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
3994     */
3995    public Date getApprovalDate() { 
3996      return this.approvalDate == null ? null : this.approvalDate.getValue();
3997    }
3998
3999    /**
4000     * @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.
4001     */
4002    public EvidenceVariable setApprovalDate(Date value) { 
4003      if (value == null)
4004        this.approvalDate = null;
4005      else {
4006        if (this.approvalDate == null)
4007          this.approvalDate = new DateType();
4008        this.approvalDate.setValue(value);
4009      }
4010      return this;
4011    }
4012
4013    /**
4014     * @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
4015     */
4016    public DateType getLastReviewDateElement() { 
4017      if (this.lastReviewDate == null)
4018        if (Configuration.errorOnAutoCreate())
4019          throw new Error("Attempt to auto-create EvidenceVariable.lastReviewDate");
4020        else if (Configuration.doAutoCreate())
4021          this.lastReviewDate = new DateType(); // bb
4022      return this.lastReviewDate;
4023    }
4024
4025    public boolean hasLastReviewDateElement() { 
4026      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
4027    }
4028
4029    public boolean hasLastReviewDate() { 
4030      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
4031    }
4032
4033    /**
4034     * @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
4035     */
4036    public EvidenceVariable setLastReviewDateElement(DateType value) { 
4037      this.lastReviewDate = value;
4038      return this;
4039    }
4040
4041    /**
4042     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
4043     */
4044    public Date getLastReviewDate() { 
4045      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
4046    }
4047
4048    /**
4049     * @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.
4050     */
4051    public EvidenceVariable setLastReviewDate(Date value) { 
4052      if (value == null)
4053        this.lastReviewDate = null;
4054      else {
4055        if (this.lastReviewDate == null)
4056          this.lastReviewDate = new DateType();
4057        this.lastReviewDate.setValue(value);
4058      }
4059      return this;
4060    }
4061
4062    /**
4063     * @return {@link #effectivePeriod} (The period during which the resource content was or is planned to be in active use.)
4064     */
4065    public Period getEffectivePeriod() { 
4066      if (this.effectivePeriod == null)
4067        if (Configuration.errorOnAutoCreate())
4068          throw new Error("Attempt to auto-create EvidenceVariable.effectivePeriod");
4069        else if (Configuration.doAutoCreate())
4070          this.effectivePeriod = new Period(); // cc
4071      return this.effectivePeriod;
4072    }
4073
4074    public boolean hasEffectivePeriod() { 
4075      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
4076    }
4077
4078    /**
4079     * @param value {@link #effectivePeriod} (The period during which the resource content was or is planned to be in active use.)
4080     */
4081    public EvidenceVariable setEffectivePeriod(Period value) { 
4082      this.effectivePeriod = value;
4083      return this;
4084    }
4085
4086    /**
4087     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the content.)
4088     */
4089    public List<ContactDetail> getAuthor() { 
4090      if (this.author == null)
4091        this.author = new ArrayList<ContactDetail>();
4092      return this.author;
4093    }
4094
4095    /**
4096     * @return Returns a reference to <code>this</code> for easy method chaining
4097     */
4098    public EvidenceVariable setAuthor(List<ContactDetail> theAuthor) { 
4099      this.author = theAuthor;
4100      return this;
4101    }
4102
4103    public boolean hasAuthor() { 
4104      if (this.author == null)
4105        return false;
4106      for (ContactDetail item : this.author)
4107        if (!item.isEmpty())
4108          return true;
4109      return false;
4110    }
4111
4112    public ContactDetail addAuthor() { //3
4113      ContactDetail t = new ContactDetail();
4114      if (this.author == null)
4115        this.author = new ArrayList<ContactDetail>();
4116      this.author.add(t);
4117      return t;
4118    }
4119
4120    public EvidenceVariable addAuthor(ContactDetail t) { //3
4121      if (t == null)
4122        return this;
4123      if (this.author == null)
4124        this.author = new ArrayList<ContactDetail>();
4125      this.author.add(t);
4126      return this;
4127    }
4128
4129    /**
4130     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
4131     */
4132    public ContactDetail getAuthorFirstRep() { 
4133      if (getAuthor().isEmpty()) {
4134        addAuthor();
4135      }
4136      return getAuthor().get(0);
4137    }
4138
4139    /**
4140     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the content.)
4141     */
4142    public List<ContactDetail> getEditor() { 
4143      if (this.editor == null)
4144        this.editor = new ArrayList<ContactDetail>();
4145      return this.editor;
4146    }
4147
4148    /**
4149     * @return Returns a reference to <code>this</code> for easy method chaining
4150     */
4151    public EvidenceVariable setEditor(List<ContactDetail> theEditor) { 
4152      this.editor = theEditor;
4153      return this;
4154    }
4155
4156    public boolean hasEditor() { 
4157      if (this.editor == null)
4158        return false;
4159      for (ContactDetail item : this.editor)
4160        if (!item.isEmpty())
4161          return true;
4162      return false;
4163    }
4164
4165    public ContactDetail addEditor() { //3
4166      ContactDetail t = new ContactDetail();
4167      if (this.editor == null)
4168        this.editor = new ArrayList<ContactDetail>();
4169      this.editor.add(t);
4170      return t;
4171    }
4172
4173    public EvidenceVariable addEditor(ContactDetail t) { //3
4174      if (t == null)
4175        return this;
4176      if (this.editor == null)
4177        this.editor = new ArrayList<ContactDetail>();
4178      this.editor.add(t);
4179      return this;
4180    }
4181
4182    /**
4183     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist {3}
4184     */
4185    public ContactDetail getEditorFirstRep() { 
4186      if (getEditor().isEmpty()) {
4187        addEditor();
4188      }
4189      return getEditor().get(0);
4190    }
4191
4192    /**
4193     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the content.)
4194     */
4195    public List<ContactDetail> getReviewer() { 
4196      if (this.reviewer == null)
4197        this.reviewer = new ArrayList<ContactDetail>();
4198      return this.reviewer;
4199    }
4200
4201    /**
4202     * @return Returns a reference to <code>this</code> for easy method chaining
4203     */
4204    public EvidenceVariable setReviewer(List<ContactDetail> theReviewer) { 
4205      this.reviewer = theReviewer;
4206      return this;
4207    }
4208
4209    public boolean hasReviewer() { 
4210      if (this.reviewer == null)
4211        return false;
4212      for (ContactDetail item : this.reviewer)
4213        if (!item.isEmpty())
4214          return true;
4215      return false;
4216    }
4217
4218    public ContactDetail addReviewer() { //3
4219      ContactDetail t = new ContactDetail();
4220      if (this.reviewer == null)
4221        this.reviewer = new ArrayList<ContactDetail>();
4222      this.reviewer.add(t);
4223      return t;
4224    }
4225
4226    public EvidenceVariable addReviewer(ContactDetail t) { //3
4227      if (t == null)
4228        return this;
4229      if (this.reviewer == null)
4230        this.reviewer = new ArrayList<ContactDetail>();
4231      this.reviewer.add(t);
4232      return this;
4233    }
4234
4235    /**
4236     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist {3}
4237     */
4238    public ContactDetail getReviewerFirstRep() { 
4239      if (getReviewer().isEmpty()) {
4240        addReviewer();
4241      }
4242      return getReviewer().get(0);
4243    }
4244
4245    /**
4246     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the content for use in some setting.)
4247     */
4248    public List<ContactDetail> getEndorser() { 
4249      if (this.endorser == null)
4250        this.endorser = new ArrayList<ContactDetail>();
4251      return this.endorser;
4252    }
4253
4254    /**
4255     * @return Returns a reference to <code>this</code> for easy method chaining
4256     */
4257    public EvidenceVariable setEndorser(List<ContactDetail> theEndorser) { 
4258      this.endorser = theEndorser;
4259      return this;
4260    }
4261
4262    public boolean hasEndorser() { 
4263      if (this.endorser == null)
4264        return false;
4265      for (ContactDetail item : this.endorser)
4266        if (!item.isEmpty())
4267          return true;
4268      return false;
4269    }
4270
4271    public ContactDetail addEndorser() { //3
4272      ContactDetail t = new ContactDetail();
4273      if (this.endorser == null)
4274        this.endorser = new ArrayList<ContactDetail>();
4275      this.endorser.add(t);
4276      return t;
4277    }
4278
4279    public EvidenceVariable addEndorser(ContactDetail t) { //3
4280      if (t == null)
4281        return this;
4282      if (this.endorser == null)
4283        this.endorser = new ArrayList<ContactDetail>();
4284      this.endorser.add(t);
4285      return this;
4286    }
4287
4288    /**
4289     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist {3}
4290     */
4291    public ContactDetail getEndorserFirstRep() { 
4292      if (getEndorser().isEmpty()) {
4293        addEndorser();
4294      }
4295      return getEndorser().get(0);
4296    }
4297
4298    /**
4299     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, or bibliographic references.)
4300     */
4301    public List<RelatedArtifact> getRelatedArtifact() { 
4302      if (this.relatedArtifact == null)
4303        this.relatedArtifact = new ArrayList<RelatedArtifact>();
4304      return this.relatedArtifact;
4305    }
4306
4307    /**
4308     * @return Returns a reference to <code>this</code> for easy method chaining
4309     */
4310    public EvidenceVariable setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
4311      this.relatedArtifact = theRelatedArtifact;
4312      return this;
4313    }
4314
4315    public boolean hasRelatedArtifact() { 
4316      if (this.relatedArtifact == null)
4317        return false;
4318      for (RelatedArtifact item : this.relatedArtifact)
4319        if (!item.isEmpty())
4320          return true;
4321      return false;
4322    }
4323
4324    public RelatedArtifact addRelatedArtifact() { //3
4325      RelatedArtifact t = new RelatedArtifact();
4326      if (this.relatedArtifact == null)
4327        this.relatedArtifact = new ArrayList<RelatedArtifact>();
4328      this.relatedArtifact.add(t);
4329      return t;
4330    }
4331
4332    public EvidenceVariable addRelatedArtifact(RelatedArtifact t) { //3
4333      if (t == null)
4334        return this;
4335      if (this.relatedArtifact == null)
4336        this.relatedArtifact = new ArrayList<RelatedArtifact>();
4337      this.relatedArtifact.add(t);
4338      return this;
4339    }
4340
4341    /**
4342     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist {3}
4343     */
4344    public RelatedArtifact getRelatedArtifactFirstRep() { 
4345      if (getRelatedArtifact().isEmpty()) {
4346        addRelatedArtifact();
4347      }
4348      return getRelatedArtifact().get(0);
4349    }
4350
4351    /**
4352     * @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
4353     */
4354    public BooleanType getActualElement() { 
4355      if (this.actual == null)
4356        if (Configuration.errorOnAutoCreate())
4357          throw new Error("Attempt to auto-create EvidenceVariable.actual");
4358        else if (Configuration.doAutoCreate())
4359          this.actual = new BooleanType(); // bb
4360      return this.actual;
4361    }
4362
4363    public boolean hasActualElement() { 
4364      return this.actual != null && !this.actual.isEmpty();
4365    }
4366
4367    public boolean hasActual() { 
4368      return this.actual != null && !this.actual.isEmpty();
4369    }
4370
4371    /**
4372     * @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
4373     */
4374    public EvidenceVariable setActualElement(BooleanType value) { 
4375      this.actual = value;
4376      return this;
4377    }
4378
4379    /**
4380     * @return True if the actual variable measured, false if a conceptual representation of the intended variable.
4381     */
4382    public boolean getActual() { 
4383      return this.actual == null || this.actual.isEmpty() ? false : this.actual.getValue();
4384    }
4385
4386    /**
4387     * @param value True if the actual variable measured, false if a conceptual representation of the intended variable.
4388     */
4389    public EvidenceVariable setActual(boolean value) { 
4390        if (this.actual == null)
4391          this.actual = new BooleanType();
4392        this.actual.setValue(value);
4393      return this;
4394    }
4395
4396    /**
4397     * @return {@link #characteristic} (A defining factor of the EvidenceVariable. Multiple characteristics are applied with "and" semantics.)
4398     */
4399    public List<EvidenceVariableCharacteristicComponent> getCharacteristic() { 
4400      if (this.characteristic == null)
4401        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
4402      return this.characteristic;
4403    }
4404
4405    /**
4406     * @return Returns a reference to <code>this</code> for easy method chaining
4407     */
4408    public EvidenceVariable setCharacteristic(List<EvidenceVariableCharacteristicComponent> theCharacteristic) { 
4409      this.characteristic = theCharacteristic;
4410      return this;
4411    }
4412
4413    public boolean hasCharacteristic() { 
4414      if (this.characteristic == null)
4415        return false;
4416      for (EvidenceVariableCharacteristicComponent item : this.characteristic)
4417        if (!item.isEmpty())
4418          return true;
4419      return false;
4420    }
4421
4422    public EvidenceVariableCharacteristicComponent addCharacteristic() { //3
4423      EvidenceVariableCharacteristicComponent t = new EvidenceVariableCharacteristicComponent();
4424      if (this.characteristic == null)
4425        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
4426      this.characteristic.add(t);
4427      return t;
4428    }
4429
4430    public EvidenceVariable addCharacteristic(EvidenceVariableCharacteristicComponent t) { //3
4431      if (t == null)
4432        return this;
4433      if (this.characteristic == null)
4434        this.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
4435      this.characteristic.add(t);
4436      return this;
4437    }
4438
4439    /**
4440     * @return The first repetition of repeating field {@link #characteristic}, creating it if it does not already exist {3}
4441     */
4442    public EvidenceVariableCharacteristicComponent getCharacteristicFirstRep() { 
4443      if (getCharacteristic().isEmpty()) {
4444        addCharacteristic();
4445      }
4446      return getCharacteristic().get(0);
4447    }
4448
4449    /**
4450     * @return {@link #handling} (The method of handling in statistical analysis.). This is the underlying object with id, value and extensions. The accessor "getHandling" gives direct access to the value
4451     */
4452    public Enumeration<EvidenceVariableHandling> getHandlingElement() { 
4453      if (this.handling == null)
4454        if (Configuration.errorOnAutoCreate())
4455          throw new Error("Attempt to auto-create EvidenceVariable.handling");
4456        else if (Configuration.doAutoCreate())
4457          this.handling = new Enumeration<EvidenceVariableHandling>(new EvidenceVariableHandlingEnumFactory()); // bb
4458      return this.handling;
4459    }
4460
4461    public boolean hasHandlingElement() { 
4462      return this.handling != null && !this.handling.isEmpty();
4463    }
4464
4465    public boolean hasHandling() { 
4466      return this.handling != null && !this.handling.isEmpty();
4467    }
4468
4469    /**
4470     * @param value {@link #handling} (The method of handling in statistical analysis.). This is the underlying object with id, value and extensions. The accessor "getHandling" gives direct access to the value
4471     */
4472    public EvidenceVariable setHandlingElement(Enumeration<EvidenceVariableHandling> value) { 
4473      this.handling = value;
4474      return this;
4475    }
4476
4477    /**
4478     * @return The method of handling in statistical analysis.
4479     */
4480    public EvidenceVariableHandling getHandling() { 
4481      return this.handling == null ? null : this.handling.getValue();
4482    }
4483
4484    /**
4485     * @param value The method of handling in statistical analysis.
4486     */
4487    public EvidenceVariable setHandling(EvidenceVariableHandling value) { 
4488      if (value == null)
4489        this.handling = null;
4490      else {
4491        if (this.handling == null)
4492          this.handling = new Enumeration<EvidenceVariableHandling>(new EvidenceVariableHandlingEnumFactory());
4493        this.handling.setValue(value);
4494      }
4495      return this;
4496    }
4497
4498    /**
4499     * @return {@link #category} (A grouping for ordinal or polychotomous variables.)
4500     */
4501    public List<EvidenceVariableCategoryComponent> getCategory() { 
4502      if (this.category == null)
4503        this.category = new ArrayList<EvidenceVariableCategoryComponent>();
4504      return this.category;
4505    }
4506
4507    /**
4508     * @return Returns a reference to <code>this</code> for easy method chaining
4509     */
4510    public EvidenceVariable setCategory(List<EvidenceVariableCategoryComponent> theCategory) { 
4511      this.category = theCategory;
4512      return this;
4513    }
4514
4515    public boolean hasCategory() { 
4516      if (this.category == null)
4517        return false;
4518      for (EvidenceVariableCategoryComponent item : this.category)
4519        if (!item.isEmpty())
4520          return true;
4521      return false;
4522    }
4523
4524    public EvidenceVariableCategoryComponent addCategory() { //3
4525      EvidenceVariableCategoryComponent t = new EvidenceVariableCategoryComponent();
4526      if (this.category == null)
4527        this.category = new ArrayList<EvidenceVariableCategoryComponent>();
4528      this.category.add(t);
4529      return t;
4530    }
4531
4532    public EvidenceVariable addCategory(EvidenceVariableCategoryComponent t) { //3
4533      if (t == null)
4534        return this;
4535      if (this.category == null)
4536        this.category = new ArrayList<EvidenceVariableCategoryComponent>();
4537      this.category.add(t);
4538      return this;
4539    }
4540
4541    /**
4542     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
4543     */
4544    public EvidenceVariableCategoryComponent getCategoryFirstRep() { 
4545      if (getCategory().isEmpty()) {
4546        addCategory();
4547      }
4548      return getCategory().get(0);
4549    }
4550
4551    /**
4552     * not supported on this implementation
4553     */
4554    @Override
4555    public int getJurisdictionMax() { 
4556      return 0;
4557    }
4558    /**
4559     * @return {@link #jurisdiction} (A legal or geographic region in which the evidence variable is intended to be used.)
4560     */
4561    public List<CodeableConcept> getJurisdiction() { 
4562      return new ArrayList<>();
4563    }
4564    /**
4565     * @return Returns a reference to <code>this</code> for easy method chaining
4566     */
4567    public EvidenceVariable setJurisdiction(List<CodeableConcept> theJurisdiction) { 
4568      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
4569    }
4570    public boolean hasJurisdiction() { 
4571      return false;
4572    }
4573
4574    public CodeableConcept addJurisdiction() { //3
4575      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
4576    }
4577    public EvidenceVariable addJurisdiction(CodeableConcept t) { //3
4578      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
4579    }
4580    /**
4581     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {2}
4582     */
4583    public CodeableConcept getJurisdictionFirstRep() { 
4584      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"jurisdiction\"");
4585    }
4586    /**
4587     * not supported on this implementation
4588     */
4589    @Override
4590    public int getPurposeMax() { 
4591      return 0;
4592    }
4593    /**
4594     * @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
4595     */
4596    public MarkdownType getPurposeElement() { 
4597      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
4598    }
4599
4600    public boolean hasPurposeElement() { 
4601      return false;
4602    }
4603    public boolean hasPurpose() {
4604      return false;
4605    }
4606
4607    /**
4608     * @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
4609     */
4610    public EvidenceVariable setPurposeElement(MarkdownType value) { 
4611      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
4612    }
4613    public String getPurpose() { 
4614      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
4615    }
4616    /**
4617     * @param value Explanation of why this evidence variable is needed and why it has been designed as it has.
4618     */
4619    public EvidenceVariable setPurpose(String value) { 
4620      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"purpose\"");
4621    }
4622    /**
4623     * not supported on this implementation
4624     */
4625    @Override
4626    public int getTopicMax() { 
4627      return 0;
4628    }
4629    /**
4630     * @return {@link #topic} (Descriptive topics related to the content of the evidence variable. Topics provide a high-level categorization of the evidence variable that can be useful for filtering and searching.)
4631     */
4632    public List<CodeableConcept> getTopic() { 
4633      return new ArrayList<>();
4634    }
4635    /**
4636     * @return Returns a reference to <code>this</code> for easy method chaining
4637     */
4638    public EvidenceVariable setTopic(List<CodeableConcept> theTopic) { 
4639      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
4640    }
4641    public boolean hasTopic() { 
4642      return false;
4643    }
4644
4645    public CodeableConcept addTopic() { //3
4646      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
4647    }
4648    public EvidenceVariable addTopic(CodeableConcept t) { //3
4649      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
4650    }
4651    /**
4652     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist {2}
4653     */
4654    public CodeableConcept getTopicFirstRep() { 
4655      throw new Error("The resource type \"EvidenceVariable\" does not implement the property \"topic\"");
4656    }
4657      protected void listChildren(List<Property> children) {
4658        super.listChildren(children);
4659        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));
4660        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));
4661        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));
4662        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));
4663        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the evidence variable.", 0, 1, title));
4664        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));
4665        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the EvidenceVariable giving additional information about its content.", 0, 1, subtitle));
4666        children.add(new Property("status", "code", "The status of this evidence variable. Enables tracking the life-cycle of the content.", 0, 1, status));
4667        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
4668        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));
4669        children.add(new Property("publisher", "string", "The name of the organization or individual that published the evidence variable.", 0, 1, publisher));
4670        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));
4671        children.add(new Property("description", "markdown", "A free text natural language description of the evidence variable from a consumer's perspective.", 0, 1, description));
4672        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));
4673        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));
4674        children.add(new Property("copyright", "markdown", "A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.", 0, 1, copyright));
4675        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
4676        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
4677        children.add(new Property("effectivePeriod", "Period", "The period during which the resource content was or is planned to be in active use.", 0, 1, effectivePeriod));
4678        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));
4679        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));
4680        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));
4681        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));
4682        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
4683        children.add(new Property("actual", "boolean", "True if the actual variable measured, false if a conceptual representation of the intended variable.", 0, 1, actual));
4684        children.add(new Property("characteristic", "", "A defining factor of the EvidenceVariable. Multiple characteristics are applied with \"and\" semantics.", 0, java.lang.Integer.MAX_VALUE, characteristic));
4685        children.add(new Property("handling", "code", "The method of handling in statistical analysis.", 0, 1, handling));
4686        children.add(new Property("category", "", "A grouping for ordinal or polychotomous variables.", 0, java.lang.Integer.MAX_VALUE, category));
4687      }
4688
4689      @Override
4690      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4691        switch (_hash) {
4692        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);
4693        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);
4694        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);
4695        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);
4696        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the evidence variable.", 0, 1, title);
4697        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);
4698        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);
4699        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);
4700        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
4701        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);
4702        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the evidence variable.", 0, 1, publisher);
4703        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);
4704        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);
4705        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);
4706        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);
4707        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the resource.", 0, 1, copyright);
4708        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
4709        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
4710        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the resource content was or is planned to be in active use.", 0, 1, effectivePeriod);
4711        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);
4712        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);
4713        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);
4714        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);
4715        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);
4716        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);
4717        case 366313883: /*characteristic*/  return new Property("characteristic", "", "A defining factor of the EvidenceVariable. Multiple characteristics are applied with \"and\" semantics.", 0, java.lang.Integer.MAX_VALUE, characteristic);
4718        case 2072805: /*handling*/  return new Property("handling", "code", "The method of handling in statistical analysis.", 0, 1, handling);
4719        case 50511102: /*category*/  return new Property("category", "", "A grouping for ordinal or polychotomous variables.", 0, java.lang.Integer.MAX_VALUE, category);
4720        default: return super.getNamedProperty(_hash, _name, _checkValid);
4721        }
4722
4723      }
4724
4725      @Override
4726      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4727        switch (hash) {
4728        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
4729        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4730        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4731        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
4732        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
4733        case 1555503932: /*shortTitle*/ return this.shortTitle == null ? new Base[0] : new Base[] {this.shortTitle}; // StringType
4734        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
4735        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
4736        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
4737        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4738        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
4739        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
4740        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
4741        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
4742        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
4743        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
4744        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
4745        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
4746        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
4747        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
4748        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
4749        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
4750        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
4751        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
4752        case -1422939762: /*actual*/ return this.actual == null ? new Base[0] : new Base[] {this.actual}; // BooleanType
4753        case 366313883: /*characteristic*/ return this.characteristic == null ? new Base[0] : this.characteristic.toArray(new Base[this.characteristic.size()]); // EvidenceVariableCharacteristicComponent
4754        case 2072805: /*handling*/ return this.handling == null ? new Base[0] : new Base[] {this.handling}; // Enumeration<EvidenceVariableHandling>
4755        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // EvidenceVariableCategoryComponent
4756        default: return super.getProperty(hash, name, checkValid);
4757        }
4758
4759      }
4760
4761      @Override
4762      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4763        switch (hash) {
4764        case 116079: // url
4765          this.url = TypeConvertor.castToUri(value); // UriType
4766          return value;
4767        case -1618432855: // identifier
4768          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4769          return value;
4770        case 351608024: // version
4771          this.version = TypeConvertor.castToString(value); // StringType
4772          return value;
4773        case 3373707: // name
4774          this.name = TypeConvertor.castToString(value); // StringType
4775          return value;
4776        case 110371416: // title
4777          this.title = TypeConvertor.castToString(value); // StringType
4778          return value;
4779        case 1555503932: // shortTitle
4780          this.shortTitle = TypeConvertor.castToString(value); // StringType
4781          return value;
4782        case -2060497896: // subtitle
4783          this.subtitle = TypeConvertor.castToString(value); // StringType
4784          return value;
4785        case -892481550: // status
4786          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4787          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4788          return value;
4789        case -404562712: // experimental
4790          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4791          return value;
4792        case 3076014: // date
4793          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4794          return value;
4795        case 1447404028: // publisher
4796          this.publisher = TypeConvertor.castToString(value); // StringType
4797          return value;
4798        case 951526432: // contact
4799          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4800          return value;
4801        case -1724546052: // description
4802          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4803          return value;
4804        case 3387378: // note
4805          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
4806          return value;
4807        case -669707736: // useContext
4808          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
4809          return value;
4810        case 1522889671: // copyright
4811          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4812          return value;
4813        case 223539345: // approvalDate
4814          this.approvalDate = TypeConvertor.castToDate(value); // DateType
4815          return value;
4816        case -1687512484: // lastReviewDate
4817          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
4818          return value;
4819        case -403934648: // effectivePeriod
4820          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
4821          return value;
4822        case -1406328437: // author
4823          this.getAuthor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4824          return value;
4825        case -1307827859: // editor
4826          this.getEditor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4827          return value;
4828        case -261190139: // reviewer
4829          this.getReviewer().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4830          return value;
4831        case 1740277666: // endorser
4832          this.getEndorser().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4833          return value;
4834        case 666807069: // relatedArtifact
4835          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value)); // RelatedArtifact
4836          return value;
4837        case -1422939762: // actual
4838          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
4839          return value;
4840        case 366313883: // characteristic
4841          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value); // EvidenceVariableCharacteristicComponent
4842          return value;
4843        case 2072805: // handling
4844          value = new EvidenceVariableHandlingEnumFactory().fromType(TypeConvertor.castToCode(value));
4845          this.handling = (Enumeration) value; // Enumeration<EvidenceVariableHandling>
4846          return value;
4847        case 50511102: // category
4848          this.getCategory().add((EvidenceVariableCategoryComponent) value); // EvidenceVariableCategoryComponent
4849          return value;
4850        default: return super.setProperty(hash, name, value);
4851        }
4852
4853      }
4854
4855      @Override
4856      public Base setProperty(String name, Base value) throws FHIRException {
4857        if (name.equals("url")) {
4858          this.url = TypeConvertor.castToUri(value); // UriType
4859        } else if (name.equals("identifier")) {
4860          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4861        } else if (name.equals("version")) {
4862          this.version = TypeConvertor.castToString(value); // StringType
4863        } else if (name.equals("name")) {
4864          this.name = TypeConvertor.castToString(value); // StringType
4865        } else if (name.equals("title")) {
4866          this.title = TypeConvertor.castToString(value); // StringType
4867        } else if (name.equals("shortTitle")) {
4868          this.shortTitle = TypeConvertor.castToString(value); // StringType
4869        } else if (name.equals("subtitle")) {
4870          this.subtitle = TypeConvertor.castToString(value); // StringType
4871        } else if (name.equals("status")) {
4872          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4873          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4874        } else if (name.equals("experimental")) {
4875          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4876        } else if (name.equals("date")) {
4877          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4878        } else if (name.equals("publisher")) {
4879          this.publisher = TypeConvertor.castToString(value); // StringType
4880        } else if (name.equals("contact")) {
4881          this.getContact().add(TypeConvertor.castToContactDetail(value));
4882        } else if (name.equals("description")) {
4883          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4884        } else if (name.equals("note")) {
4885          this.getNote().add(TypeConvertor.castToAnnotation(value));
4886        } else if (name.equals("useContext")) {
4887          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
4888        } else if (name.equals("copyright")) {
4889          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4890        } else if (name.equals("approvalDate")) {
4891          this.approvalDate = TypeConvertor.castToDate(value); // DateType
4892        } else if (name.equals("lastReviewDate")) {
4893          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
4894        } else if (name.equals("effectivePeriod")) {
4895          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
4896        } else if (name.equals("author")) {
4897          this.getAuthor().add(TypeConvertor.castToContactDetail(value));
4898        } else if (name.equals("editor")) {
4899          this.getEditor().add(TypeConvertor.castToContactDetail(value));
4900        } else if (name.equals("reviewer")) {
4901          this.getReviewer().add(TypeConvertor.castToContactDetail(value));
4902        } else if (name.equals("endorser")) {
4903          this.getEndorser().add(TypeConvertor.castToContactDetail(value));
4904        } else if (name.equals("relatedArtifact")) {
4905          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value));
4906        } else if (name.equals("actual")) {
4907          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
4908        } else if (name.equals("characteristic")) {
4909          this.getCharacteristic().add((EvidenceVariableCharacteristicComponent) value);
4910        } else if (name.equals("handling")) {
4911          value = new EvidenceVariableHandlingEnumFactory().fromType(TypeConvertor.castToCode(value));
4912          this.handling = (Enumeration) value; // Enumeration<EvidenceVariableHandling>
4913        } else if (name.equals("category")) {
4914          this.getCategory().add((EvidenceVariableCategoryComponent) value);
4915        } else
4916          return super.setProperty(name, value);
4917        return value;
4918      }
4919
4920      @Override
4921      public Base makeProperty(int hash, String name) throws FHIRException {
4922        switch (hash) {
4923        case 116079:  return getUrlElement();
4924        case -1618432855:  return addIdentifier(); 
4925        case 351608024:  return getVersionElement();
4926        case 3373707:  return getNameElement();
4927        case 110371416:  return getTitleElement();
4928        case 1555503932:  return getShortTitleElement();
4929        case -2060497896:  return getSubtitleElement();
4930        case -892481550:  return getStatusElement();
4931        case -404562712:  return getExperimentalElement();
4932        case 3076014:  return getDateElement();
4933        case 1447404028:  return getPublisherElement();
4934        case 951526432:  return addContact(); 
4935        case -1724546052:  return getDescriptionElement();
4936        case 3387378:  return addNote(); 
4937        case -669707736:  return addUseContext(); 
4938        case 1522889671:  return getCopyrightElement();
4939        case 223539345:  return getApprovalDateElement();
4940        case -1687512484:  return getLastReviewDateElement();
4941        case -403934648:  return getEffectivePeriod();
4942        case -1406328437:  return addAuthor(); 
4943        case -1307827859:  return addEditor(); 
4944        case -261190139:  return addReviewer(); 
4945        case 1740277666:  return addEndorser(); 
4946        case 666807069:  return addRelatedArtifact(); 
4947        case -1422939762:  return getActualElement();
4948        case 366313883:  return addCharacteristic(); 
4949        case 2072805:  return getHandlingElement();
4950        case 50511102:  return addCategory(); 
4951        default: return super.makeProperty(hash, name);
4952        }
4953
4954      }
4955
4956      @Override
4957      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4958        switch (hash) {
4959        case 116079: /*url*/ return new String[] {"uri"};
4960        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4961        case 351608024: /*version*/ return new String[] {"string"};
4962        case 3373707: /*name*/ return new String[] {"string"};
4963        case 110371416: /*title*/ return new String[] {"string"};
4964        case 1555503932: /*shortTitle*/ return new String[] {"string"};
4965        case -2060497896: /*subtitle*/ return new String[] {"string"};
4966        case -892481550: /*status*/ return new String[] {"code"};
4967        case -404562712: /*experimental*/ return new String[] {"boolean"};
4968        case 3076014: /*date*/ return new String[] {"dateTime"};
4969        case 1447404028: /*publisher*/ return new String[] {"string"};
4970        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
4971        case -1724546052: /*description*/ return new String[] {"markdown"};
4972        case 3387378: /*note*/ return new String[] {"Annotation"};
4973        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
4974        case 1522889671: /*copyright*/ return new String[] {"markdown"};
4975        case 223539345: /*approvalDate*/ return new String[] {"date"};
4976        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
4977        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
4978        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
4979        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
4980        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
4981        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
4982        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
4983        case -1422939762: /*actual*/ return new String[] {"boolean"};
4984        case 366313883: /*characteristic*/ return new String[] {};
4985        case 2072805: /*handling*/ return new String[] {"code"};
4986        case 50511102: /*category*/ return new String[] {};
4987        default: return super.getTypesForProperty(hash, name);
4988        }
4989
4990      }
4991
4992      @Override
4993      public Base addChild(String name) throws FHIRException {
4994        if (name.equals("url")) {
4995          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.url");
4996        }
4997        else if (name.equals("identifier")) {
4998          return addIdentifier();
4999        }
5000        else if (name.equals("version")) {
5001          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.version");
5002        }
5003        else if (name.equals("name")) {
5004          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.name");
5005        }
5006        else if (name.equals("title")) {
5007          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.title");
5008        }
5009        else if (name.equals("shortTitle")) {
5010          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.shortTitle");
5011        }
5012        else if (name.equals("subtitle")) {
5013          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.subtitle");
5014        }
5015        else if (name.equals("status")) {
5016          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.status");
5017        }
5018        else if (name.equals("experimental")) {
5019          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.experimental");
5020        }
5021        else if (name.equals("date")) {
5022          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.date");
5023        }
5024        else if (name.equals("publisher")) {
5025          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.publisher");
5026        }
5027        else if (name.equals("contact")) {
5028          return addContact();
5029        }
5030        else if (name.equals("description")) {
5031          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.description");
5032        }
5033        else if (name.equals("note")) {
5034          return addNote();
5035        }
5036        else if (name.equals("useContext")) {
5037          return addUseContext();
5038        }
5039        else if (name.equals("copyright")) {
5040          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.copyright");
5041        }
5042        else if (name.equals("approvalDate")) {
5043          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.approvalDate");
5044        }
5045        else if (name.equals("lastReviewDate")) {
5046          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.lastReviewDate");
5047        }
5048        else if (name.equals("effectivePeriod")) {
5049          this.effectivePeriod = new Period();
5050          return this.effectivePeriod;
5051        }
5052        else if (name.equals("author")) {
5053          return addAuthor();
5054        }
5055        else if (name.equals("editor")) {
5056          return addEditor();
5057        }
5058        else if (name.equals("reviewer")) {
5059          return addReviewer();
5060        }
5061        else if (name.equals("endorser")) {
5062          return addEndorser();
5063        }
5064        else if (name.equals("relatedArtifact")) {
5065          return addRelatedArtifact();
5066        }
5067        else if (name.equals("actual")) {
5068          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.actual");
5069        }
5070        else if (name.equals("characteristic")) {
5071          return addCharacteristic();
5072        }
5073        else if (name.equals("handling")) {
5074          throw new FHIRException("Cannot call addChild on a primitive type EvidenceVariable.handling");
5075        }
5076        else if (name.equals("category")) {
5077          return addCategory();
5078        }
5079        else
5080          return super.addChild(name);
5081      }
5082
5083  public String fhirType() {
5084    return "EvidenceVariable";
5085
5086  }
5087
5088      public EvidenceVariable copy() {
5089        EvidenceVariable dst = new EvidenceVariable();
5090        copyValues(dst);
5091        return dst;
5092      }
5093
5094      public void copyValues(EvidenceVariable dst) {
5095        super.copyValues(dst);
5096        dst.url = url == null ? null : url.copy();
5097        if (identifier != null) {
5098          dst.identifier = new ArrayList<Identifier>();
5099          for (Identifier i : identifier)
5100            dst.identifier.add(i.copy());
5101        };
5102        dst.version = version == null ? null : version.copy();
5103        dst.name = name == null ? null : name.copy();
5104        dst.title = title == null ? null : title.copy();
5105        dst.shortTitle = shortTitle == null ? null : shortTitle.copy();
5106        dst.subtitle = subtitle == null ? null : subtitle.copy();
5107        dst.status = status == null ? null : status.copy();
5108        dst.experimental = experimental == null ? null : experimental.copy();
5109        dst.date = date == null ? null : date.copy();
5110        dst.publisher = publisher == null ? null : publisher.copy();
5111        if (contact != null) {
5112          dst.contact = new ArrayList<ContactDetail>();
5113          for (ContactDetail i : contact)
5114            dst.contact.add(i.copy());
5115        };
5116        dst.description = description == null ? null : description.copy();
5117        if (note != null) {
5118          dst.note = new ArrayList<Annotation>();
5119          for (Annotation i : note)
5120            dst.note.add(i.copy());
5121        };
5122        if (useContext != null) {
5123          dst.useContext = new ArrayList<UsageContext>();
5124          for (UsageContext i : useContext)
5125            dst.useContext.add(i.copy());
5126        };
5127        dst.copyright = copyright == null ? null : copyright.copy();
5128        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
5129        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
5130        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
5131        if (author != null) {
5132          dst.author = new ArrayList<ContactDetail>();
5133          for (ContactDetail i : author)
5134            dst.author.add(i.copy());
5135        };
5136        if (editor != null) {
5137          dst.editor = new ArrayList<ContactDetail>();
5138          for (ContactDetail i : editor)
5139            dst.editor.add(i.copy());
5140        };
5141        if (reviewer != null) {
5142          dst.reviewer = new ArrayList<ContactDetail>();
5143          for (ContactDetail i : reviewer)
5144            dst.reviewer.add(i.copy());
5145        };
5146        if (endorser != null) {
5147          dst.endorser = new ArrayList<ContactDetail>();
5148          for (ContactDetail i : endorser)
5149            dst.endorser.add(i.copy());
5150        };
5151        if (relatedArtifact != null) {
5152          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
5153          for (RelatedArtifact i : relatedArtifact)
5154            dst.relatedArtifact.add(i.copy());
5155        };
5156        dst.actual = actual == null ? null : actual.copy();
5157        if (characteristic != null) {
5158          dst.characteristic = new ArrayList<EvidenceVariableCharacteristicComponent>();
5159          for (EvidenceVariableCharacteristicComponent i : characteristic)
5160            dst.characteristic.add(i.copy());
5161        };
5162        dst.handling = handling == null ? null : handling.copy();
5163        if (category != null) {
5164          dst.category = new ArrayList<EvidenceVariableCategoryComponent>();
5165          for (EvidenceVariableCategoryComponent i : category)
5166            dst.category.add(i.copy());
5167        };
5168      }
5169
5170      protected EvidenceVariable typedCopy() {
5171        return copy();
5172      }
5173
5174      @Override
5175      public boolean equalsDeep(Base other_) {
5176        if (!super.equalsDeep(other_))
5177          return false;
5178        if (!(other_ instanceof EvidenceVariable))
5179          return false;
5180        EvidenceVariable o = (EvidenceVariable) other_;
5181        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
5182           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(shortTitle, o.shortTitle, true)
5183           && compareDeep(subtitle, o.subtitle, true) && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true)
5184           && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true)
5185           && compareDeep(description, o.description, true) && compareDeep(note, o.note, true) && compareDeep(useContext, o.useContext, true)
5186           && compareDeep(copyright, o.copyright, true) && compareDeep(approvalDate, o.approvalDate, true)
5187           && compareDeep(lastReviewDate, o.lastReviewDate, true) && compareDeep(effectivePeriod, o.effectivePeriod, true)
5188           && compareDeep(author, o.author, true) && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true)
5189           && compareDeep(endorser, o.endorser, true) && compareDeep(relatedArtifact, o.relatedArtifact, true)
5190           && compareDeep(actual, o.actual, true) && compareDeep(characteristic, o.characteristic, true) && compareDeep(handling, o.handling, true)
5191           && compareDeep(category, o.category, true);
5192      }
5193
5194      @Override
5195      public boolean equalsShallow(Base other_) {
5196        if (!super.equalsShallow(other_))
5197          return false;
5198        if (!(other_ instanceof EvidenceVariable))
5199          return false;
5200        EvidenceVariable o = (EvidenceVariable) other_;
5201        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
5202           && compareValues(title, o.title, true) && compareValues(shortTitle, o.shortTitle, true) && compareValues(subtitle, o.subtitle, true)
5203           && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true)
5204           && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true) && compareValues(copyright, o.copyright, true)
5205           && compareValues(approvalDate, o.approvalDate, true) && compareValues(lastReviewDate, o.lastReviewDate, true)
5206           && compareValues(actual, o.actual, true) && compareValues(handling, o.handling, true);
5207      }
5208
5209      public boolean isEmpty() {
5210        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
5211          , name, title, shortTitle, subtitle, status, experimental, date, publisher, contact
5212          , description, note, useContext, copyright, approvalDate, lastReviewDate, effectivePeriod
5213          , author, editor, reviewer, endorser, relatedArtifact, actual, characteristic
5214          , handling, category);
5215      }
5216
5217  @Override
5218  public ResourceType getResourceType() {
5219    return ResourceType.EvidenceVariable;
5220   }
5221
5222 /**
5223   * Search parameter: <b>composed-of</b>
5224   * <p>
5225   * Description: <b>What resource is being referenced</b><br>
5226   * Type: <b>reference</b><br>
5227   * Path: <b>EvidenceVariable.relatedArtifact.where(type='composed-of').resource</b><br>
5228   * </p>
5229   */
5230  @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, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.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, FormularyItem.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, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5231  public static final String SP_COMPOSED_OF = "composed-of";
5232 /**
5233   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
5234   * <p>
5235   * Description: <b>What resource is being referenced</b><br>
5236   * Type: <b>reference</b><br>
5237   * Path: <b>EvidenceVariable.relatedArtifact.where(type='composed-of').resource</b><br>
5238   * </p>
5239   */
5240  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
5241
5242/**
5243   * Constant for fluent queries to be used to add include statements. Specifies
5244   * the path value of "<b>EvidenceVariable:composed-of</b>".
5245   */
5246  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("EvidenceVariable:composed-of").toLocked();
5247
5248 /**
5249   * Search parameter: <b>context-quantity</b>
5250   * <p>
5251   * Description: <b>A quantity- or range-valued use context assigned to the evidence variable</b><br>
5252   * Type: <b>quantity</b><br>
5253   * Path: <b>(EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range)</b><br>
5254   * </p>
5255   */
5256  @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" )
5257  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
5258 /**
5259   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
5260   * <p>
5261   * Description: <b>A quantity- or range-valued use context assigned to the evidence variable</b><br>
5262   * Type: <b>quantity</b><br>
5263   * Path: <b>(EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range)</b><br>
5264   * </p>
5265   */
5266  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
5267
5268 /**
5269   * Search parameter: <b>context-type-quantity</b>
5270   * <p>
5271   * Description: <b>A use context type and quantity- or range-based value assigned to the evidence variable</b><br>
5272   * Type: <b>composite</b><br>
5273   * Path: <b>EvidenceVariable.useContext</b><br>
5274   * </p>
5275   */
5276  @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"} )
5277  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
5278 /**
5279   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
5280   * <p>
5281   * Description: <b>A use context type and quantity- or range-based value assigned to the evidence variable</b><br>
5282   * Type: <b>composite</b><br>
5283   * Path: <b>EvidenceVariable.useContext</b><br>
5284   * </p>
5285   */
5286  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);
5287
5288 /**
5289   * Search parameter: <b>context-type-value</b>
5290   * <p>
5291   * Description: <b>A use context type and value assigned to the evidence variable</b><br>
5292   * Type: <b>composite</b><br>
5293   * Path: <b>EvidenceVariable.useContext</b><br>
5294   * </p>
5295   */
5296  @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"} )
5297  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
5298 /**
5299   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
5300   * <p>
5301   * Description: <b>A use context type and value assigned to the evidence variable</b><br>
5302   * Type: <b>composite</b><br>
5303   * Path: <b>EvidenceVariable.useContext</b><br>
5304   * </p>
5305   */
5306  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);
5307
5308 /**
5309   * Search parameter: <b>context-type</b>
5310   * <p>
5311   * Description: <b>A type of use context assigned to the evidence variable</b><br>
5312   * Type: <b>token</b><br>
5313   * Path: <b>EvidenceVariable.useContext.code</b><br>
5314   * </p>
5315   */
5316  @SearchParamDefinition(name="context-type", path="EvidenceVariable.useContext.code", description="A type of use context assigned to the evidence variable", type="token" )
5317  public static final String SP_CONTEXT_TYPE = "context-type";
5318 /**
5319   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
5320   * <p>
5321   * Description: <b>A type of use context assigned to the evidence variable</b><br>
5322   * Type: <b>token</b><br>
5323   * Path: <b>EvidenceVariable.useContext.code</b><br>
5324   * </p>
5325   */
5326  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
5327
5328 /**
5329   * Search parameter: <b>context</b>
5330   * <p>
5331   * Description: <b>A use context assigned to the evidence variable</b><br>
5332   * Type: <b>token</b><br>
5333   * Path: <b>(EvidenceVariable.useContext.value as CodeableConcept)</b><br>
5334   * </p>
5335   */
5336  @SearchParamDefinition(name="context", path="(EvidenceVariable.useContext.value as CodeableConcept)", description="A use context assigned to the evidence variable", type="token" )
5337  public static final String SP_CONTEXT = "context";
5338 /**
5339   * <b>Fluent Client</b> search parameter constant for <b>context</b>
5340   * <p>
5341   * Description: <b>A use context assigned to the evidence variable</b><br>
5342   * Type: <b>token</b><br>
5343   * Path: <b>(EvidenceVariable.useContext.value as CodeableConcept)</b><br>
5344   * </p>
5345   */
5346  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
5347
5348 /**
5349   * Search parameter: <b>date</b>
5350   * <p>
5351   * Description: <b>The evidence variable publication date</b><br>
5352   * Type: <b>date</b><br>
5353   * Path: <b>EvidenceVariable.date</b><br>
5354   * </p>
5355   */
5356  @SearchParamDefinition(name="date", path="EvidenceVariable.date", description="The evidence variable publication date", type="date" )
5357  public static final String SP_DATE = "date";
5358 /**
5359   * <b>Fluent Client</b> search parameter constant for <b>date</b>
5360   * <p>
5361   * Description: <b>The evidence variable publication date</b><br>
5362   * Type: <b>date</b><br>
5363   * Path: <b>EvidenceVariable.date</b><br>
5364   * </p>
5365   */
5366  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
5367
5368 /**
5369   * Search parameter: <b>depends-on</b>
5370   * <p>
5371   * Description: <b>What resource is being referenced</b><br>
5372   * Type: <b>reference</b><br>
5373   * Path: <b>EvidenceVariable.relatedArtifact.where(type='depends-on').resource</b><br>
5374   * </p>
5375   */
5376  @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, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.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, FormularyItem.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, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5377  public static final String SP_DEPENDS_ON = "depends-on";
5378 /**
5379   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
5380   * <p>
5381   * Description: <b>What resource is being referenced</b><br>
5382   * Type: <b>reference</b><br>
5383   * Path: <b>EvidenceVariable.relatedArtifact.where(type='depends-on').resource</b><br>
5384   * </p>
5385   */
5386  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
5387
5388/**
5389   * Constant for fluent queries to be used to add include statements. Specifies
5390   * the path value of "<b>EvidenceVariable:depends-on</b>".
5391   */
5392  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("EvidenceVariable:depends-on").toLocked();
5393
5394 /**
5395   * Search parameter: <b>derived-from</b>
5396   * <p>
5397   * Description: <b>What resource is being referenced</b><br>
5398   * Type: <b>reference</b><br>
5399   * Path: <b>EvidenceVariable.relatedArtifact.where(type='derived-from').resource</b><br>
5400   * </p>
5401   */
5402  @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, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.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, FormularyItem.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, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5403  public static final String SP_DERIVED_FROM = "derived-from";
5404 /**
5405   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
5406   * <p>
5407   * Description: <b>What resource is being referenced</b><br>
5408   * Type: <b>reference</b><br>
5409   * Path: <b>EvidenceVariable.relatedArtifact.where(type='derived-from').resource</b><br>
5410   * </p>
5411   */
5412  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
5413
5414/**
5415   * Constant for fluent queries to be used to add include statements. Specifies
5416   * the path value of "<b>EvidenceVariable:derived-from</b>".
5417   */
5418  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("EvidenceVariable:derived-from").toLocked();
5419
5420 /**
5421   * Search parameter: <b>description</b>
5422   * <p>
5423   * Description: <b>The description of the evidence variable</b><br>
5424   * Type: <b>string</b><br>
5425   * Path: <b>EvidenceVariable.description</b><br>
5426   * </p>
5427   */
5428  @SearchParamDefinition(name="description", path="EvidenceVariable.description", description="The description of the evidence variable", type="string" )
5429  public static final String SP_DESCRIPTION = "description";
5430 /**
5431   * <b>Fluent Client</b> search parameter constant for <b>description</b>
5432   * <p>
5433   * Description: <b>The description of the evidence variable</b><br>
5434   * Type: <b>string</b><br>
5435   * Path: <b>EvidenceVariable.description</b><br>
5436   * </p>
5437   */
5438  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
5439
5440 /**
5441   * Search parameter: <b>identifier</b>
5442   * <p>
5443   * Description: <b>External identifier for the evidence variable</b><br>
5444   * Type: <b>token</b><br>
5445   * Path: <b>EvidenceVariable.identifier</b><br>
5446   * </p>
5447   */
5448  @SearchParamDefinition(name="identifier", path="EvidenceVariable.identifier", description="External identifier for the evidence variable", type="token" )
5449  public static final String SP_IDENTIFIER = "identifier";
5450 /**
5451   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5452   * <p>
5453   * Description: <b>External identifier for the evidence variable</b><br>
5454   * Type: <b>token</b><br>
5455   * Path: <b>EvidenceVariable.identifier</b><br>
5456   * </p>
5457   */
5458  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5459
5460 /**
5461   * Search parameter: <b>name</b>
5462   * <p>
5463   * Description: <b>Computationally friendly name of the evidence variable</b><br>
5464   * Type: <b>string</b><br>
5465   * Path: <b>EvidenceVariable.name</b><br>
5466   * </p>
5467   */
5468  @SearchParamDefinition(name="name", path="EvidenceVariable.name", description="Computationally friendly name of the evidence variable", type="string" )
5469  public static final String SP_NAME = "name";
5470 /**
5471   * <b>Fluent Client</b> search parameter constant for <b>name</b>
5472   * <p>
5473   * Description: <b>Computationally friendly name of the evidence variable</b><br>
5474   * Type: <b>string</b><br>
5475   * Path: <b>EvidenceVariable.name</b><br>
5476   * </p>
5477   */
5478  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
5479
5480 /**
5481   * Search parameter: <b>predecessor</b>
5482   * <p>
5483   * Description: <b>What resource is being referenced</b><br>
5484   * Type: <b>reference</b><br>
5485   * Path: <b>EvidenceVariable.relatedArtifact.where(type='predecessor').resource</b><br>
5486   * </p>
5487   */
5488  @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, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.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, FormularyItem.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, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5489  public static final String SP_PREDECESSOR = "predecessor";
5490 /**
5491   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
5492   * <p>
5493   * Description: <b>What resource is being referenced</b><br>
5494   * Type: <b>reference</b><br>
5495   * Path: <b>EvidenceVariable.relatedArtifact.where(type='predecessor').resource</b><br>
5496   * </p>
5497   */
5498  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
5499
5500/**
5501   * Constant for fluent queries to be used to add include statements. Specifies
5502   * the path value of "<b>EvidenceVariable:predecessor</b>".
5503   */
5504  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("EvidenceVariable:predecessor").toLocked();
5505
5506 /**
5507   * Search parameter: <b>publisher</b>
5508   * <p>
5509   * Description: <b>Name of the publisher of the evidence variable</b><br>
5510   * Type: <b>string</b><br>
5511   * Path: <b>EvidenceVariable.publisher</b><br>
5512   * </p>
5513   */
5514  @SearchParamDefinition(name="publisher", path="EvidenceVariable.publisher", description="Name of the publisher of the evidence variable", type="string" )
5515  public static final String SP_PUBLISHER = "publisher";
5516 /**
5517   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
5518   * <p>
5519   * Description: <b>Name of the publisher of the evidence variable</b><br>
5520   * Type: <b>string</b><br>
5521   * Path: <b>EvidenceVariable.publisher</b><br>
5522   * </p>
5523   */
5524  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
5525
5526 /**
5527   * Search parameter: <b>status</b>
5528   * <p>
5529   * Description: <b>The current status of the evidence variable</b><br>
5530   * Type: <b>token</b><br>
5531   * Path: <b>EvidenceVariable.status</b><br>
5532   * </p>
5533   */
5534  @SearchParamDefinition(name="status", path="EvidenceVariable.status", description="The current status of the evidence variable", type="token" )
5535  public static final String SP_STATUS = "status";
5536 /**
5537   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5538   * <p>
5539   * Description: <b>The current status of the evidence variable</b><br>
5540   * Type: <b>token</b><br>
5541   * Path: <b>EvidenceVariable.status</b><br>
5542   * </p>
5543   */
5544  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5545
5546 /**
5547   * Search parameter: <b>successor</b>
5548   * <p>
5549   * Description: <b>What resource is being referenced</b><br>
5550   * Type: <b>reference</b><br>
5551   * Path: <b>EvidenceVariable.relatedArtifact.where(type='successor').resource</b><br>
5552   * </p>
5553   */
5554  @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, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.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, FormularyItem.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, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5555  public static final String SP_SUCCESSOR = "successor";
5556 /**
5557   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
5558   * <p>
5559   * Description: <b>What resource is being referenced</b><br>
5560   * Type: <b>reference</b><br>
5561   * Path: <b>EvidenceVariable.relatedArtifact.where(type='successor').resource</b><br>
5562   * </p>
5563   */
5564  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
5565
5566/**
5567   * Constant for fluent queries to be used to add include statements. Specifies
5568   * the path value of "<b>EvidenceVariable:successor</b>".
5569   */
5570  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("EvidenceVariable:successor").toLocked();
5571
5572 /**
5573   * Search parameter: <b>title</b>
5574   * <p>
5575   * Description: <b>The human-friendly name of the evidence variable</b><br>
5576   * Type: <b>string</b><br>
5577   * Path: <b>EvidenceVariable.title</b><br>
5578   * </p>
5579   */
5580  @SearchParamDefinition(name="title", path="EvidenceVariable.title", description="The human-friendly name of the evidence variable", type="string" )
5581  public static final String SP_TITLE = "title";
5582 /**
5583   * <b>Fluent Client</b> search parameter constant for <b>title</b>
5584   * <p>
5585   * Description: <b>The human-friendly name of the evidence variable</b><br>
5586   * Type: <b>string</b><br>
5587   * Path: <b>EvidenceVariable.title</b><br>
5588   * </p>
5589   */
5590  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
5591
5592 /**
5593   * Search parameter: <b>topic</b>
5594   * <p>
5595   * Description: <b>Topics associated with the EvidenceVariable</b><br>
5596   * Type: <b>token</b><br>
5597   * Path: <b>null</b><br>
5598   * </p>
5599   */
5600  @SearchParamDefinition(name="topic", path="", description="Topics associated with the EvidenceVariable", type="token" )
5601  public static final String SP_TOPIC = "topic";
5602 /**
5603   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
5604   * <p>
5605   * Description: <b>Topics associated with the EvidenceVariable</b><br>
5606   * Type: <b>token</b><br>
5607   * Path: <b>null</b><br>
5608   * </p>
5609   */
5610  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
5611
5612 /**
5613   * Search parameter: <b>url</b>
5614   * <p>
5615   * Description: <b>The uri that identifies the evidence variable</b><br>
5616   * Type: <b>uri</b><br>
5617   * Path: <b>EvidenceVariable.url</b><br>
5618   * </p>
5619   */
5620  @SearchParamDefinition(name="url", path="EvidenceVariable.url", description="The uri that identifies the evidence variable", type="uri" )
5621  public static final String SP_URL = "url";
5622 /**
5623   * <b>Fluent Client</b> search parameter constant for <b>url</b>
5624   * <p>
5625   * Description: <b>The uri that identifies the evidence variable</b><br>
5626   * Type: <b>uri</b><br>
5627   * Path: <b>EvidenceVariable.url</b><br>
5628   * </p>
5629   */
5630  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
5631
5632 /**
5633   * Search parameter: <b>version</b>
5634   * <p>
5635   * Description: <b>The business version of the evidence variable</b><br>
5636   * Type: <b>token</b><br>
5637   * Path: <b>EvidenceVariable.version</b><br>
5638   * </p>
5639   */
5640  @SearchParamDefinition(name="version", path="EvidenceVariable.version", description="The business version of the evidence variable", type="token" )
5641  public static final String SP_VERSION = "version";
5642 /**
5643   * <b>Fluent Client</b> search parameter constant for <b>version</b>
5644   * <p>
5645   * Description: <b>The business version of the evidence variable</b><br>
5646   * Type: <b>token</b><br>
5647   * Path: <b>EvidenceVariable.version</b><br>
5648   * </p>
5649   */
5650  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
5651
5652
5653}
5654