001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Thu, Dec 27, 2018 10:06-0500 for FHIR v4.0.0
033
034import java.util.*;
035
036import ca.uhn.fhir.model.api.annotation.ResourceDef;
037import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
038import ca.uhn.fhir.model.api.annotation.Child;
039import ca.uhn.fhir.model.api.annotation.ChildOrder;
040import ca.uhn.fhir.model.api.annotation.Description;
041import ca.uhn.fhir.model.api.annotation.Block;
042import org.hl7.fhir.instance.model.api.*;
043import org.hl7.fhir.exceptions.FHIRException;
044/**
045 * A clinical condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern.
046 */
047@ResourceDef(name="Condition", profile="http://hl7.org/fhir/StructureDefinition/Condition")
048public class Condition extends DomainResource {
049
050    @Block()
051    public static class ConditionStageComponent extends BackboneElement implements IBaseBackboneElement {
052        /**
053         * A simple summary of the stage such as "Stage 3". The determination of the stage is disease-specific.
054         */
055        @Child(name = "summary", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
056        @Description(shortDefinition="Simple summary (disease specific)", formalDefinition="A simple summary of the stage such as \"Stage 3\". The determination of the stage is disease-specific." )
057        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-stage")
058        protected CodeableConcept summary;
059
060        /**
061         * Reference to a formal record of the evidence on which the staging assessment is based.
062         */
063        @Child(name = "assessment", type = {ClinicalImpression.class, DiagnosticReport.class, Observation.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
064        @Description(shortDefinition="Formal record of assessment", formalDefinition="Reference to a formal record of the evidence on which the staging assessment is based." )
065        protected List<Reference> assessment;
066        /**
067         * The actual objects that are the target of the reference (Reference to a formal record of the evidence on which the staging assessment is based.)
068         */
069        protected List<Resource> assessmentTarget;
070
071
072        /**
073         * The kind of staging, such as pathological or clinical staging.
074         */
075        @Child(name = "type", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
076        @Description(shortDefinition="Kind of staging", formalDefinition="The kind of staging, such as pathological or clinical staging." )
077        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-stage-type")
078        protected CodeableConcept type;
079
080        private static final long serialVersionUID = 668627986L;
081
082    /**
083     * Constructor
084     */
085      public ConditionStageComponent() {
086        super();
087      }
088
089        /**
090         * @return {@link #summary} (A simple summary of the stage such as "Stage 3". The determination of the stage is disease-specific.)
091         */
092        public CodeableConcept getSummary() { 
093          if (this.summary == null)
094            if (Configuration.errorOnAutoCreate())
095              throw new Error("Attempt to auto-create ConditionStageComponent.summary");
096            else if (Configuration.doAutoCreate())
097              this.summary = new CodeableConcept(); // cc
098          return this.summary;
099        }
100
101        public boolean hasSummary() { 
102          return this.summary != null && !this.summary.isEmpty();
103        }
104
105        /**
106         * @param value {@link #summary} (A simple summary of the stage such as "Stage 3". The determination of the stage is disease-specific.)
107         */
108        public ConditionStageComponent setSummary(CodeableConcept value) { 
109          this.summary = value;
110          return this;
111        }
112
113        /**
114         * @return {@link #assessment} (Reference to a formal record of the evidence on which the staging assessment is based.)
115         */
116        public List<Reference> getAssessment() { 
117          if (this.assessment == null)
118            this.assessment = new ArrayList<Reference>();
119          return this.assessment;
120        }
121
122        /**
123         * @return Returns a reference to <code>this</code> for easy method chaining
124         */
125        public ConditionStageComponent setAssessment(List<Reference> theAssessment) { 
126          this.assessment = theAssessment;
127          return this;
128        }
129
130        public boolean hasAssessment() { 
131          if (this.assessment == null)
132            return false;
133          for (Reference item : this.assessment)
134            if (!item.isEmpty())
135              return true;
136          return false;
137        }
138
139        public Reference addAssessment() { //3
140          Reference t = new Reference();
141          if (this.assessment == null)
142            this.assessment = new ArrayList<Reference>();
143          this.assessment.add(t);
144          return t;
145        }
146
147        public ConditionStageComponent addAssessment(Reference t) { //3
148          if (t == null)
149            return this;
150          if (this.assessment == null)
151            this.assessment = new ArrayList<Reference>();
152          this.assessment.add(t);
153          return this;
154        }
155
156        /**
157         * @return The first repetition of repeating field {@link #assessment}, creating it if it does not already exist
158         */
159        public Reference getAssessmentFirstRep() { 
160          if (getAssessment().isEmpty()) {
161            addAssessment();
162          }
163          return getAssessment().get(0);
164        }
165
166        /**
167         * @deprecated Use Reference#setResource(IBaseResource) instead
168         */
169        @Deprecated
170        public List<Resource> getAssessmentTarget() { 
171          if (this.assessmentTarget == null)
172            this.assessmentTarget = new ArrayList<Resource>();
173          return this.assessmentTarget;
174        }
175
176        /**
177         * @return {@link #type} (The kind of staging, such as pathological or clinical staging.)
178         */
179        public CodeableConcept getType() { 
180          if (this.type == null)
181            if (Configuration.errorOnAutoCreate())
182              throw new Error("Attempt to auto-create ConditionStageComponent.type");
183            else if (Configuration.doAutoCreate())
184              this.type = new CodeableConcept(); // cc
185          return this.type;
186        }
187
188        public boolean hasType() { 
189          return this.type != null && !this.type.isEmpty();
190        }
191
192        /**
193         * @param value {@link #type} (The kind of staging, such as pathological or clinical staging.)
194         */
195        public ConditionStageComponent setType(CodeableConcept value) { 
196          this.type = value;
197          return this;
198        }
199
200        protected void listChildren(List<Property> children) {
201          super.listChildren(children);
202          children.add(new Property("summary", "CodeableConcept", "A simple summary of the stage such as \"Stage 3\". The determination of the stage is disease-specific.", 0, 1, summary));
203          children.add(new Property("assessment", "Reference(ClinicalImpression|DiagnosticReport|Observation)", "Reference to a formal record of the evidence on which the staging assessment is based.", 0, java.lang.Integer.MAX_VALUE, assessment));
204          children.add(new Property("type", "CodeableConcept", "The kind of staging, such as pathological or clinical staging.", 0, 1, type));
205        }
206
207        @Override
208        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
209          switch (_hash) {
210          case -1857640538: /*summary*/  return new Property("summary", "CodeableConcept", "A simple summary of the stage such as \"Stage 3\". The determination of the stage is disease-specific.", 0, 1, summary);
211          case 2119382722: /*assessment*/  return new Property("assessment", "Reference(ClinicalImpression|DiagnosticReport|Observation)", "Reference to a formal record of the evidence on which the staging assessment is based.", 0, java.lang.Integer.MAX_VALUE, assessment);
212          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The kind of staging, such as pathological or clinical staging.", 0, 1, type);
213          default: return super.getNamedProperty(_hash, _name, _checkValid);
214          }
215
216        }
217
218      @Override
219      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
220        switch (hash) {
221        case -1857640538: /*summary*/ return this.summary == null ? new Base[0] : new Base[] {this.summary}; // CodeableConcept
222        case 2119382722: /*assessment*/ return this.assessment == null ? new Base[0] : this.assessment.toArray(new Base[this.assessment.size()]); // Reference
223        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
224        default: return super.getProperty(hash, name, checkValid);
225        }
226
227      }
228
229      @Override
230      public Base setProperty(int hash, String name, Base value) throws FHIRException {
231        switch (hash) {
232        case -1857640538: // summary
233          this.summary = castToCodeableConcept(value); // CodeableConcept
234          return value;
235        case 2119382722: // assessment
236          this.getAssessment().add(castToReference(value)); // Reference
237          return value;
238        case 3575610: // type
239          this.type = castToCodeableConcept(value); // CodeableConcept
240          return value;
241        default: return super.setProperty(hash, name, value);
242        }
243
244      }
245
246      @Override
247      public Base setProperty(String name, Base value) throws FHIRException {
248        if (name.equals("summary")) {
249          this.summary = castToCodeableConcept(value); // CodeableConcept
250        } else if (name.equals("assessment")) {
251          this.getAssessment().add(castToReference(value));
252        } else if (name.equals("type")) {
253          this.type = castToCodeableConcept(value); // CodeableConcept
254        } else
255          return super.setProperty(name, value);
256        return value;
257      }
258
259      @Override
260      public Base makeProperty(int hash, String name) throws FHIRException {
261        switch (hash) {
262        case -1857640538:  return getSummary(); 
263        case 2119382722:  return addAssessment(); 
264        case 3575610:  return getType(); 
265        default: return super.makeProperty(hash, name);
266        }
267
268      }
269
270      @Override
271      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
272        switch (hash) {
273        case -1857640538: /*summary*/ return new String[] {"CodeableConcept"};
274        case 2119382722: /*assessment*/ return new String[] {"Reference"};
275        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
276        default: return super.getTypesForProperty(hash, name);
277        }
278
279      }
280
281      @Override
282      public Base addChild(String name) throws FHIRException {
283        if (name.equals("summary")) {
284          this.summary = new CodeableConcept();
285          return this.summary;
286        }
287        else if (name.equals("assessment")) {
288          return addAssessment();
289        }
290        else if (name.equals("type")) {
291          this.type = new CodeableConcept();
292          return this.type;
293        }
294        else
295          return super.addChild(name);
296      }
297
298      public ConditionStageComponent copy() {
299        ConditionStageComponent dst = new ConditionStageComponent();
300        copyValues(dst);
301        dst.summary = summary == null ? null : summary.copy();
302        if (assessment != null) {
303          dst.assessment = new ArrayList<Reference>();
304          for (Reference i : assessment)
305            dst.assessment.add(i.copy());
306        };
307        dst.type = type == null ? null : type.copy();
308        return dst;
309      }
310
311      @Override
312      public boolean equalsDeep(Base other_) {
313        if (!super.equalsDeep(other_))
314          return false;
315        if (!(other_ instanceof ConditionStageComponent))
316          return false;
317        ConditionStageComponent o = (ConditionStageComponent) other_;
318        return compareDeep(summary, o.summary, true) && compareDeep(assessment, o.assessment, true) && compareDeep(type, o.type, true)
319          ;
320      }
321
322      @Override
323      public boolean equalsShallow(Base other_) {
324        if (!super.equalsShallow(other_))
325          return false;
326        if (!(other_ instanceof ConditionStageComponent))
327          return false;
328        ConditionStageComponent o = (ConditionStageComponent) other_;
329        return true;
330      }
331
332      public boolean isEmpty() {
333        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(summary, assessment, type
334          );
335      }
336
337  public String fhirType() {
338    return "Condition.stage";
339
340  }
341
342  }
343
344    @Block()
345    public static class ConditionEvidenceComponent extends BackboneElement implements IBaseBackboneElement {
346        /**
347         * A manifestation or symptom that led to the recording of this condition.
348         */
349        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
350        @Description(shortDefinition="Manifestation/symptom", formalDefinition="A manifestation or symptom that led to the recording of this condition." )
351        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/manifestation-or-symptom")
352        protected List<CodeableConcept> code;
353
354        /**
355         * Links to other relevant information, including pathology reports.
356         */
357        @Child(name = "detail", type = {Reference.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
358        @Description(shortDefinition="Supporting information found elsewhere", formalDefinition="Links to other relevant information, including pathology reports." )
359        protected List<Reference> detail;
360        /**
361         * The actual objects that are the target of the reference (Links to other relevant information, including pathology reports.)
362         */
363        protected List<Resource> detailTarget;
364
365
366        private static final long serialVersionUID = 1135831276L;
367
368    /**
369     * Constructor
370     */
371      public ConditionEvidenceComponent() {
372        super();
373      }
374
375        /**
376         * @return {@link #code} (A manifestation or symptom that led to the recording of this condition.)
377         */
378        public List<CodeableConcept> getCode() { 
379          if (this.code == null)
380            this.code = new ArrayList<CodeableConcept>();
381          return this.code;
382        }
383
384        /**
385         * @return Returns a reference to <code>this</code> for easy method chaining
386         */
387        public ConditionEvidenceComponent setCode(List<CodeableConcept> theCode) { 
388          this.code = theCode;
389          return this;
390        }
391
392        public boolean hasCode() { 
393          if (this.code == null)
394            return false;
395          for (CodeableConcept item : this.code)
396            if (!item.isEmpty())
397              return true;
398          return false;
399        }
400
401        public CodeableConcept addCode() { //3
402          CodeableConcept t = new CodeableConcept();
403          if (this.code == null)
404            this.code = new ArrayList<CodeableConcept>();
405          this.code.add(t);
406          return t;
407        }
408
409        public ConditionEvidenceComponent addCode(CodeableConcept t) { //3
410          if (t == null)
411            return this;
412          if (this.code == null)
413            this.code = new ArrayList<CodeableConcept>();
414          this.code.add(t);
415          return this;
416        }
417
418        /**
419         * @return The first repetition of repeating field {@link #code}, creating it if it does not already exist
420         */
421        public CodeableConcept getCodeFirstRep() { 
422          if (getCode().isEmpty()) {
423            addCode();
424          }
425          return getCode().get(0);
426        }
427
428        /**
429         * @return {@link #detail} (Links to other relevant information, including pathology reports.)
430         */
431        public List<Reference> getDetail() { 
432          if (this.detail == null)
433            this.detail = new ArrayList<Reference>();
434          return this.detail;
435        }
436
437        /**
438         * @return Returns a reference to <code>this</code> for easy method chaining
439         */
440        public ConditionEvidenceComponent setDetail(List<Reference> theDetail) { 
441          this.detail = theDetail;
442          return this;
443        }
444
445        public boolean hasDetail() { 
446          if (this.detail == null)
447            return false;
448          for (Reference item : this.detail)
449            if (!item.isEmpty())
450              return true;
451          return false;
452        }
453
454        public Reference addDetail() { //3
455          Reference t = new Reference();
456          if (this.detail == null)
457            this.detail = new ArrayList<Reference>();
458          this.detail.add(t);
459          return t;
460        }
461
462        public ConditionEvidenceComponent addDetail(Reference t) { //3
463          if (t == null)
464            return this;
465          if (this.detail == null)
466            this.detail = new ArrayList<Reference>();
467          this.detail.add(t);
468          return this;
469        }
470
471        /**
472         * @return The first repetition of repeating field {@link #detail}, creating it if it does not already exist
473         */
474        public Reference getDetailFirstRep() { 
475          if (getDetail().isEmpty()) {
476            addDetail();
477          }
478          return getDetail().get(0);
479        }
480
481        /**
482         * @deprecated Use Reference#setResource(IBaseResource) instead
483         */
484        @Deprecated
485        public List<Resource> getDetailTarget() { 
486          if (this.detailTarget == null)
487            this.detailTarget = new ArrayList<Resource>();
488          return this.detailTarget;
489        }
490
491        protected void listChildren(List<Property> children) {
492          super.listChildren(children);
493          children.add(new Property("code", "CodeableConcept", "A manifestation or symptom that led to the recording of this condition.", 0, java.lang.Integer.MAX_VALUE, code));
494          children.add(new Property("detail", "Reference(Any)", "Links to other relevant information, including pathology reports.", 0, java.lang.Integer.MAX_VALUE, detail));
495        }
496
497        @Override
498        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
499          switch (_hash) {
500          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A manifestation or symptom that led to the recording of this condition.", 0, java.lang.Integer.MAX_VALUE, code);
501          case -1335224239: /*detail*/  return new Property("detail", "Reference(Any)", "Links to other relevant information, including pathology reports.", 0, java.lang.Integer.MAX_VALUE, detail);
502          default: return super.getNamedProperty(_hash, _name, _checkValid);
503          }
504
505        }
506
507      @Override
508      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
509        switch (hash) {
510        case 3059181: /*code*/ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept
511        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : this.detail.toArray(new Base[this.detail.size()]); // Reference
512        default: return super.getProperty(hash, name, checkValid);
513        }
514
515      }
516
517      @Override
518      public Base setProperty(int hash, String name, Base value) throws FHIRException {
519        switch (hash) {
520        case 3059181: // code
521          this.getCode().add(castToCodeableConcept(value)); // CodeableConcept
522          return value;
523        case -1335224239: // detail
524          this.getDetail().add(castToReference(value)); // Reference
525          return value;
526        default: return super.setProperty(hash, name, value);
527        }
528
529      }
530
531      @Override
532      public Base setProperty(String name, Base value) throws FHIRException {
533        if (name.equals("code")) {
534          this.getCode().add(castToCodeableConcept(value));
535        } else if (name.equals("detail")) {
536          this.getDetail().add(castToReference(value));
537        } else
538          return super.setProperty(name, value);
539        return value;
540      }
541
542      @Override
543      public Base makeProperty(int hash, String name) throws FHIRException {
544        switch (hash) {
545        case 3059181:  return addCode(); 
546        case -1335224239:  return addDetail(); 
547        default: return super.makeProperty(hash, name);
548        }
549
550      }
551
552      @Override
553      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
554        switch (hash) {
555        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
556        case -1335224239: /*detail*/ return new String[] {"Reference"};
557        default: return super.getTypesForProperty(hash, name);
558        }
559
560      }
561
562      @Override
563      public Base addChild(String name) throws FHIRException {
564        if (name.equals("code")) {
565          return addCode();
566        }
567        else if (name.equals("detail")) {
568          return addDetail();
569        }
570        else
571          return super.addChild(name);
572      }
573
574      public ConditionEvidenceComponent copy() {
575        ConditionEvidenceComponent dst = new ConditionEvidenceComponent();
576        copyValues(dst);
577        if (code != null) {
578          dst.code = new ArrayList<CodeableConcept>();
579          for (CodeableConcept i : code)
580            dst.code.add(i.copy());
581        };
582        if (detail != null) {
583          dst.detail = new ArrayList<Reference>();
584          for (Reference i : detail)
585            dst.detail.add(i.copy());
586        };
587        return dst;
588      }
589
590      @Override
591      public boolean equalsDeep(Base other_) {
592        if (!super.equalsDeep(other_))
593          return false;
594        if (!(other_ instanceof ConditionEvidenceComponent))
595          return false;
596        ConditionEvidenceComponent o = (ConditionEvidenceComponent) other_;
597        return compareDeep(code, o.code, true) && compareDeep(detail, o.detail, true);
598      }
599
600      @Override
601      public boolean equalsShallow(Base other_) {
602        if (!super.equalsShallow(other_))
603          return false;
604        if (!(other_ instanceof ConditionEvidenceComponent))
605          return false;
606        ConditionEvidenceComponent o = (ConditionEvidenceComponent) other_;
607        return true;
608      }
609
610      public boolean isEmpty() {
611        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, detail);
612      }
613
614  public String fhirType() {
615    return "Condition.evidence";
616
617  }
618
619  }
620
621    /**
622     * Business identifiers assigned to this condition by the performer or other systems which remain constant as the resource is updated and propagates from server to server.
623     */
624    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
625    @Description(shortDefinition="External Ids for this condition", formalDefinition="Business identifiers assigned to this condition by the performer or other systems which remain constant as the resource is updated and propagates from server to server." )
626    protected List<Identifier> identifier;
627
628    /**
629     * The clinical status of the condition.
630     */
631    @Child(name = "clinicalStatus", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=true, summary=true)
632    @Description(shortDefinition="active | recurrence | relapse | inactive | remission | resolved", formalDefinition="The clinical status of the condition." )
633    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-clinical")
634    protected CodeableConcept clinicalStatus;
635
636    /**
637     * The verification status to support the clinical status of the condition.
638     */
639    @Child(name = "verificationStatus", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=true, summary=true)
640    @Description(shortDefinition="unconfirmed | provisional | differential | confirmed | refuted | entered-in-error", formalDefinition="The verification status to support the clinical status of the condition." )
641    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-ver-status")
642    protected CodeableConcept verificationStatus;
643
644    /**
645     * A category assigned to the condition.
646     */
647    @Child(name = "category", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
648    @Description(shortDefinition="problem-list-item | encounter-diagnosis", formalDefinition="A category assigned to the condition." )
649    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-category")
650    protected List<CodeableConcept> category;
651
652    /**
653     * A subjective assessment of the severity of the condition as evaluated by the clinician.
654     */
655    @Child(name = "severity", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
656    @Description(shortDefinition="Subjective severity of condition", formalDefinition="A subjective assessment of the severity of the condition as evaluated by the clinician." )
657    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-severity")
658    protected CodeableConcept severity;
659
660    /**
661     * Identification of the condition, problem or diagnosis.
662     */
663    @Child(name = "code", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=true)
664    @Description(shortDefinition="Identification of the condition, problem or diagnosis", formalDefinition="Identification of the condition, problem or diagnosis." )
665    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
666    protected CodeableConcept code;
667
668    /**
669     * The anatomical location where this condition manifests itself.
670     */
671    @Child(name = "bodySite", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
672    @Description(shortDefinition="Anatomical location, if relevant", formalDefinition="The anatomical location where this condition manifests itself." )
673    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
674    protected List<CodeableConcept> bodySite;
675
676    /**
677     * Indicates the patient or group who the condition record is associated with.
678     */
679    @Child(name = "subject", type = {Patient.class, Group.class}, order=7, min=1, max=1, modifier=false, summary=true)
680    @Description(shortDefinition="Who has the condition?", formalDefinition="Indicates the patient or group who the condition record is associated with." )
681    protected Reference subject;
682
683    /**
684     * The actual object that is the target of the reference (Indicates the patient or group who the condition record is associated with.)
685     */
686    protected Resource subjectTarget;
687
688    /**
689     * The Encounter during which this Condition was created or to which the creation of this record is tightly associated.
690     */
691    @Child(name = "encounter", type = {Encounter.class}, order=8, min=0, max=1, modifier=false, summary=true)
692    @Description(shortDefinition="Encounter created as part of", formalDefinition="The Encounter during which this Condition was created or to which the creation of this record is tightly associated." )
693    protected Reference encounter;
694
695    /**
696     * The actual object that is the target of the reference (The Encounter during which this Condition was created or to which the creation of this record is tightly associated.)
697     */
698    protected Encounter encounterTarget;
699
700    /**
701     * Estimated or actual date or date-time  the condition began, in the opinion of the clinician.
702     */
703    @Child(name = "onset", type = {DateTimeType.class, Age.class, Period.class, Range.class, StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
704    @Description(shortDefinition="Estimated or actual date,  date-time, or age", formalDefinition="Estimated or actual date or date-time  the condition began, in the opinion of the clinician." )
705    protected Type onset;
706
707    /**
708     * The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.
709     */
710    @Child(name = "abatement", type = {DateTimeType.class, Age.class, Period.class, Range.class, StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
711    @Description(shortDefinition="When in resolution/remission", formalDefinition="The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate." )
712    protected Type abatement;
713
714    /**
715     * The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.
716     */
717    @Child(name = "recordedDate", type = {DateTimeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
718    @Description(shortDefinition="Date record was first recorded", formalDefinition="The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date." )
719    protected DateTimeType recordedDate;
720
721    /**
722     * Individual who recorded the record and takes responsibility for its content.
723     */
724    @Child(name = "recorder", type = {Practitioner.class, PractitionerRole.class, Patient.class, RelatedPerson.class}, order=12, min=0, max=1, modifier=false, summary=true)
725    @Description(shortDefinition="Who recorded the condition", formalDefinition="Individual who recorded the record and takes responsibility for its content." )
726    protected Reference recorder;
727
728    /**
729     * The actual object that is the target of the reference (Individual who recorded the record and takes responsibility for its content.)
730     */
731    protected Resource recorderTarget;
732
733    /**
734     * Individual who is making the condition statement.
735     */
736    @Child(name = "asserter", type = {Practitioner.class, PractitionerRole.class, Patient.class, RelatedPerson.class}, order=13, min=0, max=1, modifier=false, summary=true)
737    @Description(shortDefinition="Person who asserts this condition", formalDefinition="Individual who is making the condition statement." )
738    protected Reference asserter;
739
740    /**
741     * The actual object that is the target of the reference (Individual who is making the condition statement.)
742     */
743    protected Resource asserterTarget;
744
745    /**
746     * Clinical stage or grade of a condition. May include formal severity assessments.
747     */
748    @Child(name = "stage", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
749    @Description(shortDefinition="Stage/grade, usually assessed formally", formalDefinition="Clinical stage or grade of a condition. May include formal severity assessments." )
750    protected List<ConditionStageComponent> stage;
751
752    /**
753     * Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition.
754     */
755    @Child(name = "evidence", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
756    @Description(shortDefinition="Supporting evidence", formalDefinition="Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition." )
757    protected List<ConditionEvidenceComponent> evidence;
758
759    /**
760     * Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis.
761     */
762    @Child(name = "note", type = {Annotation.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
763    @Description(shortDefinition="Additional information about the Condition", formalDefinition="Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis." )
764    protected List<Annotation> note;
765
766    private static final long serialVersionUID = 186776568L;
767
768  /**
769   * Constructor
770   */
771    public Condition() {
772      super();
773    }
774
775  /**
776   * Constructor
777   */
778    public Condition(Reference subject) {
779      super();
780      this.subject = subject;
781    }
782
783    /**
784     * @return {@link #identifier} (Business identifiers assigned to this condition by the performer or other systems which remain constant as the resource is updated and propagates from server to server.)
785     */
786    public List<Identifier> getIdentifier() { 
787      if (this.identifier == null)
788        this.identifier = new ArrayList<Identifier>();
789      return this.identifier;
790    }
791
792    /**
793     * @return Returns a reference to <code>this</code> for easy method chaining
794     */
795    public Condition setIdentifier(List<Identifier> theIdentifier) { 
796      this.identifier = theIdentifier;
797      return this;
798    }
799
800    public boolean hasIdentifier() { 
801      if (this.identifier == null)
802        return false;
803      for (Identifier item : this.identifier)
804        if (!item.isEmpty())
805          return true;
806      return false;
807    }
808
809    public Identifier addIdentifier() { //3
810      Identifier t = new Identifier();
811      if (this.identifier == null)
812        this.identifier = new ArrayList<Identifier>();
813      this.identifier.add(t);
814      return t;
815    }
816
817    public Condition addIdentifier(Identifier t) { //3
818      if (t == null)
819        return this;
820      if (this.identifier == null)
821        this.identifier = new ArrayList<Identifier>();
822      this.identifier.add(t);
823      return this;
824    }
825
826    /**
827     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
828     */
829    public Identifier getIdentifierFirstRep() { 
830      if (getIdentifier().isEmpty()) {
831        addIdentifier();
832      }
833      return getIdentifier().get(0);
834    }
835
836    /**
837     * @return {@link #clinicalStatus} (The clinical status of the condition.)
838     */
839    public CodeableConcept getClinicalStatus() { 
840      if (this.clinicalStatus == null)
841        if (Configuration.errorOnAutoCreate())
842          throw new Error("Attempt to auto-create Condition.clinicalStatus");
843        else if (Configuration.doAutoCreate())
844          this.clinicalStatus = new CodeableConcept(); // cc
845      return this.clinicalStatus;
846    }
847
848    public boolean hasClinicalStatus() { 
849      return this.clinicalStatus != null && !this.clinicalStatus.isEmpty();
850    }
851
852    /**
853     * @param value {@link #clinicalStatus} (The clinical status of the condition.)
854     */
855    public Condition setClinicalStatus(CodeableConcept value) { 
856      this.clinicalStatus = value;
857      return this;
858    }
859
860    /**
861     * @return {@link #verificationStatus} (The verification status to support the clinical status of the condition.)
862     */
863    public CodeableConcept getVerificationStatus() { 
864      if (this.verificationStatus == null)
865        if (Configuration.errorOnAutoCreate())
866          throw new Error("Attempt to auto-create Condition.verificationStatus");
867        else if (Configuration.doAutoCreate())
868          this.verificationStatus = new CodeableConcept(); // cc
869      return this.verificationStatus;
870    }
871
872    public boolean hasVerificationStatus() { 
873      return this.verificationStatus != null && !this.verificationStatus.isEmpty();
874    }
875
876    /**
877     * @param value {@link #verificationStatus} (The verification status to support the clinical status of the condition.)
878     */
879    public Condition setVerificationStatus(CodeableConcept value) { 
880      this.verificationStatus = value;
881      return this;
882    }
883
884    /**
885     * @return {@link #category} (A category assigned to the condition.)
886     */
887    public List<CodeableConcept> getCategory() { 
888      if (this.category == null)
889        this.category = new ArrayList<CodeableConcept>();
890      return this.category;
891    }
892
893    /**
894     * @return Returns a reference to <code>this</code> for easy method chaining
895     */
896    public Condition setCategory(List<CodeableConcept> theCategory) { 
897      this.category = theCategory;
898      return this;
899    }
900
901    public boolean hasCategory() { 
902      if (this.category == null)
903        return false;
904      for (CodeableConcept item : this.category)
905        if (!item.isEmpty())
906          return true;
907      return false;
908    }
909
910    public CodeableConcept addCategory() { //3
911      CodeableConcept t = new CodeableConcept();
912      if (this.category == null)
913        this.category = new ArrayList<CodeableConcept>();
914      this.category.add(t);
915      return t;
916    }
917
918    public Condition addCategory(CodeableConcept t) { //3
919      if (t == null)
920        return this;
921      if (this.category == null)
922        this.category = new ArrayList<CodeableConcept>();
923      this.category.add(t);
924      return this;
925    }
926
927    /**
928     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist
929     */
930    public CodeableConcept getCategoryFirstRep() { 
931      if (getCategory().isEmpty()) {
932        addCategory();
933      }
934      return getCategory().get(0);
935    }
936
937    /**
938     * @return {@link #severity} (A subjective assessment of the severity of the condition as evaluated by the clinician.)
939     */
940    public CodeableConcept getSeverity() { 
941      if (this.severity == null)
942        if (Configuration.errorOnAutoCreate())
943          throw new Error("Attempt to auto-create Condition.severity");
944        else if (Configuration.doAutoCreate())
945          this.severity = new CodeableConcept(); // cc
946      return this.severity;
947    }
948
949    public boolean hasSeverity() { 
950      return this.severity != null && !this.severity.isEmpty();
951    }
952
953    /**
954     * @param value {@link #severity} (A subjective assessment of the severity of the condition as evaluated by the clinician.)
955     */
956    public Condition setSeverity(CodeableConcept value) { 
957      this.severity = value;
958      return this;
959    }
960
961    /**
962     * @return {@link #code} (Identification of the condition, problem or diagnosis.)
963     */
964    public CodeableConcept getCode() { 
965      if (this.code == null)
966        if (Configuration.errorOnAutoCreate())
967          throw new Error("Attempt to auto-create Condition.code");
968        else if (Configuration.doAutoCreate())
969          this.code = new CodeableConcept(); // cc
970      return this.code;
971    }
972
973    public boolean hasCode() { 
974      return this.code != null && !this.code.isEmpty();
975    }
976
977    /**
978     * @param value {@link #code} (Identification of the condition, problem or diagnosis.)
979     */
980    public Condition setCode(CodeableConcept value) { 
981      this.code = value;
982      return this;
983    }
984
985    /**
986     * @return {@link #bodySite} (The anatomical location where this condition manifests itself.)
987     */
988    public List<CodeableConcept> getBodySite() { 
989      if (this.bodySite == null)
990        this.bodySite = new ArrayList<CodeableConcept>();
991      return this.bodySite;
992    }
993
994    /**
995     * @return Returns a reference to <code>this</code> for easy method chaining
996     */
997    public Condition setBodySite(List<CodeableConcept> theBodySite) { 
998      this.bodySite = theBodySite;
999      return this;
1000    }
1001
1002    public boolean hasBodySite() { 
1003      if (this.bodySite == null)
1004        return false;
1005      for (CodeableConcept item : this.bodySite)
1006        if (!item.isEmpty())
1007          return true;
1008      return false;
1009    }
1010
1011    public CodeableConcept addBodySite() { //3
1012      CodeableConcept t = new CodeableConcept();
1013      if (this.bodySite == null)
1014        this.bodySite = new ArrayList<CodeableConcept>();
1015      this.bodySite.add(t);
1016      return t;
1017    }
1018
1019    public Condition addBodySite(CodeableConcept t) { //3
1020      if (t == null)
1021        return this;
1022      if (this.bodySite == null)
1023        this.bodySite = new ArrayList<CodeableConcept>();
1024      this.bodySite.add(t);
1025      return this;
1026    }
1027
1028    /**
1029     * @return The first repetition of repeating field {@link #bodySite}, creating it if it does not already exist
1030     */
1031    public CodeableConcept getBodySiteFirstRep() { 
1032      if (getBodySite().isEmpty()) {
1033        addBodySite();
1034      }
1035      return getBodySite().get(0);
1036    }
1037
1038    /**
1039     * @return {@link #subject} (Indicates the patient or group who the condition record is associated with.)
1040     */
1041    public Reference getSubject() { 
1042      if (this.subject == null)
1043        if (Configuration.errorOnAutoCreate())
1044          throw new Error("Attempt to auto-create Condition.subject");
1045        else if (Configuration.doAutoCreate())
1046          this.subject = new Reference(); // cc
1047      return this.subject;
1048    }
1049
1050    public boolean hasSubject() { 
1051      return this.subject != null && !this.subject.isEmpty();
1052    }
1053
1054    /**
1055     * @param value {@link #subject} (Indicates the patient or group who the condition record is associated with.)
1056     */
1057    public Condition setSubject(Reference value) { 
1058      this.subject = value;
1059      return this;
1060    }
1061
1062    /**
1063     * @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. (Indicates the patient or group who the condition record is associated with.)
1064     */
1065    public Resource getSubjectTarget() { 
1066      return this.subjectTarget;
1067    }
1068
1069    /**
1070     * @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. (Indicates the patient or group who the condition record is associated with.)
1071     */
1072    public Condition setSubjectTarget(Resource value) { 
1073      this.subjectTarget = value;
1074      return this;
1075    }
1076
1077    /**
1078     * @return {@link #encounter} (The Encounter during which this Condition was created or to which the creation of this record is tightly associated.)
1079     */
1080    public Reference getEncounter() { 
1081      if (this.encounter == null)
1082        if (Configuration.errorOnAutoCreate())
1083          throw new Error("Attempt to auto-create Condition.encounter");
1084        else if (Configuration.doAutoCreate())
1085          this.encounter = new Reference(); // cc
1086      return this.encounter;
1087    }
1088
1089    public boolean hasEncounter() { 
1090      return this.encounter != null && !this.encounter.isEmpty();
1091    }
1092
1093    /**
1094     * @param value {@link #encounter} (The Encounter during which this Condition was created or to which the creation of this record is tightly associated.)
1095     */
1096    public Condition setEncounter(Reference value) { 
1097      this.encounter = value;
1098      return this;
1099    }
1100
1101    /**
1102     * @return {@link #encounter} 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 during which this Condition was created or to which the creation of this record is tightly associated.)
1103     */
1104    public Encounter getEncounterTarget() { 
1105      if (this.encounterTarget == null)
1106        if (Configuration.errorOnAutoCreate())
1107          throw new Error("Attempt to auto-create Condition.encounter");
1108        else if (Configuration.doAutoCreate())
1109          this.encounterTarget = new Encounter(); // aa
1110      return this.encounterTarget;
1111    }
1112
1113    /**
1114     * @param value {@link #encounter} 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 during which this Condition was created or to which the creation of this record is tightly associated.)
1115     */
1116    public Condition setEncounterTarget(Encounter value) { 
1117      this.encounterTarget = value;
1118      return this;
1119    }
1120
1121    /**
1122     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1123     */
1124    public Type getOnset() { 
1125      return this.onset;
1126    }
1127
1128    /**
1129     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1130     */
1131    public DateTimeType getOnsetDateTimeType() throws FHIRException { 
1132      if (this.onset == null)
1133        this.onset = new DateTimeType();
1134      if (!(this.onset instanceof DateTimeType))
1135        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.onset.getClass().getName()+" was encountered");
1136      return (DateTimeType) this.onset;
1137    }
1138
1139    public boolean hasOnsetDateTimeType() { 
1140      return this != null && this.onset instanceof DateTimeType;
1141    }
1142
1143    /**
1144     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1145     */
1146    public Age getOnsetAge() throws FHIRException { 
1147      if (this.onset == null)
1148        this.onset = new Age();
1149      if (!(this.onset instanceof Age))
1150        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.onset.getClass().getName()+" was encountered");
1151      return (Age) this.onset;
1152    }
1153
1154    public boolean hasOnsetAge() { 
1155      return this != null && this.onset instanceof Age;
1156    }
1157
1158    /**
1159     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1160     */
1161    public Period getOnsetPeriod() throws FHIRException { 
1162      if (this.onset == null)
1163        this.onset = new Period();
1164      if (!(this.onset instanceof Period))
1165        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.onset.getClass().getName()+" was encountered");
1166      return (Period) this.onset;
1167    }
1168
1169    public boolean hasOnsetPeriod() { 
1170      return this != null && this.onset instanceof Period;
1171    }
1172
1173    /**
1174     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1175     */
1176    public Range getOnsetRange() throws FHIRException { 
1177      if (this.onset == null)
1178        this.onset = new Range();
1179      if (!(this.onset instanceof Range))
1180        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.onset.getClass().getName()+" was encountered");
1181      return (Range) this.onset;
1182    }
1183
1184    public boolean hasOnsetRange() { 
1185      return this != null && this.onset instanceof Range;
1186    }
1187
1188    /**
1189     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1190     */
1191    public StringType getOnsetStringType() throws FHIRException { 
1192      if (this.onset == null)
1193        this.onset = new StringType();
1194      if (!(this.onset instanceof StringType))
1195        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.onset.getClass().getName()+" was encountered");
1196      return (StringType) this.onset;
1197    }
1198
1199    public boolean hasOnsetStringType() { 
1200      return this != null && this.onset instanceof StringType;
1201    }
1202
1203    public boolean hasOnset() { 
1204      return this.onset != null && !this.onset.isEmpty();
1205    }
1206
1207    /**
1208     * @param value {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1209     */
1210    public Condition setOnset(Type value) { 
1211      if (value != null && !(value instanceof DateTimeType || value instanceof Age || value instanceof Period || value instanceof Range || value instanceof StringType))
1212        throw new Error("Not the right type for Condition.onset[x]: "+value.fhirType());
1213      this.onset = value;
1214      return this;
1215    }
1216
1217    /**
1218     * @return {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1219     */
1220    public Type getAbatement() { 
1221      return this.abatement;
1222    }
1223
1224    /**
1225     * @return {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1226     */
1227    public DateTimeType getAbatementDateTimeType() throws FHIRException { 
1228      if (this.abatement == null)
1229        this.abatement = new DateTimeType();
1230      if (!(this.abatement instanceof DateTimeType))
1231        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.abatement.getClass().getName()+" was encountered");
1232      return (DateTimeType) this.abatement;
1233    }
1234
1235    public boolean hasAbatementDateTimeType() { 
1236      return this != null && this.abatement instanceof DateTimeType;
1237    }
1238
1239    /**
1240     * @return {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1241     */
1242    public Age getAbatementAge() throws FHIRException { 
1243      if (this.abatement == null)
1244        this.abatement = new Age();
1245      if (!(this.abatement instanceof Age))
1246        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.abatement.getClass().getName()+" was encountered");
1247      return (Age) this.abatement;
1248    }
1249
1250    public boolean hasAbatementAge() { 
1251      return this != null && this.abatement instanceof Age;
1252    }
1253
1254    /**
1255     * @return {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1256     */
1257    public Period getAbatementPeriod() throws FHIRException { 
1258      if (this.abatement == null)
1259        this.abatement = new Period();
1260      if (!(this.abatement instanceof Period))
1261        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.abatement.getClass().getName()+" was encountered");
1262      return (Period) this.abatement;
1263    }
1264
1265    public boolean hasAbatementPeriod() { 
1266      return this != null && this.abatement instanceof Period;
1267    }
1268
1269    /**
1270     * @return {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1271     */
1272    public Range getAbatementRange() throws FHIRException { 
1273      if (this.abatement == null)
1274        this.abatement = new Range();
1275      if (!(this.abatement instanceof Range))
1276        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.abatement.getClass().getName()+" was encountered");
1277      return (Range) this.abatement;
1278    }
1279
1280    public boolean hasAbatementRange() { 
1281      return this != null && this.abatement instanceof Range;
1282    }
1283
1284    /**
1285     * @return {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1286     */
1287    public StringType getAbatementStringType() throws FHIRException { 
1288      if (this.abatement == null)
1289        this.abatement = new StringType();
1290      if (!(this.abatement instanceof StringType))
1291        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.abatement.getClass().getName()+" was encountered");
1292      return (StringType) this.abatement;
1293    }
1294
1295    public boolean hasAbatementStringType() { 
1296      return this != null && this.abatement instanceof StringType;
1297    }
1298
1299    public boolean hasAbatement() { 
1300      return this.abatement != null && !this.abatement.isEmpty();
1301    }
1302
1303    /**
1304     * @param value {@link #abatement} (The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.)
1305     */
1306    public Condition setAbatement(Type value) { 
1307      if (value != null && !(value instanceof DateTimeType || value instanceof Age || value instanceof Period || value instanceof Range || value instanceof StringType))
1308        throw new Error("Not the right type for Condition.abatement[x]: "+value.fhirType());
1309      this.abatement = value;
1310      return this;
1311    }
1312
1313    /**
1314     * @return {@link #recordedDate} (The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.). This is the underlying object with id, value and extensions. The accessor "getRecordedDate" gives direct access to the value
1315     */
1316    public DateTimeType getRecordedDateElement() { 
1317      if (this.recordedDate == null)
1318        if (Configuration.errorOnAutoCreate())
1319          throw new Error("Attempt to auto-create Condition.recordedDate");
1320        else if (Configuration.doAutoCreate())
1321          this.recordedDate = new DateTimeType(); // bb
1322      return this.recordedDate;
1323    }
1324
1325    public boolean hasRecordedDateElement() { 
1326      return this.recordedDate != null && !this.recordedDate.isEmpty();
1327    }
1328
1329    public boolean hasRecordedDate() { 
1330      return this.recordedDate != null && !this.recordedDate.isEmpty();
1331    }
1332
1333    /**
1334     * @param value {@link #recordedDate} (The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.). This is the underlying object with id, value and extensions. The accessor "getRecordedDate" gives direct access to the value
1335     */
1336    public Condition setRecordedDateElement(DateTimeType value) { 
1337      this.recordedDate = value;
1338      return this;
1339    }
1340
1341    /**
1342     * @return The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.
1343     */
1344    public Date getRecordedDate() { 
1345      return this.recordedDate == null ? null : this.recordedDate.getValue();
1346    }
1347
1348    /**
1349     * @param value The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.
1350     */
1351    public Condition setRecordedDate(Date value) { 
1352      if (value == null)
1353        this.recordedDate = null;
1354      else {
1355        if (this.recordedDate == null)
1356          this.recordedDate = new DateTimeType();
1357        this.recordedDate.setValue(value);
1358      }
1359      return this;
1360    }
1361
1362    /**
1363     * @return {@link #recorder} (Individual who recorded the record and takes responsibility for its content.)
1364     */
1365    public Reference getRecorder() { 
1366      if (this.recorder == null)
1367        if (Configuration.errorOnAutoCreate())
1368          throw new Error("Attempt to auto-create Condition.recorder");
1369        else if (Configuration.doAutoCreate())
1370          this.recorder = new Reference(); // cc
1371      return this.recorder;
1372    }
1373
1374    public boolean hasRecorder() { 
1375      return this.recorder != null && !this.recorder.isEmpty();
1376    }
1377
1378    /**
1379     * @param value {@link #recorder} (Individual who recorded the record and takes responsibility for its content.)
1380     */
1381    public Condition setRecorder(Reference value) { 
1382      this.recorder = value;
1383      return this;
1384    }
1385
1386    /**
1387     * @return {@link #recorder} 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. (Individual who recorded the record and takes responsibility for its content.)
1388     */
1389    public Resource getRecorderTarget() { 
1390      return this.recorderTarget;
1391    }
1392
1393    /**
1394     * @param value {@link #recorder} 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. (Individual who recorded the record and takes responsibility for its content.)
1395     */
1396    public Condition setRecorderTarget(Resource value) { 
1397      this.recorderTarget = value;
1398      return this;
1399    }
1400
1401    /**
1402     * @return {@link #asserter} (Individual who is making the condition statement.)
1403     */
1404    public Reference getAsserter() { 
1405      if (this.asserter == null)
1406        if (Configuration.errorOnAutoCreate())
1407          throw new Error("Attempt to auto-create Condition.asserter");
1408        else if (Configuration.doAutoCreate())
1409          this.asserter = new Reference(); // cc
1410      return this.asserter;
1411    }
1412
1413    public boolean hasAsserter() { 
1414      return this.asserter != null && !this.asserter.isEmpty();
1415    }
1416
1417    /**
1418     * @param value {@link #asserter} (Individual who is making the condition statement.)
1419     */
1420    public Condition setAsserter(Reference value) { 
1421      this.asserter = value;
1422      return this;
1423    }
1424
1425    /**
1426     * @return {@link #asserter} 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. (Individual who is making the condition statement.)
1427     */
1428    public Resource getAsserterTarget() { 
1429      return this.asserterTarget;
1430    }
1431
1432    /**
1433     * @param value {@link #asserter} 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. (Individual who is making the condition statement.)
1434     */
1435    public Condition setAsserterTarget(Resource value) { 
1436      this.asserterTarget = value;
1437      return this;
1438    }
1439
1440    /**
1441     * @return {@link #stage} (Clinical stage or grade of a condition. May include formal severity assessments.)
1442     */
1443    public List<ConditionStageComponent> getStage() { 
1444      if (this.stage == null)
1445        this.stage = new ArrayList<ConditionStageComponent>();
1446      return this.stage;
1447    }
1448
1449    /**
1450     * @return Returns a reference to <code>this</code> for easy method chaining
1451     */
1452    public Condition setStage(List<ConditionStageComponent> theStage) { 
1453      this.stage = theStage;
1454      return this;
1455    }
1456
1457    public boolean hasStage() { 
1458      if (this.stage == null)
1459        return false;
1460      for (ConditionStageComponent item : this.stage)
1461        if (!item.isEmpty())
1462          return true;
1463      return false;
1464    }
1465
1466    public ConditionStageComponent addStage() { //3
1467      ConditionStageComponent t = new ConditionStageComponent();
1468      if (this.stage == null)
1469        this.stage = new ArrayList<ConditionStageComponent>();
1470      this.stage.add(t);
1471      return t;
1472    }
1473
1474    public Condition addStage(ConditionStageComponent t) { //3
1475      if (t == null)
1476        return this;
1477      if (this.stage == null)
1478        this.stage = new ArrayList<ConditionStageComponent>();
1479      this.stage.add(t);
1480      return this;
1481    }
1482
1483    /**
1484     * @return The first repetition of repeating field {@link #stage}, creating it if it does not already exist
1485     */
1486    public ConditionStageComponent getStageFirstRep() { 
1487      if (getStage().isEmpty()) {
1488        addStage();
1489      }
1490      return getStage().get(0);
1491    }
1492
1493    /**
1494     * @return {@link #evidence} (Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition.)
1495     */
1496    public List<ConditionEvidenceComponent> getEvidence() { 
1497      if (this.evidence == null)
1498        this.evidence = new ArrayList<ConditionEvidenceComponent>();
1499      return this.evidence;
1500    }
1501
1502    /**
1503     * @return Returns a reference to <code>this</code> for easy method chaining
1504     */
1505    public Condition setEvidence(List<ConditionEvidenceComponent> theEvidence) { 
1506      this.evidence = theEvidence;
1507      return this;
1508    }
1509
1510    public boolean hasEvidence() { 
1511      if (this.evidence == null)
1512        return false;
1513      for (ConditionEvidenceComponent item : this.evidence)
1514        if (!item.isEmpty())
1515          return true;
1516      return false;
1517    }
1518
1519    public ConditionEvidenceComponent addEvidence() { //3
1520      ConditionEvidenceComponent t = new ConditionEvidenceComponent();
1521      if (this.evidence == null)
1522        this.evidence = new ArrayList<ConditionEvidenceComponent>();
1523      this.evidence.add(t);
1524      return t;
1525    }
1526
1527    public Condition addEvidence(ConditionEvidenceComponent t) { //3
1528      if (t == null)
1529        return this;
1530      if (this.evidence == null)
1531        this.evidence = new ArrayList<ConditionEvidenceComponent>();
1532      this.evidence.add(t);
1533      return this;
1534    }
1535
1536    /**
1537     * @return The first repetition of repeating field {@link #evidence}, creating it if it does not already exist
1538     */
1539    public ConditionEvidenceComponent getEvidenceFirstRep() { 
1540      if (getEvidence().isEmpty()) {
1541        addEvidence();
1542      }
1543      return getEvidence().get(0);
1544    }
1545
1546    /**
1547     * @return {@link #note} (Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis.)
1548     */
1549    public List<Annotation> getNote() { 
1550      if (this.note == null)
1551        this.note = new ArrayList<Annotation>();
1552      return this.note;
1553    }
1554
1555    /**
1556     * @return Returns a reference to <code>this</code> for easy method chaining
1557     */
1558    public Condition setNote(List<Annotation> theNote) { 
1559      this.note = theNote;
1560      return this;
1561    }
1562
1563    public boolean hasNote() { 
1564      if (this.note == null)
1565        return false;
1566      for (Annotation item : this.note)
1567        if (!item.isEmpty())
1568          return true;
1569      return false;
1570    }
1571
1572    public Annotation addNote() { //3
1573      Annotation t = new Annotation();
1574      if (this.note == null)
1575        this.note = new ArrayList<Annotation>();
1576      this.note.add(t);
1577      return t;
1578    }
1579
1580    public Condition addNote(Annotation t) { //3
1581      if (t == null)
1582        return this;
1583      if (this.note == null)
1584        this.note = new ArrayList<Annotation>();
1585      this.note.add(t);
1586      return this;
1587    }
1588
1589    /**
1590     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist
1591     */
1592    public Annotation getNoteFirstRep() { 
1593      if (getNote().isEmpty()) {
1594        addNote();
1595      }
1596      return getNote().get(0);
1597    }
1598
1599      protected void listChildren(List<Property> children) {
1600        super.listChildren(children);
1601        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this condition by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
1602        children.add(new Property("clinicalStatus", "CodeableConcept", "The clinical status of the condition.", 0, 1, clinicalStatus));
1603        children.add(new Property("verificationStatus", "CodeableConcept", "The verification status to support the clinical status of the condition.", 0, 1, verificationStatus));
1604        children.add(new Property("category", "CodeableConcept", "A category assigned to the condition.", 0, java.lang.Integer.MAX_VALUE, category));
1605        children.add(new Property("severity", "CodeableConcept", "A subjective assessment of the severity of the condition as evaluated by the clinician.", 0, 1, severity));
1606        children.add(new Property("code", "CodeableConcept", "Identification of the condition, problem or diagnosis.", 0, 1, code));
1607        children.add(new Property("bodySite", "CodeableConcept", "The anatomical location where this condition manifests itself.", 0, java.lang.Integer.MAX_VALUE, bodySite));
1608        children.add(new Property("subject", "Reference(Patient|Group)", "Indicates the patient or group who the condition record is associated with.", 0, 1, subject));
1609        children.add(new Property("encounter", "Reference(Encounter)", "The Encounter during which this Condition was created or to which the creation of this record is tightly associated.", 0, 1, encounter));
1610        children.add(new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset));
1611        children.add(new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement));
1612        children.add(new Property("recordedDate", "dateTime", "The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.", 0, 1, recordedDate));
1613        children.add(new Property("recorder", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson)", "Individual who recorded the record and takes responsibility for its content.", 0, 1, recorder));
1614        children.add(new Property("asserter", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson)", "Individual who is making the condition statement.", 0, 1, asserter));
1615        children.add(new Property("stage", "", "Clinical stage or grade of a condition. May include formal severity assessments.", 0, java.lang.Integer.MAX_VALUE, stage));
1616        children.add(new Property("evidence", "", "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition.", 0, java.lang.Integer.MAX_VALUE, evidence));
1617        children.add(new Property("note", "Annotation", "Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis.", 0, java.lang.Integer.MAX_VALUE, note));
1618      }
1619
1620      @Override
1621      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1622        switch (_hash) {
1623        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this condition by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
1624        case -462853915: /*clinicalStatus*/  return new Property("clinicalStatus", "CodeableConcept", "The clinical status of the condition.", 0, 1, clinicalStatus);
1625        case -842509843: /*verificationStatus*/  return new Property("verificationStatus", "CodeableConcept", "The verification status to support the clinical status of the condition.", 0, 1, verificationStatus);
1626        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A category assigned to the condition.", 0, java.lang.Integer.MAX_VALUE, category);
1627        case 1478300413: /*severity*/  return new Property("severity", "CodeableConcept", "A subjective assessment of the severity of the condition as evaluated by the clinician.", 0, 1, severity);
1628        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Identification of the condition, problem or diagnosis.", 0, 1, code);
1629        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableConcept", "The anatomical location where this condition manifests itself.", 0, java.lang.Integer.MAX_VALUE, bodySite);
1630        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "Indicates the patient or group who the condition record is associated with.", 0, 1, subject);
1631        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The Encounter during which this Condition was created or to which the creation of this record is tightly associated.", 0, 1, encounter);
1632        case -1886216323: /*onset[x]*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1633        case 105901603: /*onset*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1634        case -1701663010: /*onsetDateTime*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1635        case -1886241828: /*onsetAge*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1636        case -1545082428: /*onsetPeriod*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1637        case -186664742: /*onsetRange*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1638        case -1445342188: /*onsetString*/  return new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time  the condition began, in the opinion of the clinician.", 0, 1, onset);
1639        case -584196495: /*abatement[x]*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1640        case -921554001: /*abatement*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1641        case 44869738: /*abatementDateTime*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1642        case -584222000: /*abatementAge*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1643        case -922036656: /*abatementPeriod*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1644        case 1218906830: /*abatementRange*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1645        case -822296416: /*abatementString*/  return new Property("abatement[x]", "dateTime|Age|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, 1, abatement);
1646        case -1952893826: /*recordedDate*/  return new Property("recordedDate", "dateTime", "The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.", 0, 1, recordedDate);
1647        case -799233858: /*recorder*/  return new Property("recorder", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson)", "Individual who recorded the record and takes responsibility for its content.", 0, 1, recorder);
1648        case -373242253: /*asserter*/  return new Property("asserter", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson)", "Individual who is making the condition statement.", 0, 1, asserter);
1649        case 109757182: /*stage*/  return new Property("stage", "", "Clinical stage or grade of a condition. May include formal severity assessments.", 0, java.lang.Integer.MAX_VALUE, stage);
1650        case 382967383: /*evidence*/  return new Property("evidence", "", "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition.", 0, java.lang.Integer.MAX_VALUE, evidence);
1651        case 3387378: /*note*/  return new Property("note", "Annotation", "Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis.", 0, java.lang.Integer.MAX_VALUE, note);
1652        default: return super.getNamedProperty(_hash, _name, _checkValid);
1653        }
1654
1655      }
1656
1657      @Override
1658      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1659        switch (hash) {
1660        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1661        case -462853915: /*clinicalStatus*/ return this.clinicalStatus == null ? new Base[0] : new Base[] {this.clinicalStatus}; // CodeableConcept
1662        case -842509843: /*verificationStatus*/ return this.verificationStatus == null ? new Base[0] : new Base[] {this.verificationStatus}; // CodeableConcept
1663        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1664        case 1478300413: /*severity*/ return this.severity == null ? new Base[0] : new Base[] {this.severity}; // CodeableConcept
1665        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1666        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableConcept
1667        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1668        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1669        case 105901603: /*onset*/ return this.onset == null ? new Base[0] : new Base[] {this.onset}; // Type
1670        case -921554001: /*abatement*/ return this.abatement == null ? new Base[0] : new Base[] {this.abatement}; // Type
1671        case -1952893826: /*recordedDate*/ return this.recordedDate == null ? new Base[0] : new Base[] {this.recordedDate}; // DateTimeType
1672        case -799233858: /*recorder*/ return this.recorder == null ? new Base[0] : new Base[] {this.recorder}; // Reference
1673        case -373242253: /*asserter*/ return this.asserter == null ? new Base[0] : new Base[] {this.asserter}; // Reference
1674        case 109757182: /*stage*/ return this.stage == null ? new Base[0] : this.stage.toArray(new Base[this.stage.size()]); // ConditionStageComponent
1675        case 382967383: /*evidence*/ return this.evidence == null ? new Base[0] : this.evidence.toArray(new Base[this.evidence.size()]); // ConditionEvidenceComponent
1676        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1677        default: return super.getProperty(hash, name, checkValid);
1678        }
1679
1680      }
1681
1682      @Override
1683      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1684        switch (hash) {
1685        case -1618432855: // identifier
1686          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1687          return value;
1688        case -462853915: // clinicalStatus
1689          this.clinicalStatus = castToCodeableConcept(value); // CodeableConcept
1690          return value;
1691        case -842509843: // verificationStatus
1692          this.verificationStatus = castToCodeableConcept(value); // CodeableConcept
1693          return value;
1694        case 50511102: // category
1695          this.getCategory().add(castToCodeableConcept(value)); // CodeableConcept
1696          return value;
1697        case 1478300413: // severity
1698          this.severity = castToCodeableConcept(value); // CodeableConcept
1699          return value;
1700        case 3059181: // code
1701          this.code = castToCodeableConcept(value); // CodeableConcept
1702          return value;
1703        case 1702620169: // bodySite
1704          this.getBodySite().add(castToCodeableConcept(value)); // CodeableConcept
1705          return value;
1706        case -1867885268: // subject
1707          this.subject = castToReference(value); // Reference
1708          return value;
1709        case 1524132147: // encounter
1710          this.encounter = castToReference(value); // Reference
1711          return value;
1712        case 105901603: // onset
1713          this.onset = castToType(value); // Type
1714          return value;
1715        case -921554001: // abatement
1716          this.abatement = castToType(value); // Type
1717          return value;
1718        case -1952893826: // recordedDate
1719          this.recordedDate = castToDateTime(value); // DateTimeType
1720          return value;
1721        case -799233858: // recorder
1722          this.recorder = castToReference(value); // Reference
1723          return value;
1724        case -373242253: // asserter
1725          this.asserter = castToReference(value); // Reference
1726          return value;
1727        case 109757182: // stage
1728          this.getStage().add((ConditionStageComponent) value); // ConditionStageComponent
1729          return value;
1730        case 382967383: // evidence
1731          this.getEvidence().add((ConditionEvidenceComponent) value); // ConditionEvidenceComponent
1732          return value;
1733        case 3387378: // note
1734          this.getNote().add(castToAnnotation(value)); // Annotation
1735          return value;
1736        default: return super.setProperty(hash, name, value);
1737        }
1738
1739      }
1740
1741      @Override
1742      public Base setProperty(String name, Base value) throws FHIRException {
1743        if (name.equals("identifier")) {
1744          this.getIdentifier().add(castToIdentifier(value));
1745        } else if (name.equals("clinicalStatus")) {
1746          this.clinicalStatus = castToCodeableConcept(value); // CodeableConcept
1747        } else if (name.equals("verificationStatus")) {
1748          this.verificationStatus = castToCodeableConcept(value); // CodeableConcept
1749        } else if (name.equals("category")) {
1750          this.getCategory().add(castToCodeableConcept(value));
1751        } else if (name.equals("severity")) {
1752          this.severity = castToCodeableConcept(value); // CodeableConcept
1753        } else if (name.equals("code")) {
1754          this.code = castToCodeableConcept(value); // CodeableConcept
1755        } else if (name.equals("bodySite")) {
1756          this.getBodySite().add(castToCodeableConcept(value));
1757        } else if (name.equals("subject")) {
1758          this.subject = castToReference(value); // Reference
1759        } else if (name.equals("encounter")) {
1760          this.encounter = castToReference(value); // Reference
1761        } else if (name.equals("onset[x]")) {
1762          this.onset = castToType(value); // Type
1763        } else if (name.equals("abatement[x]")) {
1764          this.abatement = castToType(value); // Type
1765        } else if (name.equals("recordedDate")) {
1766          this.recordedDate = castToDateTime(value); // DateTimeType
1767        } else if (name.equals("recorder")) {
1768          this.recorder = castToReference(value); // Reference
1769        } else if (name.equals("asserter")) {
1770          this.asserter = castToReference(value); // Reference
1771        } else if (name.equals("stage")) {
1772          this.getStage().add((ConditionStageComponent) value);
1773        } else if (name.equals("evidence")) {
1774          this.getEvidence().add((ConditionEvidenceComponent) value);
1775        } else if (name.equals("note")) {
1776          this.getNote().add(castToAnnotation(value));
1777        } else
1778          return super.setProperty(name, value);
1779        return value;
1780      }
1781
1782      @Override
1783      public Base makeProperty(int hash, String name) throws FHIRException {
1784        switch (hash) {
1785        case -1618432855:  return addIdentifier(); 
1786        case -462853915:  return getClinicalStatus(); 
1787        case -842509843:  return getVerificationStatus(); 
1788        case 50511102:  return addCategory(); 
1789        case 1478300413:  return getSeverity(); 
1790        case 3059181:  return getCode(); 
1791        case 1702620169:  return addBodySite(); 
1792        case -1867885268:  return getSubject(); 
1793        case 1524132147:  return getEncounter(); 
1794        case -1886216323:  return getOnset(); 
1795        case 105901603:  return getOnset(); 
1796        case -584196495:  return getAbatement(); 
1797        case -921554001:  return getAbatement(); 
1798        case -1952893826:  return getRecordedDateElement();
1799        case -799233858:  return getRecorder(); 
1800        case -373242253:  return getAsserter(); 
1801        case 109757182:  return addStage(); 
1802        case 382967383:  return addEvidence(); 
1803        case 3387378:  return addNote(); 
1804        default: return super.makeProperty(hash, name);
1805        }
1806
1807      }
1808
1809      @Override
1810      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1811        switch (hash) {
1812        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1813        case -462853915: /*clinicalStatus*/ return new String[] {"CodeableConcept"};
1814        case -842509843: /*verificationStatus*/ return new String[] {"CodeableConcept"};
1815        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1816        case 1478300413: /*severity*/ return new String[] {"CodeableConcept"};
1817        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1818        case 1702620169: /*bodySite*/ return new String[] {"CodeableConcept"};
1819        case -1867885268: /*subject*/ return new String[] {"Reference"};
1820        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1821        case 105901603: /*onset*/ return new String[] {"dateTime", "Age", "Period", "Range", "string"};
1822        case -921554001: /*abatement*/ return new String[] {"dateTime", "Age", "Period", "Range", "string"};
1823        case -1952893826: /*recordedDate*/ return new String[] {"dateTime"};
1824        case -799233858: /*recorder*/ return new String[] {"Reference"};
1825        case -373242253: /*asserter*/ return new String[] {"Reference"};
1826        case 109757182: /*stage*/ return new String[] {};
1827        case 382967383: /*evidence*/ return new String[] {};
1828        case 3387378: /*note*/ return new String[] {"Annotation"};
1829        default: return super.getTypesForProperty(hash, name);
1830        }
1831
1832      }
1833
1834      @Override
1835      public Base addChild(String name) throws FHIRException {
1836        if (name.equals("identifier")) {
1837          return addIdentifier();
1838        }
1839        else if (name.equals("clinicalStatus")) {
1840          this.clinicalStatus = new CodeableConcept();
1841          return this.clinicalStatus;
1842        }
1843        else if (name.equals("verificationStatus")) {
1844          this.verificationStatus = new CodeableConcept();
1845          return this.verificationStatus;
1846        }
1847        else if (name.equals("category")) {
1848          return addCategory();
1849        }
1850        else if (name.equals("severity")) {
1851          this.severity = new CodeableConcept();
1852          return this.severity;
1853        }
1854        else if (name.equals("code")) {
1855          this.code = new CodeableConcept();
1856          return this.code;
1857        }
1858        else if (name.equals("bodySite")) {
1859          return addBodySite();
1860        }
1861        else if (name.equals("subject")) {
1862          this.subject = new Reference();
1863          return this.subject;
1864        }
1865        else if (name.equals("encounter")) {
1866          this.encounter = new Reference();
1867          return this.encounter;
1868        }
1869        else if (name.equals("onsetDateTime")) {
1870          this.onset = new DateTimeType();
1871          return this.onset;
1872        }
1873        else if (name.equals("onsetAge")) {
1874          this.onset = new Age();
1875          return this.onset;
1876        }
1877        else if (name.equals("onsetPeriod")) {
1878          this.onset = new Period();
1879          return this.onset;
1880        }
1881        else if (name.equals("onsetRange")) {
1882          this.onset = new Range();
1883          return this.onset;
1884        }
1885        else if (name.equals("onsetString")) {
1886          this.onset = new StringType();
1887          return this.onset;
1888        }
1889        else if (name.equals("abatementDateTime")) {
1890          this.abatement = new DateTimeType();
1891          return this.abatement;
1892        }
1893        else if (name.equals("abatementAge")) {
1894          this.abatement = new Age();
1895          return this.abatement;
1896        }
1897        else if (name.equals("abatementPeriod")) {
1898          this.abatement = new Period();
1899          return this.abatement;
1900        }
1901        else if (name.equals("abatementRange")) {
1902          this.abatement = new Range();
1903          return this.abatement;
1904        }
1905        else if (name.equals("abatementString")) {
1906          this.abatement = new StringType();
1907          return this.abatement;
1908        }
1909        else if (name.equals("recordedDate")) {
1910          throw new FHIRException("Cannot call addChild on a primitive type Condition.recordedDate");
1911        }
1912        else if (name.equals("recorder")) {
1913          this.recorder = new Reference();
1914          return this.recorder;
1915        }
1916        else if (name.equals("asserter")) {
1917          this.asserter = new Reference();
1918          return this.asserter;
1919        }
1920        else if (name.equals("stage")) {
1921          return addStage();
1922        }
1923        else if (name.equals("evidence")) {
1924          return addEvidence();
1925        }
1926        else if (name.equals("note")) {
1927          return addNote();
1928        }
1929        else
1930          return super.addChild(name);
1931      }
1932
1933  public String fhirType() {
1934    return "Condition";
1935
1936  }
1937
1938      public Condition copy() {
1939        Condition dst = new Condition();
1940        copyValues(dst);
1941        if (identifier != null) {
1942          dst.identifier = new ArrayList<Identifier>();
1943          for (Identifier i : identifier)
1944            dst.identifier.add(i.copy());
1945        };
1946        dst.clinicalStatus = clinicalStatus == null ? null : clinicalStatus.copy();
1947        dst.verificationStatus = verificationStatus == null ? null : verificationStatus.copy();
1948        if (category != null) {
1949          dst.category = new ArrayList<CodeableConcept>();
1950          for (CodeableConcept i : category)
1951            dst.category.add(i.copy());
1952        };
1953        dst.severity = severity == null ? null : severity.copy();
1954        dst.code = code == null ? null : code.copy();
1955        if (bodySite != null) {
1956          dst.bodySite = new ArrayList<CodeableConcept>();
1957          for (CodeableConcept i : bodySite)
1958            dst.bodySite.add(i.copy());
1959        };
1960        dst.subject = subject == null ? null : subject.copy();
1961        dst.encounter = encounter == null ? null : encounter.copy();
1962        dst.onset = onset == null ? null : onset.copy();
1963        dst.abatement = abatement == null ? null : abatement.copy();
1964        dst.recordedDate = recordedDate == null ? null : recordedDate.copy();
1965        dst.recorder = recorder == null ? null : recorder.copy();
1966        dst.asserter = asserter == null ? null : asserter.copy();
1967        if (stage != null) {
1968          dst.stage = new ArrayList<ConditionStageComponent>();
1969          for (ConditionStageComponent i : stage)
1970            dst.stage.add(i.copy());
1971        };
1972        if (evidence != null) {
1973          dst.evidence = new ArrayList<ConditionEvidenceComponent>();
1974          for (ConditionEvidenceComponent i : evidence)
1975            dst.evidence.add(i.copy());
1976        };
1977        if (note != null) {
1978          dst.note = new ArrayList<Annotation>();
1979          for (Annotation i : note)
1980            dst.note.add(i.copy());
1981        };
1982        return dst;
1983      }
1984
1985      protected Condition typedCopy() {
1986        return copy();
1987      }
1988
1989      @Override
1990      public boolean equalsDeep(Base other_) {
1991        if (!super.equalsDeep(other_))
1992          return false;
1993        if (!(other_ instanceof Condition))
1994          return false;
1995        Condition o = (Condition) other_;
1996        return compareDeep(identifier, o.identifier, true) && compareDeep(clinicalStatus, o.clinicalStatus, true)
1997           && compareDeep(verificationStatus, o.verificationStatus, true) && compareDeep(category, o.category, true)
1998           && compareDeep(severity, o.severity, true) && compareDeep(code, o.code, true) && compareDeep(bodySite, o.bodySite, true)
1999           && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true) && compareDeep(onset, o.onset, true)
2000           && compareDeep(abatement, o.abatement, true) && compareDeep(recordedDate, o.recordedDate, true)
2001           && compareDeep(recorder, o.recorder, true) && compareDeep(asserter, o.asserter, true) && compareDeep(stage, o.stage, true)
2002           && compareDeep(evidence, o.evidence, true) && compareDeep(note, o.note, true);
2003      }
2004
2005      @Override
2006      public boolean equalsShallow(Base other_) {
2007        if (!super.equalsShallow(other_))
2008          return false;
2009        if (!(other_ instanceof Condition))
2010          return false;
2011        Condition o = (Condition) other_;
2012        return compareValues(recordedDate, o.recordedDate, true);
2013      }
2014
2015      public boolean isEmpty() {
2016        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, clinicalStatus
2017          , verificationStatus, category, severity, code, bodySite, subject, encounter, onset
2018          , abatement, recordedDate, recorder, asserter, stage, evidence, note);
2019      }
2020
2021  @Override
2022  public ResourceType getResourceType() {
2023    return ResourceType.Condition;
2024   }
2025
2026 /**
2027   * Search parameter: <b>severity</b>
2028   * <p>
2029   * Description: <b>The severity of the condition</b><br>
2030   * Type: <b>token</b><br>
2031   * Path: <b>Condition.severity</b><br>
2032   * </p>
2033   */
2034  @SearchParamDefinition(name="severity", path="Condition.severity", description="The severity of the condition", type="token" )
2035  public static final String SP_SEVERITY = "severity";
2036 /**
2037   * <b>Fluent Client</b> search parameter constant for <b>severity</b>
2038   * <p>
2039   * Description: <b>The severity of the condition</b><br>
2040   * Type: <b>token</b><br>
2041   * Path: <b>Condition.severity</b><br>
2042   * </p>
2043   */
2044  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SEVERITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SEVERITY);
2045
2046 /**
2047   * Search parameter: <b>evidence-detail</b>
2048   * <p>
2049   * Description: <b>Supporting information found elsewhere</b><br>
2050   * Type: <b>reference</b><br>
2051   * Path: <b>Condition.evidence.detail</b><br>
2052   * </p>
2053   */
2054  @SearchParamDefinition(name="evidence-detail", path="Condition.evidence.detail", description="Supporting information found elsewhere", type="reference" )
2055  public static final String SP_EVIDENCE_DETAIL = "evidence-detail";
2056 /**
2057   * <b>Fluent Client</b> search parameter constant for <b>evidence-detail</b>
2058   * <p>
2059   * Description: <b>Supporting information found elsewhere</b><br>
2060   * Type: <b>reference</b><br>
2061   * Path: <b>Condition.evidence.detail</b><br>
2062   * </p>
2063   */
2064  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam EVIDENCE_DETAIL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_EVIDENCE_DETAIL);
2065
2066/**
2067   * Constant for fluent queries to be used to add include statements. Specifies
2068   * the path value of "<b>Condition:evidence-detail</b>".
2069   */
2070  public static final ca.uhn.fhir.model.api.Include INCLUDE_EVIDENCE_DETAIL = new ca.uhn.fhir.model.api.Include("Condition:evidence-detail").toLocked();
2071
2072 /**
2073   * Search parameter: <b>identifier</b>
2074   * <p>
2075   * Description: <b>A unique identifier of the condition record</b><br>
2076   * Type: <b>token</b><br>
2077   * Path: <b>Condition.identifier</b><br>
2078   * </p>
2079   */
2080  @SearchParamDefinition(name="identifier", path="Condition.identifier", description="A unique identifier of the condition record", type="token" )
2081  public static final String SP_IDENTIFIER = "identifier";
2082 /**
2083   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2084   * <p>
2085   * Description: <b>A unique identifier of the condition record</b><br>
2086   * Type: <b>token</b><br>
2087   * Path: <b>Condition.identifier</b><br>
2088   * </p>
2089   */
2090  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2091
2092 /**
2093   * Search parameter: <b>onset-info</b>
2094   * <p>
2095   * Description: <b>Onsets as a string</b><br>
2096   * Type: <b>string</b><br>
2097   * Path: <b>Condition.onset[x]</b><br>
2098   * </p>
2099   */
2100  @SearchParamDefinition(name="onset-info", path="Condition.onset.as(string)", description="Onsets as a string", type="string" )
2101  public static final String SP_ONSET_INFO = "onset-info";
2102 /**
2103   * <b>Fluent Client</b> search parameter constant for <b>onset-info</b>
2104   * <p>
2105   * Description: <b>Onsets as a string</b><br>
2106   * Type: <b>string</b><br>
2107   * Path: <b>Condition.onset[x]</b><br>
2108   * </p>
2109   */
2110  public static final ca.uhn.fhir.rest.gclient.StringClientParam ONSET_INFO = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ONSET_INFO);
2111
2112 /**
2113   * Search parameter: <b>recorded-date</b>
2114   * <p>
2115   * Description: <b>Date record was first recorded</b><br>
2116   * Type: <b>date</b><br>
2117   * Path: <b>Condition.recordedDate</b><br>
2118   * </p>
2119   */
2120  @SearchParamDefinition(name="recorded-date", path="Condition.recordedDate", description="Date record was first recorded", type="date" )
2121  public static final String SP_RECORDED_DATE = "recorded-date";
2122 /**
2123   * <b>Fluent Client</b> search parameter constant for <b>recorded-date</b>
2124   * <p>
2125   * Description: <b>Date record was first recorded</b><br>
2126   * Type: <b>date</b><br>
2127   * Path: <b>Condition.recordedDate</b><br>
2128   * </p>
2129   */
2130  public static final ca.uhn.fhir.rest.gclient.DateClientParam RECORDED_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_RECORDED_DATE);
2131
2132 /**
2133   * Search parameter: <b>code</b>
2134   * <p>
2135   * Description: <b>Code for the condition</b><br>
2136   * Type: <b>token</b><br>
2137   * Path: <b>Condition.code</b><br>
2138   * </p>
2139   */
2140  @SearchParamDefinition(name="code", path="Condition.code", description="Code for the condition", type="token" )
2141  public static final String SP_CODE = "code";
2142 /**
2143   * <b>Fluent Client</b> search parameter constant for <b>code</b>
2144   * <p>
2145   * Description: <b>Code for the condition</b><br>
2146   * Type: <b>token</b><br>
2147   * Path: <b>Condition.code</b><br>
2148   * </p>
2149   */
2150  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
2151
2152 /**
2153   * Search parameter: <b>evidence</b>
2154   * <p>
2155   * Description: <b>Manifestation/symptom</b><br>
2156   * Type: <b>token</b><br>
2157   * Path: <b>Condition.evidence.code</b><br>
2158   * </p>
2159   */
2160  @SearchParamDefinition(name="evidence", path="Condition.evidence.code", description="Manifestation/symptom", type="token" )
2161  public static final String SP_EVIDENCE = "evidence";
2162 /**
2163   * <b>Fluent Client</b> search parameter constant for <b>evidence</b>
2164   * <p>
2165   * Description: <b>Manifestation/symptom</b><br>
2166   * Type: <b>token</b><br>
2167   * Path: <b>Condition.evidence.code</b><br>
2168   * </p>
2169   */
2170  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVIDENCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVIDENCE);
2171
2172 /**
2173   * Search parameter: <b>subject</b>
2174   * <p>
2175   * Description: <b>Who has the condition?</b><br>
2176   * Type: <b>reference</b><br>
2177   * Path: <b>Condition.subject</b><br>
2178   * </p>
2179   */
2180  @SearchParamDefinition(name="subject", path="Condition.subject", description="Who has the condition?", type="reference", target={Group.class, Patient.class } )
2181  public static final String SP_SUBJECT = "subject";
2182 /**
2183   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2184   * <p>
2185   * Description: <b>Who has the condition?</b><br>
2186   * Type: <b>reference</b><br>
2187   * Path: <b>Condition.subject</b><br>
2188   * </p>
2189   */
2190  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2191
2192/**
2193   * Constant for fluent queries to be used to add include statements. Specifies
2194   * the path value of "<b>Condition:subject</b>".
2195   */
2196  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Condition:subject").toLocked();
2197
2198 /**
2199   * Search parameter: <b>verification-status</b>
2200   * <p>
2201   * Description: <b>unconfirmed | provisional | differential | confirmed | refuted | entered-in-error</b><br>
2202   * Type: <b>token</b><br>
2203   * Path: <b>Condition.verificationStatus</b><br>
2204   * </p>
2205   */
2206  @SearchParamDefinition(name="verification-status", path="Condition.verificationStatus", description="unconfirmed | provisional | differential | confirmed | refuted | entered-in-error", type="token" )
2207  public static final String SP_VERIFICATION_STATUS = "verification-status";
2208 /**
2209   * <b>Fluent Client</b> search parameter constant for <b>verification-status</b>
2210   * <p>
2211   * Description: <b>unconfirmed | provisional | differential | confirmed | refuted | entered-in-error</b><br>
2212   * Type: <b>token</b><br>
2213   * Path: <b>Condition.verificationStatus</b><br>
2214   * </p>
2215   */
2216  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERIFICATION_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERIFICATION_STATUS);
2217
2218 /**
2219   * Search parameter: <b>clinical-status</b>
2220   * <p>
2221   * Description: <b>The clinical status of the condition</b><br>
2222   * Type: <b>token</b><br>
2223   * Path: <b>Condition.clinicalStatus</b><br>
2224   * </p>
2225   */
2226  @SearchParamDefinition(name="clinical-status", path="Condition.clinicalStatus", description="The clinical status of the condition", type="token" )
2227  public static final String SP_CLINICAL_STATUS = "clinical-status";
2228 /**
2229   * <b>Fluent Client</b> search parameter constant for <b>clinical-status</b>
2230   * <p>
2231   * Description: <b>The clinical status of the condition</b><br>
2232   * Type: <b>token</b><br>
2233   * Path: <b>Condition.clinicalStatus</b><br>
2234   * </p>
2235   */
2236  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CLINICAL_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CLINICAL_STATUS);
2237
2238 /**
2239   * Search parameter: <b>encounter</b>
2240   * <p>
2241   * Description: <b>Encounter created as part of</b><br>
2242   * Type: <b>reference</b><br>
2243   * Path: <b>Condition.encounter</b><br>
2244   * </p>
2245   */
2246  @SearchParamDefinition(name="encounter", path="Condition.encounter", description="Encounter created as part of", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Encounter") }, target={Encounter.class } )
2247  public static final String SP_ENCOUNTER = "encounter";
2248 /**
2249   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2250   * <p>
2251   * Description: <b>Encounter created as part of</b><br>
2252   * Type: <b>reference</b><br>
2253   * Path: <b>Condition.encounter</b><br>
2254   * </p>
2255   */
2256  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2257
2258/**
2259   * Constant for fluent queries to be used to add include statements. Specifies
2260   * the path value of "<b>Condition:encounter</b>".
2261   */
2262  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("Condition:encounter").toLocked();
2263
2264 /**
2265   * Search parameter: <b>onset-date</b>
2266   * <p>
2267   * Description: <b>Date related onsets (dateTime and Period)</b><br>
2268   * Type: <b>date</b><br>
2269   * Path: <b>Condition.onset[x]</b><br>
2270   * </p>
2271   */
2272  @SearchParamDefinition(name="onset-date", path="Condition.onset.as(dateTime) | Condition.onset.as(Period)", description="Date related onsets (dateTime and Period)", type="date" )
2273  public static final String SP_ONSET_DATE = "onset-date";
2274 /**
2275   * <b>Fluent Client</b> search parameter constant for <b>onset-date</b>
2276   * <p>
2277   * Description: <b>Date related onsets (dateTime and Period)</b><br>
2278   * Type: <b>date</b><br>
2279   * Path: <b>Condition.onset[x]</b><br>
2280   * </p>
2281   */
2282  public static final ca.uhn.fhir.rest.gclient.DateClientParam ONSET_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ONSET_DATE);
2283
2284 /**
2285   * Search parameter: <b>abatement-date</b>
2286   * <p>
2287   * Description: <b>Date-related abatements (dateTime and period)</b><br>
2288   * Type: <b>date</b><br>
2289   * Path: <b>Condition.abatement[x]</b><br>
2290   * </p>
2291   */
2292  @SearchParamDefinition(name="abatement-date", path="Condition.abatement.as(dateTime) | Condition.abatement.as(Period)", description="Date-related abatements (dateTime and period)", type="date" )
2293  public static final String SP_ABATEMENT_DATE = "abatement-date";
2294 /**
2295   * <b>Fluent Client</b> search parameter constant for <b>abatement-date</b>
2296   * <p>
2297   * Description: <b>Date-related abatements (dateTime and period)</b><br>
2298   * Type: <b>date</b><br>
2299   * Path: <b>Condition.abatement[x]</b><br>
2300   * </p>
2301   */
2302  public static final ca.uhn.fhir.rest.gclient.DateClientParam ABATEMENT_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ABATEMENT_DATE);
2303
2304 /**
2305   * Search parameter: <b>asserter</b>
2306   * <p>
2307   * Description: <b>Person who asserts this condition</b><br>
2308   * Type: <b>reference</b><br>
2309   * Path: <b>Condition.asserter</b><br>
2310   * </p>
2311   */
2312  @SearchParamDefinition(name="asserter", path="Condition.asserter", description="Person who asserts this condition", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="RelatedPerson") }, target={Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2313  public static final String SP_ASSERTER = "asserter";
2314 /**
2315   * <b>Fluent Client</b> search parameter constant for <b>asserter</b>
2316   * <p>
2317   * Description: <b>Person who asserts this condition</b><br>
2318   * Type: <b>reference</b><br>
2319   * Path: <b>Condition.asserter</b><br>
2320   * </p>
2321   */
2322  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ASSERTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ASSERTER);
2323
2324/**
2325   * Constant for fluent queries to be used to add include statements. Specifies
2326   * the path value of "<b>Condition:asserter</b>".
2327   */
2328  public static final ca.uhn.fhir.model.api.Include INCLUDE_ASSERTER = new ca.uhn.fhir.model.api.Include("Condition:asserter").toLocked();
2329
2330 /**
2331   * Search parameter: <b>stage</b>
2332   * <p>
2333   * Description: <b>Simple summary (disease specific)</b><br>
2334   * Type: <b>token</b><br>
2335   * Path: <b>Condition.stage.summary</b><br>
2336   * </p>
2337   */
2338  @SearchParamDefinition(name="stage", path="Condition.stage.summary", description="Simple summary (disease specific)", type="token" )
2339  public static final String SP_STAGE = "stage";
2340 /**
2341   * <b>Fluent Client</b> search parameter constant for <b>stage</b>
2342   * <p>
2343   * Description: <b>Simple summary (disease specific)</b><br>
2344   * Type: <b>token</b><br>
2345   * Path: <b>Condition.stage.summary</b><br>
2346   * </p>
2347   */
2348  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STAGE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STAGE);
2349
2350 /**
2351   * Search parameter: <b>abatement-string</b>
2352   * <p>
2353   * Description: <b>Abatement as a string</b><br>
2354   * Type: <b>string</b><br>
2355   * Path: <b>Condition.abatement[x]</b><br>
2356   * </p>
2357   */
2358  @SearchParamDefinition(name="abatement-string", path="Condition.abatement.as(string)", description="Abatement as a string", type="string" )
2359  public static final String SP_ABATEMENT_STRING = "abatement-string";
2360 /**
2361   * <b>Fluent Client</b> search parameter constant for <b>abatement-string</b>
2362   * <p>
2363   * Description: <b>Abatement as a string</b><br>
2364   * Type: <b>string</b><br>
2365   * Path: <b>Condition.abatement[x]</b><br>
2366   * </p>
2367   */
2368  public static final ca.uhn.fhir.rest.gclient.StringClientParam ABATEMENT_STRING = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ABATEMENT_STRING);
2369
2370 /**
2371   * Search parameter: <b>patient</b>
2372   * <p>
2373   * Description: <b>Who has the condition?</b><br>
2374   * Type: <b>reference</b><br>
2375   * Path: <b>Condition.subject</b><br>
2376   * </p>
2377   */
2378  @SearchParamDefinition(name="patient", path="Condition.subject.where(resolve() is Patient)", description="Who has the condition?", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Patient.class } )
2379  public static final String SP_PATIENT = "patient";
2380 /**
2381   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2382   * <p>
2383   * Description: <b>Who has the condition?</b><br>
2384   * Type: <b>reference</b><br>
2385   * Path: <b>Condition.subject</b><br>
2386   * </p>
2387   */
2388  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2389
2390/**
2391   * Constant for fluent queries to be used to add include statements. Specifies
2392   * the path value of "<b>Condition:patient</b>".
2393   */
2394  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Condition:patient").toLocked();
2395
2396 /**
2397   * Search parameter: <b>onset-age</b>
2398   * <p>
2399   * Description: <b>Onsets as age or age range</b><br>
2400   * Type: <b>quantity</b><br>
2401   * Path: <b>Condition.onset[x]</b><br>
2402   * </p>
2403   */
2404  @SearchParamDefinition(name="onset-age", path="Condition.onset.as(Age) | Condition.onset.as(Range)", description="Onsets as age or age range", type="quantity" )
2405  public static final String SP_ONSET_AGE = "onset-age";
2406 /**
2407   * <b>Fluent Client</b> search parameter constant for <b>onset-age</b>
2408   * <p>
2409   * Description: <b>Onsets as age or age range</b><br>
2410   * Type: <b>quantity</b><br>
2411   * Path: <b>Condition.onset[x]</b><br>
2412   * </p>
2413   */
2414  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam ONSET_AGE = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_ONSET_AGE);
2415
2416 /**
2417   * Search parameter: <b>abatement-age</b>
2418   * <p>
2419   * Description: <b>Abatement as age or age range</b><br>
2420   * Type: <b>quantity</b><br>
2421   * Path: <b>Condition.abatement[x]</b><br>
2422   * </p>
2423   */
2424  @SearchParamDefinition(name="abatement-age", path="Condition.abatement.as(Age) | Condition.abatement.as(Range)", description="Abatement as age or age range", type="quantity" )
2425  public static final String SP_ABATEMENT_AGE = "abatement-age";
2426 /**
2427   * <b>Fluent Client</b> search parameter constant for <b>abatement-age</b>
2428   * <p>
2429   * Description: <b>Abatement as age or age range</b><br>
2430   * Type: <b>quantity</b><br>
2431   * Path: <b>Condition.abatement[x]</b><br>
2432   * </p>
2433   */
2434  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam ABATEMENT_AGE = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_ABATEMENT_AGE);
2435
2436 /**
2437   * Search parameter: <b>category</b>
2438   * <p>
2439   * Description: <b>The category of the condition</b><br>
2440   * Type: <b>token</b><br>
2441   * Path: <b>Condition.category</b><br>
2442   * </p>
2443   */
2444  @SearchParamDefinition(name="category", path="Condition.category", description="The category of the condition", type="token" )
2445  public static final String SP_CATEGORY = "category";
2446 /**
2447   * <b>Fluent Client</b> search parameter constant for <b>category</b>
2448   * <p>
2449   * Description: <b>The category of the condition</b><br>
2450   * Type: <b>token</b><br>
2451   * Path: <b>Condition.category</b><br>
2452   * </p>
2453   */
2454  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
2455
2456 /**
2457   * Search parameter: <b>body-site</b>
2458   * <p>
2459   * Description: <b>Anatomical location, if relevant</b><br>
2460   * Type: <b>token</b><br>
2461   * Path: <b>Condition.bodySite</b><br>
2462   * </p>
2463   */
2464  @SearchParamDefinition(name="body-site", path="Condition.bodySite", description="Anatomical location, if relevant", type="token" )
2465  public static final String SP_BODY_SITE = "body-site";
2466 /**
2467   * <b>Fluent Client</b> search parameter constant for <b>body-site</b>
2468   * <p>
2469   * Description: <b>Anatomical location, if relevant</b><br>
2470   * Type: <b>token</b><br>
2471   * Path: <b>Condition.bodySite</b><br>
2472   * </p>
2473   */
2474  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BODY_SITE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BODY_SITE);
2475
2476
2477}
2478