001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called "ClinicalImpression" rather than "ClinicalAssessment" to avoid confusion with the recording of assessment tools such as Apgar score.
052 */
053@ResourceDef(name="ClinicalImpression", profile="http://hl7.org/fhir/StructureDefinition/ClinicalImpression")
054public class ClinicalImpression extends DomainResource {
055
056    @Block()
057    public static class ClinicalImpressionFindingComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * Specific text, code or reference for finding or diagnosis, which may include ruled-out or resolved conditions.
060         */
061        @Child(name = "item", type = {CodeableReference.class}, order=1, min=0, max=1, modifier=false, summary=false)
062        @Description(shortDefinition="What was found", formalDefinition="Specific text, code or reference for finding or diagnosis, which may include ruled-out or resolved conditions." )
063        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
064        protected CodeableReference item;
065
066        /**
067         * Which investigations support finding or diagnosis.
068         */
069        @Child(name = "basis", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
070        @Description(shortDefinition="Which investigations support finding", formalDefinition="Which investigations support finding or diagnosis." )
071        protected StringType basis;
072
073        private static final long serialVersionUID = -1363589306L;
074
075    /**
076     * Constructor
077     */
078      public ClinicalImpressionFindingComponent() {
079        super();
080      }
081
082        /**
083         * @return {@link #item} (Specific text, code or reference for finding or diagnosis, which may include ruled-out or resolved conditions.)
084         */
085        public CodeableReference getItem() { 
086          if (this.item == null)
087            if (Configuration.errorOnAutoCreate())
088              throw new Error("Attempt to auto-create ClinicalImpressionFindingComponent.item");
089            else if (Configuration.doAutoCreate())
090              this.item = new CodeableReference(); // cc
091          return this.item;
092        }
093
094        public boolean hasItem() { 
095          return this.item != null && !this.item.isEmpty();
096        }
097
098        /**
099         * @param value {@link #item} (Specific text, code or reference for finding or diagnosis, which may include ruled-out or resolved conditions.)
100         */
101        public ClinicalImpressionFindingComponent setItem(CodeableReference value) { 
102          this.item = value;
103          return this;
104        }
105
106        /**
107         * @return {@link #basis} (Which investigations support finding or diagnosis.). This is the underlying object with id, value and extensions. The accessor "getBasis" gives direct access to the value
108         */
109        public StringType getBasisElement() { 
110          if (this.basis == null)
111            if (Configuration.errorOnAutoCreate())
112              throw new Error("Attempt to auto-create ClinicalImpressionFindingComponent.basis");
113            else if (Configuration.doAutoCreate())
114              this.basis = new StringType(); // bb
115          return this.basis;
116        }
117
118        public boolean hasBasisElement() { 
119          return this.basis != null && !this.basis.isEmpty();
120        }
121
122        public boolean hasBasis() { 
123          return this.basis != null && !this.basis.isEmpty();
124        }
125
126        /**
127         * @param value {@link #basis} (Which investigations support finding or diagnosis.). This is the underlying object with id, value and extensions. The accessor "getBasis" gives direct access to the value
128         */
129        public ClinicalImpressionFindingComponent setBasisElement(StringType value) { 
130          this.basis = value;
131          return this;
132        }
133
134        /**
135         * @return Which investigations support finding or diagnosis.
136         */
137        public String getBasis() { 
138          return this.basis == null ? null : this.basis.getValue();
139        }
140
141        /**
142         * @param value Which investigations support finding or diagnosis.
143         */
144        public ClinicalImpressionFindingComponent setBasis(String value) { 
145          if (Utilities.noString(value))
146            this.basis = null;
147          else {
148            if (this.basis == null)
149              this.basis = new StringType();
150            this.basis.setValue(value);
151          }
152          return this;
153        }
154
155        protected void listChildren(List<Property> children) {
156          super.listChildren(children);
157          children.add(new Property("item", "CodeableReference(Condition|Observation|DocumentReference)", "Specific text, code or reference for finding or diagnosis, which may include ruled-out or resolved conditions.", 0, 1, item));
158          children.add(new Property("basis", "string", "Which investigations support finding or diagnosis.", 0, 1, basis));
159        }
160
161        @Override
162        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
163          switch (_hash) {
164          case 3242771: /*item*/  return new Property("item", "CodeableReference(Condition|Observation|DocumentReference)", "Specific text, code or reference for finding or diagnosis, which may include ruled-out or resolved conditions.", 0, 1, item);
165          case 93508670: /*basis*/  return new Property("basis", "string", "Which investigations support finding or diagnosis.", 0, 1, basis);
166          default: return super.getNamedProperty(_hash, _name, _checkValid);
167          }
168
169        }
170
171      @Override
172      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
173        switch (hash) {
174        case 3242771: /*item*/ return this.item == null ? new Base[0] : new Base[] {this.item}; // CodeableReference
175        case 93508670: /*basis*/ return this.basis == null ? new Base[0] : new Base[] {this.basis}; // StringType
176        default: return super.getProperty(hash, name, checkValid);
177        }
178
179      }
180
181      @Override
182      public Base setProperty(int hash, String name, Base value) throws FHIRException {
183        switch (hash) {
184        case 3242771: // item
185          this.item = TypeConvertor.castToCodeableReference(value); // CodeableReference
186          return value;
187        case 93508670: // basis
188          this.basis = TypeConvertor.castToString(value); // StringType
189          return value;
190        default: return super.setProperty(hash, name, value);
191        }
192
193      }
194
195      @Override
196      public Base setProperty(String name, Base value) throws FHIRException {
197        if (name.equals("item")) {
198          this.item = TypeConvertor.castToCodeableReference(value); // CodeableReference
199        } else if (name.equals("basis")) {
200          this.basis = TypeConvertor.castToString(value); // StringType
201        } else
202          return super.setProperty(name, value);
203        return value;
204      }
205
206      @Override
207      public Base makeProperty(int hash, String name) throws FHIRException {
208        switch (hash) {
209        case 3242771:  return getItem();
210        case 93508670:  return getBasisElement();
211        default: return super.makeProperty(hash, name);
212        }
213
214      }
215
216      @Override
217      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
218        switch (hash) {
219        case 3242771: /*item*/ return new String[] {"CodeableReference"};
220        case 93508670: /*basis*/ return new String[] {"string"};
221        default: return super.getTypesForProperty(hash, name);
222        }
223
224      }
225
226      @Override
227      public Base addChild(String name) throws FHIRException {
228        if (name.equals("item")) {
229          this.item = new CodeableReference();
230          return this.item;
231        }
232        else if (name.equals("basis")) {
233          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.finding.basis");
234        }
235        else
236          return super.addChild(name);
237      }
238
239      public ClinicalImpressionFindingComponent copy() {
240        ClinicalImpressionFindingComponent dst = new ClinicalImpressionFindingComponent();
241        copyValues(dst);
242        return dst;
243      }
244
245      public void copyValues(ClinicalImpressionFindingComponent dst) {
246        super.copyValues(dst);
247        dst.item = item == null ? null : item.copy();
248        dst.basis = basis == null ? null : basis.copy();
249      }
250
251      @Override
252      public boolean equalsDeep(Base other_) {
253        if (!super.equalsDeep(other_))
254          return false;
255        if (!(other_ instanceof ClinicalImpressionFindingComponent))
256          return false;
257        ClinicalImpressionFindingComponent o = (ClinicalImpressionFindingComponent) other_;
258        return compareDeep(item, o.item, true) && compareDeep(basis, o.basis, true);
259      }
260
261      @Override
262      public boolean equalsShallow(Base other_) {
263        if (!super.equalsShallow(other_))
264          return false;
265        if (!(other_ instanceof ClinicalImpressionFindingComponent))
266          return false;
267        ClinicalImpressionFindingComponent o = (ClinicalImpressionFindingComponent) other_;
268        return compareValues(basis, o.basis, true);
269      }
270
271      public boolean isEmpty() {
272        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(item, basis);
273      }
274
275  public String fhirType() {
276    return "ClinicalImpression.finding";
277
278  }
279
280  }
281
282    /**
283     * Business identifiers assigned to this clinical impression by the performer or other systems which remain constant as the resource is updated and propagates from server to server.
284     */
285    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
286    @Description(shortDefinition="Business identifier", formalDefinition="Business identifiers assigned to this clinical impression by the performer or other systems which remain constant as the resource is updated and propagates from server to server." )
287    protected List<Identifier> identifier;
288
289    /**
290     * Identifies the workflow status of the assessment.
291     */
292    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
293    @Description(shortDefinition="preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown", formalDefinition="Identifies the workflow status of the assessment." )
294    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/event-status")
295    protected Enumeration<EventStatus> status;
296
297    /**
298     * Captures the reason for the current state of the ClinicalImpression.
299     */
300    @Child(name = "statusReason", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
301    @Description(shortDefinition="Reason for current status", formalDefinition="Captures the reason for the current state of the ClinicalImpression." )
302    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinicalimpression-status-reason")
303    protected CodeableConcept statusReason;
304
305    /**
306     * A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.
307     */
308    @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
309    @Description(shortDefinition="Why/how the assessment was performed", formalDefinition="A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it." )
310    protected StringType description;
311
312    /**
313     * The patient or group of individuals assessed as part of this record.
314     */
315    @Child(name = "subject", type = {Patient.class, Group.class}, order=4, min=1, max=1, modifier=false, summary=true)
316    @Description(shortDefinition="Patient or group assessed", formalDefinition="The patient or group of individuals assessed as part of this record." )
317    protected Reference subject;
318
319    /**
320     * The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.
321     */
322    @Child(name = "encounter", type = {Encounter.class}, order=5, min=0, max=1, modifier=false, summary=true)
323    @Description(shortDefinition="The Encounter during which this ClinicalImpression was created", formalDefinition="The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated." )
324    protected Reference encounter;
325
326    /**
327     * The point in time or period over which the subject was assessed.
328     */
329    @Child(name = "effective", type = {DateTimeType.class, Period.class}, order=6, min=0, max=1, modifier=false, summary=true)
330    @Description(shortDefinition="Time of assessment", formalDefinition="The point in time or period over which the subject was assessed." )
331    protected DataType effective;
332
333    /**
334     * Indicates when the documentation of the assessment was complete.
335     */
336    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
337    @Description(shortDefinition="When the assessment was documented", formalDefinition="Indicates when the documentation of the assessment was complete." )
338    protected DateTimeType date;
339
340    /**
341     * The clinician performing the assessment.
342     */
343    @Child(name = "performer", type = {Practitioner.class, PractitionerRole.class}, order=8, min=0, max=1, modifier=false, summary=true)
344    @Description(shortDefinition="The clinician performing the assessment", formalDefinition="The clinician performing the assessment." )
345    protected Reference performer;
346
347    /**
348     * A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes.
349     */
350    @Child(name = "previous", type = {ClinicalImpression.class}, order=9, min=0, max=1, modifier=false, summary=false)
351    @Description(shortDefinition="Reference to last assessment", formalDefinition="A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes." )
352    protected Reference previous;
353
354    /**
355     * A list of the relevant problems/conditions for a patient.
356     */
357    @Child(name = "problem", type = {Condition.class, AllergyIntolerance.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
358    @Description(shortDefinition="Relevant impressions of patient state", formalDefinition="A list of the relevant problems/conditions for a patient." )
359    protected List<Reference> problem;
360
361    /**
362     * Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.
363     */
364    @Child(name = "protocol", type = {UriType.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
365    @Description(shortDefinition="Clinical Protocol followed", formalDefinition="Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis." )
366    protected List<UriType> protocol;
367
368    /**
369     * A text summary of the investigations and the diagnosis.
370     */
371    @Child(name = "summary", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=false)
372    @Description(shortDefinition="Summary of the assessment", formalDefinition="A text summary of the investigations and the diagnosis." )
373    protected StringType summary;
374
375    /**
376     * Specific findings or diagnoses that were considered likely or relevant to ongoing treatment.
377     */
378    @Child(name = "finding", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
379    @Description(shortDefinition="Possible or likely findings and diagnoses", formalDefinition="Specific findings or diagnoses that were considered likely or relevant to ongoing treatment." )
380    protected List<ClinicalImpressionFindingComponent> finding;
381
382    /**
383     * Estimate of likely outcome.
384     */
385    @Child(name = "prognosisCodeableConcept", type = {CodeableConcept.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
386    @Description(shortDefinition="Estimate of likely outcome", formalDefinition="Estimate of likely outcome." )
387    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinicalimpression-prognosis")
388    protected List<CodeableConcept> prognosisCodeableConcept;
389
390    /**
391     * RiskAssessment expressing likely outcome.
392     */
393    @Child(name = "prognosisReference", type = {RiskAssessment.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
394    @Description(shortDefinition="RiskAssessment expressing likely outcome", formalDefinition="RiskAssessment expressing likely outcome." )
395    protected List<Reference> prognosisReference;
396
397    /**
398     * Information supporting the clinical impression, which can contain investigation results.
399     */
400    @Child(name = "supportingInfo", type = {Reference.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
401    @Description(shortDefinition="Information supporting the clinical impression", formalDefinition="Information supporting the clinical impression, which can contain investigation results." )
402    protected List<Reference> supportingInfo;
403
404    /**
405     * Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear.
406     */
407    @Child(name = "note", type = {Annotation.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
408    @Description(shortDefinition="Comments made about the ClinicalImpression", formalDefinition="Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear." )
409    protected List<Annotation> note;
410
411    private static final long serialVersionUID = 2042987378L;
412
413  /**
414   * Constructor
415   */
416    public ClinicalImpression() {
417      super();
418    }
419
420  /**
421   * Constructor
422   */
423    public ClinicalImpression(EventStatus status, Reference subject) {
424      super();
425      this.setStatus(status);
426      this.setSubject(subject);
427    }
428
429    /**
430     * @return {@link #identifier} (Business identifiers assigned to this clinical impression by the performer or other systems which remain constant as the resource is updated and propagates from server to server.)
431     */
432    public List<Identifier> getIdentifier() { 
433      if (this.identifier == null)
434        this.identifier = new ArrayList<Identifier>();
435      return this.identifier;
436    }
437
438    /**
439     * @return Returns a reference to <code>this</code> for easy method chaining
440     */
441    public ClinicalImpression setIdentifier(List<Identifier> theIdentifier) { 
442      this.identifier = theIdentifier;
443      return this;
444    }
445
446    public boolean hasIdentifier() { 
447      if (this.identifier == null)
448        return false;
449      for (Identifier item : this.identifier)
450        if (!item.isEmpty())
451          return true;
452      return false;
453    }
454
455    public Identifier addIdentifier() { //3
456      Identifier t = new Identifier();
457      if (this.identifier == null)
458        this.identifier = new ArrayList<Identifier>();
459      this.identifier.add(t);
460      return t;
461    }
462
463    public ClinicalImpression addIdentifier(Identifier t) { //3
464      if (t == null)
465        return this;
466      if (this.identifier == null)
467        this.identifier = new ArrayList<Identifier>();
468      this.identifier.add(t);
469      return this;
470    }
471
472    /**
473     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
474     */
475    public Identifier getIdentifierFirstRep() { 
476      if (getIdentifier().isEmpty()) {
477        addIdentifier();
478      }
479      return getIdentifier().get(0);
480    }
481
482    /**
483     * @return {@link #status} (Identifies the workflow status of the assessment.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
484     */
485    public Enumeration<EventStatus> getStatusElement() { 
486      if (this.status == null)
487        if (Configuration.errorOnAutoCreate())
488          throw new Error("Attempt to auto-create ClinicalImpression.status");
489        else if (Configuration.doAutoCreate())
490          this.status = new Enumeration<EventStatus>(new EventStatusEnumFactory()); // bb
491      return this.status;
492    }
493
494    public boolean hasStatusElement() { 
495      return this.status != null && !this.status.isEmpty();
496    }
497
498    public boolean hasStatus() { 
499      return this.status != null && !this.status.isEmpty();
500    }
501
502    /**
503     * @param value {@link #status} (Identifies the workflow status of the assessment.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
504     */
505    public ClinicalImpression setStatusElement(Enumeration<EventStatus> value) { 
506      this.status = value;
507      return this;
508    }
509
510    /**
511     * @return Identifies the workflow status of the assessment.
512     */
513    public EventStatus getStatus() { 
514      return this.status == null ? null : this.status.getValue();
515    }
516
517    /**
518     * @param value Identifies the workflow status of the assessment.
519     */
520    public ClinicalImpression setStatus(EventStatus value) { 
521        if (this.status == null)
522          this.status = new Enumeration<EventStatus>(new EventStatusEnumFactory());
523        this.status.setValue(value);
524      return this;
525    }
526
527    /**
528     * @return {@link #statusReason} (Captures the reason for the current state of the ClinicalImpression.)
529     */
530    public CodeableConcept getStatusReason() { 
531      if (this.statusReason == null)
532        if (Configuration.errorOnAutoCreate())
533          throw new Error("Attempt to auto-create ClinicalImpression.statusReason");
534        else if (Configuration.doAutoCreate())
535          this.statusReason = new CodeableConcept(); // cc
536      return this.statusReason;
537    }
538
539    public boolean hasStatusReason() { 
540      return this.statusReason != null && !this.statusReason.isEmpty();
541    }
542
543    /**
544     * @param value {@link #statusReason} (Captures the reason for the current state of the ClinicalImpression.)
545     */
546    public ClinicalImpression setStatusReason(CodeableConcept value) { 
547      this.statusReason = value;
548      return this;
549    }
550
551    /**
552     * @return {@link #description} (A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
553     */
554    public StringType getDescriptionElement() { 
555      if (this.description == null)
556        if (Configuration.errorOnAutoCreate())
557          throw new Error("Attempt to auto-create ClinicalImpression.description");
558        else if (Configuration.doAutoCreate())
559          this.description = new StringType(); // bb
560      return this.description;
561    }
562
563    public boolean hasDescriptionElement() { 
564      return this.description != null && !this.description.isEmpty();
565    }
566
567    public boolean hasDescription() { 
568      return this.description != null && !this.description.isEmpty();
569    }
570
571    /**
572     * @param value {@link #description} (A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
573     */
574    public ClinicalImpression setDescriptionElement(StringType value) { 
575      this.description = value;
576      return this;
577    }
578
579    /**
580     * @return A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.
581     */
582    public String getDescription() { 
583      return this.description == null ? null : this.description.getValue();
584    }
585
586    /**
587     * @param value A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.
588     */
589    public ClinicalImpression setDescription(String value) { 
590      if (Utilities.noString(value))
591        this.description = null;
592      else {
593        if (this.description == null)
594          this.description = new StringType();
595        this.description.setValue(value);
596      }
597      return this;
598    }
599
600    /**
601     * @return {@link #subject} (The patient or group of individuals assessed as part of this record.)
602     */
603    public Reference getSubject() { 
604      if (this.subject == null)
605        if (Configuration.errorOnAutoCreate())
606          throw new Error("Attempt to auto-create ClinicalImpression.subject");
607        else if (Configuration.doAutoCreate())
608          this.subject = new Reference(); // cc
609      return this.subject;
610    }
611
612    public boolean hasSubject() { 
613      return this.subject != null && !this.subject.isEmpty();
614    }
615
616    /**
617     * @param value {@link #subject} (The patient or group of individuals assessed as part of this record.)
618     */
619    public ClinicalImpression setSubject(Reference value) { 
620      this.subject = value;
621      return this;
622    }
623
624    /**
625     * @return {@link #encounter} (The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.)
626     */
627    public Reference getEncounter() { 
628      if (this.encounter == null)
629        if (Configuration.errorOnAutoCreate())
630          throw new Error("Attempt to auto-create ClinicalImpression.encounter");
631        else if (Configuration.doAutoCreate())
632          this.encounter = new Reference(); // cc
633      return this.encounter;
634    }
635
636    public boolean hasEncounter() { 
637      return this.encounter != null && !this.encounter.isEmpty();
638    }
639
640    /**
641     * @param value {@link #encounter} (The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.)
642     */
643    public ClinicalImpression setEncounter(Reference value) { 
644      this.encounter = value;
645      return this;
646    }
647
648    /**
649     * @return {@link #effective} (The point in time or period over which the subject was assessed.)
650     */
651    public DataType getEffective() { 
652      return this.effective;
653    }
654
655    /**
656     * @return {@link #effective} (The point in time or period over which the subject was assessed.)
657     */
658    public DateTimeType getEffectiveDateTimeType() throws FHIRException { 
659      if (this.effective == null)
660        this.effective = new DateTimeType();
661      if (!(this.effective instanceof DateTimeType))
662        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.effective.getClass().getName()+" was encountered");
663      return (DateTimeType) this.effective;
664    }
665
666    public boolean hasEffectiveDateTimeType() { 
667      return this != null && this.effective instanceof DateTimeType;
668    }
669
670    /**
671     * @return {@link #effective} (The point in time or period over which the subject was assessed.)
672     */
673    public Period getEffectivePeriod() throws FHIRException { 
674      if (this.effective == null)
675        this.effective = new Period();
676      if (!(this.effective instanceof Period))
677        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.effective.getClass().getName()+" was encountered");
678      return (Period) this.effective;
679    }
680
681    public boolean hasEffectivePeriod() { 
682      return this != null && this.effective instanceof Period;
683    }
684
685    public boolean hasEffective() { 
686      return this.effective != null && !this.effective.isEmpty();
687    }
688
689    /**
690     * @param value {@link #effective} (The point in time or period over which the subject was assessed.)
691     */
692    public ClinicalImpression setEffective(DataType value) { 
693      if (value != null && !(value instanceof DateTimeType || value instanceof Period))
694        throw new Error("Not the right type for ClinicalImpression.effective[x]: "+value.fhirType());
695      this.effective = value;
696      return this;
697    }
698
699    /**
700     * @return {@link #date} (Indicates when the documentation of the assessment was complete.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
701     */
702    public DateTimeType getDateElement() { 
703      if (this.date == null)
704        if (Configuration.errorOnAutoCreate())
705          throw new Error("Attempt to auto-create ClinicalImpression.date");
706        else if (Configuration.doAutoCreate())
707          this.date = new DateTimeType(); // bb
708      return this.date;
709    }
710
711    public boolean hasDateElement() { 
712      return this.date != null && !this.date.isEmpty();
713    }
714
715    public boolean hasDate() { 
716      return this.date != null && !this.date.isEmpty();
717    }
718
719    /**
720     * @param value {@link #date} (Indicates when the documentation of the assessment was complete.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
721     */
722    public ClinicalImpression setDateElement(DateTimeType value) { 
723      this.date = value;
724      return this;
725    }
726
727    /**
728     * @return Indicates when the documentation of the assessment was complete.
729     */
730    public Date getDate() { 
731      return this.date == null ? null : this.date.getValue();
732    }
733
734    /**
735     * @param value Indicates when the documentation of the assessment was complete.
736     */
737    public ClinicalImpression setDate(Date value) { 
738      if (value == null)
739        this.date = null;
740      else {
741        if (this.date == null)
742          this.date = new DateTimeType();
743        this.date.setValue(value);
744      }
745      return this;
746    }
747
748    /**
749     * @return {@link #performer} (The clinician performing the assessment.)
750     */
751    public Reference getPerformer() { 
752      if (this.performer == null)
753        if (Configuration.errorOnAutoCreate())
754          throw new Error("Attempt to auto-create ClinicalImpression.performer");
755        else if (Configuration.doAutoCreate())
756          this.performer = new Reference(); // cc
757      return this.performer;
758    }
759
760    public boolean hasPerformer() { 
761      return this.performer != null && !this.performer.isEmpty();
762    }
763
764    /**
765     * @param value {@link #performer} (The clinician performing the assessment.)
766     */
767    public ClinicalImpression setPerformer(Reference value) { 
768      this.performer = value;
769      return this;
770    }
771
772    /**
773     * @return {@link #previous} (A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes.)
774     */
775    public Reference getPrevious() { 
776      if (this.previous == null)
777        if (Configuration.errorOnAutoCreate())
778          throw new Error("Attempt to auto-create ClinicalImpression.previous");
779        else if (Configuration.doAutoCreate())
780          this.previous = new Reference(); // cc
781      return this.previous;
782    }
783
784    public boolean hasPrevious() { 
785      return this.previous != null && !this.previous.isEmpty();
786    }
787
788    /**
789     * @param value {@link #previous} (A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes.)
790     */
791    public ClinicalImpression setPrevious(Reference value) { 
792      this.previous = value;
793      return this;
794    }
795
796    /**
797     * @return {@link #problem} (A list of the relevant problems/conditions for a patient.)
798     */
799    public List<Reference> getProblem() { 
800      if (this.problem == null)
801        this.problem = new ArrayList<Reference>();
802      return this.problem;
803    }
804
805    /**
806     * @return Returns a reference to <code>this</code> for easy method chaining
807     */
808    public ClinicalImpression setProblem(List<Reference> theProblem) { 
809      this.problem = theProblem;
810      return this;
811    }
812
813    public boolean hasProblem() { 
814      if (this.problem == null)
815        return false;
816      for (Reference item : this.problem)
817        if (!item.isEmpty())
818          return true;
819      return false;
820    }
821
822    public Reference addProblem() { //3
823      Reference t = new Reference();
824      if (this.problem == null)
825        this.problem = new ArrayList<Reference>();
826      this.problem.add(t);
827      return t;
828    }
829
830    public ClinicalImpression addProblem(Reference t) { //3
831      if (t == null)
832        return this;
833      if (this.problem == null)
834        this.problem = new ArrayList<Reference>();
835      this.problem.add(t);
836      return this;
837    }
838
839    /**
840     * @return The first repetition of repeating field {@link #problem}, creating it if it does not already exist {3}
841     */
842    public Reference getProblemFirstRep() { 
843      if (getProblem().isEmpty()) {
844        addProblem();
845      }
846      return getProblem().get(0);
847    }
848
849    /**
850     * @return {@link #protocol} (Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.)
851     */
852    public List<UriType> getProtocol() { 
853      if (this.protocol == null)
854        this.protocol = new ArrayList<UriType>();
855      return this.protocol;
856    }
857
858    /**
859     * @return Returns a reference to <code>this</code> for easy method chaining
860     */
861    public ClinicalImpression setProtocol(List<UriType> theProtocol) { 
862      this.protocol = theProtocol;
863      return this;
864    }
865
866    public boolean hasProtocol() { 
867      if (this.protocol == null)
868        return false;
869      for (UriType item : this.protocol)
870        if (!item.isEmpty())
871          return true;
872      return false;
873    }
874
875    /**
876     * @return {@link #protocol} (Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.)
877     */
878    public UriType addProtocolElement() {//2 
879      UriType t = new UriType();
880      if (this.protocol == null)
881        this.protocol = new ArrayList<UriType>();
882      this.protocol.add(t);
883      return t;
884    }
885
886    /**
887     * @param value {@link #protocol} (Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.)
888     */
889    public ClinicalImpression addProtocol(String value) { //1
890      UriType t = new UriType();
891      t.setValue(value);
892      if (this.protocol == null)
893        this.protocol = new ArrayList<UriType>();
894      this.protocol.add(t);
895      return this;
896    }
897
898    /**
899     * @param value {@link #protocol} (Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.)
900     */
901    public boolean hasProtocol(String value) { 
902      if (this.protocol == null)
903        return false;
904      for (UriType v : this.protocol)
905        if (v.getValue().equals(value)) // uri
906          return true;
907      return false;
908    }
909
910    /**
911     * @return {@link #summary} (A text summary of the investigations and the diagnosis.). This is the underlying object with id, value and extensions. The accessor "getSummary" gives direct access to the value
912     */
913    public StringType getSummaryElement() { 
914      if (this.summary == null)
915        if (Configuration.errorOnAutoCreate())
916          throw new Error("Attempt to auto-create ClinicalImpression.summary");
917        else if (Configuration.doAutoCreate())
918          this.summary = new StringType(); // bb
919      return this.summary;
920    }
921
922    public boolean hasSummaryElement() { 
923      return this.summary != null && !this.summary.isEmpty();
924    }
925
926    public boolean hasSummary() { 
927      return this.summary != null && !this.summary.isEmpty();
928    }
929
930    /**
931     * @param value {@link #summary} (A text summary of the investigations and the diagnosis.). This is the underlying object with id, value and extensions. The accessor "getSummary" gives direct access to the value
932     */
933    public ClinicalImpression setSummaryElement(StringType value) { 
934      this.summary = value;
935      return this;
936    }
937
938    /**
939     * @return A text summary of the investigations and the diagnosis.
940     */
941    public String getSummary() { 
942      return this.summary == null ? null : this.summary.getValue();
943    }
944
945    /**
946     * @param value A text summary of the investigations and the diagnosis.
947     */
948    public ClinicalImpression setSummary(String value) { 
949      if (Utilities.noString(value))
950        this.summary = null;
951      else {
952        if (this.summary == null)
953          this.summary = new StringType();
954        this.summary.setValue(value);
955      }
956      return this;
957    }
958
959    /**
960     * @return {@link #finding} (Specific findings or diagnoses that were considered likely or relevant to ongoing treatment.)
961     */
962    public List<ClinicalImpressionFindingComponent> getFinding() { 
963      if (this.finding == null)
964        this.finding = new ArrayList<ClinicalImpressionFindingComponent>();
965      return this.finding;
966    }
967
968    /**
969     * @return Returns a reference to <code>this</code> for easy method chaining
970     */
971    public ClinicalImpression setFinding(List<ClinicalImpressionFindingComponent> theFinding) { 
972      this.finding = theFinding;
973      return this;
974    }
975
976    public boolean hasFinding() { 
977      if (this.finding == null)
978        return false;
979      for (ClinicalImpressionFindingComponent item : this.finding)
980        if (!item.isEmpty())
981          return true;
982      return false;
983    }
984
985    public ClinicalImpressionFindingComponent addFinding() { //3
986      ClinicalImpressionFindingComponent t = new ClinicalImpressionFindingComponent();
987      if (this.finding == null)
988        this.finding = new ArrayList<ClinicalImpressionFindingComponent>();
989      this.finding.add(t);
990      return t;
991    }
992
993    public ClinicalImpression addFinding(ClinicalImpressionFindingComponent t) { //3
994      if (t == null)
995        return this;
996      if (this.finding == null)
997        this.finding = new ArrayList<ClinicalImpressionFindingComponent>();
998      this.finding.add(t);
999      return this;
1000    }
1001
1002    /**
1003     * @return The first repetition of repeating field {@link #finding}, creating it if it does not already exist {3}
1004     */
1005    public ClinicalImpressionFindingComponent getFindingFirstRep() { 
1006      if (getFinding().isEmpty()) {
1007        addFinding();
1008      }
1009      return getFinding().get(0);
1010    }
1011
1012    /**
1013     * @return {@link #prognosisCodeableConcept} (Estimate of likely outcome.)
1014     */
1015    public List<CodeableConcept> getPrognosisCodeableConcept() { 
1016      if (this.prognosisCodeableConcept == null)
1017        this.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1018      return this.prognosisCodeableConcept;
1019    }
1020
1021    /**
1022     * @return Returns a reference to <code>this</code> for easy method chaining
1023     */
1024    public ClinicalImpression setPrognosisCodeableConcept(List<CodeableConcept> thePrognosisCodeableConcept) { 
1025      this.prognosisCodeableConcept = thePrognosisCodeableConcept;
1026      return this;
1027    }
1028
1029    public boolean hasPrognosisCodeableConcept() { 
1030      if (this.prognosisCodeableConcept == null)
1031        return false;
1032      for (CodeableConcept item : this.prognosisCodeableConcept)
1033        if (!item.isEmpty())
1034          return true;
1035      return false;
1036    }
1037
1038    public CodeableConcept addPrognosisCodeableConcept() { //3
1039      CodeableConcept t = new CodeableConcept();
1040      if (this.prognosisCodeableConcept == null)
1041        this.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1042      this.prognosisCodeableConcept.add(t);
1043      return t;
1044    }
1045
1046    public ClinicalImpression addPrognosisCodeableConcept(CodeableConcept t) { //3
1047      if (t == null)
1048        return this;
1049      if (this.prognosisCodeableConcept == null)
1050        this.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1051      this.prognosisCodeableConcept.add(t);
1052      return this;
1053    }
1054
1055    /**
1056     * @return The first repetition of repeating field {@link #prognosisCodeableConcept}, creating it if it does not already exist {3}
1057     */
1058    public CodeableConcept getPrognosisCodeableConceptFirstRep() { 
1059      if (getPrognosisCodeableConcept().isEmpty()) {
1060        addPrognosisCodeableConcept();
1061      }
1062      return getPrognosisCodeableConcept().get(0);
1063    }
1064
1065    /**
1066     * @return {@link #prognosisReference} (RiskAssessment expressing likely outcome.)
1067     */
1068    public List<Reference> getPrognosisReference() { 
1069      if (this.prognosisReference == null)
1070        this.prognosisReference = new ArrayList<Reference>();
1071      return this.prognosisReference;
1072    }
1073
1074    /**
1075     * @return Returns a reference to <code>this</code> for easy method chaining
1076     */
1077    public ClinicalImpression setPrognosisReference(List<Reference> thePrognosisReference) { 
1078      this.prognosisReference = thePrognosisReference;
1079      return this;
1080    }
1081
1082    public boolean hasPrognosisReference() { 
1083      if (this.prognosisReference == null)
1084        return false;
1085      for (Reference item : this.prognosisReference)
1086        if (!item.isEmpty())
1087          return true;
1088      return false;
1089    }
1090
1091    public Reference addPrognosisReference() { //3
1092      Reference t = new Reference();
1093      if (this.prognosisReference == null)
1094        this.prognosisReference = new ArrayList<Reference>();
1095      this.prognosisReference.add(t);
1096      return t;
1097    }
1098
1099    public ClinicalImpression addPrognosisReference(Reference t) { //3
1100      if (t == null)
1101        return this;
1102      if (this.prognosisReference == null)
1103        this.prognosisReference = new ArrayList<Reference>();
1104      this.prognosisReference.add(t);
1105      return this;
1106    }
1107
1108    /**
1109     * @return The first repetition of repeating field {@link #prognosisReference}, creating it if it does not already exist {3}
1110     */
1111    public Reference getPrognosisReferenceFirstRep() { 
1112      if (getPrognosisReference().isEmpty()) {
1113        addPrognosisReference();
1114      }
1115      return getPrognosisReference().get(0);
1116    }
1117
1118    /**
1119     * @return {@link #supportingInfo} (Information supporting the clinical impression, which can contain investigation results.)
1120     */
1121    public List<Reference> getSupportingInfo() { 
1122      if (this.supportingInfo == null)
1123        this.supportingInfo = new ArrayList<Reference>();
1124      return this.supportingInfo;
1125    }
1126
1127    /**
1128     * @return Returns a reference to <code>this</code> for easy method chaining
1129     */
1130    public ClinicalImpression setSupportingInfo(List<Reference> theSupportingInfo) { 
1131      this.supportingInfo = theSupportingInfo;
1132      return this;
1133    }
1134
1135    public boolean hasSupportingInfo() { 
1136      if (this.supportingInfo == null)
1137        return false;
1138      for (Reference item : this.supportingInfo)
1139        if (!item.isEmpty())
1140          return true;
1141      return false;
1142    }
1143
1144    public Reference addSupportingInfo() { //3
1145      Reference t = new Reference();
1146      if (this.supportingInfo == null)
1147        this.supportingInfo = new ArrayList<Reference>();
1148      this.supportingInfo.add(t);
1149      return t;
1150    }
1151
1152    public ClinicalImpression addSupportingInfo(Reference t) { //3
1153      if (t == null)
1154        return this;
1155      if (this.supportingInfo == null)
1156        this.supportingInfo = new ArrayList<Reference>();
1157      this.supportingInfo.add(t);
1158      return this;
1159    }
1160
1161    /**
1162     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
1163     */
1164    public Reference getSupportingInfoFirstRep() { 
1165      if (getSupportingInfo().isEmpty()) {
1166        addSupportingInfo();
1167      }
1168      return getSupportingInfo().get(0);
1169    }
1170
1171    /**
1172     * @return {@link #note} (Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear.)
1173     */
1174    public List<Annotation> getNote() { 
1175      if (this.note == null)
1176        this.note = new ArrayList<Annotation>();
1177      return this.note;
1178    }
1179
1180    /**
1181     * @return Returns a reference to <code>this</code> for easy method chaining
1182     */
1183    public ClinicalImpression setNote(List<Annotation> theNote) { 
1184      this.note = theNote;
1185      return this;
1186    }
1187
1188    public boolean hasNote() { 
1189      if (this.note == null)
1190        return false;
1191      for (Annotation item : this.note)
1192        if (!item.isEmpty())
1193          return true;
1194      return false;
1195    }
1196
1197    public Annotation addNote() { //3
1198      Annotation t = new Annotation();
1199      if (this.note == null)
1200        this.note = new ArrayList<Annotation>();
1201      this.note.add(t);
1202      return t;
1203    }
1204
1205    public ClinicalImpression addNote(Annotation t) { //3
1206      if (t == null)
1207        return this;
1208      if (this.note == null)
1209        this.note = new ArrayList<Annotation>();
1210      this.note.add(t);
1211      return this;
1212    }
1213
1214    /**
1215     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1216     */
1217    public Annotation getNoteFirstRep() { 
1218      if (getNote().isEmpty()) {
1219        addNote();
1220      }
1221      return getNote().get(0);
1222    }
1223
1224      protected void listChildren(List<Property> children) {
1225        super.listChildren(children);
1226        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this clinical impression by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
1227        children.add(new Property("status", "code", "Identifies the workflow status of the assessment.", 0, 1, status));
1228        children.add(new Property("statusReason", "CodeableConcept", "Captures the reason for the current state of the ClinicalImpression.", 0, 1, statusReason));
1229        children.add(new Property("description", "string", "A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.", 0, 1, description));
1230        children.add(new Property("subject", "Reference(Patient|Group)", "The patient or group of individuals assessed as part of this record.", 0, 1, subject));
1231        children.add(new Property("encounter", "Reference(Encounter)", "The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.", 0, 1, encounter));
1232        children.add(new Property("effective[x]", "dateTime|Period", "The point in time or period over which the subject was assessed.", 0, 1, effective));
1233        children.add(new Property("date", "dateTime", "Indicates when the documentation of the assessment was complete.", 0, 1, date));
1234        children.add(new Property("performer", "Reference(Practitioner|PractitionerRole)", "The clinician performing the assessment.", 0, 1, performer));
1235        children.add(new Property("previous", "Reference(ClinicalImpression)", "A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes.", 0, 1, previous));
1236        children.add(new Property("problem", "Reference(Condition|AllergyIntolerance)", "A list of the relevant problems/conditions for a patient.", 0, java.lang.Integer.MAX_VALUE, problem));
1237        children.add(new Property("protocol", "uri", "Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.", 0, java.lang.Integer.MAX_VALUE, protocol));
1238        children.add(new Property("summary", "string", "A text summary of the investigations and the diagnosis.", 0, 1, summary));
1239        children.add(new Property("finding", "", "Specific findings or diagnoses that were considered likely or relevant to ongoing treatment.", 0, java.lang.Integer.MAX_VALUE, finding));
1240        children.add(new Property("prognosisCodeableConcept", "CodeableConcept", "Estimate of likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisCodeableConcept));
1241        children.add(new Property("prognosisReference", "Reference(RiskAssessment)", "RiskAssessment expressing likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisReference));
1242        children.add(new Property("supportingInfo", "Reference(Any)", "Information supporting the clinical impression, which can contain investigation results.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
1243        children.add(new Property("note", "Annotation", "Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear.", 0, java.lang.Integer.MAX_VALUE, note));
1244      }
1245
1246      @Override
1247      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1248        switch (_hash) {
1249        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this clinical impression by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
1250        case -892481550: /*status*/  return new Property("status", "code", "Identifies the workflow status of the assessment.", 0, 1, status);
1251        case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableConcept", "Captures the reason for the current state of the ClinicalImpression.", 0, 1, statusReason);
1252        case -1724546052: /*description*/  return new Property("description", "string", "A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.", 0, 1, description);
1253        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The patient or group of individuals assessed as part of this record.", 0, 1, subject);
1254        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.", 0, 1, encounter);
1255        case 247104889: /*effective[x]*/  return new Property("effective[x]", "dateTime|Period", "The point in time or period over which the subject was assessed.", 0, 1, effective);
1256        case -1468651097: /*effective*/  return new Property("effective[x]", "dateTime|Period", "The point in time or period over which the subject was assessed.", 0, 1, effective);
1257        case -275306910: /*effectiveDateTime*/  return new Property("effective[x]", "dateTime", "The point in time or period over which the subject was assessed.", 0, 1, effective);
1258        case -403934648: /*effectivePeriod*/  return new Property("effective[x]", "Period", "The point in time or period over which the subject was assessed.", 0, 1, effective);
1259        case 3076014: /*date*/  return new Property("date", "dateTime", "Indicates when the documentation of the assessment was complete.", 0, 1, date);
1260        case 481140686: /*performer*/  return new Property("performer", "Reference(Practitioner|PractitionerRole)", "The clinician performing the assessment.", 0, 1, performer);
1261        case -1273775369: /*previous*/  return new Property("previous", "Reference(ClinicalImpression)", "A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes.", 0, 1, previous);
1262        case -309542241: /*problem*/  return new Property("problem", "Reference(Condition|AllergyIntolerance)", "A list of the relevant problems/conditions for a patient.", 0, java.lang.Integer.MAX_VALUE, problem);
1263        case -989163880: /*protocol*/  return new Property("protocol", "uri", "Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.", 0, java.lang.Integer.MAX_VALUE, protocol);
1264        case -1857640538: /*summary*/  return new Property("summary", "string", "A text summary of the investigations and the diagnosis.", 0, 1, summary);
1265        case -853173367: /*finding*/  return new Property("finding", "", "Specific findings or diagnoses that were considered likely or relevant to ongoing treatment.", 0, java.lang.Integer.MAX_VALUE, finding);
1266        case -676337953: /*prognosisCodeableConcept*/  return new Property("prognosisCodeableConcept", "CodeableConcept", "Estimate of likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisCodeableConcept);
1267        case -587137783: /*prognosisReference*/  return new Property("prognosisReference", "Reference(RiskAssessment)", "RiskAssessment expressing likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisReference);
1268        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "Reference(Any)", "Information supporting the clinical impression, which can contain investigation results.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
1269        case 3387378: /*note*/  return new Property("note", "Annotation", "Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear.", 0, java.lang.Integer.MAX_VALUE, note);
1270        default: return super.getNamedProperty(_hash, _name, _checkValid);
1271        }
1272
1273      }
1274
1275      @Override
1276      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1277        switch (hash) {
1278        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1279        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<EventStatus>
1280        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // CodeableConcept
1281        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1282        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1283        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1284        case -1468651097: /*effective*/ return this.effective == null ? new Base[0] : new Base[] {this.effective}; // DataType
1285        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1286        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // Reference
1287        case -1273775369: /*previous*/ return this.previous == null ? new Base[0] : new Base[] {this.previous}; // Reference
1288        case -309542241: /*problem*/ return this.problem == null ? new Base[0] : this.problem.toArray(new Base[this.problem.size()]); // Reference
1289        case -989163880: /*protocol*/ return this.protocol == null ? new Base[0] : this.protocol.toArray(new Base[this.protocol.size()]); // UriType
1290        case -1857640538: /*summary*/ return this.summary == null ? new Base[0] : new Base[] {this.summary}; // StringType
1291        case -853173367: /*finding*/ return this.finding == null ? new Base[0] : this.finding.toArray(new Base[this.finding.size()]); // ClinicalImpressionFindingComponent
1292        case -676337953: /*prognosisCodeableConcept*/ return this.prognosisCodeableConcept == null ? new Base[0] : this.prognosisCodeableConcept.toArray(new Base[this.prognosisCodeableConcept.size()]); // CodeableConcept
1293        case -587137783: /*prognosisReference*/ return this.prognosisReference == null ? new Base[0] : this.prognosisReference.toArray(new Base[this.prognosisReference.size()]); // Reference
1294        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
1295        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1296        default: return super.getProperty(hash, name, checkValid);
1297        }
1298
1299      }
1300
1301      @Override
1302      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1303        switch (hash) {
1304        case -1618432855: // identifier
1305          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1306          return value;
1307        case -892481550: // status
1308          value = new EventStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1309          this.status = (Enumeration) value; // Enumeration<EventStatus>
1310          return value;
1311        case 2051346646: // statusReason
1312          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1313          return value;
1314        case -1724546052: // description
1315          this.description = TypeConvertor.castToString(value); // StringType
1316          return value;
1317        case -1867885268: // subject
1318          this.subject = TypeConvertor.castToReference(value); // Reference
1319          return value;
1320        case 1524132147: // encounter
1321          this.encounter = TypeConvertor.castToReference(value); // Reference
1322          return value;
1323        case -1468651097: // effective
1324          this.effective = TypeConvertor.castToType(value); // DataType
1325          return value;
1326        case 3076014: // date
1327          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1328          return value;
1329        case 481140686: // performer
1330          this.performer = TypeConvertor.castToReference(value); // Reference
1331          return value;
1332        case -1273775369: // previous
1333          this.previous = TypeConvertor.castToReference(value); // Reference
1334          return value;
1335        case -309542241: // problem
1336          this.getProblem().add(TypeConvertor.castToReference(value)); // Reference
1337          return value;
1338        case -989163880: // protocol
1339          this.getProtocol().add(TypeConvertor.castToUri(value)); // UriType
1340          return value;
1341        case -1857640538: // summary
1342          this.summary = TypeConvertor.castToString(value); // StringType
1343          return value;
1344        case -853173367: // finding
1345          this.getFinding().add((ClinicalImpressionFindingComponent) value); // ClinicalImpressionFindingComponent
1346          return value;
1347        case -676337953: // prognosisCodeableConcept
1348          this.getPrognosisCodeableConcept().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1349          return value;
1350        case -587137783: // prognosisReference
1351          this.getPrognosisReference().add(TypeConvertor.castToReference(value)); // Reference
1352          return value;
1353        case 1922406657: // supportingInfo
1354          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
1355          return value;
1356        case 3387378: // note
1357          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1358          return value;
1359        default: return super.setProperty(hash, name, value);
1360        }
1361
1362      }
1363
1364      @Override
1365      public Base setProperty(String name, Base value) throws FHIRException {
1366        if (name.equals("identifier")) {
1367          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1368        } else if (name.equals("status")) {
1369          value = new EventStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1370          this.status = (Enumeration) value; // Enumeration<EventStatus>
1371        } else if (name.equals("statusReason")) {
1372          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1373        } else if (name.equals("description")) {
1374          this.description = TypeConvertor.castToString(value); // StringType
1375        } else if (name.equals("subject")) {
1376          this.subject = TypeConvertor.castToReference(value); // Reference
1377        } else if (name.equals("encounter")) {
1378          this.encounter = TypeConvertor.castToReference(value); // Reference
1379        } else if (name.equals("effective[x]")) {
1380          this.effective = TypeConvertor.castToType(value); // DataType
1381        } else if (name.equals("date")) {
1382          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1383        } else if (name.equals("performer")) {
1384          this.performer = TypeConvertor.castToReference(value); // Reference
1385        } else if (name.equals("previous")) {
1386          this.previous = TypeConvertor.castToReference(value); // Reference
1387        } else if (name.equals("problem")) {
1388          this.getProblem().add(TypeConvertor.castToReference(value));
1389        } else if (name.equals("protocol")) {
1390          this.getProtocol().add(TypeConvertor.castToUri(value));
1391        } else if (name.equals("summary")) {
1392          this.summary = TypeConvertor.castToString(value); // StringType
1393        } else if (name.equals("finding")) {
1394          this.getFinding().add((ClinicalImpressionFindingComponent) value);
1395        } else if (name.equals("prognosisCodeableConcept")) {
1396          this.getPrognosisCodeableConcept().add(TypeConvertor.castToCodeableConcept(value));
1397        } else if (name.equals("prognosisReference")) {
1398          this.getPrognosisReference().add(TypeConvertor.castToReference(value));
1399        } else if (name.equals("supportingInfo")) {
1400          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
1401        } else if (name.equals("note")) {
1402          this.getNote().add(TypeConvertor.castToAnnotation(value));
1403        } else
1404          return super.setProperty(name, value);
1405        return value;
1406      }
1407
1408      @Override
1409      public Base makeProperty(int hash, String name) throws FHIRException {
1410        switch (hash) {
1411        case -1618432855:  return addIdentifier(); 
1412        case -892481550:  return getStatusElement();
1413        case 2051346646:  return getStatusReason();
1414        case -1724546052:  return getDescriptionElement();
1415        case -1867885268:  return getSubject();
1416        case 1524132147:  return getEncounter();
1417        case 247104889:  return getEffective();
1418        case -1468651097:  return getEffective();
1419        case 3076014:  return getDateElement();
1420        case 481140686:  return getPerformer();
1421        case -1273775369:  return getPrevious();
1422        case -309542241:  return addProblem(); 
1423        case -989163880:  return addProtocolElement();
1424        case -1857640538:  return getSummaryElement();
1425        case -853173367:  return addFinding(); 
1426        case -676337953:  return addPrognosisCodeableConcept(); 
1427        case -587137783:  return addPrognosisReference(); 
1428        case 1922406657:  return addSupportingInfo(); 
1429        case 3387378:  return addNote(); 
1430        default: return super.makeProperty(hash, name);
1431        }
1432
1433      }
1434
1435      @Override
1436      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1437        switch (hash) {
1438        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1439        case -892481550: /*status*/ return new String[] {"code"};
1440        case 2051346646: /*statusReason*/ return new String[] {"CodeableConcept"};
1441        case -1724546052: /*description*/ return new String[] {"string"};
1442        case -1867885268: /*subject*/ return new String[] {"Reference"};
1443        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1444        case -1468651097: /*effective*/ return new String[] {"dateTime", "Period"};
1445        case 3076014: /*date*/ return new String[] {"dateTime"};
1446        case 481140686: /*performer*/ return new String[] {"Reference"};
1447        case -1273775369: /*previous*/ return new String[] {"Reference"};
1448        case -309542241: /*problem*/ return new String[] {"Reference"};
1449        case -989163880: /*protocol*/ return new String[] {"uri"};
1450        case -1857640538: /*summary*/ return new String[] {"string"};
1451        case -853173367: /*finding*/ return new String[] {};
1452        case -676337953: /*prognosisCodeableConcept*/ return new String[] {"CodeableConcept"};
1453        case -587137783: /*prognosisReference*/ return new String[] {"Reference"};
1454        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
1455        case 3387378: /*note*/ return new String[] {"Annotation"};
1456        default: return super.getTypesForProperty(hash, name);
1457        }
1458
1459      }
1460
1461      @Override
1462      public Base addChild(String name) throws FHIRException {
1463        if (name.equals("identifier")) {
1464          return addIdentifier();
1465        }
1466        else if (name.equals("status")) {
1467          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.status");
1468        }
1469        else if (name.equals("statusReason")) {
1470          this.statusReason = new CodeableConcept();
1471          return this.statusReason;
1472        }
1473        else if (name.equals("description")) {
1474          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.description");
1475        }
1476        else if (name.equals("subject")) {
1477          this.subject = new Reference();
1478          return this.subject;
1479        }
1480        else if (name.equals("encounter")) {
1481          this.encounter = new Reference();
1482          return this.encounter;
1483        }
1484        else if (name.equals("effectiveDateTime")) {
1485          this.effective = new DateTimeType();
1486          return this.effective;
1487        }
1488        else if (name.equals("effectivePeriod")) {
1489          this.effective = new Period();
1490          return this.effective;
1491        }
1492        else if (name.equals("date")) {
1493          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.date");
1494        }
1495        else if (name.equals("performer")) {
1496          this.performer = new Reference();
1497          return this.performer;
1498        }
1499        else if (name.equals("previous")) {
1500          this.previous = new Reference();
1501          return this.previous;
1502        }
1503        else if (name.equals("problem")) {
1504          return addProblem();
1505        }
1506        else if (name.equals("protocol")) {
1507          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.protocol");
1508        }
1509        else if (name.equals("summary")) {
1510          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.summary");
1511        }
1512        else if (name.equals("finding")) {
1513          return addFinding();
1514        }
1515        else if (name.equals("prognosisCodeableConcept")) {
1516          return addPrognosisCodeableConcept();
1517        }
1518        else if (name.equals("prognosisReference")) {
1519          return addPrognosisReference();
1520        }
1521        else if (name.equals("supportingInfo")) {
1522          return addSupportingInfo();
1523        }
1524        else if (name.equals("note")) {
1525          return addNote();
1526        }
1527        else
1528          return super.addChild(name);
1529      }
1530
1531  public String fhirType() {
1532    return "ClinicalImpression";
1533
1534  }
1535
1536      public ClinicalImpression copy() {
1537        ClinicalImpression dst = new ClinicalImpression();
1538        copyValues(dst);
1539        return dst;
1540      }
1541
1542      public void copyValues(ClinicalImpression dst) {
1543        super.copyValues(dst);
1544        if (identifier != null) {
1545          dst.identifier = new ArrayList<Identifier>();
1546          for (Identifier i : identifier)
1547            dst.identifier.add(i.copy());
1548        };
1549        dst.status = status == null ? null : status.copy();
1550        dst.statusReason = statusReason == null ? null : statusReason.copy();
1551        dst.description = description == null ? null : description.copy();
1552        dst.subject = subject == null ? null : subject.copy();
1553        dst.encounter = encounter == null ? null : encounter.copy();
1554        dst.effective = effective == null ? null : effective.copy();
1555        dst.date = date == null ? null : date.copy();
1556        dst.performer = performer == null ? null : performer.copy();
1557        dst.previous = previous == null ? null : previous.copy();
1558        if (problem != null) {
1559          dst.problem = new ArrayList<Reference>();
1560          for (Reference i : problem)
1561            dst.problem.add(i.copy());
1562        };
1563        if (protocol != null) {
1564          dst.protocol = new ArrayList<UriType>();
1565          for (UriType i : protocol)
1566            dst.protocol.add(i.copy());
1567        };
1568        dst.summary = summary == null ? null : summary.copy();
1569        if (finding != null) {
1570          dst.finding = new ArrayList<ClinicalImpressionFindingComponent>();
1571          for (ClinicalImpressionFindingComponent i : finding)
1572            dst.finding.add(i.copy());
1573        };
1574        if (prognosisCodeableConcept != null) {
1575          dst.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1576          for (CodeableConcept i : prognosisCodeableConcept)
1577            dst.prognosisCodeableConcept.add(i.copy());
1578        };
1579        if (prognosisReference != null) {
1580          dst.prognosisReference = new ArrayList<Reference>();
1581          for (Reference i : prognosisReference)
1582            dst.prognosisReference.add(i.copy());
1583        };
1584        if (supportingInfo != null) {
1585          dst.supportingInfo = new ArrayList<Reference>();
1586          for (Reference i : supportingInfo)
1587            dst.supportingInfo.add(i.copy());
1588        };
1589        if (note != null) {
1590          dst.note = new ArrayList<Annotation>();
1591          for (Annotation i : note)
1592            dst.note.add(i.copy());
1593        };
1594      }
1595
1596      protected ClinicalImpression typedCopy() {
1597        return copy();
1598      }
1599
1600      @Override
1601      public boolean equalsDeep(Base other_) {
1602        if (!super.equalsDeep(other_))
1603          return false;
1604        if (!(other_ instanceof ClinicalImpression))
1605          return false;
1606        ClinicalImpression o = (ClinicalImpression) other_;
1607        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(statusReason, o.statusReason, true)
1608           && compareDeep(description, o.description, true) && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true)
1609           && compareDeep(effective, o.effective, true) && compareDeep(date, o.date, true) && compareDeep(performer, o.performer, true)
1610           && compareDeep(previous, o.previous, true) && compareDeep(problem, o.problem, true) && compareDeep(protocol, o.protocol, true)
1611           && compareDeep(summary, o.summary, true) && compareDeep(finding, o.finding, true) && compareDeep(prognosisCodeableConcept, o.prognosisCodeableConcept, true)
1612           && compareDeep(prognosisReference, o.prognosisReference, true) && compareDeep(supportingInfo, o.supportingInfo, true)
1613           && compareDeep(note, o.note, true);
1614      }
1615
1616      @Override
1617      public boolean equalsShallow(Base other_) {
1618        if (!super.equalsShallow(other_))
1619          return false;
1620        if (!(other_ instanceof ClinicalImpression))
1621          return false;
1622        ClinicalImpression o = (ClinicalImpression) other_;
1623        return compareValues(status, o.status, true) && compareValues(description, o.description, true) && compareValues(date, o.date, true)
1624           && compareValues(protocol, o.protocol, true) && compareValues(summary, o.summary, true);
1625      }
1626
1627      public boolean isEmpty() {
1628        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, statusReason
1629          , description, subject, encounter, effective, date, performer, previous, problem
1630          , protocol, summary, finding, prognosisCodeableConcept, prognosisReference, supportingInfo
1631          , note);
1632      }
1633
1634  @Override
1635  public ResourceType getResourceType() {
1636    return ResourceType.ClinicalImpression;
1637   }
1638
1639 /**
1640   * Search parameter: <b>encounter</b>
1641   * <p>
1642   * Description: <b>The Encounter during which this ClinicalImpression was created</b><br>
1643   * Type: <b>reference</b><br>
1644   * Path: <b>ClinicalImpression.encounter</b><br>
1645   * </p>
1646   */
1647  @SearchParamDefinition(name="encounter", path="ClinicalImpression.encounter", description="The Encounter during which this ClinicalImpression was created", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
1648  public static final String SP_ENCOUNTER = "encounter";
1649 /**
1650   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
1651   * <p>
1652   * Description: <b>The Encounter during which this ClinicalImpression was created</b><br>
1653   * Type: <b>reference</b><br>
1654   * Path: <b>ClinicalImpression.encounter</b><br>
1655   * </p>
1656   */
1657  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
1658
1659/**
1660   * Constant for fluent queries to be used to add include statements. Specifies
1661   * the path value of "<b>ClinicalImpression:encounter</b>".
1662   */
1663  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("ClinicalImpression:encounter").toLocked();
1664
1665 /**
1666   * Search parameter: <b>finding-code</b>
1667   * <p>
1668   * Description: <b>Reference to a concept (by class)</b><br>
1669   * Type: <b>token</b><br>
1670   * Path: <b>ClinicalImpression.finding.item.concept</b><br>
1671   * </p>
1672   */
1673  @SearchParamDefinition(name="finding-code", path="ClinicalImpression.finding.item.concept", description="Reference to a concept (by class)", type="token" )
1674  public static final String SP_FINDING_CODE = "finding-code";
1675 /**
1676   * <b>Fluent Client</b> search parameter constant for <b>finding-code</b>
1677   * <p>
1678   * Description: <b>Reference to a concept (by class)</b><br>
1679   * Type: <b>token</b><br>
1680   * Path: <b>ClinicalImpression.finding.item.concept</b><br>
1681   * </p>
1682   */
1683  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FINDING_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FINDING_CODE);
1684
1685 /**
1686   * Search parameter: <b>finding-ref</b>
1687   * <p>
1688   * Description: <b>Reference to a resource (by instance)</b><br>
1689   * Type: <b>reference</b><br>
1690   * Path: <b>ClinicalImpression.finding.item.reference</b><br>
1691   * </p>
1692   */
1693  @SearchParamDefinition(name="finding-ref", path="ClinicalImpression.finding.item.reference", description="Reference to a resource (by instance)", type="reference" )
1694  public static final String SP_FINDING_REF = "finding-ref";
1695 /**
1696   * <b>Fluent Client</b> search parameter constant for <b>finding-ref</b>
1697   * <p>
1698   * Description: <b>Reference to a resource (by instance)</b><br>
1699   * Type: <b>reference</b><br>
1700   * Path: <b>ClinicalImpression.finding.item.reference</b><br>
1701   * </p>
1702   */
1703  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam FINDING_REF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_FINDING_REF);
1704
1705/**
1706   * Constant for fluent queries to be used to add include statements. Specifies
1707   * the path value of "<b>ClinicalImpression:finding-ref</b>".
1708   */
1709  public static final ca.uhn.fhir.model.api.Include INCLUDE_FINDING_REF = new ca.uhn.fhir.model.api.Include("ClinicalImpression:finding-ref").toLocked();
1710
1711 /**
1712   * Search parameter: <b>identifier</b>
1713   * <p>
1714   * Description: <b>Business identifier</b><br>
1715   * Type: <b>token</b><br>
1716   * Path: <b>ClinicalImpression.identifier</b><br>
1717   * </p>
1718   */
1719  @SearchParamDefinition(name="identifier", path="ClinicalImpression.identifier", description="Business identifier", type="token" )
1720  public static final String SP_IDENTIFIER = "identifier";
1721 /**
1722   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1723   * <p>
1724   * Description: <b>Business identifier</b><br>
1725   * Type: <b>token</b><br>
1726   * Path: <b>ClinicalImpression.identifier</b><br>
1727   * </p>
1728   */
1729  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1730
1731 /**
1732   * Search parameter: <b>performer</b>
1733   * <p>
1734   * Description: <b>The clinician performing the assessment</b><br>
1735   * Type: <b>reference</b><br>
1736   * Path: <b>ClinicalImpression.performer</b><br>
1737   * </p>
1738   */
1739  @SearchParamDefinition(name="performer", path="ClinicalImpression.performer", description="The clinician performing the assessment", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Practitioner.class, PractitionerRole.class } )
1740  public static final String SP_PERFORMER = "performer";
1741 /**
1742   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
1743   * <p>
1744   * Description: <b>The clinician performing the assessment</b><br>
1745   * Type: <b>reference</b><br>
1746   * Path: <b>ClinicalImpression.performer</b><br>
1747   * </p>
1748   */
1749  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
1750
1751/**
1752   * Constant for fluent queries to be used to add include statements. Specifies
1753   * the path value of "<b>ClinicalImpression:performer</b>".
1754   */
1755  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("ClinicalImpression:performer").toLocked();
1756
1757 /**
1758   * Search parameter: <b>previous</b>
1759   * <p>
1760   * Description: <b>Reference to last assessment</b><br>
1761   * Type: <b>reference</b><br>
1762   * Path: <b>ClinicalImpression.previous</b><br>
1763   * </p>
1764   */
1765  @SearchParamDefinition(name="previous", path="ClinicalImpression.previous", description="Reference to last assessment", type="reference", target={ClinicalImpression.class } )
1766  public static final String SP_PREVIOUS = "previous";
1767 /**
1768   * <b>Fluent Client</b> search parameter constant for <b>previous</b>
1769   * <p>
1770   * Description: <b>Reference to last assessment</b><br>
1771   * Type: <b>reference</b><br>
1772   * Path: <b>ClinicalImpression.previous</b><br>
1773   * </p>
1774   */
1775  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREVIOUS = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREVIOUS);
1776
1777/**
1778   * Constant for fluent queries to be used to add include statements. Specifies
1779   * the path value of "<b>ClinicalImpression:previous</b>".
1780   */
1781  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREVIOUS = new ca.uhn.fhir.model.api.Include("ClinicalImpression:previous").toLocked();
1782
1783 /**
1784   * Search parameter: <b>problem</b>
1785   * <p>
1786   * Description: <b>Relevant impressions of patient state</b><br>
1787   * Type: <b>reference</b><br>
1788   * Path: <b>ClinicalImpression.problem</b><br>
1789   * </p>
1790   */
1791  @SearchParamDefinition(name="problem", path="ClinicalImpression.problem", description="Relevant impressions of patient state", type="reference", target={AllergyIntolerance.class, Condition.class } )
1792  public static final String SP_PROBLEM = "problem";
1793 /**
1794   * <b>Fluent Client</b> search parameter constant for <b>problem</b>
1795   * <p>
1796   * Description: <b>Relevant impressions of patient state</b><br>
1797   * Type: <b>reference</b><br>
1798   * Path: <b>ClinicalImpression.problem</b><br>
1799   * </p>
1800   */
1801  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PROBLEM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PROBLEM);
1802
1803/**
1804   * Constant for fluent queries to be used to add include statements. Specifies
1805   * the path value of "<b>ClinicalImpression:problem</b>".
1806   */
1807  public static final ca.uhn.fhir.model.api.Include INCLUDE_PROBLEM = new ca.uhn.fhir.model.api.Include("ClinicalImpression:problem").toLocked();
1808
1809 /**
1810   * Search parameter: <b>status</b>
1811   * <p>
1812   * Description: <b>preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown</b><br>
1813   * Type: <b>token</b><br>
1814   * Path: <b>ClinicalImpression.status</b><br>
1815   * </p>
1816   */
1817  @SearchParamDefinition(name="status", path="ClinicalImpression.status", description="preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown", type="token" )
1818  public static final String SP_STATUS = "status";
1819 /**
1820   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1821   * <p>
1822   * Description: <b>preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown</b><br>
1823   * Type: <b>token</b><br>
1824   * Path: <b>ClinicalImpression.status</b><br>
1825   * </p>
1826   */
1827  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1828
1829 /**
1830   * Search parameter: <b>subject</b>
1831   * <p>
1832   * Description: <b>Patient or group assessed</b><br>
1833   * Type: <b>reference</b><br>
1834   * Path: <b>ClinicalImpression.subject</b><br>
1835   * </p>
1836   */
1837  @SearchParamDefinition(name="subject", path="ClinicalImpression.subject", description="Patient or group assessed", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Group.class, Patient.class } )
1838  public static final String SP_SUBJECT = "subject";
1839 /**
1840   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1841   * <p>
1842   * Description: <b>Patient or group assessed</b><br>
1843   * Type: <b>reference</b><br>
1844   * Path: <b>ClinicalImpression.subject</b><br>
1845   * </p>
1846   */
1847  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1848
1849/**
1850   * Constant for fluent queries to be used to add include statements. Specifies
1851   * the path value of "<b>ClinicalImpression:subject</b>".
1852   */
1853  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("ClinicalImpression:subject").toLocked();
1854
1855 /**
1856   * Search parameter: <b>supporting-info</b>
1857   * <p>
1858   * Description: <b>Information supporting the clinical impression</b><br>
1859   * Type: <b>reference</b><br>
1860   * Path: <b>ClinicalImpression.supportingInfo</b><br>
1861   * </p>
1862   */
1863  @SearchParamDefinition(name="supporting-info", path="ClinicalImpression.supportingInfo", description="Information supporting the clinical impression", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
1864  public static final String SP_SUPPORTING_INFO = "supporting-info";
1865 /**
1866   * <b>Fluent Client</b> search parameter constant for <b>supporting-info</b>
1867   * <p>
1868   * Description: <b>Information supporting the clinical impression</b><br>
1869   * Type: <b>reference</b><br>
1870   * Path: <b>ClinicalImpression.supportingInfo</b><br>
1871   * </p>
1872   */
1873  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUPPORTING_INFO = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUPPORTING_INFO);
1874
1875/**
1876   * Constant for fluent queries to be used to add include statements. Specifies
1877   * the path value of "<b>ClinicalImpression:supporting-info</b>".
1878   */
1879  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUPPORTING_INFO = new ca.uhn.fhir.model.api.Include("ClinicalImpression:supporting-info").toLocked();
1880
1881 /**
1882   * Search parameter: <b>date</b>
1883   * <p>
1884   * Description: <b>Multiple Resources: 
1885
1886* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
1887* [CarePlan](careplan.html): Time period plan covers
1888* [CareTeam](careteam.html): A date within the coverage time period.
1889* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
1890* [Composition](composition.html): Composition editing time
1891* [Consent](consent.html): When consent was agreed to
1892* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
1893* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
1894* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
1895* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
1896* [Flag](flag.html): Time period when flag is active
1897* [Immunization](immunization.html): Vaccination  (non)-Administration Date
1898* [List](list.html): When the list was prepared
1899* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
1900* [Procedure](procedure.html): When the procedure occurred or is occurring
1901* [RiskAssessment](riskassessment.html): When was assessment made?
1902* [SupplyRequest](supplyrequest.html): When the request was made
1903</b><br>
1904   * Type: <b>date</b><br>
1905   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
1906   * </p>
1907   */
1908  @SearchParamDefinition(name="date", path="AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [List](list.html): When the list was prepared\r\n* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
1909  public static final String SP_DATE = "date";
1910 /**
1911   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1912   * <p>
1913   * Description: <b>Multiple Resources: 
1914
1915* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
1916* [CarePlan](careplan.html): Time period plan covers
1917* [CareTeam](careteam.html): A date within the coverage time period.
1918* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
1919* [Composition](composition.html): Composition editing time
1920* [Consent](consent.html): When consent was agreed to
1921* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
1922* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
1923* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
1924* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
1925* [Flag](flag.html): Time period when flag is active
1926* [Immunization](immunization.html): Vaccination  (non)-Administration Date
1927* [List](list.html): When the list was prepared
1928* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
1929* [Procedure](procedure.html): When the procedure occurred or is occurring
1930* [RiskAssessment](riskassessment.html): When was assessment made?
1931* [SupplyRequest](supplyrequest.html): When the request was made
1932</b><br>
1933   * Type: <b>date</b><br>
1934   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
1935   * </p>
1936   */
1937  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1938
1939 /**
1940   * Search parameter: <b>patient</b>
1941   * <p>
1942   * Description: <b>Multiple Resources: 
1943
1944* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
1945* [CarePlan](careplan.html): Who the care plan is for
1946* [CareTeam](careteam.html): Who care team is for
1947* [ClinicalImpression](clinicalimpression.html): Patient assessed
1948* [Composition](composition.html): Who and/or what the composition is about
1949* [Condition](condition.html): Who has the condition?
1950* [Consent](consent.html): Who the consent applies to
1951* [DetectedIssue](detectedissue.html): Associated patient
1952* [DeviceRequest](devicerequest.html): Individual the service is ordered for
1953* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
1954* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
1955* [DocumentManifest](documentmanifest.html): The subject of the set of documents
1956* [DocumentReference](documentreference.html): Who/what is the subject of the document
1957* [Encounter](encounter.html): The patient present at the encounter
1958* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
1959* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
1960* [Flag](flag.html): The identity of a subject to list flags for
1961* [Goal](goal.html): Who this goal is intended for
1962* [ImagingStudy](imagingstudy.html): Who the study is about
1963* [Immunization](immunization.html): The patient for the vaccination record
1964* [List](list.html): If all resources have the same subject
1965* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
1966* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
1967* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
1968* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
1969* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
1970* [Observation](observation.html): The subject that the observation is about (if patient)
1971* [Procedure](procedure.html): Search by subject - a patient
1972* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
1973* [ServiceRequest](servicerequest.html): Search by subject - a patient
1974* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
1975* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
1976</b><br>
1977   * Type: <b>reference</b><br>
1978   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
1979   * </p>
1980   */
1981  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Patient.class } )
1982  public static final String SP_PATIENT = "patient";
1983 /**
1984   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1985   * <p>
1986   * Description: <b>Multiple Resources: 
1987
1988* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
1989* [CarePlan](careplan.html): Who the care plan is for
1990* [CareTeam](careteam.html): Who care team is for
1991* [ClinicalImpression](clinicalimpression.html): Patient assessed
1992* [Composition](composition.html): Who and/or what the composition is about
1993* [Condition](condition.html): Who has the condition?
1994* [Consent](consent.html): Who the consent applies to
1995* [DetectedIssue](detectedissue.html): Associated patient
1996* [DeviceRequest](devicerequest.html): Individual the service is ordered for
1997* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
1998* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
1999* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2000* [DocumentReference](documentreference.html): Who/what is the subject of the document
2001* [Encounter](encounter.html): The patient present at the encounter
2002* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2003* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2004* [Flag](flag.html): The identity of a subject to list flags for
2005* [Goal](goal.html): Who this goal is intended for
2006* [ImagingStudy](imagingstudy.html): Who the study is about
2007* [Immunization](immunization.html): The patient for the vaccination record
2008* [List](list.html): If all resources have the same subject
2009* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2010* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2011* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2012* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
2013* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2014* [Observation](observation.html): The subject that the observation is about (if patient)
2015* [Procedure](procedure.html): Search by subject - a patient
2016* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2017* [ServiceRequest](servicerequest.html): Search by subject - a patient
2018* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2019* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2020</b><br>
2021   * Type: <b>reference</b><br>
2022   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2023   * </p>
2024   */
2025  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2026
2027/**
2028   * Constant for fluent queries to be used to add include statements. Specifies
2029   * the path value of "<b>ClinicalImpression:patient</b>".
2030   */
2031  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ClinicalImpression:patient").toLocked();
2032
2033
2034}
2035