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