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