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