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