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