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