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