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