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