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