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