001package org.hl7.fhir.dstu3.model;
002
003
004
005
006import java.math.BigDecimal;
007
008/*
009  Copyright (c) 2011+, HL7, Inc.
010  All rights reserved.
011  
012  Redistribution and use in source and binary forms, with or without modification, 
013  are permitted provided that the following conditions are met:
014  
015   * Redistributions of source code must retain the above copyright notice, this 
016     list of conditions and the following disclaimer.
017   * Redistributions in binary form must reproduce the above copyright notice, 
018     this list of conditions and the following disclaimer in the documentation 
019     and/or other materials provided with the distribution.
020   * Neither the name of HL7 nor the names of its contributors may be used to 
021     endorse or promote products derived from this software without specific 
022     prior written permission.
023  
024  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
025  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
026  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
027  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
028  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
029  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
030  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
031  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
032  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
033  POSSIBILITY OF SUCH DAMAGE.
034  
035*/
036
037// Generated on Fri, Mar 16, 2018 15:21+1100 for FHIR v3.0.x
038import java.util.ArrayList;
039import java.util.List;
040
041import org.hl7.fhir.exceptions.FHIRException;
042import org.hl7.fhir.exceptions.FHIRFormatError;
043import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
044import org.hl7.fhir.utilities.Utilities;
045
046import ca.uhn.fhir.model.api.annotation.Block;
047import ca.uhn.fhir.model.api.annotation.Child;
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 * An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.
053 */
054@ResourceDef(name="RiskAssessment", profile="http://hl7.org/fhir/Profile/RiskAssessment")
055public class RiskAssessment extends DomainResource {
056
057    public enum RiskAssessmentStatus {
058        /**
059         * The existence of the observation is registered, but there is no result yet available.
060         */
061        REGISTERED, 
062        /**
063         * This is an initial or interim observation: data may be incomplete or unverified.
064         */
065        PRELIMINARY, 
066        /**
067         * The observation is complete.
068         */
069        FINAL, 
070        /**
071         * Subsequent to being Final, the observation has been modified subsequent.  This includes updates/new information and corrections.
072         */
073        AMENDED, 
074        /**
075         * Subsequent to being Final, the observation has been modified to correct an error in the test result.
076         */
077        CORRECTED, 
078        /**
079         * The observation is unavailable because the measurement was not started or not completed (also sometimes called "aborted").
080         */
081        CANCELLED, 
082        /**
083         * The observation has been withdrawn following previous final release.  This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be "cancelled" rather than "entered-in-error".)
084         */
085        ENTEREDINERROR, 
086        /**
087         * The authoring system does not know which of the status values currently applies for this request. Note: This concept is not to be used for "other" - one of the listed statuses is presumed to apply, but the authoring system does not know which.
088         */
089        UNKNOWN, 
090        /**
091         * added to help the parsers with the generic types
092         */
093        NULL;
094        public static RiskAssessmentStatus fromCode(String codeString) throws FHIRException {
095            if (codeString == null || "".equals(codeString))
096                return null;
097        if ("registered".equals(codeString))
098          return REGISTERED;
099        if ("preliminary".equals(codeString))
100          return PRELIMINARY;
101        if ("final".equals(codeString))
102          return FINAL;
103        if ("amended".equals(codeString))
104          return AMENDED;
105        if ("corrected".equals(codeString))
106          return CORRECTED;
107        if ("cancelled".equals(codeString))
108          return CANCELLED;
109        if ("entered-in-error".equals(codeString))
110          return ENTEREDINERROR;
111        if ("unknown".equals(codeString))
112          return UNKNOWN;
113        if (Configuration.isAcceptInvalidEnums())
114          return null;
115        else
116          throw new FHIRException("Unknown RiskAssessmentStatus code '"+codeString+"'");
117        }
118        public String toCode() {
119          switch (this) {
120            case REGISTERED: return "registered";
121            case PRELIMINARY: return "preliminary";
122            case FINAL: return "final";
123            case AMENDED: return "amended";
124            case CORRECTED: return "corrected";
125            case CANCELLED: return "cancelled";
126            case ENTEREDINERROR: return "entered-in-error";
127            case UNKNOWN: return "unknown";
128            case NULL: return null;
129            default: return "?";
130          }
131        }
132        public String getSystem() {
133          switch (this) {
134            case REGISTERED: return "http://hl7.org/fhir/observation-status";
135            case PRELIMINARY: return "http://hl7.org/fhir/observation-status";
136            case FINAL: return "http://hl7.org/fhir/observation-status";
137            case AMENDED: return "http://hl7.org/fhir/observation-status";
138            case CORRECTED: return "http://hl7.org/fhir/observation-status";
139            case CANCELLED: return "http://hl7.org/fhir/observation-status";
140            case ENTEREDINERROR: return "http://hl7.org/fhir/observation-status";
141            case UNKNOWN: return "http://hl7.org/fhir/observation-status";
142            case NULL: return null;
143            default: return "?";
144          }
145        }
146        public String getDefinition() {
147          switch (this) {
148            case REGISTERED: return "The existence of the observation is registered, but there is no result yet available.";
149            case PRELIMINARY: return "This is an initial or interim observation: data may be incomplete or unverified.";
150            case FINAL: return "The observation is complete.";
151            case AMENDED: return "Subsequent to being Final, the observation has been modified subsequent.  This includes updates/new information and corrections.";
152            case CORRECTED: return "Subsequent to being Final, the observation has been modified to correct an error in the test result.";
153            case CANCELLED: return "The observation is unavailable because the measurement was not started or not completed (also sometimes called \"aborted\").";
154            case ENTEREDINERROR: return "The observation has been withdrawn following previous final release.  This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".)";
155            case UNKNOWN: return "The authoring system does not know which of the status values currently applies for this request. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, but the authoring system does not know which.";
156            case NULL: return null;
157            default: return "?";
158          }
159        }
160        public String getDisplay() {
161          switch (this) {
162            case REGISTERED: return "Registered";
163            case PRELIMINARY: return "Preliminary";
164            case FINAL: return "Final";
165            case AMENDED: return "Amended";
166            case CORRECTED: return "Corrected";
167            case CANCELLED: return "Cancelled";
168            case ENTEREDINERROR: return "Entered in Error";
169            case UNKNOWN: return "Unknown";
170            case NULL: return null;
171            default: return "?";
172          }
173        }
174    }
175
176  public static class RiskAssessmentStatusEnumFactory implements EnumFactory<RiskAssessmentStatus> {
177    public RiskAssessmentStatus fromCode(String codeString) throws IllegalArgumentException {
178      if (codeString == null || "".equals(codeString))
179            if (codeString == null || "".equals(codeString))
180                return null;
181        if ("registered".equals(codeString))
182          return RiskAssessmentStatus.REGISTERED;
183        if ("preliminary".equals(codeString))
184          return RiskAssessmentStatus.PRELIMINARY;
185        if ("final".equals(codeString))
186          return RiskAssessmentStatus.FINAL;
187        if ("amended".equals(codeString))
188          return RiskAssessmentStatus.AMENDED;
189        if ("corrected".equals(codeString))
190          return RiskAssessmentStatus.CORRECTED;
191        if ("cancelled".equals(codeString))
192          return RiskAssessmentStatus.CANCELLED;
193        if ("entered-in-error".equals(codeString))
194          return RiskAssessmentStatus.ENTEREDINERROR;
195        if ("unknown".equals(codeString))
196          return RiskAssessmentStatus.UNKNOWN;
197        throw new IllegalArgumentException("Unknown RiskAssessmentStatus code '"+codeString+"'");
198        }
199        public Enumeration<RiskAssessmentStatus> fromType(Base code) throws FHIRException {
200          if (code == null)
201            return null;
202          if (code.isEmpty())
203            return new Enumeration<RiskAssessmentStatus>(this);
204          String codeString = ((PrimitiveType) code).asStringValue();
205          if (codeString == null || "".equals(codeString))
206            return null;
207        if ("registered".equals(codeString))
208          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.REGISTERED);
209        if ("preliminary".equals(codeString))
210          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.PRELIMINARY);
211        if ("final".equals(codeString))
212          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.FINAL);
213        if ("amended".equals(codeString))
214          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.AMENDED);
215        if ("corrected".equals(codeString))
216          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.CORRECTED);
217        if ("cancelled".equals(codeString))
218          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.CANCELLED);
219        if ("entered-in-error".equals(codeString))
220          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.ENTEREDINERROR);
221        if ("unknown".equals(codeString))
222          return new Enumeration<RiskAssessmentStatus>(this, RiskAssessmentStatus.UNKNOWN);
223        throw new FHIRException("Unknown RiskAssessmentStatus code '"+codeString+"'");
224        }
225    public String toCode(RiskAssessmentStatus code) {
226      if (code == RiskAssessmentStatus.REGISTERED)
227        return "registered";
228      if (code == RiskAssessmentStatus.PRELIMINARY)
229        return "preliminary";
230      if (code == RiskAssessmentStatus.FINAL)
231        return "final";
232      if (code == RiskAssessmentStatus.AMENDED)
233        return "amended";
234      if (code == RiskAssessmentStatus.CORRECTED)
235        return "corrected";
236      if (code == RiskAssessmentStatus.CANCELLED)
237        return "cancelled";
238      if (code == RiskAssessmentStatus.ENTEREDINERROR)
239        return "entered-in-error";
240      if (code == RiskAssessmentStatus.UNKNOWN)
241        return "unknown";
242      return "?";
243      }
244    public String toSystem(RiskAssessmentStatus code) {
245      return code.getSystem();
246      }
247    }
248
249    @Block()
250    public static class RiskAssessmentPredictionComponent extends BackboneElement implements IBaseBackboneElement {
251        /**
252         * One of the potential outcomes for the patient (e.g. remission, death,  a particular condition).
253         */
254        @Child(name = "outcome", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
255        @Description(shortDefinition="Possible outcome for the subject", formalDefinition="One of the potential outcomes for the patient (e.g. remission, death,  a particular condition)." )
256        protected CodeableConcept outcome;
257
258        /**
259         * How likely is the outcome (in the specified timeframe).
260         */
261        @Child(name = "probability", type = {DecimalType.class, Range.class}, order=2, min=0, max=1, modifier=false, summary=false)
262        @Description(shortDefinition="Likelihood of specified outcome", formalDefinition="How likely is the outcome (in the specified timeframe)." )
263        protected Type probability;
264
265        /**
266         * How likely is the outcome (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, high).
267         */
268        @Child(name = "qualitativeRisk", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
269        @Description(shortDefinition="Likelihood of specified outcome as a qualitative value", formalDefinition="How likely is the outcome (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, high)." )
270        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/risk-probability")
271        protected CodeableConcept qualitativeRisk;
272
273        /**
274         * Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).
275         */
276        @Child(name = "relativeRisk", type = {DecimalType.class}, order=4, min=0, max=1, modifier=false, summary=false)
277        @Description(shortDefinition="Relative likelihood", formalDefinition="Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.)." )
278        protected DecimalType relativeRisk;
279
280        /**
281         * Indicates the period of time or age range of the subject to which the specified probability applies.
282         */
283        @Child(name = "when", type = {Period.class, Range.class}, order=5, min=0, max=1, modifier=false, summary=false)
284        @Description(shortDefinition="Timeframe or age range", formalDefinition="Indicates the period of time or age range of the subject to which the specified probability applies." )
285        protected Type when;
286
287        /**
288         * Additional information explaining the basis for the prediction.
289         */
290        @Child(name = "rationale", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
291        @Description(shortDefinition="Explanation of prediction", formalDefinition="Additional information explaining the basis for the prediction." )
292        protected StringType rationale;
293
294        private static final long serialVersionUID = 1283401747L;
295
296    /**
297     * Constructor
298     */
299      public RiskAssessmentPredictionComponent() {
300        super();
301      }
302
303    /**
304     * Constructor
305     */
306      public RiskAssessmentPredictionComponent(CodeableConcept outcome) {
307        super();
308        this.outcome = outcome;
309      }
310
311        /**
312         * @return {@link #outcome} (One of the potential outcomes for the patient (e.g. remission, death,  a particular condition).)
313         */
314        public CodeableConcept getOutcome() { 
315          if (this.outcome == null)
316            if (Configuration.errorOnAutoCreate())
317              throw new Error("Attempt to auto-create RiskAssessmentPredictionComponent.outcome");
318            else if (Configuration.doAutoCreate())
319              this.outcome = new CodeableConcept(); // cc
320          return this.outcome;
321        }
322
323        public boolean hasOutcome() { 
324          return this.outcome != null && !this.outcome.isEmpty();
325        }
326
327        /**
328         * @param value {@link #outcome} (One of the potential outcomes for the patient (e.g. remission, death,  a particular condition).)
329         */
330        public RiskAssessmentPredictionComponent setOutcome(CodeableConcept value)  { 
331          this.outcome = value;
332          return this;
333        }
334
335        /**
336         * @return {@link #probability} (How likely is the outcome (in the specified timeframe).)
337         */
338        public Type getProbability() { 
339          return this.probability;
340        }
341
342        /**
343         * @return {@link #probability} (How likely is the outcome (in the specified timeframe).)
344         */
345        public DecimalType getProbabilityDecimalType() throws FHIRException { 
346          if (this.probability == null)
347            return null;
348          if (!(this.probability instanceof DecimalType))
349            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.probability.getClass().getName()+" was encountered");
350          return (DecimalType) this.probability;
351        }
352
353        public boolean hasProbabilityDecimalType() { 
354          return this != null && this.probability instanceof DecimalType;
355        }
356
357        /**
358         * @return {@link #probability} (How likely is the outcome (in the specified timeframe).)
359         */
360        public Range getProbabilityRange() throws FHIRException { 
361          if (this.probability == null)
362            return null;
363          if (!(this.probability instanceof Range))
364            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.probability.getClass().getName()+" was encountered");
365          return (Range) this.probability;
366        }
367
368        public boolean hasProbabilityRange() { 
369          return this != null && this.probability instanceof Range;
370        }
371
372        public boolean hasProbability() { 
373          return this.probability != null && !this.probability.isEmpty();
374        }
375
376        /**
377         * @param value {@link #probability} (How likely is the outcome (in the specified timeframe).)
378         */
379        public RiskAssessmentPredictionComponent setProbability(Type value) throws FHIRFormatError { 
380          if (value != null && !(value instanceof DecimalType || value instanceof Range))
381            throw new FHIRFormatError("Not the right type for RiskAssessment.prediction.probability[x]: "+value.fhirType());
382          this.probability = value;
383          return this;
384        }
385
386        /**
387         * @return {@link #qualitativeRisk} (How likely is the outcome (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, high).)
388         */
389        public CodeableConcept getQualitativeRisk() { 
390          if (this.qualitativeRisk == null)
391            if (Configuration.errorOnAutoCreate())
392              throw new Error("Attempt to auto-create RiskAssessmentPredictionComponent.qualitativeRisk");
393            else if (Configuration.doAutoCreate())
394              this.qualitativeRisk = new CodeableConcept(); // cc
395          return this.qualitativeRisk;
396        }
397
398        public boolean hasQualitativeRisk() { 
399          return this.qualitativeRisk != null && !this.qualitativeRisk.isEmpty();
400        }
401
402        /**
403         * @param value {@link #qualitativeRisk} (How likely is the outcome (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, high).)
404         */
405        public RiskAssessmentPredictionComponent setQualitativeRisk(CodeableConcept value)  { 
406          this.qualitativeRisk = value;
407          return this;
408        }
409
410        /**
411         * @return {@link #relativeRisk} (Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).). This is the underlying object with id, value and extensions. The accessor "getRelativeRisk" gives direct access to the value
412         */
413        public DecimalType getRelativeRiskElement() { 
414          if (this.relativeRisk == null)
415            if (Configuration.errorOnAutoCreate())
416              throw new Error("Attempt to auto-create RiskAssessmentPredictionComponent.relativeRisk");
417            else if (Configuration.doAutoCreate())
418              this.relativeRisk = new DecimalType(); // bb
419          return this.relativeRisk;
420        }
421
422        public boolean hasRelativeRiskElement() { 
423          return this.relativeRisk != null && !this.relativeRisk.isEmpty();
424        }
425
426        public boolean hasRelativeRisk() { 
427          return this.relativeRisk != null && !this.relativeRisk.isEmpty();
428        }
429
430        /**
431         * @param value {@link #relativeRisk} (Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).). This is the underlying object with id, value and extensions. The accessor "getRelativeRisk" gives direct access to the value
432         */
433        public RiskAssessmentPredictionComponent setRelativeRiskElement(DecimalType value) { 
434          this.relativeRisk = value;
435          return this;
436        }
437
438        /**
439         * @return Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).
440         */
441        public BigDecimal getRelativeRisk() { 
442          return this.relativeRisk == null ? null : this.relativeRisk.getValue();
443        }
444
445        /**
446         * @param value Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).
447         */
448        public RiskAssessmentPredictionComponent setRelativeRisk(BigDecimal value) { 
449          if (value == null)
450            this.relativeRisk = null;
451          else {
452            if (this.relativeRisk == null)
453              this.relativeRisk = new DecimalType();
454            this.relativeRisk.setValue(value);
455          }
456          return this;
457        }
458
459        /**
460         * @param value Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).
461         */
462        public RiskAssessmentPredictionComponent setRelativeRisk(long value) { 
463              this.relativeRisk = new DecimalType();
464            this.relativeRisk.setValue(value);
465          return this;
466        }
467
468        /**
469         * @param value Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).
470         */
471        public RiskAssessmentPredictionComponent setRelativeRisk(double value) { 
472              this.relativeRisk = new DecimalType();
473            this.relativeRisk.setValue(value);
474          return this;
475        }
476
477        /**
478         * @return {@link #when} (Indicates the period of time or age range of the subject to which the specified probability applies.)
479         */
480        public Type getWhen() { 
481          return this.when;
482        }
483
484        /**
485         * @return {@link #when} (Indicates the period of time or age range of the subject to which the specified probability applies.)
486         */
487        public Period getWhenPeriod() throws FHIRException { 
488          if (this.when == null)
489            return null;
490          if (!(this.when instanceof Period))
491            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.when.getClass().getName()+" was encountered");
492          return (Period) this.when;
493        }
494
495        public boolean hasWhenPeriod() { 
496          return this != null && this.when instanceof Period;
497        }
498
499        /**
500         * @return {@link #when} (Indicates the period of time or age range of the subject to which the specified probability applies.)
501         */
502        public Range getWhenRange() throws FHIRException { 
503          if (this.when == null)
504            return null;
505          if (!(this.when instanceof Range))
506            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.when.getClass().getName()+" was encountered");
507          return (Range) this.when;
508        }
509
510        public boolean hasWhenRange() { 
511          return this != null && this.when instanceof Range;
512        }
513
514        public boolean hasWhen() { 
515          return this.when != null && !this.when.isEmpty();
516        }
517
518        /**
519         * @param value {@link #when} (Indicates the period of time or age range of the subject to which the specified probability applies.)
520         */
521        public RiskAssessmentPredictionComponent setWhen(Type value) throws FHIRFormatError { 
522          if (value != null && !(value instanceof Period || value instanceof Range))
523            throw new FHIRFormatError("Not the right type for RiskAssessment.prediction.when[x]: "+value.fhirType());
524          this.when = value;
525          return this;
526        }
527
528        /**
529         * @return {@link #rationale} (Additional information explaining the basis for the prediction.). This is the underlying object with id, value and extensions. The accessor "getRationale" gives direct access to the value
530         */
531        public StringType getRationaleElement() { 
532          if (this.rationale == null)
533            if (Configuration.errorOnAutoCreate())
534              throw new Error("Attempt to auto-create RiskAssessmentPredictionComponent.rationale");
535            else if (Configuration.doAutoCreate())
536              this.rationale = new StringType(); // bb
537          return this.rationale;
538        }
539
540        public boolean hasRationaleElement() { 
541          return this.rationale != null && !this.rationale.isEmpty();
542        }
543
544        public boolean hasRationale() { 
545          return this.rationale != null && !this.rationale.isEmpty();
546        }
547
548        /**
549         * @param value {@link #rationale} (Additional information explaining the basis for the prediction.). This is the underlying object with id, value and extensions. The accessor "getRationale" gives direct access to the value
550         */
551        public RiskAssessmentPredictionComponent setRationaleElement(StringType value) { 
552          this.rationale = value;
553          return this;
554        }
555
556        /**
557         * @return Additional information explaining the basis for the prediction.
558         */
559        public String getRationale() { 
560          return this.rationale == null ? null : this.rationale.getValue();
561        }
562
563        /**
564         * @param value Additional information explaining the basis for the prediction.
565         */
566        public RiskAssessmentPredictionComponent setRationale(String value) { 
567          if (Utilities.noString(value))
568            this.rationale = null;
569          else {
570            if (this.rationale == null)
571              this.rationale = new StringType();
572            this.rationale.setValue(value);
573          }
574          return this;
575        }
576
577        protected void listChildren(List<Property> children) {
578          super.listChildren(children);
579          children.add(new Property("outcome", "CodeableConcept", "One of the potential outcomes for the patient (e.g. remission, death,  a particular condition).", 0, 1, outcome));
580          children.add(new Property("probability[x]", "decimal|Range", "How likely is the outcome (in the specified timeframe).", 0, 1, probability));
581          children.add(new Property("qualitativeRisk", "CodeableConcept", "How likely is the outcome (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, high).", 0, 1, qualitativeRisk));
582          children.add(new Property("relativeRisk", "decimal", "Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).", 0, 1, relativeRisk));
583          children.add(new Property("when[x]", "Period|Range", "Indicates the period of time or age range of the subject to which the specified probability applies.", 0, 1, when));
584          children.add(new Property("rationale", "string", "Additional information explaining the basis for the prediction.", 0, 1, rationale));
585        }
586
587        @Override
588        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
589          switch (_hash) {
590          case -1106507950: /*outcome*/  return new Property("outcome", "CodeableConcept", "One of the potential outcomes for the patient (e.g. remission, death,  a particular condition).", 0, 1, outcome);
591          case 1430185003: /*probability[x]*/  return new Property("probability[x]", "decimal|Range", "How likely is the outcome (in the specified timeframe).", 0, 1, probability);
592          case -1290561483: /*probability*/  return new Property("probability[x]", "decimal|Range", "How likely is the outcome (in the specified timeframe).", 0, 1, probability);
593          case 888495452: /*probabilityDecimal*/  return new Property("probability[x]", "decimal|Range", "How likely is the outcome (in the specified timeframe).", 0, 1, probability);
594          case 9275912: /*probabilityRange*/  return new Property("probability[x]", "decimal|Range", "How likely is the outcome (in the specified timeframe).", 0, 1, probability);
595          case 123308730: /*qualitativeRisk*/  return new Property("qualitativeRisk", "CodeableConcept", "How likely is the outcome (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, high).", 0, 1, qualitativeRisk);
596          case -70741061: /*relativeRisk*/  return new Property("relativeRisk", "decimal", "Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.).", 0, 1, relativeRisk);
597          case 1312831238: /*when[x]*/  return new Property("when[x]", "Period|Range", "Indicates the period of time or age range of the subject to which the specified probability applies.", 0, 1, when);
598          case 3648314: /*when*/  return new Property("when[x]", "Period|Range", "Indicates the period of time or age range of the subject to which the specified probability applies.", 0, 1, when);
599          case 251476379: /*whenPeriod*/  return new Property("when[x]", "Period|Range", "Indicates the period of time or age range of the subject to which the specified probability applies.", 0, 1, when);
600          case -1098542557: /*whenRange*/  return new Property("when[x]", "Period|Range", "Indicates the period of time or age range of the subject to which the specified probability applies.", 0, 1, when);
601          case 345689335: /*rationale*/  return new Property("rationale", "string", "Additional information explaining the basis for the prediction.", 0, 1, rationale);
602          default: return super.getNamedProperty(_hash, _name, _checkValid);
603          }
604
605        }
606
607      @Override
608      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
609        switch (hash) {
610        case -1106507950: /*outcome*/ return this.outcome == null ? new Base[0] : new Base[] {this.outcome}; // CodeableConcept
611        case -1290561483: /*probability*/ return this.probability == null ? new Base[0] : new Base[] {this.probability}; // Type
612        case 123308730: /*qualitativeRisk*/ return this.qualitativeRisk == null ? new Base[0] : new Base[] {this.qualitativeRisk}; // CodeableConcept
613        case -70741061: /*relativeRisk*/ return this.relativeRisk == null ? new Base[0] : new Base[] {this.relativeRisk}; // DecimalType
614        case 3648314: /*when*/ return this.when == null ? new Base[0] : new Base[] {this.when}; // Type
615        case 345689335: /*rationale*/ return this.rationale == null ? new Base[0] : new Base[] {this.rationale}; // StringType
616        default: return super.getProperty(hash, name, checkValid);
617        }
618
619      }
620
621      @Override
622      public Base setProperty(int hash, String name, Base value) throws FHIRException {
623        switch (hash) {
624        case -1106507950: // outcome
625          this.outcome = castToCodeableConcept(value); // CodeableConcept
626          return value;
627        case -1290561483: // probability
628          this.probability = castToType(value); // Type
629          return value;
630        case 123308730: // qualitativeRisk
631          this.qualitativeRisk = castToCodeableConcept(value); // CodeableConcept
632          return value;
633        case -70741061: // relativeRisk
634          this.relativeRisk = castToDecimal(value); // DecimalType
635          return value;
636        case 3648314: // when
637          this.when = castToType(value); // Type
638          return value;
639        case 345689335: // rationale
640          this.rationale = castToString(value); // StringType
641          return value;
642        default: return super.setProperty(hash, name, value);
643        }
644
645      }
646
647      @Override
648      public Base setProperty(String name, Base value) throws FHIRException {
649        if (name.equals("outcome")) {
650          this.outcome = castToCodeableConcept(value); // CodeableConcept
651        } else if (name.equals("probability[x]")) {
652          this.probability = castToType(value); // Type
653        } else if (name.equals("qualitativeRisk")) {
654          this.qualitativeRisk = castToCodeableConcept(value); // CodeableConcept
655        } else if (name.equals("relativeRisk")) {
656          this.relativeRisk = castToDecimal(value); // DecimalType
657        } else if (name.equals("when[x]")) {
658          this.when = castToType(value); // Type
659        } else if (name.equals("rationale")) {
660          this.rationale = castToString(value); // StringType
661        } else
662          return super.setProperty(name, value);
663        return value;
664      }
665
666      @Override
667      public Base makeProperty(int hash, String name) throws FHIRException {
668        switch (hash) {
669        case -1106507950:  return getOutcome(); 
670        case 1430185003:  return getProbability(); 
671        case -1290561483:  return getProbability(); 
672        case 123308730:  return getQualitativeRisk(); 
673        case -70741061:  return getRelativeRiskElement();
674        case 1312831238:  return getWhen(); 
675        case 3648314:  return getWhen(); 
676        case 345689335:  return getRationaleElement();
677        default: return super.makeProperty(hash, name);
678        }
679
680      }
681
682      @Override
683      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
684        switch (hash) {
685        case -1106507950: /*outcome*/ return new String[] {"CodeableConcept"};
686        case -1290561483: /*probability*/ return new String[] {"decimal", "Range"};
687        case 123308730: /*qualitativeRisk*/ return new String[] {"CodeableConcept"};
688        case -70741061: /*relativeRisk*/ return new String[] {"decimal"};
689        case 3648314: /*when*/ return new String[] {"Period", "Range"};
690        case 345689335: /*rationale*/ return new String[] {"string"};
691        default: return super.getTypesForProperty(hash, name);
692        }
693
694      }
695
696      @Override
697      public Base addChild(String name) throws FHIRException {
698        if (name.equals("outcome")) {
699          this.outcome = new CodeableConcept();
700          return this.outcome;
701        }
702        else if (name.equals("probabilityDecimal")) {
703          this.probability = new DecimalType();
704          return this.probability;
705        }
706        else if (name.equals("probabilityRange")) {
707          this.probability = new Range();
708          return this.probability;
709        }
710        else if (name.equals("qualitativeRisk")) {
711          this.qualitativeRisk = new CodeableConcept();
712          return this.qualitativeRisk;
713        }
714        else if (name.equals("relativeRisk")) {
715          throw new FHIRException("Cannot call addChild on a primitive type RiskAssessment.relativeRisk");
716        }
717        else if (name.equals("whenPeriod")) {
718          this.when = new Period();
719          return this.when;
720        }
721        else if (name.equals("whenRange")) {
722          this.when = new Range();
723          return this.when;
724        }
725        else if (name.equals("rationale")) {
726          throw new FHIRException("Cannot call addChild on a primitive type RiskAssessment.rationale");
727        }
728        else
729          return super.addChild(name);
730      }
731
732      public RiskAssessmentPredictionComponent copy() {
733        RiskAssessmentPredictionComponent dst = new RiskAssessmentPredictionComponent();
734        copyValues(dst);
735        dst.outcome = outcome == null ? null : outcome.copy();
736        dst.probability = probability == null ? null : probability.copy();
737        dst.qualitativeRisk = qualitativeRisk == null ? null : qualitativeRisk.copy();
738        dst.relativeRisk = relativeRisk == null ? null : relativeRisk.copy();
739        dst.when = when == null ? null : when.copy();
740        dst.rationale = rationale == null ? null : rationale.copy();
741        return dst;
742      }
743
744      @Override
745      public boolean equalsDeep(Base other_) {
746        if (!super.equalsDeep(other_))
747          return false;
748        if (!(other_ instanceof RiskAssessmentPredictionComponent))
749          return false;
750        RiskAssessmentPredictionComponent o = (RiskAssessmentPredictionComponent) other_;
751        return compareDeep(outcome, o.outcome, true) && compareDeep(probability, o.probability, true) && compareDeep(qualitativeRisk, o.qualitativeRisk, true)
752           && compareDeep(relativeRisk, o.relativeRisk, true) && compareDeep(when, o.when, true) && compareDeep(rationale, o.rationale, true)
753          ;
754      }
755
756      @Override
757      public boolean equalsShallow(Base other_) {
758        if (!super.equalsShallow(other_))
759          return false;
760        if (!(other_ instanceof RiskAssessmentPredictionComponent))
761          return false;
762        RiskAssessmentPredictionComponent o = (RiskAssessmentPredictionComponent) other_;
763        return compareValues(relativeRisk, o.relativeRisk, true) && compareValues(rationale, o.rationale, true)
764          ;
765      }
766
767      public boolean isEmpty() {
768        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(outcome, probability, qualitativeRisk
769          , relativeRisk, when, rationale);
770      }
771
772  public String fhirType() {
773    return "RiskAssessment.prediction";
774
775  }
776
777  }
778
779    /**
780     * Business identifier assigned to the risk assessment.
781     */
782    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
783    @Description(shortDefinition="Unique identifier for the assessment", formalDefinition="Business identifier assigned to the risk assessment." )
784    protected Identifier identifier;
785
786    /**
787     * A reference to the request that is fulfilled by this risk assessment.
788     */
789    @Child(name = "basedOn", type = {Reference.class}, order=1, min=0, max=1, modifier=false, summary=false)
790    @Description(shortDefinition="Request fulfilled by this assessment", formalDefinition="A reference to the request that is fulfilled by this risk assessment." )
791    protected Reference basedOn;
792
793    /**
794     * The actual object that is the target of the reference (A reference to the request that is fulfilled by this risk assessment.)
795     */
796    protected Resource basedOnTarget;
797
798    /**
799     * A reference to a resource that this risk assessment is part of, such as a Procedure.
800     */
801    @Child(name = "parent", type = {Reference.class}, order=2, min=0, max=1, modifier=false, summary=false)
802    @Description(shortDefinition="Part of this occurrence", formalDefinition="A reference to a resource that this risk assessment is part of, such as a Procedure." )
803    protected Reference parent;
804
805    /**
806     * The actual object that is the target of the reference (A reference to a resource that this risk assessment is part of, such as a Procedure.)
807     */
808    protected Resource parentTarget;
809
810    /**
811     * The status of the RiskAssessment, using the same statuses as an Observation.
812     */
813    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
814    @Description(shortDefinition="registered | preliminary | final | amended +", formalDefinition="The status of the RiskAssessment, using the same statuses as an Observation." )
815    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/observation-status")
816    protected Enumeration<RiskAssessmentStatus> status;
817
818    /**
819     * The algorithm, process or mechanism used to evaluate the risk.
820     */
821    @Child(name = "method", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
822    @Description(shortDefinition="Evaluation mechanism", formalDefinition="The algorithm, process or mechanism used to evaluate the risk." )
823    protected CodeableConcept method;
824
825    /**
826     * The type of the risk assessment performed.
827     */
828    @Child(name = "code", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=true)
829    @Description(shortDefinition="Type of assessment", formalDefinition="The type of the risk assessment performed." )
830    protected CodeableConcept code;
831
832    /**
833     * The patient or group the risk assessment applies to.
834     */
835    @Child(name = "subject", type = {Patient.class, Group.class}, order=6, min=0, max=1, modifier=false, summary=true)
836    @Description(shortDefinition="Who/what does assessment apply to?", formalDefinition="The patient or group the risk assessment applies to." )
837    protected Reference subject;
838
839    /**
840     * The actual object that is the target of the reference (The patient or group the risk assessment applies to.)
841     */
842    protected Resource subjectTarget;
843
844    /**
845     * The encounter where the assessment was performed.
846     */
847    @Child(name = "context", type = {Encounter.class, EpisodeOfCare.class}, order=7, min=0, max=1, modifier=false, summary=true)
848    @Description(shortDefinition="Where was assessment performed?", formalDefinition="The encounter where the assessment was performed." )
849    protected Reference context;
850
851    /**
852     * The actual object that is the target of the reference (The encounter where the assessment was performed.)
853     */
854    protected Resource contextTarget;
855
856    /**
857     * The date (and possibly time) the risk assessment was performed.
858     */
859    @Child(name = "occurrence", type = {DateTimeType.class, Period.class}, order=8, min=0, max=1, modifier=false, summary=true)
860    @Description(shortDefinition="When was assessment made?", formalDefinition="The date (and possibly time) the risk assessment was performed." )
861    protected Type occurrence;
862
863    /**
864     * For assessments or prognosis specific to a particular condition, indicates the condition being assessed.
865     */
866    @Child(name = "condition", type = {Condition.class}, order=9, min=0, max=1, modifier=false, summary=true)
867    @Description(shortDefinition="Condition assessed", formalDefinition="For assessments or prognosis specific to a particular condition, indicates the condition being assessed." )
868    protected Reference condition;
869
870    /**
871     * The actual object that is the target of the reference (For assessments or prognosis specific to a particular condition, indicates the condition being assessed.)
872     */
873    protected Condition conditionTarget;
874
875    /**
876     * The provider or software application that performed the assessment.
877     */
878    @Child(name = "performer", type = {Practitioner.class, Device.class}, order=10, min=0, max=1, modifier=false, summary=true)
879    @Description(shortDefinition="Who did assessment?", formalDefinition="The provider or software application that performed the assessment." )
880    protected Reference performer;
881
882    /**
883     * The actual object that is the target of the reference (The provider or software application that performed the assessment.)
884     */
885    protected Resource performerTarget;
886
887    /**
888     * The reason the risk assessment was performed.
889     */
890    @Child(name = "reason", type = {CodeableConcept.class, Reference.class}, order=11, min=0, max=1, modifier=false, summary=false)
891    @Description(shortDefinition="Why the assessment was necessary?", formalDefinition="The reason the risk assessment was performed." )
892    protected Type reason;
893
894    /**
895     * Indicates the source data considered as part of the assessment (FamilyHistory, Observations, Procedures, Conditions, etc.).
896     */
897    @Child(name = "basis", type = {Reference.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
898    @Description(shortDefinition="Information used in assessment", formalDefinition="Indicates the source data considered as part of the assessment (FamilyHistory, Observations, Procedures, Conditions, etc.)." )
899    protected List<Reference> basis;
900    /**
901     * The actual objects that are the target of the reference (Indicates the source data considered as part of the assessment (FamilyHistory, Observations, Procedures, Conditions, etc.).)
902     */
903    protected List<Resource> basisTarget;
904
905
906    /**
907     * Describes the expected outcome for the subject.
908     */
909    @Child(name = "prediction", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
910    @Description(shortDefinition="Outcome predicted", formalDefinition="Describes the expected outcome for the subject." )
911    protected List<RiskAssessmentPredictionComponent> prediction;
912
913    /**
914     * A description of the steps that might be taken to reduce the identified risk(s).
915     */
916    @Child(name = "mitigation", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=false)
917    @Description(shortDefinition="How to reduce risk", formalDefinition="A description of the steps that might be taken to reduce the identified risk(s)." )
918    protected StringType mitigation;
919
920    /**
921     * Additional comments about the risk assessment.
922     */
923    @Child(name = "comment", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=false)
924    @Description(shortDefinition="Comments on the risk assessment", formalDefinition="Additional comments about the risk assessment." )
925    protected StringType comment;
926
927    private static final long serialVersionUID = -715866284L;
928
929  /**
930   * Constructor
931   */
932    public RiskAssessment() {
933      super();
934    }
935
936  /**
937   * Constructor
938   */
939    public RiskAssessment(Enumeration<RiskAssessmentStatus> status) {
940      super();
941      this.status = status;
942    }
943
944    /**
945     * @return {@link #identifier} (Business identifier assigned to the risk assessment.)
946     */
947    public Identifier getIdentifier() { 
948      if (this.identifier == null)
949        if (Configuration.errorOnAutoCreate())
950          throw new Error("Attempt to auto-create RiskAssessment.identifier");
951        else if (Configuration.doAutoCreate())
952          this.identifier = new Identifier(); // cc
953      return this.identifier;
954    }
955
956    public boolean hasIdentifier() { 
957      return this.identifier != null && !this.identifier.isEmpty();
958    }
959
960    /**
961     * @param value {@link #identifier} (Business identifier assigned to the risk assessment.)
962     */
963    public RiskAssessment setIdentifier(Identifier value)  { 
964      this.identifier = value;
965      return this;
966    }
967
968    /**
969     * @return {@link #basedOn} (A reference to the request that is fulfilled by this risk assessment.)
970     */
971    public Reference getBasedOn() { 
972      if (this.basedOn == null)
973        if (Configuration.errorOnAutoCreate())
974          throw new Error("Attempt to auto-create RiskAssessment.basedOn");
975        else if (Configuration.doAutoCreate())
976          this.basedOn = new Reference(); // cc
977      return this.basedOn;
978    }
979
980    public boolean hasBasedOn() { 
981      return this.basedOn != null && !this.basedOn.isEmpty();
982    }
983
984    /**
985     * @param value {@link #basedOn} (A reference to the request that is fulfilled by this risk assessment.)
986     */
987    public RiskAssessment setBasedOn(Reference value)  { 
988      this.basedOn = value;
989      return this;
990    }
991
992    /**
993     * @return {@link #basedOn} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A reference to the request that is fulfilled by this risk assessment.)
994     */
995    public Resource getBasedOnTarget() { 
996      return this.basedOnTarget;
997    }
998
999    /**
1000     * @param value {@link #basedOn} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A reference to the request that is fulfilled by this risk assessment.)
1001     */
1002    public RiskAssessment setBasedOnTarget(Resource value) { 
1003      this.basedOnTarget = value;
1004      return this;
1005    }
1006
1007    /**
1008     * @return {@link #parent} (A reference to a resource that this risk assessment is part of, such as a Procedure.)
1009     */
1010    public Reference getParent() { 
1011      if (this.parent == null)
1012        if (Configuration.errorOnAutoCreate())
1013          throw new Error("Attempt to auto-create RiskAssessment.parent");
1014        else if (Configuration.doAutoCreate())
1015          this.parent = new Reference(); // cc
1016      return this.parent;
1017    }
1018
1019    public boolean hasParent() { 
1020      return this.parent != null && !this.parent.isEmpty();
1021    }
1022
1023    /**
1024     * @param value {@link #parent} (A reference to a resource that this risk assessment is part of, such as a Procedure.)
1025     */
1026    public RiskAssessment setParent(Reference value)  { 
1027      this.parent = value;
1028      return this;
1029    }
1030
1031    /**
1032     * @return {@link #parent} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A reference to a resource that this risk assessment is part of, such as a Procedure.)
1033     */
1034    public Resource getParentTarget() { 
1035      return this.parentTarget;
1036    }
1037
1038    /**
1039     * @param value {@link #parent} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A reference to a resource that this risk assessment is part of, such as a Procedure.)
1040     */
1041    public RiskAssessment setParentTarget(Resource value) { 
1042      this.parentTarget = value;
1043      return this;
1044    }
1045
1046    /**
1047     * @return {@link #status} (The status of the RiskAssessment, using the same statuses as an Observation.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1048     */
1049    public Enumeration<RiskAssessmentStatus> getStatusElement() { 
1050      if (this.status == null)
1051        if (Configuration.errorOnAutoCreate())
1052          throw new Error("Attempt to auto-create RiskAssessment.status");
1053        else if (Configuration.doAutoCreate())
1054          this.status = new Enumeration<RiskAssessmentStatus>(new RiskAssessmentStatusEnumFactory()); // bb
1055      return this.status;
1056    }
1057
1058    public boolean hasStatusElement() { 
1059      return this.status != null && !this.status.isEmpty();
1060    }
1061
1062    public boolean hasStatus() { 
1063      return this.status != null && !this.status.isEmpty();
1064    }
1065
1066    /**
1067     * @param value {@link #status} (The status of the RiskAssessment, using the same statuses as an Observation.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1068     */
1069    public RiskAssessment setStatusElement(Enumeration<RiskAssessmentStatus> value) { 
1070      this.status = value;
1071      return this;
1072    }
1073
1074    /**
1075     * @return The status of the RiskAssessment, using the same statuses as an Observation.
1076     */
1077    public RiskAssessmentStatus getStatus() { 
1078      return this.status == null ? null : this.status.getValue();
1079    }
1080
1081    /**
1082     * @param value The status of the RiskAssessment, using the same statuses as an Observation.
1083     */
1084    public RiskAssessment setStatus(RiskAssessmentStatus value) { 
1085        if (this.status == null)
1086          this.status = new Enumeration<RiskAssessmentStatus>(new RiskAssessmentStatusEnumFactory());
1087        this.status.setValue(value);
1088      return this;
1089    }
1090
1091    /**
1092     * @return {@link #method} (The algorithm, process or mechanism used to evaluate the risk.)
1093     */
1094    public CodeableConcept getMethod() { 
1095      if (this.method == null)
1096        if (Configuration.errorOnAutoCreate())
1097          throw new Error("Attempt to auto-create RiskAssessment.method");
1098        else if (Configuration.doAutoCreate())
1099          this.method = new CodeableConcept(); // cc
1100      return this.method;
1101    }
1102
1103    public boolean hasMethod() { 
1104      return this.method != null && !this.method.isEmpty();
1105    }
1106
1107    /**
1108     * @param value {@link #method} (The algorithm, process or mechanism used to evaluate the risk.)
1109     */
1110    public RiskAssessment setMethod(CodeableConcept value)  { 
1111      this.method = value;
1112      return this;
1113    }
1114
1115    /**
1116     * @return {@link #code} (The type of the risk assessment performed.)
1117     */
1118    public CodeableConcept getCode() { 
1119      if (this.code == null)
1120        if (Configuration.errorOnAutoCreate())
1121          throw new Error("Attempt to auto-create RiskAssessment.code");
1122        else if (Configuration.doAutoCreate())
1123          this.code = new CodeableConcept(); // cc
1124      return this.code;
1125    }
1126
1127    public boolean hasCode() { 
1128      return this.code != null && !this.code.isEmpty();
1129    }
1130
1131    /**
1132     * @param value {@link #code} (The type of the risk assessment performed.)
1133     */
1134    public RiskAssessment setCode(CodeableConcept value)  { 
1135      this.code = value;
1136      return this;
1137    }
1138
1139    /**
1140     * @return {@link #subject} (The patient or group the risk assessment applies to.)
1141     */
1142    public Reference getSubject() { 
1143      if (this.subject == null)
1144        if (Configuration.errorOnAutoCreate())
1145          throw new Error("Attempt to auto-create RiskAssessment.subject");
1146        else if (Configuration.doAutoCreate())
1147          this.subject = new Reference(); // cc
1148      return this.subject;
1149    }
1150
1151    public boolean hasSubject() { 
1152      return this.subject != null && !this.subject.isEmpty();
1153    }
1154
1155    /**
1156     * @param value {@link #subject} (The patient or group the risk assessment applies to.)
1157     */
1158    public RiskAssessment setSubject(Reference value)  { 
1159      this.subject = value;
1160      return this;
1161    }
1162
1163    /**
1164     * @return {@link #subject} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The patient or group the risk assessment applies to.)
1165     */
1166    public Resource getSubjectTarget() { 
1167      return this.subjectTarget;
1168    }
1169
1170    /**
1171     * @param value {@link #subject} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The patient or group the risk assessment applies to.)
1172     */
1173    public RiskAssessment setSubjectTarget(Resource value) { 
1174      this.subjectTarget = value;
1175      return this;
1176    }
1177
1178    /**
1179     * @return {@link #context} (The encounter where the assessment was performed.)
1180     */
1181    public Reference getContext() { 
1182      if (this.context == null)
1183        if (Configuration.errorOnAutoCreate())
1184          throw new Error("Attempt to auto-create RiskAssessment.context");
1185        else if (Configuration.doAutoCreate())
1186          this.context = new Reference(); // cc
1187      return this.context;
1188    }
1189
1190    public boolean hasContext() { 
1191      return this.context != null && !this.context.isEmpty();
1192    }
1193
1194    /**
1195     * @param value {@link #context} (The encounter where the assessment was performed.)
1196     */
1197    public RiskAssessment setContext(Reference value)  { 
1198      this.context = value;
1199      return this;
1200    }
1201
1202    /**
1203     * @return {@link #context} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The encounter where the assessment was performed.)
1204     */
1205    public Resource getContextTarget() { 
1206      return this.contextTarget;
1207    }
1208
1209    /**
1210     * @param value {@link #context} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The encounter where the assessment was performed.)
1211     */
1212    public RiskAssessment setContextTarget(Resource value) { 
1213      this.contextTarget = value;
1214      return this;
1215    }
1216
1217    /**
1218     * @return {@link #occurrence} (The date (and possibly time) the risk assessment was performed.)
1219     */
1220    public Type getOccurrence() { 
1221      return this.occurrence;
1222    }
1223
1224    /**
1225     * @return {@link #occurrence} (The date (and possibly time) the risk assessment was performed.)
1226     */
1227    public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
1228      if (this.occurrence == null)
1229        return null;
1230      if (!(this.occurrence instanceof DateTimeType))
1231        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1232      return (DateTimeType) this.occurrence;
1233    }
1234
1235    public boolean hasOccurrenceDateTimeType() { 
1236      return this != null && this.occurrence instanceof DateTimeType;
1237    }
1238
1239    /**
1240     * @return {@link #occurrence} (The date (and possibly time) the risk assessment was performed.)
1241     */
1242    public Period getOccurrencePeriod() throws FHIRException { 
1243      if (this.occurrence == null)
1244        return null;
1245      if (!(this.occurrence instanceof Period))
1246        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1247      return (Period) this.occurrence;
1248    }
1249
1250    public boolean hasOccurrencePeriod() { 
1251      return this != null && this.occurrence instanceof Period;
1252    }
1253
1254    public boolean hasOccurrence() { 
1255      return this.occurrence != null && !this.occurrence.isEmpty();
1256    }
1257
1258    /**
1259     * @param value {@link #occurrence} (The date (and possibly time) the risk assessment was performed.)
1260     */
1261    public RiskAssessment setOccurrence(Type value) throws FHIRFormatError { 
1262      if (value != null && !(value instanceof DateTimeType || value instanceof Period))
1263        throw new FHIRFormatError("Not the right type for RiskAssessment.occurrence[x]: "+value.fhirType());
1264      this.occurrence = value;
1265      return this;
1266    }
1267
1268    /**
1269     * @return {@link #condition} (For assessments or prognosis specific to a particular condition, indicates the condition being assessed.)
1270     */
1271    public Reference getCondition() { 
1272      if (this.condition == null)
1273        if (Configuration.errorOnAutoCreate())
1274          throw new Error("Attempt to auto-create RiskAssessment.condition");
1275        else if (Configuration.doAutoCreate())
1276          this.condition = new Reference(); // cc
1277      return this.condition;
1278    }
1279
1280    public boolean hasCondition() { 
1281      return this.condition != null && !this.condition.isEmpty();
1282    }
1283
1284    /**
1285     * @param value {@link #condition} (For assessments or prognosis specific to a particular condition, indicates the condition being assessed.)
1286     */
1287    public RiskAssessment setCondition(Reference value)  { 
1288      this.condition = value;
1289      return this;
1290    }
1291
1292    /**
1293     * @return {@link #condition} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (For assessments or prognosis specific to a particular condition, indicates the condition being assessed.)
1294     */
1295    public Condition getConditionTarget() { 
1296      if (this.conditionTarget == null)
1297        if (Configuration.errorOnAutoCreate())
1298          throw new Error("Attempt to auto-create RiskAssessment.condition");
1299        else if (Configuration.doAutoCreate())
1300          this.conditionTarget = new Condition(); // aa
1301      return this.conditionTarget;
1302    }
1303
1304    /**
1305     * @param value {@link #condition} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (For assessments or prognosis specific to a particular condition, indicates the condition being assessed.)
1306     */
1307    public RiskAssessment setConditionTarget(Condition value) { 
1308      this.conditionTarget = value;
1309      return this;
1310    }
1311
1312    /**
1313     * @return {@link #performer} (The provider or software application that performed the assessment.)
1314     */
1315    public Reference getPerformer() { 
1316      if (this.performer == null)
1317        if (Configuration.errorOnAutoCreate())
1318          throw new Error("Attempt to auto-create RiskAssessment.performer");
1319        else if (Configuration.doAutoCreate())
1320          this.performer = new Reference(); // cc
1321      return this.performer;
1322    }
1323
1324    public boolean hasPerformer() { 
1325      return this.performer != null && !this.performer.isEmpty();
1326    }
1327
1328    /**
1329     * @param value {@link #performer} (The provider or software application that performed the assessment.)
1330     */
1331    public RiskAssessment setPerformer(Reference value)  { 
1332      this.performer = value;
1333      return this;
1334    }
1335
1336    /**
1337     * @return {@link #performer} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The provider or software application that performed the assessment.)
1338     */
1339    public Resource getPerformerTarget() { 
1340      return this.performerTarget;
1341    }
1342
1343    /**
1344     * @param value {@link #performer} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The provider or software application that performed the assessment.)
1345     */
1346    public RiskAssessment setPerformerTarget(Resource value) { 
1347      this.performerTarget = value;
1348      return this;
1349    }
1350
1351    /**
1352     * @return {@link #reason} (The reason the risk assessment was performed.)
1353     */
1354    public Type getReason() { 
1355      return this.reason;
1356    }
1357
1358    /**
1359     * @return {@link #reason} (The reason the risk assessment was performed.)
1360     */
1361    public CodeableConcept getReasonCodeableConcept() throws FHIRException { 
1362      if (this.reason == null)
1363        return null;
1364      if (!(this.reason instanceof CodeableConcept))
1365        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.reason.getClass().getName()+" was encountered");
1366      return (CodeableConcept) this.reason;
1367    }
1368
1369    public boolean hasReasonCodeableConcept() { 
1370      return this != null && this.reason instanceof CodeableConcept;
1371    }
1372
1373    /**
1374     * @return {@link #reason} (The reason the risk assessment was performed.)
1375     */
1376    public Reference getReasonReference() throws FHIRException { 
1377      if (this.reason == null)
1378        return null;
1379      if (!(this.reason instanceof Reference))
1380        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.reason.getClass().getName()+" was encountered");
1381      return (Reference) this.reason;
1382    }
1383
1384    public boolean hasReasonReference() { 
1385      return this != null && this.reason instanceof Reference;
1386    }
1387
1388    public boolean hasReason() { 
1389      return this.reason != null && !this.reason.isEmpty();
1390    }
1391
1392    /**
1393     * @param value {@link #reason} (The reason the risk assessment was performed.)
1394     */
1395    public RiskAssessment setReason(Type value) throws FHIRFormatError { 
1396      if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
1397        throw new FHIRFormatError("Not the right type for RiskAssessment.reason[x]: "+value.fhirType());
1398      this.reason = value;
1399      return this;
1400    }
1401
1402    /**
1403     * @return {@link #basis} (Indicates the source data considered as part of the assessment (FamilyHistory, Observations, Procedures, Conditions, etc.).)
1404     */
1405    public List<Reference> getBasis() { 
1406      if (this.basis == null)
1407        this.basis = new ArrayList<Reference>();
1408      return this.basis;
1409    }
1410
1411    /**
1412     * @return Returns a reference to <code>this</code> for easy method chaining
1413     */
1414    public RiskAssessment setBasis(List<Reference> theBasis) { 
1415      this.basis = theBasis;
1416      return this;
1417    }
1418
1419    public boolean hasBasis() { 
1420      if (this.basis == null)
1421        return false;
1422      for (Reference item : this.basis)
1423        if (!item.isEmpty())
1424          return true;
1425      return false;
1426    }
1427
1428    public Reference addBasis() { //3
1429      Reference t = new Reference();
1430      if (this.basis == null)
1431        this.basis = new ArrayList<Reference>();
1432      this.basis.add(t);
1433      return t;
1434    }
1435
1436    public RiskAssessment addBasis(Reference t) { //3
1437      if (t == null)
1438        return this;
1439      if (this.basis == null)
1440        this.basis = new ArrayList<Reference>();
1441      this.basis.add(t);
1442      return this;
1443    }
1444
1445    /**
1446     * @return The first repetition of repeating field {@link #basis}, creating it if it does not already exist
1447     */
1448    public Reference getBasisFirstRep() { 
1449      if (getBasis().isEmpty()) {
1450        addBasis();
1451      }
1452      return getBasis().get(0);
1453    }
1454
1455    /**
1456     * @deprecated Use Reference#setResource(IBaseResource) instead
1457     */
1458    @Deprecated
1459    public List<Resource> getBasisTarget() { 
1460      if (this.basisTarget == null)
1461        this.basisTarget = new ArrayList<Resource>();
1462      return this.basisTarget;
1463    }
1464
1465    /**
1466     * @return {@link #prediction} (Describes the expected outcome for the subject.)
1467     */
1468    public List<RiskAssessmentPredictionComponent> getPrediction() { 
1469      if (this.prediction == null)
1470        this.prediction = new ArrayList<RiskAssessmentPredictionComponent>();
1471      return this.prediction;
1472    }
1473
1474    /**
1475     * @return Returns a reference to <code>this</code> for easy method chaining
1476     */
1477    public RiskAssessment setPrediction(List<RiskAssessmentPredictionComponent> thePrediction) { 
1478      this.prediction = thePrediction;
1479      return this;
1480    }
1481
1482    public boolean hasPrediction() { 
1483      if (this.prediction == null)
1484        return false;
1485      for (RiskAssessmentPredictionComponent item : this.prediction)
1486        if (!item.isEmpty())
1487          return true;
1488      return false;
1489    }
1490
1491    public RiskAssessmentPredictionComponent addPrediction() { //3
1492      RiskAssessmentPredictionComponent t = new RiskAssessmentPredictionComponent();
1493      if (this.prediction == null)
1494        this.prediction = new ArrayList<RiskAssessmentPredictionComponent>();
1495      this.prediction.add(t);
1496      return t;
1497    }
1498
1499    public RiskAssessment addPrediction(RiskAssessmentPredictionComponent t) { //3
1500      if (t == null)
1501        return this;
1502      if (this.prediction == null)
1503        this.prediction = new ArrayList<RiskAssessmentPredictionComponent>();
1504      this.prediction.add(t);
1505      return this;
1506    }
1507
1508    /**
1509     * @return The first repetition of repeating field {@link #prediction}, creating it if it does not already exist
1510     */
1511    public RiskAssessmentPredictionComponent getPredictionFirstRep() { 
1512      if (getPrediction().isEmpty()) {
1513        addPrediction();
1514      }
1515      return getPrediction().get(0);
1516    }
1517
1518    /**
1519     * @return {@link #mitigation} (A description of the steps that might be taken to reduce the identified risk(s).). This is the underlying object with id, value and extensions. The accessor "getMitigation" gives direct access to the value
1520     */
1521    public StringType getMitigationElement() { 
1522      if (this.mitigation == null)
1523        if (Configuration.errorOnAutoCreate())
1524          throw new Error("Attempt to auto-create RiskAssessment.mitigation");
1525        else if (Configuration.doAutoCreate())
1526          this.mitigation = new StringType(); // bb
1527      return this.mitigation;
1528    }
1529
1530    public boolean hasMitigationElement() { 
1531      return this.mitigation != null && !this.mitigation.isEmpty();
1532    }
1533
1534    public boolean hasMitigation() { 
1535      return this.mitigation != null && !this.mitigation.isEmpty();
1536    }
1537
1538    /**
1539     * @param value {@link #mitigation} (A description of the steps that might be taken to reduce the identified risk(s).). This is the underlying object with id, value and extensions. The accessor "getMitigation" gives direct access to the value
1540     */
1541    public RiskAssessment setMitigationElement(StringType value) { 
1542      this.mitigation = value;
1543      return this;
1544    }
1545
1546    /**
1547     * @return A description of the steps that might be taken to reduce the identified risk(s).
1548     */
1549    public String getMitigation() { 
1550      return this.mitigation == null ? null : this.mitigation.getValue();
1551    }
1552
1553    /**
1554     * @param value A description of the steps that might be taken to reduce the identified risk(s).
1555     */
1556    public RiskAssessment setMitigation(String value) { 
1557      if (Utilities.noString(value))
1558        this.mitigation = null;
1559      else {
1560        if (this.mitigation == null)
1561          this.mitigation = new StringType();
1562        this.mitigation.setValue(value);
1563      }
1564      return this;
1565    }
1566
1567    /**
1568     * @return {@link #comment} (Additional comments about the risk assessment.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
1569     */
1570    public StringType getCommentElement() { 
1571      if (this.comment == null)
1572        if (Configuration.errorOnAutoCreate())
1573          throw new Error("Attempt to auto-create RiskAssessment.comment");
1574        else if (Configuration.doAutoCreate())
1575          this.comment = new StringType(); // bb
1576      return this.comment;
1577    }
1578
1579    public boolean hasCommentElement() { 
1580      return this.comment != null && !this.comment.isEmpty();
1581    }
1582
1583    public boolean hasComment() { 
1584      return this.comment != null && !this.comment.isEmpty();
1585    }
1586
1587    /**
1588     * @param value {@link #comment} (Additional comments about the risk assessment.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
1589     */
1590    public RiskAssessment setCommentElement(StringType value) { 
1591      this.comment = value;
1592      return this;
1593    }
1594
1595    /**
1596     * @return Additional comments about the risk assessment.
1597     */
1598    public String getComment() { 
1599      return this.comment == null ? null : this.comment.getValue();
1600    }
1601
1602    /**
1603     * @param value Additional comments about the risk assessment.
1604     */
1605    public RiskAssessment setComment(String value) { 
1606      if (Utilities.noString(value))
1607        this.comment = null;
1608      else {
1609        if (this.comment == null)
1610          this.comment = new StringType();
1611        this.comment.setValue(value);
1612      }
1613      return this;
1614    }
1615
1616      protected void listChildren(List<Property> children) {
1617        super.listChildren(children);
1618        children.add(new Property("identifier", "Identifier", "Business identifier assigned to the risk assessment.", 0, 1, identifier));
1619        children.add(new Property("basedOn", "Reference(Any)", "A reference to the request that is fulfilled by this risk assessment.", 0, 1, basedOn));
1620        children.add(new Property("parent", "Reference(Any)", "A reference to a resource that this risk assessment is part of, such as a Procedure.", 0, 1, parent));
1621        children.add(new Property("status", "code", "The status of the RiskAssessment, using the same statuses as an Observation.", 0, 1, status));
1622        children.add(new Property("method", "CodeableConcept", "The algorithm, process or mechanism used to evaluate the risk.", 0, 1, method));
1623        children.add(new Property("code", "CodeableConcept", "The type of the risk assessment performed.", 0, 1, code));
1624        children.add(new Property("subject", "Reference(Patient|Group)", "The patient or group the risk assessment applies to.", 0, 1, subject));
1625        children.add(new Property("context", "Reference(Encounter|EpisodeOfCare)", "The encounter where the assessment was performed.", 0, 1, context));
1626        children.add(new Property("occurrence[x]", "dateTime|Period", "The date (and possibly time) the risk assessment was performed.", 0, 1, occurrence));
1627        children.add(new Property("condition", "Reference(Condition)", "For assessments or prognosis specific to a particular condition, indicates the condition being assessed.", 0, 1, condition));
1628        children.add(new Property("performer", "Reference(Practitioner|Device)", "The provider or software application that performed the assessment.", 0, 1, performer));
1629        children.add(new Property("reason[x]", "CodeableConcept|Reference(Any)", "The reason the risk assessment was performed.", 0, 1, reason));
1630        children.add(new Property("basis", "Reference(Any)", "Indicates the source data considered as part of the assessment (FamilyHistory, Observations, Procedures, Conditions, etc.).", 0, java.lang.Integer.MAX_VALUE, basis));
1631        children.add(new Property("prediction", "", "Describes the expected outcome for the subject.", 0, java.lang.Integer.MAX_VALUE, prediction));
1632        children.add(new Property("mitigation", "string", "A description of the steps that might be taken to reduce the identified risk(s).", 0, 1, mitigation));
1633        children.add(new Property("comment", "string", "Additional comments about the risk assessment.", 0, 1, comment));
1634      }
1635
1636      @Override
1637      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1638        switch (_hash) {
1639        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifier assigned to the risk assessment.", 0, 1, identifier);
1640        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(Any)", "A reference to the request that is fulfilled by this risk assessment.", 0, 1, basedOn);
1641        case -995424086: /*parent*/  return new Property("parent", "Reference(Any)", "A reference to a resource that this risk assessment is part of, such as a Procedure.", 0, 1, parent);
1642        case -892481550: /*status*/  return new Property("status", "code", "The status of the RiskAssessment, using the same statuses as an Observation.", 0, 1, status);
1643        case -1077554975: /*method*/  return new Property("method", "CodeableConcept", "The algorithm, process or mechanism used to evaluate the risk.", 0, 1, method);
1644        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The type of the risk assessment performed.", 0, 1, code);
1645        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The patient or group the risk assessment applies to.", 0, 1, subject);
1646        case 951530927: /*context*/  return new Property("context", "Reference(Encounter|EpisodeOfCare)", "The encounter where the assessment was performed.", 0, 1, context);
1647        case -2022646513: /*occurrence[x]*/  return new Property("occurrence[x]", "dateTime|Period", "The date (and possibly time) the risk assessment was performed.", 0, 1, occurrence);
1648        case 1687874001: /*occurrence*/  return new Property("occurrence[x]", "dateTime|Period", "The date (and possibly time) the risk assessment was performed.", 0, 1, occurrence);
1649        case -298443636: /*occurrenceDateTime*/  return new Property("occurrence[x]", "dateTime|Period", "The date (and possibly time) the risk assessment was performed.", 0, 1, occurrence);
1650        case 1397156594: /*occurrencePeriod*/  return new Property("occurrence[x]", "dateTime|Period", "The date (and possibly time) the risk assessment was performed.", 0, 1, occurrence);
1651        case -861311717: /*condition*/  return new Property("condition", "Reference(Condition)", "For assessments or prognosis specific to a particular condition, indicates the condition being assessed.", 0, 1, condition);
1652        case 481140686: /*performer*/  return new Property("performer", "Reference(Practitioner|Device)", "The provider or software application that performed the assessment.", 0, 1, performer);
1653        case -669418564: /*reason[x]*/  return new Property("reason[x]", "CodeableConcept|Reference(Any)", "The reason the risk assessment was performed.", 0, 1, reason);
1654        case -934964668: /*reason*/  return new Property("reason[x]", "CodeableConcept|Reference(Any)", "The reason the risk assessment was performed.", 0, 1, reason);
1655        case -610155331: /*reasonCodeableConcept*/  return new Property("reason[x]", "CodeableConcept|Reference(Any)", "The reason the risk assessment was performed.", 0, 1, reason);
1656        case -1146218137: /*reasonReference*/  return new Property("reason[x]", "CodeableConcept|Reference(Any)", "The reason the risk assessment was performed.", 0, 1, reason);
1657        case 93508670: /*basis*/  return new Property("basis", "Reference(Any)", "Indicates the source data considered as part of the assessment (FamilyHistory, Observations, Procedures, Conditions, etc.).", 0, java.lang.Integer.MAX_VALUE, basis);
1658        case 1161234575: /*prediction*/  return new Property("prediction", "", "Describes the expected outcome for the subject.", 0, java.lang.Integer.MAX_VALUE, prediction);
1659        case 1293793087: /*mitigation*/  return new Property("mitigation", "string", "A description of the steps that might be taken to reduce the identified risk(s).", 0, 1, mitigation);
1660        case 950398559: /*comment*/  return new Property("comment", "string", "Additional comments about the risk assessment.", 0, 1, comment);
1661        default: return super.getNamedProperty(_hash, _name, _checkValid);
1662        }
1663
1664      }
1665
1666      @Override
1667      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1668        switch (hash) {
1669        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
1670        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : new Base[] {this.basedOn}; // Reference
1671        case -995424086: /*parent*/ return this.parent == null ? new Base[0] : new Base[] {this.parent}; // Reference
1672        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RiskAssessmentStatus>
1673        case -1077554975: /*method*/ return this.method == null ? new Base[0] : new Base[] {this.method}; // CodeableConcept
1674        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1675        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1676        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // Reference
1677        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // Type
1678        case -861311717: /*condition*/ return this.condition == null ? new Base[0] : new Base[] {this.condition}; // Reference
1679        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // Reference
1680        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : new Base[] {this.reason}; // Type
1681        case 93508670: /*basis*/ return this.basis == null ? new Base[0] : this.basis.toArray(new Base[this.basis.size()]); // Reference
1682        case 1161234575: /*prediction*/ return this.prediction == null ? new Base[0] : this.prediction.toArray(new Base[this.prediction.size()]); // RiskAssessmentPredictionComponent
1683        case 1293793087: /*mitigation*/ return this.mitigation == null ? new Base[0] : new Base[] {this.mitigation}; // StringType
1684        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
1685        default: return super.getProperty(hash, name, checkValid);
1686        }
1687
1688      }
1689
1690      @Override
1691      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1692        switch (hash) {
1693        case -1618432855: // identifier
1694          this.identifier = castToIdentifier(value); // Identifier
1695          return value;
1696        case -332612366: // basedOn
1697          this.basedOn = castToReference(value); // Reference
1698          return value;
1699        case -995424086: // parent
1700          this.parent = castToReference(value); // Reference
1701          return value;
1702        case -892481550: // status
1703          value = new RiskAssessmentStatusEnumFactory().fromType(castToCode(value));
1704          this.status = (Enumeration) value; // Enumeration<RiskAssessmentStatus>
1705          return value;
1706        case -1077554975: // method
1707          this.method = castToCodeableConcept(value); // CodeableConcept
1708          return value;
1709        case 3059181: // code
1710          this.code = castToCodeableConcept(value); // CodeableConcept
1711          return value;
1712        case -1867885268: // subject
1713          this.subject = castToReference(value); // Reference
1714          return value;
1715        case 951530927: // context
1716          this.context = castToReference(value); // Reference
1717          return value;
1718        case 1687874001: // occurrence
1719          this.occurrence = castToType(value); // Type
1720          return value;
1721        case -861311717: // condition
1722          this.condition = castToReference(value); // Reference
1723          return value;
1724        case 481140686: // performer
1725          this.performer = castToReference(value); // Reference
1726          return value;
1727        case -934964668: // reason
1728          this.reason = castToType(value); // Type
1729          return value;
1730        case 93508670: // basis
1731          this.getBasis().add(castToReference(value)); // Reference
1732          return value;
1733        case 1161234575: // prediction
1734          this.getPrediction().add((RiskAssessmentPredictionComponent) value); // RiskAssessmentPredictionComponent
1735          return value;
1736        case 1293793087: // mitigation
1737          this.mitigation = castToString(value); // StringType
1738          return value;
1739        case 950398559: // comment
1740          this.comment = castToString(value); // StringType
1741          return value;
1742        default: return super.setProperty(hash, name, value);
1743        }
1744
1745      }
1746
1747      @Override
1748      public Base setProperty(String name, Base value) throws FHIRException {
1749        if (name.equals("identifier")) {
1750          this.identifier = castToIdentifier(value); // Identifier
1751        } else if (name.equals("basedOn")) {
1752          this.basedOn = castToReference(value); // Reference
1753        } else if (name.equals("parent")) {
1754          this.parent = castToReference(value); // Reference
1755        } else if (name.equals("status")) {
1756          value = new RiskAssessmentStatusEnumFactory().fromType(castToCode(value));
1757          this.status = (Enumeration) value; // Enumeration<RiskAssessmentStatus>
1758        } else if (name.equals("method")) {
1759          this.method = castToCodeableConcept(value); // CodeableConcept
1760        } else if (name.equals("code")) {
1761          this.code = castToCodeableConcept(value); // CodeableConcept
1762        } else if (name.equals("subject")) {
1763          this.subject = castToReference(value); // Reference
1764        } else if (name.equals("context")) {
1765          this.context = castToReference(value); // Reference
1766        } else if (name.equals("occurrence[x]")) {
1767          this.occurrence = castToType(value); // Type
1768        } else if (name.equals("condition")) {
1769          this.condition = castToReference(value); // Reference
1770        } else if (name.equals("performer")) {
1771          this.performer = castToReference(value); // Reference
1772        } else if (name.equals("reason[x]")) {
1773          this.reason = castToType(value); // Type
1774        } else if (name.equals("basis")) {
1775          this.getBasis().add(castToReference(value));
1776        } else if (name.equals("prediction")) {
1777          this.getPrediction().add((RiskAssessmentPredictionComponent) value);
1778        } else if (name.equals("mitigation")) {
1779          this.mitigation = castToString(value); // StringType
1780        } else if (name.equals("comment")) {
1781          this.comment = castToString(value); // StringType
1782        } else
1783          return super.setProperty(name, value);
1784        return value;
1785      }
1786
1787      @Override
1788      public Base makeProperty(int hash, String name) throws FHIRException {
1789        switch (hash) {
1790        case -1618432855:  return getIdentifier(); 
1791        case -332612366:  return getBasedOn(); 
1792        case -995424086:  return getParent(); 
1793        case -892481550:  return getStatusElement();
1794        case -1077554975:  return getMethod(); 
1795        case 3059181:  return getCode(); 
1796        case -1867885268:  return getSubject(); 
1797        case 951530927:  return getContext(); 
1798        case -2022646513:  return getOccurrence(); 
1799        case 1687874001:  return getOccurrence(); 
1800        case -861311717:  return getCondition(); 
1801        case 481140686:  return getPerformer(); 
1802        case -669418564:  return getReason(); 
1803        case -934964668:  return getReason(); 
1804        case 93508670:  return addBasis(); 
1805        case 1161234575:  return addPrediction(); 
1806        case 1293793087:  return getMitigationElement();
1807        case 950398559:  return getCommentElement();
1808        default: return super.makeProperty(hash, name);
1809        }
1810
1811      }
1812
1813      @Override
1814      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1815        switch (hash) {
1816        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1817        case -332612366: /*basedOn*/ return new String[] {"Reference"};
1818        case -995424086: /*parent*/ return new String[] {"Reference"};
1819        case -892481550: /*status*/ return new String[] {"code"};
1820        case -1077554975: /*method*/ return new String[] {"CodeableConcept"};
1821        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1822        case -1867885268: /*subject*/ return new String[] {"Reference"};
1823        case 951530927: /*context*/ return new String[] {"Reference"};
1824        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "Period"};
1825        case -861311717: /*condition*/ return new String[] {"Reference"};
1826        case 481140686: /*performer*/ return new String[] {"Reference"};
1827        case -934964668: /*reason*/ return new String[] {"CodeableConcept", "Reference"};
1828        case 93508670: /*basis*/ return new String[] {"Reference"};
1829        case 1161234575: /*prediction*/ return new String[] {};
1830        case 1293793087: /*mitigation*/ return new String[] {"string"};
1831        case 950398559: /*comment*/ return new String[] {"string"};
1832        default: return super.getTypesForProperty(hash, name);
1833        }
1834
1835      }
1836
1837      @Override
1838      public Base addChild(String name) throws FHIRException {
1839        if (name.equals("identifier")) {
1840          this.identifier = new Identifier();
1841          return this.identifier;
1842        }
1843        else if (name.equals("basedOn")) {
1844          this.basedOn = new Reference();
1845          return this.basedOn;
1846        }
1847        else if (name.equals("parent")) {
1848          this.parent = new Reference();
1849          return this.parent;
1850        }
1851        else if (name.equals("status")) {
1852          throw new FHIRException("Cannot call addChild on a primitive type RiskAssessment.status");
1853        }
1854        else if (name.equals("method")) {
1855          this.method = new CodeableConcept();
1856          return this.method;
1857        }
1858        else if (name.equals("code")) {
1859          this.code = new CodeableConcept();
1860          return this.code;
1861        }
1862        else if (name.equals("subject")) {
1863          this.subject = new Reference();
1864          return this.subject;
1865        }
1866        else if (name.equals("context")) {
1867          this.context = new Reference();
1868          return this.context;
1869        }
1870        else if (name.equals("occurrenceDateTime")) {
1871          this.occurrence = new DateTimeType();
1872          return this.occurrence;
1873        }
1874        else if (name.equals("occurrencePeriod")) {
1875          this.occurrence = new Period();
1876          return this.occurrence;
1877        }
1878        else if (name.equals("condition")) {
1879          this.condition = new Reference();
1880          return this.condition;
1881        }
1882        else if (name.equals("performer")) {
1883          this.performer = new Reference();
1884          return this.performer;
1885        }
1886        else if (name.equals("reasonCodeableConcept")) {
1887          this.reason = new CodeableConcept();
1888          return this.reason;
1889        }
1890        else if (name.equals("reasonReference")) {
1891          this.reason = new Reference();
1892          return this.reason;
1893        }
1894        else if (name.equals("basis")) {
1895          return addBasis();
1896        }
1897        else if (name.equals("prediction")) {
1898          return addPrediction();
1899        }
1900        else if (name.equals("mitigation")) {
1901          throw new FHIRException("Cannot call addChild on a primitive type RiskAssessment.mitigation");
1902        }
1903        else if (name.equals("comment")) {
1904          throw new FHIRException("Cannot call addChild on a primitive type RiskAssessment.comment");
1905        }
1906        else
1907          return super.addChild(name);
1908      }
1909
1910  public String fhirType() {
1911    return "RiskAssessment";
1912
1913  }
1914
1915      public RiskAssessment copy() {
1916        RiskAssessment dst = new RiskAssessment();
1917        copyValues(dst);
1918        dst.identifier = identifier == null ? null : identifier.copy();
1919        dst.basedOn = basedOn == null ? null : basedOn.copy();
1920        dst.parent = parent == null ? null : parent.copy();
1921        dst.status = status == null ? null : status.copy();
1922        dst.method = method == null ? null : method.copy();
1923        dst.code = code == null ? null : code.copy();
1924        dst.subject = subject == null ? null : subject.copy();
1925        dst.context = context == null ? null : context.copy();
1926        dst.occurrence = occurrence == null ? null : occurrence.copy();
1927        dst.condition = condition == null ? null : condition.copy();
1928        dst.performer = performer == null ? null : performer.copy();
1929        dst.reason = reason == null ? null : reason.copy();
1930        if (basis != null) {
1931          dst.basis = new ArrayList<Reference>();
1932          for (Reference i : basis)
1933            dst.basis.add(i.copy());
1934        };
1935        if (prediction != null) {
1936          dst.prediction = new ArrayList<RiskAssessmentPredictionComponent>();
1937          for (RiskAssessmentPredictionComponent i : prediction)
1938            dst.prediction.add(i.copy());
1939        };
1940        dst.mitigation = mitigation == null ? null : mitigation.copy();
1941        dst.comment = comment == null ? null : comment.copy();
1942        return dst;
1943      }
1944
1945      protected RiskAssessment typedCopy() {
1946        return copy();
1947      }
1948
1949      @Override
1950      public boolean equalsDeep(Base other_) {
1951        if (!super.equalsDeep(other_))
1952          return false;
1953        if (!(other_ instanceof RiskAssessment))
1954          return false;
1955        RiskAssessment o = (RiskAssessment) other_;
1956        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(parent, o.parent, true)
1957           && compareDeep(status, o.status, true) && compareDeep(method, o.method, true) && compareDeep(code, o.code, true)
1958           && compareDeep(subject, o.subject, true) && compareDeep(context, o.context, true) && compareDeep(occurrence, o.occurrence, true)
1959           && compareDeep(condition, o.condition, true) && compareDeep(performer, o.performer, true) && compareDeep(reason, o.reason, true)
1960           && compareDeep(basis, o.basis, true) && compareDeep(prediction, o.prediction, true) && compareDeep(mitigation, o.mitigation, true)
1961           && compareDeep(comment, o.comment, true);
1962      }
1963
1964      @Override
1965      public boolean equalsShallow(Base other_) {
1966        if (!super.equalsShallow(other_))
1967          return false;
1968        if (!(other_ instanceof RiskAssessment))
1969          return false;
1970        RiskAssessment o = (RiskAssessment) other_;
1971        return compareValues(status, o.status, true) && compareValues(mitigation, o.mitigation, true) && compareValues(comment, o.comment, true)
1972          ;
1973      }
1974
1975      public boolean isEmpty() {
1976        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, basedOn, parent
1977          , status, method, code, subject, context, occurrence, condition, performer, reason
1978          , basis, prediction, mitigation, comment);
1979      }
1980
1981  @Override
1982  public ResourceType getResourceType() {
1983    return ResourceType.RiskAssessment;
1984   }
1985
1986 /**
1987   * Search parameter: <b>date</b>
1988   * <p>
1989   * Description: <b>When was assessment made?</b><br>
1990   * Type: <b>date</b><br>
1991   * Path: <b>RiskAssessment.occurrenceDateTime</b><br>
1992   * </p>
1993   */
1994  @SearchParamDefinition(name="date", path="RiskAssessment.occurrence.as(DateTime)", description="When was assessment made?", type="date" )
1995  public static final String SP_DATE = "date";
1996 /**
1997   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1998   * <p>
1999   * Description: <b>When was assessment made?</b><br>
2000   * Type: <b>date</b><br>
2001   * Path: <b>RiskAssessment.occurrenceDateTime</b><br>
2002   * </p>
2003   */
2004  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
2005
2006 /**
2007   * Search parameter: <b>identifier</b>
2008   * <p>
2009   * Description: <b>Unique identifier for the assessment</b><br>
2010   * Type: <b>token</b><br>
2011   * Path: <b>RiskAssessment.identifier</b><br>
2012   * </p>
2013   */
2014  @SearchParamDefinition(name="identifier", path="RiskAssessment.identifier", description="Unique identifier for the assessment", type="token" )
2015  public static final String SP_IDENTIFIER = "identifier";
2016 /**
2017   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2018   * <p>
2019   * Description: <b>Unique identifier for the assessment</b><br>
2020   * Type: <b>token</b><br>
2021   * Path: <b>RiskAssessment.identifier</b><br>
2022   * </p>
2023   */
2024  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2025
2026 /**
2027   * Search parameter: <b>condition</b>
2028   * <p>
2029   * Description: <b>Condition assessed</b><br>
2030   * Type: <b>reference</b><br>
2031   * Path: <b>RiskAssessment.condition</b><br>
2032   * </p>
2033   */
2034  @SearchParamDefinition(name="condition", path="RiskAssessment.condition", description="Condition assessed", type="reference", target={Condition.class } )
2035  public static final String SP_CONDITION = "condition";
2036 /**
2037   * <b>Fluent Client</b> search parameter constant for <b>condition</b>
2038   * <p>
2039   * Description: <b>Condition assessed</b><br>
2040   * Type: <b>reference</b><br>
2041   * Path: <b>RiskAssessment.condition</b><br>
2042   * </p>
2043   */
2044  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONDITION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CONDITION);
2045
2046/**
2047   * Constant for fluent queries to be used to add include statements. Specifies
2048   * the path value of "<b>RiskAssessment:condition</b>".
2049   */
2050  public static final ca.uhn.fhir.model.api.Include INCLUDE_CONDITION = new ca.uhn.fhir.model.api.Include("RiskAssessment:condition").toLocked();
2051
2052 /**
2053   * Search parameter: <b>performer</b>
2054   * <p>
2055   * Description: <b>Who did assessment?</b><br>
2056   * Type: <b>reference</b><br>
2057   * Path: <b>RiskAssessment.performer</b><br>
2058   * </p>
2059   */
2060  @SearchParamDefinition(name="performer", path="RiskAssessment.performer", description="Who did assessment?", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner") }, target={Device.class, Practitioner.class } )
2061  public static final String SP_PERFORMER = "performer";
2062 /**
2063   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
2064   * <p>
2065   * Description: <b>Who did assessment?</b><br>
2066   * Type: <b>reference</b><br>
2067   * Path: <b>RiskAssessment.performer</b><br>
2068   * </p>
2069   */
2070  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
2071
2072/**
2073   * Constant for fluent queries to be used to add include statements. Specifies
2074   * the path value of "<b>RiskAssessment:performer</b>".
2075   */
2076  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("RiskAssessment:performer").toLocked();
2077
2078 /**
2079   * Search parameter: <b>method</b>
2080   * <p>
2081   * Description: <b>Evaluation mechanism</b><br>
2082   * Type: <b>token</b><br>
2083   * Path: <b>RiskAssessment.method</b><br>
2084   * </p>
2085   */
2086  @SearchParamDefinition(name="method", path="RiskAssessment.method", description="Evaluation mechanism", type="token" )
2087  public static final String SP_METHOD = "method";
2088 /**
2089   * <b>Fluent Client</b> search parameter constant for <b>method</b>
2090   * <p>
2091   * Description: <b>Evaluation mechanism</b><br>
2092   * Type: <b>token</b><br>
2093   * Path: <b>RiskAssessment.method</b><br>
2094   * </p>
2095   */
2096  public static final ca.uhn.fhir.rest.gclient.TokenClientParam METHOD = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_METHOD);
2097
2098 /**
2099   * Search parameter: <b>subject</b>
2100   * <p>
2101   * Description: <b>Who/what does assessment apply to?</b><br>
2102   * Type: <b>reference</b><br>
2103   * Path: <b>RiskAssessment.subject</b><br>
2104   * </p>
2105   */
2106  @SearchParamDefinition(name="subject", path="RiskAssessment.subject", description="Who/what does assessment apply to?", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Group.class, Patient.class } )
2107  public static final String SP_SUBJECT = "subject";
2108 /**
2109   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2110   * <p>
2111   * Description: <b>Who/what does assessment apply to?</b><br>
2112   * Type: <b>reference</b><br>
2113   * Path: <b>RiskAssessment.subject</b><br>
2114   * </p>
2115   */
2116  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2117
2118/**
2119   * Constant for fluent queries to be used to add include statements. Specifies
2120   * the path value of "<b>RiskAssessment:subject</b>".
2121   */
2122  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("RiskAssessment:subject").toLocked();
2123
2124 /**
2125   * Search parameter: <b>patient</b>
2126   * <p>
2127   * Description: <b>Who/what does assessment apply to?</b><br>
2128   * Type: <b>reference</b><br>
2129   * Path: <b>RiskAssessment.subject</b><br>
2130   * </p>
2131   */
2132  @SearchParamDefinition(name="patient", path="RiskAssessment.subject", description="Who/what does assessment apply to?", type="reference", target={Patient.class } )
2133  public static final String SP_PATIENT = "patient";
2134 /**
2135   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2136   * <p>
2137   * Description: <b>Who/what does assessment apply to?</b><br>
2138   * Type: <b>reference</b><br>
2139   * Path: <b>RiskAssessment.subject</b><br>
2140   * </p>
2141   */
2142  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2143
2144/**
2145   * Constant for fluent queries to be used to add include statements. Specifies
2146   * the path value of "<b>RiskAssessment:patient</b>".
2147   */
2148  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("RiskAssessment:patient").toLocked();
2149
2150 /**
2151   * Search parameter: <b>probability</b>
2152   * <p>
2153   * Description: <b>Likelihood of specified outcome</b><br>
2154   * Type: <b>number</b><br>
2155   * Path: <b>RiskAssessment.prediction.probability[x]</b><br>
2156   * </p>
2157   */
2158  @SearchParamDefinition(name="probability", path="RiskAssessment.prediction.probability", description="Likelihood of specified outcome", type="number" )
2159  public static final String SP_PROBABILITY = "probability";
2160 /**
2161   * <b>Fluent Client</b> search parameter constant for <b>probability</b>
2162   * <p>
2163   * Description: <b>Likelihood of specified outcome</b><br>
2164   * Type: <b>number</b><br>
2165   * Path: <b>RiskAssessment.prediction.probability[x]</b><br>
2166   * </p>
2167   */
2168  public static final ca.uhn.fhir.rest.gclient.NumberClientParam PROBABILITY = new ca.uhn.fhir.rest.gclient.NumberClientParam(SP_PROBABILITY);
2169
2170 /**
2171   * Search parameter: <b>risk</b>
2172   * <p>
2173   * Description: <b>Likelihood of specified outcome as a qualitative value</b><br>
2174   * Type: <b>token</b><br>
2175   * Path: <b>RiskAssessment.prediction.qualitativeRisk</b><br>
2176   * </p>
2177   */
2178  @SearchParamDefinition(name="risk", path="RiskAssessment.prediction.qualitativeRisk", description="Likelihood of specified outcome as a qualitative value", type="token" )
2179  public static final String SP_RISK = "risk";
2180 /**
2181   * <b>Fluent Client</b> search parameter constant for <b>risk</b>
2182   * <p>
2183   * Description: <b>Likelihood of specified outcome as a qualitative value</b><br>
2184   * Type: <b>token</b><br>
2185   * Path: <b>RiskAssessment.prediction.qualitativeRisk</b><br>
2186   * </p>
2187   */
2188  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RISK = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_RISK);
2189
2190 /**
2191   * Search parameter: <b>encounter</b>
2192   * <p>
2193   * Description: <b>Where was assessment performed?</b><br>
2194   * Type: <b>reference</b><br>
2195   * Path: <b>RiskAssessment.context</b><br>
2196   * </p>
2197   */
2198  @SearchParamDefinition(name="encounter", path="RiskAssessment.context", description="Where was assessment performed?", type="reference", target={Encounter.class } )
2199  public static final String SP_ENCOUNTER = "encounter";
2200 /**
2201   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2202   * <p>
2203   * Description: <b>Where was assessment performed?</b><br>
2204   * Type: <b>reference</b><br>
2205   * Path: <b>RiskAssessment.context</b><br>
2206   * </p>
2207   */
2208  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2209
2210/**
2211   * Constant for fluent queries to be used to add include statements. Specifies
2212   * the path value of "<b>RiskAssessment:encounter</b>".
2213   */
2214  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("RiskAssessment:encounter").toLocked();
2215
2216
2217}