001package org.hl7.fhir.r5.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 Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.r5.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" or "Early Onset". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.
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\" or \"Early Onset\". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease." )
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" or "Early Onset". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.)
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" or "Early Onset". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.)
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\" or \"Early Onset\". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.", 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\" or \"Early Onset\". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.", 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=1, 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.  The verification status pertains to the condition, itself, not to any specific condition attribute.
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.  The verification status pertains to the condition, itself, not to any specific condition attribute." )
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="The Encounter during which this Condition was created", 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" - Some conditions, such as chronic 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\" - Some conditions, such as chronic 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 or device that is making the condition statement.
703     */
704    @Child(name = "asserter", type = {Practitioner.class, PractitionerRole.class, Patient.class, RelatedPerson.class, Device.class}, order=13, min=0, max=1, modifier=false, summary=true)
705    @Description(shortDefinition="Person or device that asserts this condition", formalDefinition="Individual or device that is making the condition statement." )
706    protected Reference asserter;
707
708    /**
709     * A simple summary of the stage such as "Stage 3" or "Early Onset". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.
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="A simple summary of the stage such as \"Stage 3\" or \"Early Onset\". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease." )
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 for the verification status", 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(CodeableConcept clinicalStatus, Reference subject) {
742      super();
743      this.setClinicalStatus(clinicalStatus);
744      this.setSubject(subject);
745    }
746
747    /**
748     * @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.)
749     */
750    public List<Identifier> getIdentifier() { 
751      if (this.identifier == null)
752        this.identifier = new ArrayList<Identifier>();
753      return this.identifier;
754    }
755
756    /**
757     * @return Returns a reference to <code>this</code> for easy method chaining
758     */
759    public Condition setIdentifier(List<Identifier> theIdentifier) { 
760      this.identifier = theIdentifier;
761      return this;
762    }
763
764    public boolean hasIdentifier() { 
765      if (this.identifier == null)
766        return false;
767      for (Identifier item : this.identifier)
768        if (!item.isEmpty())
769          return true;
770      return false;
771    }
772
773    public Identifier addIdentifier() { //3
774      Identifier t = new Identifier();
775      if (this.identifier == null)
776        this.identifier = new ArrayList<Identifier>();
777      this.identifier.add(t);
778      return t;
779    }
780
781    public Condition addIdentifier(Identifier t) { //3
782      if (t == null)
783        return this;
784      if (this.identifier == null)
785        this.identifier = new ArrayList<Identifier>();
786      this.identifier.add(t);
787      return this;
788    }
789
790    /**
791     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
792     */
793    public Identifier getIdentifierFirstRep() { 
794      if (getIdentifier().isEmpty()) {
795        addIdentifier();
796      }
797      return getIdentifier().get(0);
798    }
799
800    /**
801     * @return {@link #clinicalStatus} (The clinical status of the condition.)
802     */
803    public CodeableConcept getClinicalStatus() { 
804      if (this.clinicalStatus == null)
805        if (Configuration.errorOnAutoCreate())
806          throw new Error("Attempt to auto-create Condition.clinicalStatus");
807        else if (Configuration.doAutoCreate())
808          this.clinicalStatus = new CodeableConcept(); // cc
809      return this.clinicalStatus;
810    }
811
812    public boolean hasClinicalStatus() { 
813      return this.clinicalStatus != null && !this.clinicalStatus.isEmpty();
814    }
815
816    /**
817     * @param value {@link #clinicalStatus} (The clinical status of the condition.)
818     */
819    public Condition setClinicalStatus(CodeableConcept value) { 
820      this.clinicalStatus = value;
821      return this;
822    }
823
824    /**
825     * @return {@link #verificationStatus} (The verification status to support the clinical status of the condition.  The verification status pertains to the condition, itself, not to any specific condition attribute.)
826     */
827    public CodeableConcept getVerificationStatus() { 
828      if (this.verificationStatus == null)
829        if (Configuration.errorOnAutoCreate())
830          throw new Error("Attempt to auto-create Condition.verificationStatus");
831        else if (Configuration.doAutoCreate())
832          this.verificationStatus = new CodeableConcept(); // cc
833      return this.verificationStatus;
834    }
835
836    public boolean hasVerificationStatus() { 
837      return this.verificationStatus != null && !this.verificationStatus.isEmpty();
838    }
839
840    /**
841     * @param value {@link #verificationStatus} (The verification status to support the clinical status of the condition.  The verification status pertains to the condition, itself, not to any specific condition attribute.)
842     */
843    public Condition setVerificationStatus(CodeableConcept value) { 
844      this.verificationStatus = value;
845      return this;
846    }
847
848    /**
849     * @return {@link #category} (A category assigned to the condition.)
850     */
851    public List<CodeableConcept> getCategory() { 
852      if (this.category == null)
853        this.category = new ArrayList<CodeableConcept>();
854      return this.category;
855    }
856
857    /**
858     * @return Returns a reference to <code>this</code> for easy method chaining
859     */
860    public Condition setCategory(List<CodeableConcept> theCategory) { 
861      this.category = theCategory;
862      return this;
863    }
864
865    public boolean hasCategory() { 
866      if (this.category == null)
867        return false;
868      for (CodeableConcept item : this.category)
869        if (!item.isEmpty())
870          return true;
871      return false;
872    }
873
874    public CodeableConcept addCategory() { //3
875      CodeableConcept t = new CodeableConcept();
876      if (this.category == null)
877        this.category = new ArrayList<CodeableConcept>();
878      this.category.add(t);
879      return t;
880    }
881
882    public Condition addCategory(CodeableConcept t) { //3
883      if (t == null)
884        return this;
885      if (this.category == null)
886        this.category = new ArrayList<CodeableConcept>();
887      this.category.add(t);
888      return this;
889    }
890
891    /**
892     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
893     */
894    public CodeableConcept getCategoryFirstRep() { 
895      if (getCategory().isEmpty()) {
896        addCategory();
897      }
898      return getCategory().get(0);
899    }
900
901    /**
902     * @return {@link #severity} (A subjective assessment of the severity of the condition as evaluated by the clinician.)
903     */
904    public CodeableConcept getSeverity() { 
905      if (this.severity == null)
906        if (Configuration.errorOnAutoCreate())
907          throw new Error("Attempt to auto-create Condition.severity");
908        else if (Configuration.doAutoCreate())
909          this.severity = new CodeableConcept(); // cc
910      return this.severity;
911    }
912
913    public boolean hasSeverity() { 
914      return this.severity != null && !this.severity.isEmpty();
915    }
916
917    /**
918     * @param value {@link #severity} (A subjective assessment of the severity of the condition as evaluated by the clinician.)
919     */
920    public Condition setSeverity(CodeableConcept value) { 
921      this.severity = value;
922      return this;
923    }
924
925    /**
926     * @return {@link #code} (Identification of the condition, problem or diagnosis.)
927     */
928    public CodeableConcept getCode() { 
929      if (this.code == null)
930        if (Configuration.errorOnAutoCreate())
931          throw new Error("Attempt to auto-create Condition.code");
932        else if (Configuration.doAutoCreate())
933          this.code = new CodeableConcept(); // cc
934      return this.code;
935    }
936
937    public boolean hasCode() { 
938      return this.code != null && !this.code.isEmpty();
939    }
940
941    /**
942     * @param value {@link #code} (Identification of the condition, problem or diagnosis.)
943     */
944    public Condition setCode(CodeableConcept value) { 
945      this.code = value;
946      return this;
947    }
948
949    /**
950     * @return {@link #bodySite} (The anatomical location where this condition manifests itself.)
951     */
952    public List<CodeableConcept> getBodySite() { 
953      if (this.bodySite == null)
954        this.bodySite = new ArrayList<CodeableConcept>();
955      return this.bodySite;
956    }
957
958    /**
959     * @return Returns a reference to <code>this</code> for easy method chaining
960     */
961    public Condition setBodySite(List<CodeableConcept> theBodySite) { 
962      this.bodySite = theBodySite;
963      return this;
964    }
965
966    public boolean hasBodySite() { 
967      if (this.bodySite == null)
968        return false;
969      for (CodeableConcept item : this.bodySite)
970        if (!item.isEmpty())
971          return true;
972      return false;
973    }
974
975    public CodeableConcept addBodySite() { //3
976      CodeableConcept t = new CodeableConcept();
977      if (this.bodySite == null)
978        this.bodySite = new ArrayList<CodeableConcept>();
979      this.bodySite.add(t);
980      return t;
981    }
982
983    public Condition addBodySite(CodeableConcept t) { //3
984      if (t == null)
985        return this;
986      if (this.bodySite == null)
987        this.bodySite = new ArrayList<CodeableConcept>();
988      this.bodySite.add(t);
989      return this;
990    }
991
992    /**
993     * @return The first repetition of repeating field {@link #bodySite}, creating it if it does not already exist {3}
994     */
995    public CodeableConcept getBodySiteFirstRep() { 
996      if (getBodySite().isEmpty()) {
997        addBodySite();
998      }
999      return getBodySite().get(0);
1000    }
1001
1002    /**
1003     * @return {@link #subject} (Indicates the patient or group who the condition record is associated with.)
1004     */
1005    public Reference getSubject() { 
1006      if (this.subject == null)
1007        if (Configuration.errorOnAutoCreate())
1008          throw new Error("Attempt to auto-create Condition.subject");
1009        else if (Configuration.doAutoCreate())
1010          this.subject = new Reference(); // cc
1011      return this.subject;
1012    }
1013
1014    public boolean hasSubject() { 
1015      return this.subject != null && !this.subject.isEmpty();
1016    }
1017
1018    /**
1019     * @param value {@link #subject} (Indicates the patient or group who the condition record is associated with.)
1020     */
1021    public Condition setSubject(Reference value) { 
1022      this.subject = value;
1023      return this;
1024    }
1025
1026    /**
1027     * @return {@link #encounter} (The Encounter during which this Condition was created or to which the creation of this record is tightly associated.)
1028     */
1029    public Reference getEncounter() { 
1030      if (this.encounter == null)
1031        if (Configuration.errorOnAutoCreate())
1032          throw new Error("Attempt to auto-create Condition.encounter");
1033        else if (Configuration.doAutoCreate())
1034          this.encounter = new Reference(); // cc
1035      return this.encounter;
1036    }
1037
1038    public boolean hasEncounter() { 
1039      return this.encounter != null && !this.encounter.isEmpty();
1040    }
1041
1042    /**
1043     * @param value {@link #encounter} (The Encounter during which this Condition was created or to which the creation of this record is tightly associated.)
1044     */
1045    public Condition setEncounter(Reference value) { 
1046      this.encounter = value;
1047      return this;
1048    }
1049
1050    /**
1051     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1052     */
1053    public DataType getOnset() { 
1054      return this.onset;
1055    }
1056
1057    /**
1058     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1059     */
1060    public DateTimeType getOnsetDateTimeType() throws FHIRException { 
1061      if (this.onset == null)
1062        this.onset = new DateTimeType();
1063      if (!(this.onset instanceof DateTimeType))
1064        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.onset.getClass().getName()+" was encountered");
1065      return (DateTimeType) this.onset;
1066    }
1067
1068    public boolean hasOnsetDateTimeType() { 
1069      return this != null && this.onset instanceof DateTimeType;
1070    }
1071
1072    /**
1073     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1074     */
1075    public Age getOnsetAge() throws FHIRException { 
1076      if (this.onset == null)
1077        this.onset = new Age();
1078      if (!(this.onset instanceof Age))
1079        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.onset.getClass().getName()+" was encountered");
1080      return (Age) this.onset;
1081    }
1082
1083    public boolean hasOnsetAge() { 
1084      return this != null && this.onset instanceof Age;
1085    }
1086
1087    /**
1088     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1089     */
1090    public Period getOnsetPeriod() throws FHIRException { 
1091      if (this.onset == null)
1092        this.onset = new Period();
1093      if (!(this.onset instanceof Period))
1094        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.onset.getClass().getName()+" was encountered");
1095      return (Period) this.onset;
1096    }
1097
1098    public boolean hasOnsetPeriod() { 
1099      return this != null && this.onset instanceof Period;
1100    }
1101
1102    /**
1103     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1104     */
1105    public Range getOnsetRange() throws FHIRException { 
1106      if (this.onset == null)
1107        this.onset = new Range();
1108      if (!(this.onset instanceof Range))
1109        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.onset.getClass().getName()+" was encountered");
1110      return (Range) this.onset;
1111    }
1112
1113    public boolean hasOnsetRange() { 
1114      return this != null && this.onset instanceof Range;
1115    }
1116
1117    /**
1118     * @return {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1119     */
1120    public StringType getOnsetStringType() throws FHIRException { 
1121      if (this.onset == null)
1122        this.onset = new StringType();
1123      if (!(this.onset instanceof StringType))
1124        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.onset.getClass().getName()+" was encountered");
1125      return (StringType) this.onset;
1126    }
1127
1128    public boolean hasOnsetStringType() { 
1129      return this != null && this.onset instanceof StringType;
1130    }
1131
1132    public boolean hasOnset() { 
1133      return this.onset != null && !this.onset.isEmpty();
1134    }
1135
1136    /**
1137     * @param value {@link #onset} (Estimated or actual date or date-time  the condition began, in the opinion of the clinician.)
1138     */
1139    public Condition setOnset(DataType value) { 
1140      if (value != null && !(value instanceof DateTimeType || value instanceof Age || value instanceof Period || value instanceof Range || value instanceof StringType))
1141        throw new Error("Not the right type for Condition.onset[x]: "+value.fhirType());
1142      this.onset = value;
1143      return this;
1144    }
1145
1146    /**
1147     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1148     */
1149    public DataType getAbatement() { 
1150      return this.abatement;
1151    }
1152
1153    /**
1154     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1155     */
1156    public DateTimeType getAbatementDateTimeType() throws FHIRException { 
1157      if (this.abatement == null)
1158        this.abatement = new DateTimeType();
1159      if (!(this.abatement instanceof DateTimeType))
1160        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.abatement.getClass().getName()+" was encountered");
1161      return (DateTimeType) this.abatement;
1162    }
1163
1164    public boolean hasAbatementDateTimeType() { 
1165      return this != null && this.abatement instanceof DateTimeType;
1166    }
1167
1168    /**
1169     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1170     */
1171    public Age getAbatementAge() throws FHIRException { 
1172      if (this.abatement == null)
1173        this.abatement = new Age();
1174      if (!(this.abatement instanceof Age))
1175        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.abatement.getClass().getName()+" was encountered");
1176      return (Age) this.abatement;
1177    }
1178
1179    public boolean hasAbatementAge() { 
1180      return this != null && this.abatement instanceof Age;
1181    }
1182
1183    /**
1184     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1185     */
1186    public Period getAbatementPeriod() throws FHIRException { 
1187      if (this.abatement == null)
1188        this.abatement = new Period();
1189      if (!(this.abatement instanceof Period))
1190        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.abatement.getClass().getName()+" was encountered");
1191      return (Period) this.abatement;
1192    }
1193
1194    public boolean hasAbatementPeriod() { 
1195      return this != null && this.abatement instanceof Period;
1196    }
1197
1198    /**
1199     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1200     */
1201    public Range getAbatementRange() throws FHIRException { 
1202      if (this.abatement == null)
1203        this.abatement = new Range();
1204      if (!(this.abatement instanceof Range))
1205        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.abatement.getClass().getName()+" was encountered");
1206      return (Range) this.abatement;
1207    }
1208
1209    public boolean hasAbatementRange() { 
1210      return this != null && this.abatement instanceof Range;
1211    }
1212
1213    /**
1214     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1215     */
1216    public StringType getAbatementStringType() throws FHIRException { 
1217      if (this.abatement == null)
1218        this.abatement = new StringType();
1219      if (!(this.abatement instanceof StringType))
1220        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.abatement.getClass().getName()+" was encountered");
1221      return (StringType) this.abatement;
1222    }
1223
1224    public boolean hasAbatementStringType() { 
1225      return this != null && this.abatement instanceof StringType;
1226    }
1227
1228    public boolean hasAbatement() { 
1229      return this.abatement != null && !this.abatement.isEmpty();
1230    }
1231
1232    /**
1233     * @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" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.)
1234     */
1235    public Condition setAbatement(DataType value) { 
1236      if (value != null && !(value instanceof DateTimeType || value instanceof Age || value instanceof Period || value instanceof Range || value instanceof StringType))
1237        throw new Error("Not the right type for Condition.abatement[x]: "+value.fhirType());
1238      this.abatement = value;
1239      return this;
1240    }
1241
1242    /**
1243     * @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
1244     */
1245    public DateTimeType getRecordedDateElement() { 
1246      if (this.recordedDate == null)
1247        if (Configuration.errorOnAutoCreate())
1248          throw new Error("Attempt to auto-create Condition.recordedDate");
1249        else if (Configuration.doAutoCreate())
1250          this.recordedDate = new DateTimeType(); // bb
1251      return this.recordedDate;
1252    }
1253
1254    public boolean hasRecordedDateElement() { 
1255      return this.recordedDate != null && !this.recordedDate.isEmpty();
1256    }
1257
1258    public boolean hasRecordedDate() { 
1259      return this.recordedDate != null && !this.recordedDate.isEmpty();
1260    }
1261
1262    /**
1263     * @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
1264     */
1265    public Condition setRecordedDateElement(DateTimeType value) { 
1266      this.recordedDate = value;
1267      return this;
1268    }
1269
1270    /**
1271     * @return The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.
1272     */
1273    public Date getRecordedDate() { 
1274      return this.recordedDate == null ? null : this.recordedDate.getValue();
1275    }
1276
1277    /**
1278     * @param value The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date.
1279     */
1280    public Condition setRecordedDate(Date value) { 
1281      if (value == null)
1282        this.recordedDate = null;
1283      else {
1284        if (this.recordedDate == null)
1285          this.recordedDate = new DateTimeType();
1286        this.recordedDate.setValue(value);
1287      }
1288      return this;
1289    }
1290
1291    /**
1292     * @return {@link #recorder} (Individual who recorded the record and takes responsibility for its content.)
1293     */
1294    public Reference getRecorder() { 
1295      if (this.recorder == null)
1296        if (Configuration.errorOnAutoCreate())
1297          throw new Error("Attempt to auto-create Condition.recorder");
1298        else if (Configuration.doAutoCreate())
1299          this.recorder = new Reference(); // cc
1300      return this.recorder;
1301    }
1302
1303    public boolean hasRecorder() { 
1304      return this.recorder != null && !this.recorder.isEmpty();
1305    }
1306
1307    /**
1308     * @param value {@link #recorder} (Individual who recorded the record and takes responsibility for its content.)
1309     */
1310    public Condition setRecorder(Reference value) { 
1311      this.recorder = value;
1312      return this;
1313    }
1314
1315    /**
1316     * @return {@link #asserter} (Individual or device that is making the condition statement.)
1317     */
1318    public Reference getAsserter() { 
1319      if (this.asserter == null)
1320        if (Configuration.errorOnAutoCreate())
1321          throw new Error("Attempt to auto-create Condition.asserter");
1322        else if (Configuration.doAutoCreate())
1323          this.asserter = new Reference(); // cc
1324      return this.asserter;
1325    }
1326
1327    public boolean hasAsserter() { 
1328      return this.asserter != null && !this.asserter.isEmpty();
1329    }
1330
1331    /**
1332     * @param value {@link #asserter} (Individual or device that is making the condition statement.)
1333     */
1334    public Condition setAsserter(Reference value) { 
1335      this.asserter = value;
1336      return this;
1337    }
1338
1339    /**
1340     * @return {@link #stage} (A simple summary of the stage such as "Stage 3" or "Early Onset". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.)
1341     */
1342    public List<ConditionStageComponent> getStage() { 
1343      if (this.stage == null)
1344        this.stage = new ArrayList<ConditionStageComponent>();
1345      return this.stage;
1346    }
1347
1348    /**
1349     * @return Returns a reference to <code>this</code> for easy method chaining
1350     */
1351    public Condition setStage(List<ConditionStageComponent> theStage) { 
1352      this.stage = theStage;
1353      return this;
1354    }
1355
1356    public boolean hasStage() { 
1357      if (this.stage == null)
1358        return false;
1359      for (ConditionStageComponent item : this.stage)
1360        if (!item.isEmpty())
1361          return true;
1362      return false;
1363    }
1364
1365    public ConditionStageComponent addStage() { //3
1366      ConditionStageComponent t = new ConditionStageComponent();
1367      if (this.stage == null)
1368        this.stage = new ArrayList<ConditionStageComponent>();
1369      this.stage.add(t);
1370      return t;
1371    }
1372
1373    public Condition addStage(ConditionStageComponent t) { //3
1374      if (t == null)
1375        return this;
1376      if (this.stage == null)
1377        this.stage = new ArrayList<ConditionStageComponent>();
1378      this.stage.add(t);
1379      return this;
1380    }
1381
1382    /**
1383     * @return The first repetition of repeating field {@link #stage}, creating it if it does not already exist {3}
1384     */
1385    public ConditionStageComponent getStageFirstRep() { 
1386      if (getStage().isEmpty()) {
1387        addStage();
1388      }
1389      return getStage().get(0);
1390    }
1391
1392    /**
1393     * @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.)
1394     */
1395    public List<ConditionEvidenceComponent> getEvidence() { 
1396      if (this.evidence == null)
1397        this.evidence = new ArrayList<ConditionEvidenceComponent>();
1398      return this.evidence;
1399    }
1400
1401    /**
1402     * @return Returns a reference to <code>this</code> for easy method chaining
1403     */
1404    public Condition setEvidence(List<ConditionEvidenceComponent> theEvidence) { 
1405      this.evidence = theEvidence;
1406      return this;
1407    }
1408
1409    public boolean hasEvidence() { 
1410      if (this.evidence == null)
1411        return false;
1412      for (ConditionEvidenceComponent item : this.evidence)
1413        if (!item.isEmpty())
1414          return true;
1415      return false;
1416    }
1417
1418    public ConditionEvidenceComponent addEvidence() { //3
1419      ConditionEvidenceComponent t = new ConditionEvidenceComponent();
1420      if (this.evidence == null)
1421        this.evidence = new ArrayList<ConditionEvidenceComponent>();
1422      this.evidence.add(t);
1423      return t;
1424    }
1425
1426    public Condition addEvidence(ConditionEvidenceComponent t) { //3
1427      if (t == null)
1428        return this;
1429      if (this.evidence == null)
1430        this.evidence = new ArrayList<ConditionEvidenceComponent>();
1431      this.evidence.add(t);
1432      return this;
1433    }
1434
1435    /**
1436     * @return The first repetition of repeating field {@link #evidence}, creating it if it does not already exist {3}
1437     */
1438    public ConditionEvidenceComponent getEvidenceFirstRep() { 
1439      if (getEvidence().isEmpty()) {
1440        addEvidence();
1441      }
1442      return getEvidence().get(0);
1443    }
1444
1445    /**
1446     * @return {@link #note} (Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis.)
1447     */
1448    public List<Annotation> getNote() { 
1449      if (this.note == null)
1450        this.note = new ArrayList<Annotation>();
1451      return this.note;
1452    }
1453
1454    /**
1455     * @return Returns a reference to <code>this</code> for easy method chaining
1456     */
1457    public Condition setNote(List<Annotation> theNote) { 
1458      this.note = theNote;
1459      return this;
1460    }
1461
1462    public boolean hasNote() { 
1463      if (this.note == null)
1464        return false;
1465      for (Annotation item : this.note)
1466        if (!item.isEmpty())
1467          return true;
1468      return false;
1469    }
1470
1471    public Annotation addNote() { //3
1472      Annotation t = new Annotation();
1473      if (this.note == null)
1474        this.note = new ArrayList<Annotation>();
1475      this.note.add(t);
1476      return t;
1477    }
1478
1479    public Condition addNote(Annotation t) { //3
1480      if (t == null)
1481        return this;
1482      if (this.note == null)
1483        this.note = new ArrayList<Annotation>();
1484      this.note.add(t);
1485      return this;
1486    }
1487
1488    /**
1489     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1490     */
1491    public Annotation getNoteFirstRep() { 
1492      if (getNote().isEmpty()) {
1493        addNote();
1494      }
1495      return getNote().get(0);
1496    }
1497
1498      protected void listChildren(List<Property> children) {
1499        super.listChildren(children);
1500        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));
1501        children.add(new Property("clinicalStatus", "CodeableConcept", "The clinical status of the condition.", 0, 1, clinicalStatus));
1502        children.add(new Property("verificationStatus", "CodeableConcept", "The verification status to support the clinical status of the condition.  The verification status pertains to the condition, itself, not to any specific condition attribute.", 0, 1, verificationStatus));
1503        children.add(new Property("category", "CodeableConcept", "A category assigned to the condition.", 0, java.lang.Integer.MAX_VALUE, category));
1504        children.add(new Property("severity", "CodeableConcept", "A subjective assessment of the severity of the condition as evaluated by the clinician.", 0, 1, severity));
1505        children.add(new Property("code", "CodeableConcept", "Identification of the condition, problem or diagnosis.", 0, 1, code));
1506        children.add(new Property("bodySite", "CodeableConcept", "The anatomical location where this condition manifests itself.", 0, java.lang.Integer.MAX_VALUE, bodySite));
1507        children.add(new Property("subject", "Reference(Patient|Group)", "Indicates the patient or group who the condition record is associated with.", 0, 1, subject));
1508        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));
1509        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));
1510        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement));
1511        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));
1512        children.add(new Property("recorder", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson)", "Individual who recorded the record and takes responsibility for its content.", 0, 1, recorder));
1513        children.add(new Property("asserter", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson|Device)", "Individual or device that is making the condition statement.", 0, 1, asserter));
1514        children.add(new Property("stage", "", "A simple summary of the stage such as \"Stage 3\" or \"Early Onset\". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.", 0, java.lang.Integer.MAX_VALUE, stage));
1515        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));
1516        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));
1517      }
1518
1519      @Override
1520      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1521        switch (_hash) {
1522        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);
1523        case -462853915: /*clinicalStatus*/  return new Property("clinicalStatus", "CodeableConcept", "The clinical status of the condition.", 0, 1, clinicalStatus);
1524        case -842509843: /*verificationStatus*/  return new Property("verificationStatus", "CodeableConcept", "The verification status to support the clinical status of the condition.  The verification status pertains to the condition, itself, not to any specific condition attribute.", 0, 1, verificationStatus);
1525        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A category assigned to the condition.", 0, java.lang.Integer.MAX_VALUE, category);
1526        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);
1527        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Identification of the condition, problem or diagnosis.", 0, 1, code);
1528        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableConcept", "The anatomical location where this condition manifests itself.", 0, java.lang.Integer.MAX_VALUE, bodySite);
1529        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);
1530        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);
1531        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);
1532        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);
1533        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);
1534        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);
1535        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);
1536        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);
1537        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);
1538        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1539        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1540        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1541        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1542        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1543        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1544        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\" - Some conditions, such as chronic conditions, are never really resolved, but they can abate.", 0, 1, abatement);
1545        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);
1546        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);
1547        case -373242253: /*asserter*/  return new Property("asserter", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson|Device)", "Individual or device that is making the condition statement.", 0, 1, asserter);
1548        case 109757182: /*stage*/  return new Property("stage", "", "A simple summary of the stage such as \"Stage 3\" or \"Early Onset\". The determination of the stage is disease-specific, such as cancer, retinopathy of prematurity, kidney diseases, Alzheimer's, or Parkinson disease.", 0, java.lang.Integer.MAX_VALUE, stage);
1549        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);
1550        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);
1551        default: return super.getNamedProperty(_hash, _name, _checkValid);
1552        }
1553
1554      }
1555
1556      @Override
1557      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1558        switch (hash) {
1559        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1560        case -462853915: /*clinicalStatus*/ return this.clinicalStatus == null ? new Base[0] : new Base[] {this.clinicalStatus}; // CodeableConcept
1561        case -842509843: /*verificationStatus*/ return this.verificationStatus == null ? new Base[0] : new Base[] {this.verificationStatus}; // CodeableConcept
1562        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1563        case 1478300413: /*severity*/ return this.severity == null ? new Base[0] : new Base[] {this.severity}; // CodeableConcept
1564        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1565        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableConcept
1566        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1567        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1568        case 105901603: /*onset*/ return this.onset == null ? new Base[0] : new Base[] {this.onset}; // DataType
1569        case -921554001: /*abatement*/ return this.abatement == null ? new Base[0] : new Base[] {this.abatement}; // DataType
1570        case -1952893826: /*recordedDate*/ return this.recordedDate == null ? new Base[0] : new Base[] {this.recordedDate}; // DateTimeType
1571        case -799233858: /*recorder*/ return this.recorder == null ? new Base[0] : new Base[] {this.recorder}; // Reference
1572        case -373242253: /*asserter*/ return this.asserter == null ? new Base[0] : new Base[] {this.asserter}; // Reference
1573        case 109757182: /*stage*/ return this.stage == null ? new Base[0] : this.stage.toArray(new Base[this.stage.size()]); // ConditionStageComponent
1574        case 382967383: /*evidence*/ return this.evidence == null ? new Base[0] : this.evidence.toArray(new Base[this.evidence.size()]); // ConditionEvidenceComponent
1575        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1576        default: return super.getProperty(hash, name, checkValid);
1577        }
1578
1579      }
1580
1581      @Override
1582      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1583        switch (hash) {
1584        case -1618432855: // identifier
1585          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1586          return value;
1587        case -462853915: // clinicalStatus
1588          this.clinicalStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1589          return value;
1590        case -842509843: // verificationStatus
1591          this.verificationStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1592          return value;
1593        case 50511102: // category
1594          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1595          return value;
1596        case 1478300413: // severity
1597          this.severity = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1598          return value;
1599        case 3059181: // code
1600          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1601          return value;
1602        case 1702620169: // bodySite
1603          this.getBodySite().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1604          return value;
1605        case -1867885268: // subject
1606          this.subject = TypeConvertor.castToReference(value); // Reference
1607          return value;
1608        case 1524132147: // encounter
1609          this.encounter = TypeConvertor.castToReference(value); // Reference
1610          return value;
1611        case 105901603: // onset
1612          this.onset = TypeConvertor.castToType(value); // DataType
1613          return value;
1614        case -921554001: // abatement
1615          this.abatement = TypeConvertor.castToType(value); // DataType
1616          return value;
1617        case -1952893826: // recordedDate
1618          this.recordedDate = TypeConvertor.castToDateTime(value); // DateTimeType
1619          return value;
1620        case -799233858: // recorder
1621          this.recorder = TypeConvertor.castToReference(value); // Reference
1622          return value;
1623        case -373242253: // asserter
1624          this.asserter = TypeConvertor.castToReference(value); // Reference
1625          return value;
1626        case 109757182: // stage
1627          this.getStage().add((ConditionStageComponent) value); // ConditionStageComponent
1628          return value;
1629        case 382967383: // evidence
1630          this.getEvidence().add((ConditionEvidenceComponent) value); // ConditionEvidenceComponent
1631          return value;
1632        case 3387378: // note
1633          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1634          return value;
1635        default: return super.setProperty(hash, name, value);
1636        }
1637
1638      }
1639
1640      @Override
1641      public Base setProperty(String name, Base value) throws FHIRException {
1642        if (name.equals("identifier")) {
1643          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1644        } else if (name.equals("clinicalStatus")) {
1645          this.clinicalStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1646        } else if (name.equals("verificationStatus")) {
1647          this.verificationStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1648        } else if (name.equals("category")) {
1649          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1650        } else if (name.equals("severity")) {
1651          this.severity = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1652        } else if (name.equals("code")) {
1653          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1654        } else if (name.equals("bodySite")) {
1655          this.getBodySite().add(TypeConvertor.castToCodeableConcept(value));
1656        } else if (name.equals("subject")) {
1657          this.subject = TypeConvertor.castToReference(value); // Reference
1658        } else if (name.equals("encounter")) {
1659          this.encounter = TypeConvertor.castToReference(value); // Reference
1660        } else if (name.equals("onset[x]")) {
1661          this.onset = TypeConvertor.castToType(value); // DataType
1662        } else if (name.equals("abatement[x]")) {
1663          this.abatement = TypeConvertor.castToType(value); // DataType
1664        } else if (name.equals("recordedDate")) {
1665          this.recordedDate = TypeConvertor.castToDateTime(value); // DateTimeType
1666        } else if (name.equals("recorder")) {
1667          this.recorder = TypeConvertor.castToReference(value); // Reference
1668        } else if (name.equals("asserter")) {
1669          this.asserter = TypeConvertor.castToReference(value); // Reference
1670        } else if (name.equals("stage")) {
1671          this.getStage().add((ConditionStageComponent) value);
1672        } else if (name.equals("evidence")) {
1673          this.getEvidence().add((ConditionEvidenceComponent) value);
1674        } else if (name.equals("note")) {
1675          this.getNote().add(TypeConvertor.castToAnnotation(value));
1676        } else
1677          return super.setProperty(name, value);
1678        return value;
1679      }
1680
1681      @Override
1682      public Base makeProperty(int hash, String name) throws FHIRException {
1683        switch (hash) {
1684        case -1618432855:  return addIdentifier(); 
1685        case -462853915:  return getClinicalStatus();
1686        case -842509843:  return getVerificationStatus();
1687        case 50511102:  return addCategory(); 
1688        case 1478300413:  return getSeverity();
1689        case 3059181:  return getCode();
1690        case 1702620169:  return addBodySite(); 
1691        case -1867885268:  return getSubject();
1692        case 1524132147:  return getEncounter();
1693        case -1886216323:  return getOnset();
1694        case 105901603:  return getOnset();
1695        case -584196495:  return getAbatement();
1696        case -921554001:  return getAbatement();
1697        case -1952893826:  return getRecordedDateElement();
1698        case -799233858:  return getRecorder();
1699        case -373242253:  return getAsserter();
1700        case 109757182:  return addStage(); 
1701        case 382967383:  return addEvidence(); 
1702        case 3387378:  return addNote(); 
1703        default: return super.makeProperty(hash, name);
1704        }
1705
1706      }
1707
1708      @Override
1709      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1710        switch (hash) {
1711        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1712        case -462853915: /*clinicalStatus*/ return new String[] {"CodeableConcept"};
1713        case -842509843: /*verificationStatus*/ return new String[] {"CodeableConcept"};
1714        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1715        case 1478300413: /*severity*/ return new String[] {"CodeableConcept"};
1716        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1717        case 1702620169: /*bodySite*/ return new String[] {"CodeableConcept"};
1718        case -1867885268: /*subject*/ return new String[] {"Reference"};
1719        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1720        case 105901603: /*onset*/ return new String[] {"dateTime", "Age", "Period", "Range", "string"};
1721        case -921554001: /*abatement*/ return new String[] {"dateTime", "Age", "Period", "Range", "string"};
1722        case -1952893826: /*recordedDate*/ return new String[] {"dateTime"};
1723        case -799233858: /*recorder*/ return new String[] {"Reference"};
1724        case -373242253: /*asserter*/ return new String[] {"Reference"};
1725        case 109757182: /*stage*/ return new String[] {};
1726        case 382967383: /*evidence*/ return new String[] {};
1727        case 3387378: /*note*/ return new String[] {"Annotation"};
1728        default: return super.getTypesForProperty(hash, name);
1729        }
1730
1731      }
1732
1733      @Override
1734      public Base addChild(String name) throws FHIRException {
1735        if (name.equals("identifier")) {
1736          return addIdentifier();
1737        }
1738        else if (name.equals("clinicalStatus")) {
1739          this.clinicalStatus = new CodeableConcept();
1740          return this.clinicalStatus;
1741        }
1742        else if (name.equals("verificationStatus")) {
1743          this.verificationStatus = new CodeableConcept();
1744          return this.verificationStatus;
1745        }
1746        else if (name.equals("category")) {
1747          return addCategory();
1748        }
1749        else if (name.equals("severity")) {
1750          this.severity = new CodeableConcept();
1751          return this.severity;
1752        }
1753        else if (name.equals("code")) {
1754          this.code = new CodeableConcept();
1755          return this.code;
1756        }
1757        else if (name.equals("bodySite")) {
1758          return addBodySite();
1759        }
1760        else if (name.equals("subject")) {
1761          this.subject = new Reference();
1762          return this.subject;
1763        }
1764        else if (name.equals("encounter")) {
1765          this.encounter = new Reference();
1766          return this.encounter;
1767        }
1768        else if (name.equals("onsetDateTime")) {
1769          this.onset = new DateTimeType();
1770          return this.onset;
1771        }
1772        else if (name.equals("onsetAge")) {
1773          this.onset = new Age();
1774          return this.onset;
1775        }
1776        else if (name.equals("onsetPeriod")) {
1777          this.onset = new Period();
1778          return this.onset;
1779        }
1780        else if (name.equals("onsetRange")) {
1781          this.onset = new Range();
1782          return this.onset;
1783        }
1784        else if (name.equals("onsetString")) {
1785          this.onset = new StringType();
1786          return this.onset;
1787        }
1788        else if (name.equals("abatementDateTime")) {
1789          this.abatement = new DateTimeType();
1790          return this.abatement;
1791        }
1792        else if (name.equals("abatementAge")) {
1793          this.abatement = new Age();
1794          return this.abatement;
1795        }
1796        else if (name.equals("abatementPeriod")) {
1797          this.abatement = new Period();
1798          return this.abatement;
1799        }
1800        else if (name.equals("abatementRange")) {
1801          this.abatement = new Range();
1802          return this.abatement;
1803        }
1804        else if (name.equals("abatementString")) {
1805          this.abatement = new StringType();
1806          return this.abatement;
1807        }
1808        else if (name.equals("recordedDate")) {
1809          throw new FHIRException("Cannot call addChild on a primitive type Condition.recordedDate");
1810        }
1811        else if (name.equals("recorder")) {
1812          this.recorder = new Reference();
1813          return this.recorder;
1814        }
1815        else if (name.equals("asserter")) {
1816          this.asserter = new Reference();
1817          return this.asserter;
1818        }
1819        else if (name.equals("stage")) {
1820          return addStage();
1821        }
1822        else if (name.equals("evidence")) {
1823          return addEvidence();
1824        }
1825        else if (name.equals("note")) {
1826          return addNote();
1827        }
1828        else
1829          return super.addChild(name);
1830      }
1831
1832  public String fhirType() {
1833    return "Condition";
1834
1835  }
1836
1837      public Condition copy() {
1838        Condition dst = new Condition();
1839        copyValues(dst);
1840        return dst;
1841      }
1842
1843      public void copyValues(Condition dst) {
1844        super.copyValues(dst);
1845        if (identifier != null) {
1846          dst.identifier = new ArrayList<Identifier>();
1847          for (Identifier i : identifier)
1848            dst.identifier.add(i.copy());
1849        };
1850        dst.clinicalStatus = clinicalStatus == null ? null : clinicalStatus.copy();
1851        dst.verificationStatus = verificationStatus == null ? null : verificationStatus.copy();
1852        if (category != null) {
1853          dst.category = new ArrayList<CodeableConcept>();
1854          for (CodeableConcept i : category)
1855            dst.category.add(i.copy());
1856        };
1857        dst.severity = severity == null ? null : severity.copy();
1858        dst.code = code == null ? null : code.copy();
1859        if (bodySite != null) {
1860          dst.bodySite = new ArrayList<CodeableConcept>();
1861          for (CodeableConcept i : bodySite)
1862            dst.bodySite.add(i.copy());
1863        };
1864        dst.subject = subject == null ? null : subject.copy();
1865        dst.encounter = encounter == null ? null : encounter.copy();
1866        dst.onset = onset == null ? null : onset.copy();
1867        dst.abatement = abatement == null ? null : abatement.copy();
1868        dst.recordedDate = recordedDate == null ? null : recordedDate.copy();
1869        dst.recorder = recorder == null ? null : recorder.copy();
1870        dst.asserter = asserter == null ? null : asserter.copy();
1871        if (stage != null) {
1872          dst.stage = new ArrayList<ConditionStageComponent>();
1873          for (ConditionStageComponent i : stage)
1874            dst.stage.add(i.copy());
1875        };
1876        if (evidence != null) {
1877          dst.evidence = new ArrayList<ConditionEvidenceComponent>();
1878          for (ConditionEvidenceComponent i : evidence)
1879            dst.evidence.add(i.copy());
1880        };
1881        if (note != null) {
1882          dst.note = new ArrayList<Annotation>();
1883          for (Annotation i : note)
1884            dst.note.add(i.copy());
1885        };
1886      }
1887
1888      protected Condition typedCopy() {
1889        return copy();
1890      }
1891
1892      @Override
1893      public boolean equalsDeep(Base other_) {
1894        if (!super.equalsDeep(other_))
1895          return false;
1896        if (!(other_ instanceof Condition))
1897          return false;
1898        Condition o = (Condition) other_;
1899        return compareDeep(identifier, o.identifier, true) && compareDeep(clinicalStatus, o.clinicalStatus, true)
1900           && compareDeep(verificationStatus, o.verificationStatus, true) && compareDeep(category, o.category, true)
1901           && compareDeep(severity, o.severity, true) && compareDeep(code, o.code, true) && compareDeep(bodySite, o.bodySite, true)
1902           && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true) && compareDeep(onset, o.onset, true)
1903           && compareDeep(abatement, o.abatement, true) && compareDeep(recordedDate, o.recordedDate, true)
1904           && compareDeep(recorder, o.recorder, true) && compareDeep(asserter, o.asserter, true) && compareDeep(stage, o.stage, true)
1905           && compareDeep(evidence, o.evidence, true) && compareDeep(note, o.note, true);
1906      }
1907
1908      @Override
1909      public boolean equalsShallow(Base other_) {
1910        if (!super.equalsShallow(other_))
1911          return false;
1912        if (!(other_ instanceof Condition))
1913          return false;
1914        Condition o = (Condition) other_;
1915        return compareValues(recordedDate, o.recordedDate, true);
1916      }
1917
1918      public boolean isEmpty() {
1919        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, clinicalStatus
1920          , verificationStatus, category, severity, code, bodySite, subject, encounter, onset
1921          , abatement, recordedDate, recorder, asserter, stage, evidence, note);
1922      }
1923
1924  @Override
1925  public ResourceType getResourceType() {
1926    return ResourceType.Condition;
1927   }
1928
1929 /**
1930   * Search parameter: <b>abatement-age</b>
1931   * <p>
1932   * Description: <b>Abatement as age or age range</b><br>
1933   * Type: <b>quantity</b><br>
1934   * Path: <b>Condition.abatement.as(Age) | Condition.abatement.as(Range)</b><br>
1935   * </p>
1936   */
1937  @SearchParamDefinition(name="abatement-age", path="Condition.abatement.as(Age) | Condition.abatement.as(Range)", description="Abatement as age or age range", type="quantity" )
1938  public static final String SP_ABATEMENT_AGE = "abatement-age";
1939 /**
1940   * <b>Fluent Client</b> search parameter constant for <b>abatement-age</b>
1941   * <p>
1942   * Description: <b>Abatement as age or age range</b><br>
1943   * Type: <b>quantity</b><br>
1944   * Path: <b>Condition.abatement.as(Age) | Condition.abatement.as(Range)</b><br>
1945   * </p>
1946   */
1947  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam ABATEMENT_AGE = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_ABATEMENT_AGE);
1948
1949 /**
1950   * Search parameter: <b>abatement-date</b>
1951   * <p>
1952   * Description: <b>Date-related abatements (dateTime and period)</b><br>
1953   * Type: <b>date</b><br>
1954   * Path: <b>Condition.abatement.as(dateTime) | Condition.abatement.as(Period)</b><br>
1955   * </p>
1956   */
1957  @SearchParamDefinition(name="abatement-date", path="Condition.abatement.as(dateTime) | Condition.abatement.as(Period)", description="Date-related abatements (dateTime and period)", type="date" )
1958  public static final String SP_ABATEMENT_DATE = "abatement-date";
1959 /**
1960   * <b>Fluent Client</b> search parameter constant for <b>abatement-date</b>
1961   * <p>
1962   * Description: <b>Date-related abatements (dateTime and period)</b><br>
1963   * Type: <b>date</b><br>
1964   * Path: <b>Condition.abatement.as(dateTime) | Condition.abatement.as(Period)</b><br>
1965   * </p>
1966   */
1967  public static final ca.uhn.fhir.rest.gclient.DateClientParam ABATEMENT_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ABATEMENT_DATE);
1968
1969 /**
1970   * Search parameter: <b>abatement-string</b>
1971   * <p>
1972   * Description: <b>Abatement as a string</b><br>
1973   * Type: <b>string</b><br>
1974   * Path: <b>Condition.abatement.as(string)</b><br>
1975   * </p>
1976   */
1977  @SearchParamDefinition(name="abatement-string", path="Condition.abatement.as(string)", description="Abatement as a string", type="string" )
1978  public static final String SP_ABATEMENT_STRING = "abatement-string";
1979 /**
1980   * <b>Fluent Client</b> search parameter constant for <b>abatement-string</b>
1981   * <p>
1982   * Description: <b>Abatement as a string</b><br>
1983   * Type: <b>string</b><br>
1984   * Path: <b>Condition.abatement.as(string)</b><br>
1985   * </p>
1986   */
1987  public static final ca.uhn.fhir.rest.gclient.StringClientParam ABATEMENT_STRING = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ABATEMENT_STRING);
1988
1989 /**
1990   * Search parameter: <b>asserter</b>
1991   * <p>
1992   * Description: <b>Person or device that asserts this condition</b><br>
1993   * Type: <b>reference</b><br>
1994   * Path: <b>Condition.asserter</b><br>
1995   * </p>
1996   */
1997  @SearchParamDefinition(name="asserter", path="Condition.asserter", description="Person or device that 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={Device.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
1998  public static final String SP_ASSERTER = "asserter";
1999 /**
2000   * <b>Fluent Client</b> search parameter constant for <b>asserter</b>
2001   * <p>
2002   * Description: <b>Person or device that asserts this condition</b><br>
2003   * Type: <b>reference</b><br>
2004   * Path: <b>Condition.asserter</b><br>
2005   * </p>
2006   */
2007  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ASSERTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ASSERTER);
2008
2009/**
2010   * Constant for fluent queries to be used to add include statements. Specifies
2011   * the path value of "<b>Condition:asserter</b>".
2012   */
2013  public static final ca.uhn.fhir.model.api.Include INCLUDE_ASSERTER = new ca.uhn.fhir.model.api.Include("Condition:asserter").toLocked();
2014
2015 /**
2016   * Search parameter: <b>body-site</b>
2017   * <p>
2018   * Description: <b>Anatomical location, if relevant</b><br>
2019   * Type: <b>token</b><br>
2020   * Path: <b>Condition.bodySite</b><br>
2021   * </p>
2022   */
2023  @SearchParamDefinition(name="body-site", path="Condition.bodySite", description="Anatomical location, if relevant", type="token" )
2024  public static final String SP_BODY_SITE = "body-site";
2025 /**
2026   * <b>Fluent Client</b> search parameter constant for <b>body-site</b>
2027   * <p>
2028   * Description: <b>Anatomical location, if relevant</b><br>
2029   * Type: <b>token</b><br>
2030   * Path: <b>Condition.bodySite</b><br>
2031   * </p>
2032   */
2033  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BODY_SITE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BODY_SITE);
2034
2035 /**
2036   * Search parameter: <b>category</b>
2037   * <p>
2038   * Description: <b>The category of the condition</b><br>
2039   * Type: <b>token</b><br>
2040   * Path: <b>Condition.category</b><br>
2041   * </p>
2042   */
2043  @SearchParamDefinition(name="category", path="Condition.category", description="The category of the condition", type="token" )
2044  public static final String SP_CATEGORY = "category";
2045 /**
2046   * <b>Fluent Client</b> search parameter constant for <b>category</b>
2047   * <p>
2048   * Description: <b>The category of the condition</b><br>
2049   * Type: <b>token</b><br>
2050   * Path: <b>Condition.category</b><br>
2051   * </p>
2052   */
2053  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
2054
2055 /**
2056   * Search parameter: <b>clinical-status</b>
2057   * <p>
2058   * Description: <b>The clinical status of the condition</b><br>
2059   * Type: <b>token</b><br>
2060   * Path: <b>Condition.clinicalStatus</b><br>
2061   * </p>
2062   */
2063  @SearchParamDefinition(name="clinical-status", path="Condition.clinicalStatus", description="The clinical status of the condition", type="token" )
2064  public static final String SP_CLINICAL_STATUS = "clinical-status";
2065 /**
2066   * <b>Fluent Client</b> search parameter constant for <b>clinical-status</b>
2067   * <p>
2068   * Description: <b>The clinical status of the condition</b><br>
2069   * Type: <b>token</b><br>
2070   * Path: <b>Condition.clinicalStatus</b><br>
2071   * </p>
2072   */
2073  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CLINICAL_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CLINICAL_STATUS);
2074
2075 /**
2076   * Search parameter: <b>encounter</b>
2077   * <p>
2078   * Description: <b>The Encounter during which this Condition was created</b><br>
2079   * Type: <b>reference</b><br>
2080   * Path: <b>Condition.encounter</b><br>
2081   * </p>
2082   */
2083  @SearchParamDefinition(name="encounter", path="Condition.encounter", description="The Encounter during which this Condition was created", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
2084  public static final String SP_ENCOUNTER = "encounter";
2085 /**
2086   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2087   * <p>
2088   * Description: <b>The Encounter during which this Condition was created</b><br>
2089   * Type: <b>reference</b><br>
2090   * Path: <b>Condition.encounter</b><br>
2091   * </p>
2092   */
2093  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2094
2095/**
2096   * Constant for fluent queries to be used to add include statements. Specifies
2097   * the path value of "<b>Condition:encounter</b>".
2098   */
2099  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("Condition:encounter").toLocked();
2100
2101 /**
2102   * Search parameter: <b>evidence-detail</b>
2103   * <p>
2104   * Description: <b>Supporting information found elsewhere</b><br>
2105   * Type: <b>reference</b><br>
2106   * Path: <b>Condition.evidence.detail</b><br>
2107   * </p>
2108   */
2109  @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, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.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, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.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, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.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, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2110  public static final String SP_EVIDENCE_DETAIL = "evidence-detail";
2111 /**
2112   * <b>Fluent Client</b> search parameter constant for <b>evidence-detail</b>
2113   * <p>
2114   * Description: <b>Supporting information found elsewhere</b><br>
2115   * Type: <b>reference</b><br>
2116   * Path: <b>Condition.evidence.detail</b><br>
2117   * </p>
2118   */
2119  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam EVIDENCE_DETAIL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_EVIDENCE_DETAIL);
2120
2121/**
2122   * Constant for fluent queries to be used to add include statements. Specifies
2123   * the path value of "<b>Condition:evidence-detail</b>".
2124   */
2125  public static final ca.uhn.fhir.model.api.Include INCLUDE_EVIDENCE_DETAIL = new ca.uhn.fhir.model.api.Include("Condition:evidence-detail").toLocked();
2126
2127 /**
2128   * Search parameter: <b>evidence</b>
2129   * <p>
2130   * Description: <b>Manifestation/symptom</b><br>
2131   * Type: <b>token</b><br>
2132   * Path: <b>Condition.evidence.code</b><br>
2133   * </p>
2134   */
2135  @SearchParamDefinition(name="evidence", path="Condition.evidence.code", description="Manifestation/symptom", type="token" )
2136  public static final String SP_EVIDENCE = "evidence";
2137 /**
2138   * <b>Fluent Client</b> search parameter constant for <b>evidence</b>
2139   * <p>
2140   * Description: <b>Manifestation/symptom</b><br>
2141   * Type: <b>token</b><br>
2142   * Path: <b>Condition.evidence.code</b><br>
2143   * </p>
2144   */
2145  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVIDENCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVIDENCE);
2146
2147 /**
2148   * Search parameter: <b>onset-age</b>
2149   * <p>
2150   * Description: <b>Onsets as age or age range</b><br>
2151   * Type: <b>quantity</b><br>
2152   * Path: <b>Condition.onset.as(Age) | Condition.onset.as(Range)</b><br>
2153   * </p>
2154   */
2155  @SearchParamDefinition(name="onset-age", path="Condition.onset.as(Age) | Condition.onset.as(Range)", description="Onsets as age or age range", type="quantity" )
2156  public static final String SP_ONSET_AGE = "onset-age";
2157 /**
2158   * <b>Fluent Client</b> search parameter constant for <b>onset-age</b>
2159   * <p>
2160   * Description: <b>Onsets as age or age range</b><br>
2161   * Type: <b>quantity</b><br>
2162   * Path: <b>Condition.onset.as(Age) | Condition.onset.as(Range)</b><br>
2163   * </p>
2164   */
2165  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam ONSET_AGE = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_ONSET_AGE);
2166
2167 /**
2168   * Search parameter: <b>onset-date</b>
2169   * <p>
2170   * Description: <b>Date related onsets (dateTime and Period)</b><br>
2171   * Type: <b>date</b><br>
2172   * Path: <b>Condition.onset.as(dateTime) | Condition.onset.as(Period)</b><br>
2173   * </p>
2174   */
2175  @SearchParamDefinition(name="onset-date", path="Condition.onset.as(dateTime) | Condition.onset.as(Period)", description="Date related onsets (dateTime and Period)", type="date" )
2176  public static final String SP_ONSET_DATE = "onset-date";
2177 /**
2178   * <b>Fluent Client</b> search parameter constant for <b>onset-date</b>
2179   * <p>
2180   * Description: <b>Date related onsets (dateTime and Period)</b><br>
2181   * Type: <b>date</b><br>
2182   * Path: <b>Condition.onset.as(dateTime) | Condition.onset.as(Period)</b><br>
2183   * </p>
2184   */
2185  public static final ca.uhn.fhir.rest.gclient.DateClientParam ONSET_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ONSET_DATE);
2186
2187 /**
2188   * Search parameter: <b>onset-info</b>
2189   * <p>
2190   * Description: <b>Onsets as a string</b><br>
2191   * Type: <b>string</b><br>
2192   * Path: <b>Condition.onset.as(string)</b><br>
2193   * </p>
2194   */
2195  @SearchParamDefinition(name="onset-info", path="Condition.onset.as(string)", description="Onsets as a string", type="string" )
2196  public static final String SP_ONSET_INFO = "onset-info";
2197 /**
2198   * <b>Fluent Client</b> search parameter constant for <b>onset-info</b>
2199   * <p>
2200   * Description: <b>Onsets as a string</b><br>
2201   * Type: <b>string</b><br>
2202   * Path: <b>Condition.onset.as(string)</b><br>
2203   * </p>
2204   */
2205  public static final ca.uhn.fhir.rest.gclient.StringClientParam ONSET_INFO = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ONSET_INFO);
2206
2207 /**
2208   * Search parameter: <b>recorded-date</b>
2209   * <p>
2210   * Description: <b>Date record was first recorded</b><br>
2211   * Type: <b>date</b><br>
2212   * Path: <b>Condition.recordedDate</b><br>
2213   * </p>
2214   */
2215  @SearchParamDefinition(name="recorded-date", path="Condition.recordedDate", description="Date record was first recorded", type="date" )
2216  public static final String SP_RECORDED_DATE = "recorded-date";
2217 /**
2218   * <b>Fluent Client</b> search parameter constant for <b>recorded-date</b>
2219   * <p>
2220   * Description: <b>Date record was first recorded</b><br>
2221   * Type: <b>date</b><br>
2222   * Path: <b>Condition.recordedDate</b><br>
2223   * </p>
2224   */
2225  public static final ca.uhn.fhir.rest.gclient.DateClientParam RECORDED_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_RECORDED_DATE);
2226
2227 /**
2228   * Search parameter: <b>severity</b>
2229   * <p>
2230   * Description: <b>The severity of the condition</b><br>
2231   * Type: <b>token</b><br>
2232   * Path: <b>Condition.severity</b><br>
2233   * </p>
2234   */
2235  @SearchParamDefinition(name="severity", path="Condition.severity", description="The severity of the condition", type="token" )
2236  public static final String SP_SEVERITY = "severity";
2237 /**
2238   * <b>Fluent Client</b> search parameter constant for <b>severity</b>
2239   * <p>
2240   * Description: <b>The severity of the condition</b><br>
2241   * Type: <b>token</b><br>
2242   * Path: <b>Condition.severity</b><br>
2243   * </p>
2244   */
2245  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SEVERITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SEVERITY);
2246
2247 /**
2248   * Search parameter: <b>stage</b>
2249   * <p>
2250   * Description: <b>Simple summary (disease specific)</b><br>
2251   * Type: <b>token</b><br>
2252   * Path: <b>Condition.stage.summary</b><br>
2253   * </p>
2254   */
2255  @SearchParamDefinition(name="stage", path="Condition.stage.summary", description="Simple summary (disease specific)", type="token" )
2256  public static final String SP_STAGE = "stage";
2257 /**
2258   * <b>Fluent Client</b> search parameter constant for <b>stage</b>
2259   * <p>
2260   * Description: <b>Simple summary (disease specific)</b><br>
2261   * Type: <b>token</b><br>
2262   * Path: <b>Condition.stage.summary</b><br>
2263   * </p>
2264   */
2265  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STAGE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STAGE);
2266
2267 /**
2268   * Search parameter: <b>subject</b>
2269   * <p>
2270   * Description: <b>Who has the condition?</b><br>
2271   * Type: <b>reference</b><br>
2272   * Path: <b>Condition.subject</b><br>
2273   * </p>
2274   */
2275  @SearchParamDefinition(name="subject", path="Condition.subject", description="Who has the condition?", type="reference", target={Group.class, Patient.class } )
2276  public static final String SP_SUBJECT = "subject";
2277 /**
2278   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2279   * <p>
2280   * Description: <b>Who has the condition?</b><br>
2281   * Type: <b>reference</b><br>
2282   * Path: <b>Condition.subject</b><br>
2283   * </p>
2284   */
2285  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2286
2287/**
2288   * Constant for fluent queries to be used to add include statements. Specifies
2289   * the path value of "<b>Condition:subject</b>".
2290   */
2291  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Condition:subject").toLocked();
2292
2293 /**
2294   * Search parameter: <b>verification-status</b>
2295   * <p>
2296   * Description: <b>unconfirmed | provisional | differential | confirmed | refuted | entered-in-error</b><br>
2297   * Type: <b>token</b><br>
2298   * Path: <b>Condition.verificationStatus</b><br>
2299   * </p>
2300   */
2301  @SearchParamDefinition(name="verification-status", path="Condition.verificationStatus", description="unconfirmed | provisional | differential | confirmed | refuted | entered-in-error", type="token" )
2302  public static final String SP_VERIFICATION_STATUS = "verification-status";
2303 /**
2304   * <b>Fluent Client</b> search parameter constant for <b>verification-status</b>
2305   * <p>
2306   * Description: <b>unconfirmed | provisional | differential | confirmed | refuted | entered-in-error</b><br>
2307   * Type: <b>token</b><br>
2308   * Path: <b>Condition.verificationStatus</b><br>
2309   * </p>
2310   */
2311  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERIFICATION_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERIFICATION_STATUS);
2312
2313 /**
2314   * Search parameter: <b>code</b>
2315   * <p>
2316   * Description: <b>Multiple Resources: 
2317
2318* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2319* [Condition](condition.html): Code for the condition
2320* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2321* [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
2322* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2323* [List](list.html): What the purpose of this list is
2324* [Medication](medication.html): Returns medications for a specific code
2325* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2326* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2327* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2328* [MedicationUsage](medicationusage.html): Return statements of this medication code
2329* [Observation](observation.html): The code of the observation type
2330* [Procedure](procedure.html): A code to identify a  procedure
2331* [ServiceRequest](servicerequest.html): What is being requested/ordered
2332</b><br>
2333   * Type: <b>token</b><br>
2334   * Path: <b>AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationUsage.medication.concept | Observation.code | Procedure.code | ServiceRequest.code</b><br>
2335   * </p>
2336   */
2337  @SearchParamDefinition(name="code", path="AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationUsage.medication.concept | 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* [MedicationUsage](medicationusage.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" )
2338  public static final String SP_CODE = "code";
2339 /**
2340   * <b>Fluent Client</b> search parameter constant for <b>code</b>
2341   * <p>
2342   * Description: <b>Multiple Resources: 
2343
2344* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2345* [Condition](condition.html): Code for the condition
2346* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2347* [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
2348* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2349* [List](list.html): What the purpose of this list is
2350* [Medication](medication.html): Returns medications for a specific code
2351* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2352* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2353* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2354* [MedicationUsage](medicationusage.html): Return statements of this medication code
2355* [Observation](observation.html): The code of the observation type
2356* [Procedure](procedure.html): A code to identify a  procedure
2357* [ServiceRequest](servicerequest.html): What is being requested/ordered
2358</b><br>
2359   * Type: <b>token</b><br>
2360   * Path: <b>AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationUsage.medication.concept | Observation.code | Procedure.code | ServiceRequest.code</b><br>
2361   * </p>
2362   */
2363  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
2364
2365 /**
2366   * Search parameter: <b>identifier</b>
2367   * <p>
2368   * Description: <b>Multiple Resources: 
2369
2370* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2371* [CarePlan](careplan.html): External Ids for this plan
2372* [CareTeam](careteam.html): External Ids for this team
2373* [Composition](composition.html): Version-independent identifier for the Composition
2374* [Condition](condition.html): A unique identifier of the condition record
2375* [Consent](consent.html): Identifier for this record (external references)
2376* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2377* [DeviceRequest](devicerequest.html): Business identifier for request/order
2378* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2379* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2380* [DocumentReference](documentreference.html): Identifier of the attachment binary
2381* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2382* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2383* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2384* [Goal](goal.html): External Ids for this goal
2385* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2386* [Immunization](immunization.html): Business identifier
2387* [List](list.html): Business identifier
2388* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2389* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2390* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2391* [MedicationUsage](medicationusage.html): Return statements with this external identifier
2392* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2393* [Observation](observation.html): The unique id for a particular observation
2394* [Procedure](procedure.html): A unique identifier for a procedure
2395* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2396* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2397* [SupplyDelivery](supplydelivery.html): External identifier
2398* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2399* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2400</b><br>
2401   * Type: <b>token</b><br>
2402   * 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.content.identifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationUsage.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2403   * </p>
2404   */
2405  @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.content.identifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationUsage.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): Identifier of the attachment binary\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\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* [MedicationUsage](medicationusage.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" )
2406  public static final String SP_IDENTIFIER = "identifier";
2407 /**
2408   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2409   * <p>
2410   * Description: <b>Multiple Resources: 
2411
2412* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2413* [CarePlan](careplan.html): External Ids for this plan
2414* [CareTeam](careteam.html): External Ids for this team
2415* [Composition](composition.html): Version-independent identifier for the Composition
2416* [Condition](condition.html): A unique identifier of the condition record
2417* [Consent](consent.html): Identifier for this record (external references)
2418* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2419* [DeviceRequest](devicerequest.html): Business identifier for request/order
2420* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2421* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2422* [DocumentReference](documentreference.html): Identifier of the attachment binary
2423* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2424* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2425* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2426* [Goal](goal.html): External Ids for this goal
2427* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2428* [Immunization](immunization.html): Business identifier
2429* [List](list.html): Business identifier
2430* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2431* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2432* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2433* [MedicationUsage](medicationusage.html): Return statements with this external identifier
2434* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2435* [Observation](observation.html): The unique id for a particular observation
2436* [Procedure](procedure.html): A unique identifier for a procedure
2437* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2438* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2439* [SupplyDelivery](supplydelivery.html): External identifier
2440* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2441* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2442</b><br>
2443   * Type: <b>token</b><br>
2444   * 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.content.identifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationUsage.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2445   * </p>
2446   */
2447  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2448
2449 /**
2450   * Search parameter: <b>patient</b>
2451   * <p>
2452   * Description: <b>Multiple Resources: 
2453
2454* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2455* [CarePlan](careplan.html): Who the care plan is for
2456* [CareTeam](careteam.html): Who care team is for
2457* [ClinicalImpression](clinicalimpression.html): Patient assessed
2458* [Composition](composition.html): Who and/or what the composition is about
2459* [Condition](condition.html): Who has the condition?
2460* [Consent](consent.html): Who the consent applies to
2461* [DetectedIssue](detectedissue.html): Associated patient
2462* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2463* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2464* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2465* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2466* [DocumentReference](documentreference.html): Who/what is the subject of the document
2467* [Encounter](encounter.html): The patient present at the encounter
2468* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2469* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2470* [Flag](flag.html): The identity of a subject to list flags for
2471* [Goal](goal.html): Who this goal is intended for
2472* [ImagingStudy](imagingstudy.html): Who the study is about
2473* [Immunization](immunization.html): The patient for the vaccination record
2474* [List](list.html): If all resources have the same subject
2475* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2476* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2477* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2478* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
2479* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2480* [Observation](observation.html): The subject that the observation is about (if patient)
2481* [Procedure](procedure.html): Search by subject - a patient
2482* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2483* [ServiceRequest](servicerequest.html): Search by subject - a patient
2484* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2485* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2486</b><br>
2487   * Type: <b>reference</b><br>
2488   * 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.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.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) | MedicationUsage.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>
2489   * </p>
2490   */
2491  @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.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.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) | MedicationUsage.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 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* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\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 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* [MedicationUsage](medicationusage.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, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.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, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.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, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.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, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2492  public static final String SP_PATIENT = "patient";
2493 /**
2494   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2495   * <p>
2496   * Description: <b>Multiple Resources: 
2497
2498* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2499* [CarePlan](careplan.html): Who the care plan is for
2500* [CareTeam](careteam.html): Who care team is for
2501* [ClinicalImpression](clinicalimpression.html): Patient assessed
2502* [Composition](composition.html): Who and/or what the composition is about
2503* [Condition](condition.html): Who has the condition?
2504* [Consent](consent.html): Who the consent applies to
2505* [DetectedIssue](detectedissue.html): Associated patient
2506* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2507* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2508* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2509* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2510* [DocumentReference](documentreference.html): Who/what is the subject of the document
2511* [Encounter](encounter.html): The patient present at the encounter
2512* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2513* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2514* [Flag](flag.html): The identity of a subject to list flags for
2515* [Goal](goal.html): Who this goal is intended for
2516* [ImagingStudy](imagingstudy.html): Who the study is about
2517* [Immunization](immunization.html): The patient for the vaccination record
2518* [List](list.html): If all resources have the same subject
2519* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2520* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2521* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2522* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
2523* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2524* [Observation](observation.html): The subject that the observation is about (if patient)
2525* [Procedure](procedure.html): Search by subject - a patient
2526* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2527* [ServiceRequest](servicerequest.html): Search by subject - a patient
2528* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2529* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2530</b><br>
2531   * Type: <b>reference</b><br>
2532   * 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.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.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) | MedicationUsage.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>
2533   * </p>
2534   */
2535  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2536
2537/**
2538   * Constant for fluent queries to be used to add include statements. Specifies
2539   * the path value of "<b>Condition:patient</b>".
2540   */
2541  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Condition:patient").toLocked();
2542
2543
2544}
2545