001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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    public enum ClinicalImpressionStatus {
057        /**
058         * The event is currently occurring.
059         */
060        INPROGRESS, 
061        /**
062         * The event has now concluded.
063         */
064        COMPLETED, 
065        /**
066         * This electronic record should never have existed, though it is possible that real-world decisions were based on it.  (If real-world activity has occurred, the status should be \"stopped\" rather than \"entered-in-error\".).
067         */
068        ENTEREDINERROR, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static ClinicalImpressionStatus fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("in-progress".equals(codeString))
077          return INPROGRESS;
078        if ("completed".equals(codeString))
079          return COMPLETED;
080        if ("entered-in-error".equals(codeString))
081          return ENTEREDINERROR;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown ClinicalImpressionStatus code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case INPROGRESS: return "in-progress";
090            case COMPLETED: return "completed";
091            case ENTEREDINERROR: return "entered-in-error";
092            case NULL: return null;
093            default: return "?";
094          }
095        }
096        public String getSystem() {
097          switch (this) {
098            case INPROGRESS: return "http://hl7.org/fhir/event-status";
099            case COMPLETED: return "http://hl7.org/fhir/event-status";
100            case ENTEREDINERROR: return "http://hl7.org/fhir/event-status";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDefinition() {
106          switch (this) {
107            case INPROGRESS: return "The event is currently occurring.";
108            case COMPLETED: return "The event has now concluded.";
109            case ENTEREDINERROR: return "This electronic record should never have existed, though it is possible that real-world decisions were based on it.  (If real-world activity has occurred, the status should be \"stopped\" rather than \"entered-in-error\".).";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDisplay() {
115          switch (this) {
116            case INPROGRESS: return "In Progress";
117            case COMPLETED: return "Completed";
118            case ENTEREDINERROR: return "Entered in Error";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123    }
124
125  public static class ClinicalImpressionStatusEnumFactory implements EnumFactory<ClinicalImpressionStatus> {
126    public ClinicalImpressionStatus fromCode(String codeString) throws IllegalArgumentException {
127      if (codeString == null || "".equals(codeString))
128            if (codeString == null || "".equals(codeString))
129                return null;
130        if ("in-progress".equals(codeString))
131          return ClinicalImpressionStatus.INPROGRESS;
132        if ("completed".equals(codeString))
133          return ClinicalImpressionStatus.COMPLETED;
134        if ("entered-in-error".equals(codeString))
135          return ClinicalImpressionStatus.ENTEREDINERROR;
136        throw new IllegalArgumentException("Unknown ClinicalImpressionStatus code '"+codeString+"'");
137        }
138        public Enumeration<ClinicalImpressionStatus> fromType(Base code) throws FHIRException {
139          if (code == null)
140            return null;
141          if (code.isEmpty())
142            return new Enumeration<ClinicalImpressionStatus>(this);
143          String codeString = ((PrimitiveType) code).asStringValue();
144          if (codeString == null || "".equals(codeString))
145            return null;
146        if ("in-progress".equals(codeString))
147          return new Enumeration<ClinicalImpressionStatus>(this, ClinicalImpressionStatus.INPROGRESS);
148        if ("completed".equals(codeString))
149          return new Enumeration<ClinicalImpressionStatus>(this, ClinicalImpressionStatus.COMPLETED);
150        if ("entered-in-error".equals(codeString))
151          return new Enumeration<ClinicalImpressionStatus>(this, ClinicalImpressionStatus.ENTEREDINERROR);
152        throw new FHIRException("Unknown ClinicalImpressionStatus code '"+codeString+"'");
153        }
154    public String toCode(ClinicalImpressionStatus code) {
155      if (code == ClinicalImpressionStatus.INPROGRESS)
156        return "in-progress";
157      if (code == ClinicalImpressionStatus.COMPLETED)
158        return "completed";
159      if (code == ClinicalImpressionStatus.ENTEREDINERROR)
160        return "entered-in-error";
161      return "?";
162      }
163    public String toSystem(ClinicalImpressionStatus code) {
164      return code.getSystem();
165      }
166    }
167
168    @Block()
169    public static class ClinicalImpressionInvestigationComponent extends BackboneElement implements IBaseBackboneElement {
170        /**
171         * A name/code for the group ("set") of investigations. Typically, this will be something like "signs", "symptoms", "clinical", "diagnostic", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used.
172         */
173        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
174        @Description(shortDefinition="A name/code for the set", formalDefinition="A name/code for the group (\"set\") of investigations. Typically, this will be something like \"signs\", \"symptoms\", \"clinical\", \"diagnostic\", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used." )
175        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/investigation-sets")
176        protected CodeableConcept code;
177
178        /**
179         * A record of a specific investigation that was undertaken.
180         */
181        @Child(name = "item", type = {Observation.class, QuestionnaireResponse.class, FamilyMemberHistory.class, DiagnosticReport.class, RiskAssessment.class, ImagingStudy.class, Media.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
182        @Description(shortDefinition="Record of a specific investigation", formalDefinition="A record of a specific investigation that was undertaken." )
183        protected List<Reference> item;
184
185        private static final long serialVersionUID = -1843919094L;
186
187    /**
188     * Constructor
189     */
190      public ClinicalImpressionInvestigationComponent() {
191        super();
192      }
193
194    /**
195     * Constructor
196     */
197      public ClinicalImpressionInvestigationComponent(CodeableConcept code) {
198        super();
199        this.setCode(code);
200      }
201
202        /**
203         * @return {@link #code} (A name/code for the group ("set") of investigations. Typically, this will be something like "signs", "symptoms", "clinical", "diagnostic", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used.)
204         */
205        public CodeableConcept getCode() { 
206          if (this.code == null)
207            if (Configuration.errorOnAutoCreate())
208              throw new Error("Attempt to auto-create ClinicalImpressionInvestigationComponent.code");
209            else if (Configuration.doAutoCreate())
210              this.code = new CodeableConcept(); // cc
211          return this.code;
212        }
213
214        public boolean hasCode() { 
215          return this.code != null && !this.code.isEmpty();
216        }
217
218        /**
219         * @param value {@link #code} (A name/code for the group ("set") of investigations. Typically, this will be something like "signs", "symptoms", "clinical", "diagnostic", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used.)
220         */
221        public ClinicalImpressionInvestigationComponent setCode(CodeableConcept value) { 
222          this.code = value;
223          return this;
224        }
225
226        /**
227         * @return {@link #item} (A record of a specific investigation that was undertaken.)
228         */
229        public List<Reference> getItem() { 
230          if (this.item == null)
231            this.item = new ArrayList<Reference>();
232          return this.item;
233        }
234
235        /**
236         * @return Returns a reference to <code>this</code> for easy method chaining
237         */
238        public ClinicalImpressionInvestigationComponent setItem(List<Reference> theItem) { 
239          this.item = theItem;
240          return this;
241        }
242
243        public boolean hasItem() { 
244          if (this.item == null)
245            return false;
246          for (Reference item : this.item)
247            if (!item.isEmpty())
248              return true;
249          return false;
250        }
251
252        public Reference addItem() { //3
253          Reference t = new Reference();
254          if (this.item == null)
255            this.item = new ArrayList<Reference>();
256          this.item.add(t);
257          return t;
258        }
259
260        public ClinicalImpressionInvestigationComponent addItem(Reference t) { //3
261          if (t == null)
262            return this;
263          if (this.item == null)
264            this.item = new ArrayList<Reference>();
265          this.item.add(t);
266          return this;
267        }
268
269        /**
270         * @return The first repetition of repeating field {@link #item}, creating it if it does not already exist {3}
271         */
272        public Reference getItemFirstRep() { 
273          if (getItem().isEmpty()) {
274            addItem();
275          }
276          return getItem().get(0);
277        }
278
279        protected void listChildren(List<Property> children) {
280          super.listChildren(children);
281          children.add(new Property("code", "CodeableConcept", "A name/code for the group (\"set\") of investigations. Typically, this will be something like \"signs\", \"symptoms\", \"clinical\", \"diagnostic\", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used.", 0, 1, code));
282          children.add(new Property("item", "Reference(Observation|QuestionnaireResponse|FamilyMemberHistory|DiagnosticReport|RiskAssessment|ImagingStudy|Media)", "A record of a specific investigation that was undertaken.", 0, java.lang.Integer.MAX_VALUE, item));
283        }
284
285        @Override
286        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
287          switch (_hash) {
288          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A name/code for the group (\"set\") of investigations. Typically, this will be something like \"signs\", \"symptoms\", \"clinical\", \"diagnostic\", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used.", 0, 1, code);
289          case 3242771: /*item*/  return new Property("item", "Reference(Observation|QuestionnaireResponse|FamilyMemberHistory|DiagnosticReport|RiskAssessment|ImagingStudy|Media)", "A record of a specific investigation that was undertaken.", 0, java.lang.Integer.MAX_VALUE, item);
290          default: return super.getNamedProperty(_hash, _name, _checkValid);
291          }
292
293        }
294
295      @Override
296      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
297        switch (hash) {
298        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
299        case 3242771: /*item*/ return this.item == null ? new Base[0] : this.item.toArray(new Base[this.item.size()]); // Reference
300        default: return super.getProperty(hash, name, checkValid);
301        }
302
303      }
304
305      @Override
306      public Base setProperty(int hash, String name, Base value) throws FHIRException {
307        switch (hash) {
308        case 3059181: // code
309          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
310          return value;
311        case 3242771: // item
312          this.getItem().add(TypeConvertor.castToReference(value)); // Reference
313          return value;
314        default: return super.setProperty(hash, name, value);
315        }
316
317      }
318
319      @Override
320      public Base setProperty(String name, Base value) throws FHIRException {
321        if (name.equals("code")) {
322          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
323        } else if (name.equals("item")) {
324          this.getItem().add(TypeConvertor.castToReference(value));
325        } else
326          return super.setProperty(name, value);
327        return value;
328      }
329
330      @Override
331      public Base makeProperty(int hash, String name) throws FHIRException {
332        switch (hash) {
333        case 3059181:  return getCode();
334        case 3242771:  return addItem(); 
335        default: return super.makeProperty(hash, name);
336        }
337
338      }
339
340      @Override
341      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
342        switch (hash) {
343        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
344        case 3242771: /*item*/ return new String[] {"Reference"};
345        default: return super.getTypesForProperty(hash, name);
346        }
347
348      }
349
350      @Override
351      public Base addChild(String name) throws FHIRException {
352        if (name.equals("code")) {
353          this.code = new CodeableConcept();
354          return this.code;
355        }
356        else if (name.equals("item")) {
357          return addItem();
358        }
359        else
360          return super.addChild(name);
361      }
362
363      public ClinicalImpressionInvestigationComponent copy() {
364        ClinicalImpressionInvestigationComponent dst = new ClinicalImpressionInvestigationComponent();
365        copyValues(dst);
366        return dst;
367      }
368
369      public void copyValues(ClinicalImpressionInvestigationComponent dst) {
370        super.copyValues(dst);
371        dst.code = code == null ? null : code.copy();
372        if (item != null) {
373          dst.item = new ArrayList<Reference>();
374          for (Reference i : item)
375            dst.item.add(i.copy());
376        };
377      }
378
379      @Override
380      public boolean equalsDeep(Base other_) {
381        if (!super.equalsDeep(other_))
382          return false;
383        if (!(other_ instanceof ClinicalImpressionInvestigationComponent))
384          return false;
385        ClinicalImpressionInvestigationComponent o = (ClinicalImpressionInvestigationComponent) other_;
386        return compareDeep(code, o.code, true) && compareDeep(item, o.item, true);
387      }
388
389      @Override
390      public boolean equalsShallow(Base other_) {
391        if (!super.equalsShallow(other_))
392          return false;
393        if (!(other_ instanceof ClinicalImpressionInvestigationComponent))
394          return false;
395        ClinicalImpressionInvestigationComponent o = (ClinicalImpressionInvestigationComponent) other_;
396        return true;
397      }
398
399      public boolean isEmpty() {
400        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, item);
401      }
402
403  public String fhirType() {
404    return "ClinicalImpression.investigation";
405
406  }
407
408  }
409
410    @Block()
411    public static class ClinicalImpressionFindingComponent extends BackboneElement implements IBaseBackboneElement {
412        /**
413         * Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions.
414         */
415        @Child(name = "itemCodeableConcept", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
416        @Description(shortDefinition="What was found", formalDefinition="Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions." )
417        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
418        protected CodeableConcept itemCodeableConcept;
419
420        /**
421         * Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions.
422         */
423        @Child(name = "itemReference", type = {Condition.class, Observation.class, Media.class}, order=2, min=0, max=1, modifier=false, summary=false)
424        @Description(shortDefinition="What was found", formalDefinition="Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions." )
425        protected Reference itemReference;
426
427        /**
428         * Which investigations support finding or diagnosis.
429         */
430        @Child(name = "basis", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
431        @Description(shortDefinition="Which investigations support finding", formalDefinition="Which investigations support finding or diagnosis." )
432        protected StringType basis;
433
434        private static final long serialVersionUID = -101631301L;
435
436    /**
437     * Constructor
438     */
439      public ClinicalImpressionFindingComponent() {
440        super();
441      }
442
443        /**
444         * @return {@link #itemCodeableConcept} (Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions.)
445         */
446        public CodeableConcept getItemCodeableConcept() { 
447          if (this.itemCodeableConcept == null)
448            if (Configuration.errorOnAutoCreate())
449              throw new Error("Attempt to auto-create ClinicalImpressionFindingComponent.itemCodeableConcept");
450            else if (Configuration.doAutoCreate())
451              this.itemCodeableConcept = new CodeableConcept(); // cc
452          return this.itemCodeableConcept;
453        }
454
455        public boolean hasItemCodeableConcept() { 
456          return this.itemCodeableConcept != null && !this.itemCodeableConcept.isEmpty();
457        }
458
459        /**
460         * @param value {@link #itemCodeableConcept} (Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions.)
461         */
462        public ClinicalImpressionFindingComponent setItemCodeableConcept(CodeableConcept value) { 
463          this.itemCodeableConcept = value;
464          return this;
465        }
466
467        /**
468         * @return {@link #itemReference} (Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions.)
469         */
470        public Reference getItemReference() { 
471          if (this.itemReference == null)
472            if (Configuration.errorOnAutoCreate())
473              throw new Error("Attempt to auto-create ClinicalImpressionFindingComponent.itemReference");
474            else if (Configuration.doAutoCreate())
475              this.itemReference = new Reference(); // cc
476          return this.itemReference;
477        }
478
479        public boolean hasItemReference() { 
480          return this.itemReference != null && !this.itemReference.isEmpty();
481        }
482
483        /**
484         * @param value {@link #itemReference} (Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions.)
485         */
486        public ClinicalImpressionFindingComponent setItemReference(Reference value) { 
487          this.itemReference = value;
488          return this;
489        }
490
491        /**
492         * @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
493         */
494        public StringType getBasisElement() { 
495          if (this.basis == null)
496            if (Configuration.errorOnAutoCreate())
497              throw new Error("Attempt to auto-create ClinicalImpressionFindingComponent.basis");
498            else if (Configuration.doAutoCreate())
499              this.basis = new StringType(); // bb
500          return this.basis;
501        }
502
503        public boolean hasBasisElement() { 
504          return this.basis != null && !this.basis.isEmpty();
505        }
506
507        public boolean hasBasis() { 
508          return this.basis != null && !this.basis.isEmpty();
509        }
510
511        /**
512         * @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
513         */
514        public ClinicalImpressionFindingComponent setBasisElement(StringType value) { 
515          this.basis = value;
516          return this;
517        }
518
519        /**
520         * @return Which investigations support finding or diagnosis.
521         */
522        public String getBasis() { 
523          return this.basis == null ? null : this.basis.getValue();
524        }
525
526        /**
527         * @param value Which investigations support finding or diagnosis.
528         */
529        public ClinicalImpressionFindingComponent setBasis(String value) { 
530          if (Utilities.noString(value))
531            this.basis = null;
532          else {
533            if (this.basis == null)
534              this.basis = new StringType();
535            this.basis.setValue(value);
536          }
537          return this;
538        }
539
540        protected void listChildren(List<Property> children) {
541          super.listChildren(children);
542          children.add(new Property("itemCodeableConcept", "CodeableConcept", "Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions.", 0, 1, itemCodeableConcept));
543          children.add(new Property("itemReference", "Reference(Condition|Observation|Media)", "Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions.", 0, 1, itemReference));
544          children.add(new Property("basis", "string", "Which investigations support finding or diagnosis.", 0, 1, basis));
545        }
546
547        @Override
548        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
549          switch (_hash) {
550          case 106644494: /*itemCodeableConcept*/  return new Property("itemCodeableConcept", "CodeableConcept", "Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions.", 0, 1, itemCodeableConcept);
551          case 1376364920: /*itemReference*/  return new Property("itemReference", "Reference(Condition|Observation|Media)", "Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions.", 0, 1, itemReference);
552          case 93508670: /*basis*/  return new Property("basis", "string", "Which investigations support finding or diagnosis.", 0, 1, basis);
553          default: return super.getNamedProperty(_hash, _name, _checkValid);
554          }
555
556        }
557
558      @Override
559      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
560        switch (hash) {
561        case 106644494: /*itemCodeableConcept*/ return this.itemCodeableConcept == null ? new Base[0] : new Base[] {this.itemCodeableConcept}; // CodeableConcept
562        case 1376364920: /*itemReference*/ return this.itemReference == null ? new Base[0] : new Base[] {this.itemReference}; // Reference
563        case 93508670: /*basis*/ return this.basis == null ? new Base[0] : new Base[] {this.basis}; // StringType
564        default: return super.getProperty(hash, name, checkValid);
565        }
566
567      }
568
569      @Override
570      public Base setProperty(int hash, String name, Base value) throws FHIRException {
571        switch (hash) {
572        case 106644494: // itemCodeableConcept
573          this.itemCodeableConcept = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
574          return value;
575        case 1376364920: // itemReference
576          this.itemReference = TypeConvertor.castToReference(value); // Reference
577          return value;
578        case 93508670: // basis
579          this.basis = TypeConvertor.castToString(value); // StringType
580          return value;
581        default: return super.setProperty(hash, name, value);
582        }
583
584      }
585
586      @Override
587      public Base setProperty(String name, Base value) throws FHIRException {
588        if (name.equals("itemCodeableConcept")) {
589          this.itemCodeableConcept = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
590        } else if (name.equals("itemReference")) {
591          this.itemReference = TypeConvertor.castToReference(value); // Reference
592        } else if (name.equals("basis")) {
593          this.basis = TypeConvertor.castToString(value); // StringType
594        } else
595          return super.setProperty(name, value);
596        return value;
597      }
598
599      @Override
600      public Base makeProperty(int hash, String name) throws FHIRException {
601        switch (hash) {
602        case 106644494:  return getItemCodeableConcept();
603        case 1376364920:  return getItemReference();
604        case 93508670:  return getBasisElement();
605        default: return super.makeProperty(hash, name);
606        }
607
608      }
609
610      @Override
611      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
612        switch (hash) {
613        case 106644494: /*itemCodeableConcept*/ return new String[] {"CodeableConcept"};
614        case 1376364920: /*itemReference*/ return new String[] {"Reference"};
615        case 93508670: /*basis*/ return new String[] {"string"};
616        default: return super.getTypesForProperty(hash, name);
617        }
618
619      }
620
621      @Override
622      public Base addChild(String name) throws FHIRException {
623        if (name.equals("itemCodeableConcept")) {
624          this.itemCodeableConcept = new CodeableConcept();
625          return this.itemCodeableConcept;
626        }
627        else if (name.equals("itemReference")) {
628          this.itemReference = new Reference();
629          return this.itemReference;
630        }
631        else if (name.equals("basis")) {
632          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.finding.basis");
633        }
634        else
635          return super.addChild(name);
636      }
637
638      public ClinicalImpressionFindingComponent copy() {
639        ClinicalImpressionFindingComponent dst = new ClinicalImpressionFindingComponent();
640        copyValues(dst);
641        return dst;
642      }
643
644      public void copyValues(ClinicalImpressionFindingComponent dst) {
645        super.copyValues(dst);
646        dst.itemCodeableConcept = itemCodeableConcept == null ? null : itemCodeableConcept.copy();
647        dst.itemReference = itemReference == null ? null : itemReference.copy();
648        dst.basis = basis == null ? null : basis.copy();
649      }
650
651      @Override
652      public boolean equalsDeep(Base other_) {
653        if (!super.equalsDeep(other_))
654          return false;
655        if (!(other_ instanceof ClinicalImpressionFindingComponent))
656          return false;
657        ClinicalImpressionFindingComponent o = (ClinicalImpressionFindingComponent) other_;
658        return compareDeep(itemCodeableConcept, o.itemCodeableConcept, true) && compareDeep(itemReference, o.itemReference, true)
659           && compareDeep(basis, o.basis, true);
660      }
661
662      @Override
663      public boolean equalsShallow(Base other_) {
664        if (!super.equalsShallow(other_))
665          return false;
666        if (!(other_ instanceof ClinicalImpressionFindingComponent))
667          return false;
668        ClinicalImpressionFindingComponent o = (ClinicalImpressionFindingComponent) other_;
669        return compareValues(basis, o.basis, true);
670      }
671
672      public boolean isEmpty() {
673        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(itemCodeableConcept, itemReference
674          , basis);
675      }
676
677  public String fhirType() {
678    return "ClinicalImpression.finding";
679
680  }
681
682  }
683
684    /**
685     * 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.
686     */
687    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
688    @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." )
689    protected List<Identifier> identifier;
690
691    /**
692     * Identifies the workflow status of the assessment.
693     */
694    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
695    @Description(shortDefinition="in-progress | completed | entered-in-error", formalDefinition="Identifies the workflow status of the assessment." )
696    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinicalimpression-status")
697    protected Enumeration<ClinicalImpressionStatus> status;
698
699    /**
700     * Captures the reason for the current state of the ClinicalImpression.
701     */
702    @Child(name = "statusReason", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
703    @Description(shortDefinition="Reason for current status", formalDefinition="Captures the reason for the current state of the ClinicalImpression." )
704    protected CodeableConcept statusReason;
705
706    /**
707     * Categorizes the type of clinical assessment performed.
708     */
709    @Child(name = "code", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
710    @Description(shortDefinition="Kind of assessment performed", formalDefinition="Categorizes the type of clinical assessment performed." )
711    protected CodeableConcept code;
712
713    /**
714     * A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.
715     */
716    @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
717    @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." )
718    protected StringType description;
719
720    /**
721     * The patient or group of individuals assessed as part of this record.
722     */
723    @Child(name = "subject", type = {Patient.class, Group.class}, order=5, min=1, max=1, modifier=false, summary=true)
724    @Description(shortDefinition="Patient or group assessed", formalDefinition="The patient or group of individuals assessed as part of this record." )
725    protected Reference subject;
726
727    /**
728     * The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.
729     */
730    @Child(name = "encounter", type = {Encounter.class}, order=6, min=0, max=1, modifier=false, summary=true)
731    @Description(shortDefinition="Encounter created as part of", formalDefinition="The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated." )
732    protected Reference encounter;
733
734    /**
735     * The point in time or period over which the subject was assessed.
736     */
737    @Child(name = "effective", type = {DateTimeType.class, Period.class}, order=7, min=0, max=1, modifier=false, summary=true)
738    @Description(shortDefinition="Time of assessment", formalDefinition="The point in time or period over which the subject was assessed." )
739    protected DataType effective;
740
741    /**
742     * Indicates when the documentation of the assessment was complete.
743     */
744    @Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
745    @Description(shortDefinition="When the assessment was documented", formalDefinition="Indicates when the documentation of the assessment was complete." )
746    protected DateTimeType date;
747
748    /**
749     * The clinician performing the assessment.
750     */
751    @Child(name = "assessor", type = {Practitioner.class, PractitionerRole.class}, order=9, min=0, max=1, modifier=false, summary=true)
752    @Description(shortDefinition="The clinician performing the assessment", formalDefinition="The clinician performing the assessment." )
753    protected Reference assessor;
754
755    /**
756     * 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.
757     */
758    @Child(name = "previous", type = {ClinicalImpression.class}, order=10, min=0, max=1, modifier=false, summary=false)
759    @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." )
760    protected Reference previous;
761
762    /**
763     * A list of the relevant problems/conditions for a patient.
764     */
765    @Child(name = "problem", type = {Condition.class, AllergyIntolerance.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
766    @Description(shortDefinition="Relevant impressions of patient state", formalDefinition="A list of the relevant problems/conditions for a patient." )
767    protected List<Reference> problem;
768
769    /**
770     * One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes.
771     */
772    @Child(name = "investigation", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
773    @Description(shortDefinition="One or more sets of investigations (signs, symptoms, etc.)", formalDefinition="One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes." )
774    protected List<ClinicalImpressionInvestigationComponent> investigation;
775
776    /**
777     * Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.
778     */
779    @Child(name = "protocol", type = {UriType.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
780    @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." )
781    protected List<UriType> protocol;
782
783    /**
784     * A text summary of the investigations and the diagnosis.
785     */
786    @Child(name = "summary", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=false)
787    @Description(shortDefinition="Summary of the assessment", formalDefinition="A text summary of the investigations and the diagnosis." )
788    protected StringType summary;
789
790    /**
791     * Specific findings or diagnoses that were considered likely or relevant to ongoing treatment.
792     */
793    @Child(name = "finding", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
794    @Description(shortDefinition="Possible or likely findings and diagnoses", formalDefinition="Specific findings or diagnoses that were considered likely or relevant to ongoing treatment." )
795    protected List<ClinicalImpressionFindingComponent> finding;
796
797    /**
798     * Estimate of likely outcome.
799     */
800    @Child(name = "prognosisCodeableConcept", type = {CodeableConcept.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
801    @Description(shortDefinition="Estimate of likely outcome", formalDefinition="Estimate of likely outcome." )
802    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinicalimpression-prognosis")
803    protected List<CodeableConcept> prognosisCodeableConcept;
804
805    /**
806     * RiskAssessment expressing likely outcome.
807     */
808    @Child(name = "prognosisReference", type = {RiskAssessment.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
809    @Description(shortDefinition="RiskAssessment expressing likely outcome", formalDefinition="RiskAssessment expressing likely outcome." )
810    protected List<Reference> prognosisReference;
811
812    /**
813     * Information supporting the clinical impression.
814     */
815    @Child(name = "supportingInfo", type = {Reference.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
816    @Description(shortDefinition="Information supporting the clinical impression", formalDefinition="Information supporting the clinical impression." )
817    protected List<Reference> supportingInfo;
818
819    /**
820     * Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear.
821     */
822    @Child(name = "note", type = {Annotation.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
823    @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." )
824    protected List<Annotation> note;
825
826    private static final long serialVersionUID = 192375642L;
827
828  /**
829   * Constructor
830   */
831    public ClinicalImpression() {
832      super();
833    }
834
835  /**
836   * Constructor
837   */
838    public ClinicalImpression(ClinicalImpressionStatus status, Reference subject) {
839      super();
840      this.setStatus(status);
841      this.setSubject(subject);
842    }
843
844    /**
845     * @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.)
846     */
847    public List<Identifier> getIdentifier() { 
848      if (this.identifier == null)
849        this.identifier = new ArrayList<Identifier>();
850      return this.identifier;
851    }
852
853    /**
854     * @return Returns a reference to <code>this</code> for easy method chaining
855     */
856    public ClinicalImpression setIdentifier(List<Identifier> theIdentifier) { 
857      this.identifier = theIdentifier;
858      return this;
859    }
860
861    public boolean hasIdentifier() { 
862      if (this.identifier == null)
863        return false;
864      for (Identifier item : this.identifier)
865        if (!item.isEmpty())
866          return true;
867      return false;
868    }
869
870    public Identifier addIdentifier() { //3
871      Identifier t = new Identifier();
872      if (this.identifier == null)
873        this.identifier = new ArrayList<Identifier>();
874      this.identifier.add(t);
875      return t;
876    }
877
878    public ClinicalImpression addIdentifier(Identifier t) { //3
879      if (t == null)
880        return this;
881      if (this.identifier == null)
882        this.identifier = new ArrayList<Identifier>();
883      this.identifier.add(t);
884      return this;
885    }
886
887    /**
888     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
889     */
890    public Identifier getIdentifierFirstRep() { 
891      if (getIdentifier().isEmpty()) {
892        addIdentifier();
893      }
894      return getIdentifier().get(0);
895    }
896
897    /**
898     * @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
899     */
900    public Enumeration<ClinicalImpressionStatus> getStatusElement() { 
901      if (this.status == null)
902        if (Configuration.errorOnAutoCreate())
903          throw new Error("Attempt to auto-create ClinicalImpression.status");
904        else if (Configuration.doAutoCreate())
905          this.status = new Enumeration<ClinicalImpressionStatus>(new ClinicalImpressionStatusEnumFactory()); // bb
906      return this.status;
907    }
908
909    public boolean hasStatusElement() { 
910      return this.status != null && !this.status.isEmpty();
911    }
912
913    public boolean hasStatus() { 
914      return this.status != null && !this.status.isEmpty();
915    }
916
917    /**
918     * @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
919     */
920    public ClinicalImpression setStatusElement(Enumeration<ClinicalImpressionStatus> value) { 
921      this.status = value;
922      return this;
923    }
924
925    /**
926     * @return Identifies the workflow status of the assessment.
927     */
928    public ClinicalImpressionStatus getStatus() { 
929      return this.status == null ? null : this.status.getValue();
930    }
931
932    /**
933     * @param value Identifies the workflow status of the assessment.
934     */
935    public ClinicalImpression setStatus(ClinicalImpressionStatus value) { 
936        if (this.status == null)
937          this.status = new Enumeration<ClinicalImpressionStatus>(new ClinicalImpressionStatusEnumFactory());
938        this.status.setValue(value);
939      return this;
940    }
941
942    /**
943     * @return {@link #statusReason} (Captures the reason for the current state of the ClinicalImpression.)
944     */
945    public CodeableConcept getStatusReason() { 
946      if (this.statusReason == null)
947        if (Configuration.errorOnAutoCreate())
948          throw new Error("Attempt to auto-create ClinicalImpression.statusReason");
949        else if (Configuration.doAutoCreate())
950          this.statusReason = new CodeableConcept(); // cc
951      return this.statusReason;
952    }
953
954    public boolean hasStatusReason() { 
955      return this.statusReason != null && !this.statusReason.isEmpty();
956    }
957
958    /**
959     * @param value {@link #statusReason} (Captures the reason for the current state of the ClinicalImpression.)
960     */
961    public ClinicalImpression setStatusReason(CodeableConcept value) { 
962      this.statusReason = value;
963      return this;
964    }
965
966    /**
967     * @return {@link #code} (Categorizes the type of clinical assessment performed.)
968     */
969    public CodeableConcept getCode() { 
970      if (this.code == null)
971        if (Configuration.errorOnAutoCreate())
972          throw new Error("Attempt to auto-create ClinicalImpression.code");
973        else if (Configuration.doAutoCreate())
974          this.code = new CodeableConcept(); // cc
975      return this.code;
976    }
977
978    public boolean hasCode() { 
979      return this.code != null && !this.code.isEmpty();
980    }
981
982    /**
983     * @param value {@link #code} (Categorizes the type of clinical assessment performed.)
984     */
985    public ClinicalImpression setCode(CodeableConcept value) { 
986      this.code = value;
987      return this;
988    }
989
990    /**
991     * @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
992     */
993    public StringType getDescriptionElement() { 
994      if (this.description == null)
995        if (Configuration.errorOnAutoCreate())
996          throw new Error("Attempt to auto-create ClinicalImpression.description");
997        else if (Configuration.doAutoCreate())
998          this.description = new StringType(); // bb
999      return this.description;
1000    }
1001
1002    public boolean hasDescriptionElement() { 
1003      return this.description != null && !this.description.isEmpty();
1004    }
1005
1006    public boolean hasDescription() { 
1007      return this.description != null && !this.description.isEmpty();
1008    }
1009
1010    /**
1011     * @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
1012     */
1013    public ClinicalImpression setDescriptionElement(StringType value) { 
1014      this.description = value;
1015      return this;
1016    }
1017
1018    /**
1019     * @return A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it.
1020     */
1021    public String getDescription() { 
1022      return this.description == null ? null : this.description.getValue();
1023    }
1024
1025    /**
1026     * @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.
1027     */
1028    public ClinicalImpression setDescription(String value) { 
1029      if (Utilities.noString(value))
1030        this.description = null;
1031      else {
1032        if (this.description == null)
1033          this.description = new StringType();
1034        this.description.setValue(value);
1035      }
1036      return this;
1037    }
1038
1039    /**
1040     * @return {@link #subject} (The patient or group of individuals assessed as part of this record.)
1041     */
1042    public Reference getSubject() { 
1043      if (this.subject == null)
1044        if (Configuration.errorOnAutoCreate())
1045          throw new Error("Attempt to auto-create ClinicalImpression.subject");
1046        else if (Configuration.doAutoCreate())
1047          this.subject = new Reference(); // cc
1048      return this.subject;
1049    }
1050
1051    public boolean hasSubject() { 
1052      return this.subject != null && !this.subject.isEmpty();
1053    }
1054
1055    /**
1056     * @param value {@link #subject} (The patient or group of individuals assessed as part of this record.)
1057     */
1058    public ClinicalImpression setSubject(Reference value) { 
1059      this.subject = value;
1060      return this;
1061    }
1062
1063    /**
1064     * @return {@link #encounter} (The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.)
1065     */
1066    public Reference getEncounter() { 
1067      if (this.encounter == null)
1068        if (Configuration.errorOnAutoCreate())
1069          throw new Error("Attempt to auto-create ClinicalImpression.encounter");
1070        else if (Configuration.doAutoCreate())
1071          this.encounter = new Reference(); // cc
1072      return this.encounter;
1073    }
1074
1075    public boolean hasEncounter() { 
1076      return this.encounter != null && !this.encounter.isEmpty();
1077    }
1078
1079    /**
1080     * @param value {@link #encounter} (The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated.)
1081     */
1082    public ClinicalImpression setEncounter(Reference value) { 
1083      this.encounter = value;
1084      return this;
1085    }
1086
1087    /**
1088     * @return {@link #effective} (The point in time or period over which the subject was assessed.)
1089     */
1090    public DataType getEffective() { 
1091      return this.effective;
1092    }
1093
1094    /**
1095     * @return {@link #effective} (The point in time or period over which the subject was assessed.)
1096     */
1097    public DateTimeType getEffectiveDateTimeType() throws FHIRException { 
1098      if (this.effective == null)
1099        this.effective = new DateTimeType();
1100      if (!(this.effective instanceof DateTimeType))
1101        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.effective.getClass().getName()+" was encountered");
1102      return (DateTimeType) this.effective;
1103    }
1104
1105    public boolean hasEffectiveDateTimeType() { 
1106      return this != null && this.effective instanceof DateTimeType;
1107    }
1108
1109    /**
1110     * @return {@link #effective} (The point in time or period over which the subject was assessed.)
1111     */
1112    public Period getEffectivePeriod() throws FHIRException { 
1113      if (this.effective == null)
1114        this.effective = new Period();
1115      if (!(this.effective instanceof Period))
1116        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.effective.getClass().getName()+" was encountered");
1117      return (Period) this.effective;
1118    }
1119
1120    public boolean hasEffectivePeriod() { 
1121      return this != null && this.effective instanceof Period;
1122    }
1123
1124    public boolean hasEffective() { 
1125      return this.effective != null && !this.effective.isEmpty();
1126    }
1127
1128    /**
1129     * @param value {@link #effective} (The point in time or period over which the subject was assessed.)
1130     */
1131    public ClinicalImpression setEffective(DataType value) { 
1132      if (value != null && !(value instanceof DateTimeType || value instanceof Period))
1133        throw new Error("Not the right type for ClinicalImpression.effective[x]: "+value.fhirType());
1134      this.effective = value;
1135      return this;
1136    }
1137
1138    /**
1139     * @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
1140     */
1141    public DateTimeType getDateElement() { 
1142      if (this.date == null)
1143        if (Configuration.errorOnAutoCreate())
1144          throw new Error("Attempt to auto-create ClinicalImpression.date");
1145        else if (Configuration.doAutoCreate())
1146          this.date = new DateTimeType(); // bb
1147      return this.date;
1148    }
1149
1150    public boolean hasDateElement() { 
1151      return this.date != null && !this.date.isEmpty();
1152    }
1153
1154    public boolean hasDate() { 
1155      return this.date != null && !this.date.isEmpty();
1156    }
1157
1158    /**
1159     * @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
1160     */
1161    public ClinicalImpression setDateElement(DateTimeType value) { 
1162      this.date = value;
1163      return this;
1164    }
1165
1166    /**
1167     * @return Indicates when the documentation of the assessment was complete.
1168     */
1169    public Date getDate() { 
1170      return this.date == null ? null : this.date.getValue();
1171    }
1172
1173    /**
1174     * @param value Indicates when the documentation of the assessment was complete.
1175     */
1176    public ClinicalImpression setDate(Date value) { 
1177      if (value == null)
1178        this.date = null;
1179      else {
1180        if (this.date == null)
1181          this.date = new DateTimeType();
1182        this.date.setValue(value);
1183      }
1184      return this;
1185    }
1186
1187    /**
1188     * @return {@link #assessor} (The clinician performing the assessment.)
1189     */
1190    public Reference getAssessor() { 
1191      if (this.assessor == null)
1192        if (Configuration.errorOnAutoCreate())
1193          throw new Error("Attempt to auto-create ClinicalImpression.assessor");
1194        else if (Configuration.doAutoCreate())
1195          this.assessor = new Reference(); // cc
1196      return this.assessor;
1197    }
1198
1199    public boolean hasAssessor() { 
1200      return this.assessor != null && !this.assessor.isEmpty();
1201    }
1202
1203    /**
1204     * @param value {@link #assessor} (The clinician performing the assessment.)
1205     */
1206    public ClinicalImpression setAssessor(Reference value) { 
1207      this.assessor = value;
1208      return this;
1209    }
1210
1211    /**
1212     * @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.)
1213     */
1214    public Reference getPrevious() { 
1215      if (this.previous == null)
1216        if (Configuration.errorOnAutoCreate())
1217          throw new Error("Attempt to auto-create ClinicalImpression.previous");
1218        else if (Configuration.doAutoCreate())
1219          this.previous = new Reference(); // cc
1220      return this.previous;
1221    }
1222
1223    public boolean hasPrevious() { 
1224      return this.previous != null && !this.previous.isEmpty();
1225    }
1226
1227    /**
1228     * @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.)
1229     */
1230    public ClinicalImpression setPrevious(Reference value) { 
1231      this.previous = value;
1232      return this;
1233    }
1234
1235    /**
1236     * @return {@link #problem} (A list of the relevant problems/conditions for a patient.)
1237     */
1238    public List<Reference> getProblem() { 
1239      if (this.problem == null)
1240        this.problem = new ArrayList<Reference>();
1241      return this.problem;
1242    }
1243
1244    /**
1245     * @return Returns a reference to <code>this</code> for easy method chaining
1246     */
1247    public ClinicalImpression setProblem(List<Reference> theProblem) { 
1248      this.problem = theProblem;
1249      return this;
1250    }
1251
1252    public boolean hasProblem() { 
1253      if (this.problem == null)
1254        return false;
1255      for (Reference item : this.problem)
1256        if (!item.isEmpty())
1257          return true;
1258      return false;
1259    }
1260
1261    public Reference addProblem() { //3
1262      Reference t = new Reference();
1263      if (this.problem == null)
1264        this.problem = new ArrayList<Reference>();
1265      this.problem.add(t);
1266      return t;
1267    }
1268
1269    public ClinicalImpression addProblem(Reference t) { //3
1270      if (t == null)
1271        return this;
1272      if (this.problem == null)
1273        this.problem = new ArrayList<Reference>();
1274      this.problem.add(t);
1275      return this;
1276    }
1277
1278    /**
1279     * @return The first repetition of repeating field {@link #problem}, creating it if it does not already exist {3}
1280     */
1281    public Reference getProblemFirstRep() { 
1282      if (getProblem().isEmpty()) {
1283        addProblem();
1284      }
1285      return getProblem().get(0);
1286    }
1287
1288    /**
1289     * @return {@link #investigation} (One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes.)
1290     */
1291    public List<ClinicalImpressionInvestigationComponent> getInvestigation() { 
1292      if (this.investigation == null)
1293        this.investigation = new ArrayList<ClinicalImpressionInvestigationComponent>();
1294      return this.investigation;
1295    }
1296
1297    /**
1298     * @return Returns a reference to <code>this</code> for easy method chaining
1299     */
1300    public ClinicalImpression setInvestigation(List<ClinicalImpressionInvestigationComponent> theInvestigation) { 
1301      this.investigation = theInvestigation;
1302      return this;
1303    }
1304
1305    public boolean hasInvestigation() { 
1306      if (this.investigation == null)
1307        return false;
1308      for (ClinicalImpressionInvestigationComponent item : this.investigation)
1309        if (!item.isEmpty())
1310          return true;
1311      return false;
1312    }
1313
1314    public ClinicalImpressionInvestigationComponent addInvestigation() { //3
1315      ClinicalImpressionInvestigationComponent t = new ClinicalImpressionInvestigationComponent();
1316      if (this.investigation == null)
1317        this.investigation = new ArrayList<ClinicalImpressionInvestigationComponent>();
1318      this.investigation.add(t);
1319      return t;
1320    }
1321
1322    public ClinicalImpression addInvestigation(ClinicalImpressionInvestigationComponent t) { //3
1323      if (t == null)
1324        return this;
1325      if (this.investigation == null)
1326        this.investigation = new ArrayList<ClinicalImpressionInvestigationComponent>();
1327      this.investigation.add(t);
1328      return this;
1329    }
1330
1331    /**
1332     * @return The first repetition of repeating field {@link #investigation}, creating it if it does not already exist {3}
1333     */
1334    public ClinicalImpressionInvestigationComponent getInvestigationFirstRep() { 
1335      if (getInvestigation().isEmpty()) {
1336        addInvestigation();
1337      }
1338      return getInvestigation().get(0);
1339    }
1340
1341    /**
1342     * @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.)
1343     */
1344    public List<UriType> getProtocol() { 
1345      if (this.protocol == null)
1346        this.protocol = new ArrayList<UriType>();
1347      return this.protocol;
1348    }
1349
1350    /**
1351     * @return Returns a reference to <code>this</code> for easy method chaining
1352     */
1353    public ClinicalImpression setProtocol(List<UriType> theProtocol) { 
1354      this.protocol = theProtocol;
1355      return this;
1356    }
1357
1358    public boolean hasProtocol() { 
1359      if (this.protocol == null)
1360        return false;
1361      for (UriType item : this.protocol)
1362        if (!item.isEmpty())
1363          return true;
1364      return false;
1365    }
1366
1367    /**
1368     * @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.)
1369     */
1370    public UriType addProtocolElement() {//2 
1371      UriType t = new UriType();
1372      if (this.protocol == null)
1373        this.protocol = new ArrayList<UriType>();
1374      this.protocol.add(t);
1375      return t;
1376    }
1377
1378    /**
1379     * @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.)
1380     */
1381    public ClinicalImpression addProtocol(String value) { //1
1382      UriType t = new UriType();
1383      t.setValue(value);
1384      if (this.protocol == null)
1385        this.protocol = new ArrayList<UriType>();
1386      this.protocol.add(t);
1387      return this;
1388    }
1389
1390    /**
1391     * @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.)
1392     */
1393    public boolean hasProtocol(String value) { 
1394      if (this.protocol == null)
1395        return false;
1396      for (UriType v : this.protocol)
1397        if (v.getValue().equals(value)) // uri
1398          return true;
1399      return false;
1400    }
1401
1402    /**
1403     * @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
1404     */
1405    public StringType getSummaryElement() { 
1406      if (this.summary == null)
1407        if (Configuration.errorOnAutoCreate())
1408          throw new Error("Attempt to auto-create ClinicalImpression.summary");
1409        else if (Configuration.doAutoCreate())
1410          this.summary = new StringType(); // bb
1411      return this.summary;
1412    }
1413
1414    public boolean hasSummaryElement() { 
1415      return this.summary != null && !this.summary.isEmpty();
1416    }
1417
1418    public boolean hasSummary() { 
1419      return this.summary != null && !this.summary.isEmpty();
1420    }
1421
1422    /**
1423     * @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
1424     */
1425    public ClinicalImpression setSummaryElement(StringType value) { 
1426      this.summary = value;
1427      return this;
1428    }
1429
1430    /**
1431     * @return A text summary of the investigations and the diagnosis.
1432     */
1433    public String getSummary() { 
1434      return this.summary == null ? null : this.summary.getValue();
1435    }
1436
1437    /**
1438     * @param value A text summary of the investigations and the diagnosis.
1439     */
1440    public ClinicalImpression setSummary(String value) { 
1441      if (Utilities.noString(value))
1442        this.summary = null;
1443      else {
1444        if (this.summary == null)
1445          this.summary = new StringType();
1446        this.summary.setValue(value);
1447      }
1448      return this;
1449    }
1450
1451    /**
1452     * @return {@link #finding} (Specific findings or diagnoses that were considered likely or relevant to ongoing treatment.)
1453     */
1454    public List<ClinicalImpressionFindingComponent> getFinding() { 
1455      if (this.finding == null)
1456        this.finding = new ArrayList<ClinicalImpressionFindingComponent>();
1457      return this.finding;
1458    }
1459
1460    /**
1461     * @return Returns a reference to <code>this</code> for easy method chaining
1462     */
1463    public ClinicalImpression setFinding(List<ClinicalImpressionFindingComponent> theFinding) { 
1464      this.finding = theFinding;
1465      return this;
1466    }
1467
1468    public boolean hasFinding() { 
1469      if (this.finding == null)
1470        return false;
1471      for (ClinicalImpressionFindingComponent item : this.finding)
1472        if (!item.isEmpty())
1473          return true;
1474      return false;
1475    }
1476
1477    public ClinicalImpressionFindingComponent addFinding() { //3
1478      ClinicalImpressionFindingComponent t = new ClinicalImpressionFindingComponent();
1479      if (this.finding == null)
1480        this.finding = new ArrayList<ClinicalImpressionFindingComponent>();
1481      this.finding.add(t);
1482      return t;
1483    }
1484
1485    public ClinicalImpression addFinding(ClinicalImpressionFindingComponent t) { //3
1486      if (t == null)
1487        return this;
1488      if (this.finding == null)
1489        this.finding = new ArrayList<ClinicalImpressionFindingComponent>();
1490      this.finding.add(t);
1491      return this;
1492    }
1493
1494    /**
1495     * @return The first repetition of repeating field {@link #finding}, creating it if it does not already exist {3}
1496     */
1497    public ClinicalImpressionFindingComponent getFindingFirstRep() { 
1498      if (getFinding().isEmpty()) {
1499        addFinding();
1500      }
1501      return getFinding().get(0);
1502    }
1503
1504    /**
1505     * @return {@link #prognosisCodeableConcept} (Estimate of likely outcome.)
1506     */
1507    public List<CodeableConcept> getPrognosisCodeableConcept() { 
1508      if (this.prognosisCodeableConcept == null)
1509        this.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1510      return this.prognosisCodeableConcept;
1511    }
1512
1513    /**
1514     * @return Returns a reference to <code>this</code> for easy method chaining
1515     */
1516    public ClinicalImpression setPrognosisCodeableConcept(List<CodeableConcept> thePrognosisCodeableConcept) { 
1517      this.prognosisCodeableConcept = thePrognosisCodeableConcept;
1518      return this;
1519    }
1520
1521    public boolean hasPrognosisCodeableConcept() { 
1522      if (this.prognosisCodeableConcept == null)
1523        return false;
1524      for (CodeableConcept item : this.prognosisCodeableConcept)
1525        if (!item.isEmpty())
1526          return true;
1527      return false;
1528    }
1529
1530    public CodeableConcept addPrognosisCodeableConcept() { //3
1531      CodeableConcept t = new CodeableConcept();
1532      if (this.prognosisCodeableConcept == null)
1533        this.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1534      this.prognosisCodeableConcept.add(t);
1535      return t;
1536    }
1537
1538    public ClinicalImpression addPrognosisCodeableConcept(CodeableConcept t) { //3
1539      if (t == null)
1540        return this;
1541      if (this.prognosisCodeableConcept == null)
1542        this.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
1543      this.prognosisCodeableConcept.add(t);
1544      return this;
1545    }
1546
1547    /**
1548     * @return The first repetition of repeating field {@link #prognosisCodeableConcept}, creating it if it does not already exist {3}
1549     */
1550    public CodeableConcept getPrognosisCodeableConceptFirstRep() { 
1551      if (getPrognosisCodeableConcept().isEmpty()) {
1552        addPrognosisCodeableConcept();
1553      }
1554      return getPrognosisCodeableConcept().get(0);
1555    }
1556
1557    /**
1558     * @return {@link #prognosisReference} (RiskAssessment expressing likely outcome.)
1559     */
1560    public List<Reference> getPrognosisReference() { 
1561      if (this.prognosisReference == null)
1562        this.prognosisReference = new ArrayList<Reference>();
1563      return this.prognosisReference;
1564    }
1565
1566    /**
1567     * @return Returns a reference to <code>this</code> for easy method chaining
1568     */
1569    public ClinicalImpression setPrognosisReference(List<Reference> thePrognosisReference) { 
1570      this.prognosisReference = thePrognosisReference;
1571      return this;
1572    }
1573
1574    public boolean hasPrognosisReference() { 
1575      if (this.prognosisReference == null)
1576        return false;
1577      for (Reference item : this.prognosisReference)
1578        if (!item.isEmpty())
1579          return true;
1580      return false;
1581    }
1582
1583    public Reference addPrognosisReference() { //3
1584      Reference t = new Reference();
1585      if (this.prognosisReference == null)
1586        this.prognosisReference = new ArrayList<Reference>();
1587      this.prognosisReference.add(t);
1588      return t;
1589    }
1590
1591    public ClinicalImpression addPrognosisReference(Reference t) { //3
1592      if (t == null)
1593        return this;
1594      if (this.prognosisReference == null)
1595        this.prognosisReference = new ArrayList<Reference>();
1596      this.prognosisReference.add(t);
1597      return this;
1598    }
1599
1600    /**
1601     * @return The first repetition of repeating field {@link #prognosisReference}, creating it if it does not already exist {3}
1602     */
1603    public Reference getPrognosisReferenceFirstRep() { 
1604      if (getPrognosisReference().isEmpty()) {
1605        addPrognosisReference();
1606      }
1607      return getPrognosisReference().get(0);
1608    }
1609
1610    /**
1611     * @return {@link #supportingInfo} (Information supporting the clinical impression.)
1612     */
1613    public List<Reference> getSupportingInfo() { 
1614      if (this.supportingInfo == null)
1615        this.supportingInfo = new ArrayList<Reference>();
1616      return this.supportingInfo;
1617    }
1618
1619    /**
1620     * @return Returns a reference to <code>this</code> for easy method chaining
1621     */
1622    public ClinicalImpression setSupportingInfo(List<Reference> theSupportingInfo) { 
1623      this.supportingInfo = theSupportingInfo;
1624      return this;
1625    }
1626
1627    public boolean hasSupportingInfo() { 
1628      if (this.supportingInfo == null)
1629        return false;
1630      for (Reference item : this.supportingInfo)
1631        if (!item.isEmpty())
1632          return true;
1633      return false;
1634    }
1635
1636    public Reference addSupportingInfo() { //3
1637      Reference t = new Reference();
1638      if (this.supportingInfo == null)
1639        this.supportingInfo = new ArrayList<Reference>();
1640      this.supportingInfo.add(t);
1641      return t;
1642    }
1643
1644    public ClinicalImpression addSupportingInfo(Reference t) { //3
1645      if (t == null)
1646        return this;
1647      if (this.supportingInfo == null)
1648        this.supportingInfo = new ArrayList<Reference>();
1649      this.supportingInfo.add(t);
1650      return this;
1651    }
1652
1653    /**
1654     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
1655     */
1656    public Reference getSupportingInfoFirstRep() { 
1657      if (getSupportingInfo().isEmpty()) {
1658        addSupportingInfo();
1659      }
1660      return getSupportingInfo().get(0);
1661    }
1662
1663    /**
1664     * @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.)
1665     */
1666    public List<Annotation> getNote() { 
1667      if (this.note == null)
1668        this.note = new ArrayList<Annotation>();
1669      return this.note;
1670    }
1671
1672    /**
1673     * @return Returns a reference to <code>this</code> for easy method chaining
1674     */
1675    public ClinicalImpression setNote(List<Annotation> theNote) { 
1676      this.note = theNote;
1677      return this;
1678    }
1679
1680    public boolean hasNote() { 
1681      if (this.note == null)
1682        return false;
1683      for (Annotation item : this.note)
1684        if (!item.isEmpty())
1685          return true;
1686      return false;
1687    }
1688
1689    public Annotation addNote() { //3
1690      Annotation t = new Annotation();
1691      if (this.note == null)
1692        this.note = new ArrayList<Annotation>();
1693      this.note.add(t);
1694      return t;
1695    }
1696
1697    public ClinicalImpression addNote(Annotation t) { //3
1698      if (t == null)
1699        return this;
1700      if (this.note == null)
1701        this.note = new ArrayList<Annotation>();
1702      this.note.add(t);
1703      return this;
1704    }
1705
1706    /**
1707     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1708     */
1709    public Annotation getNoteFirstRep() { 
1710      if (getNote().isEmpty()) {
1711        addNote();
1712      }
1713      return getNote().get(0);
1714    }
1715
1716      protected void listChildren(List<Property> children) {
1717        super.listChildren(children);
1718        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));
1719        children.add(new Property("status", "code", "Identifies the workflow status of the assessment.", 0, 1, status));
1720        children.add(new Property("statusReason", "CodeableConcept", "Captures the reason for the current state of the ClinicalImpression.", 0, 1, statusReason));
1721        children.add(new Property("code", "CodeableConcept", "Categorizes the type of clinical assessment performed.", 0, 1, code));
1722        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));
1723        children.add(new Property("subject", "Reference(Patient|Group)", "The patient or group of individuals assessed as part of this record.", 0, 1, subject));
1724        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));
1725        children.add(new Property("effective[x]", "dateTime|Period", "The point in time or period over which the subject was assessed.", 0, 1, effective));
1726        children.add(new Property("date", "dateTime", "Indicates when the documentation of the assessment was complete.", 0, 1, date));
1727        children.add(new Property("assessor", "Reference(Practitioner|PractitionerRole)", "The clinician performing the assessment.", 0, 1, assessor));
1728        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));
1729        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));
1730        children.add(new Property("investigation", "", "One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes.", 0, java.lang.Integer.MAX_VALUE, investigation));
1731        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));
1732        children.add(new Property("summary", "string", "A text summary of the investigations and the diagnosis.", 0, 1, summary));
1733        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));
1734        children.add(new Property("prognosisCodeableConcept", "CodeableConcept", "Estimate of likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisCodeableConcept));
1735        children.add(new Property("prognosisReference", "Reference(RiskAssessment)", "RiskAssessment expressing likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisReference));
1736        children.add(new Property("supportingInfo", "Reference(Any)", "Information supporting the clinical impression.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
1737        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));
1738      }
1739
1740      @Override
1741      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1742        switch (_hash) {
1743        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);
1744        case -892481550: /*status*/  return new Property("status", "code", "Identifies the workflow status of the assessment.", 0, 1, status);
1745        case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableConcept", "Captures the reason for the current state of the ClinicalImpression.", 0, 1, statusReason);
1746        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Categorizes the type of clinical assessment performed.", 0, 1, code);
1747        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);
1748        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);
1749        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);
1750        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);
1751        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);
1752        case -275306910: /*effectiveDateTime*/  return new Property("effective[x]", "dateTime", "The point in time or period over which the subject was assessed.", 0, 1, effective);
1753        case -403934648: /*effectivePeriod*/  return new Property("effective[x]", "Period", "The point in time or period over which the subject was assessed.", 0, 1, effective);
1754        case 3076014: /*date*/  return new Property("date", "dateTime", "Indicates when the documentation of the assessment was complete.", 0, 1, date);
1755        case -373213113: /*assessor*/  return new Property("assessor", "Reference(Practitioner|PractitionerRole)", "The clinician performing the assessment.", 0, 1, assessor);
1756        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);
1757        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);
1758        case 956015362: /*investigation*/  return new Property("investigation", "", "One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes.", 0, java.lang.Integer.MAX_VALUE, investigation);
1759        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);
1760        case -1857640538: /*summary*/  return new Property("summary", "string", "A text summary of the investigations and the diagnosis.", 0, 1, summary);
1761        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);
1762        case -676337953: /*prognosisCodeableConcept*/  return new Property("prognosisCodeableConcept", "CodeableConcept", "Estimate of likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisCodeableConcept);
1763        case -587137783: /*prognosisReference*/  return new Property("prognosisReference", "Reference(RiskAssessment)", "RiskAssessment expressing likely outcome.", 0, java.lang.Integer.MAX_VALUE, prognosisReference);
1764        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "Reference(Any)", "Information supporting the clinical impression.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
1765        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);
1766        default: return super.getNamedProperty(_hash, _name, _checkValid);
1767        }
1768
1769      }
1770
1771      @Override
1772      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1773        switch (hash) {
1774        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1775        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ClinicalImpressionStatus>
1776        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // CodeableConcept
1777        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1778        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1779        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1780        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1781        case -1468651097: /*effective*/ return this.effective == null ? new Base[0] : new Base[] {this.effective}; // DataType
1782        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1783        case -373213113: /*assessor*/ return this.assessor == null ? new Base[0] : new Base[] {this.assessor}; // Reference
1784        case -1273775369: /*previous*/ return this.previous == null ? new Base[0] : new Base[] {this.previous}; // Reference
1785        case -309542241: /*problem*/ return this.problem == null ? new Base[0] : this.problem.toArray(new Base[this.problem.size()]); // Reference
1786        case 956015362: /*investigation*/ return this.investigation == null ? new Base[0] : this.investigation.toArray(new Base[this.investigation.size()]); // ClinicalImpressionInvestigationComponent
1787        case -989163880: /*protocol*/ return this.protocol == null ? new Base[0] : this.protocol.toArray(new Base[this.protocol.size()]); // UriType
1788        case -1857640538: /*summary*/ return this.summary == null ? new Base[0] : new Base[] {this.summary}; // StringType
1789        case -853173367: /*finding*/ return this.finding == null ? new Base[0] : this.finding.toArray(new Base[this.finding.size()]); // ClinicalImpressionFindingComponent
1790        case -676337953: /*prognosisCodeableConcept*/ return this.prognosisCodeableConcept == null ? new Base[0] : this.prognosisCodeableConcept.toArray(new Base[this.prognosisCodeableConcept.size()]); // CodeableConcept
1791        case -587137783: /*prognosisReference*/ return this.prognosisReference == null ? new Base[0] : this.prognosisReference.toArray(new Base[this.prognosisReference.size()]); // Reference
1792        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
1793        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1794        default: return super.getProperty(hash, name, checkValid);
1795        }
1796
1797      }
1798
1799      @Override
1800      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1801        switch (hash) {
1802        case -1618432855: // identifier
1803          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1804          return value;
1805        case -892481550: // status
1806          value = new ClinicalImpressionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1807          this.status = (Enumeration) value; // Enumeration<ClinicalImpressionStatus>
1808          return value;
1809        case 2051346646: // statusReason
1810          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1811          return value;
1812        case 3059181: // code
1813          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1814          return value;
1815        case -1724546052: // description
1816          this.description = TypeConvertor.castToString(value); // StringType
1817          return value;
1818        case -1867885268: // subject
1819          this.subject = TypeConvertor.castToReference(value); // Reference
1820          return value;
1821        case 1524132147: // encounter
1822          this.encounter = TypeConvertor.castToReference(value); // Reference
1823          return value;
1824        case -1468651097: // effective
1825          this.effective = TypeConvertor.castToType(value); // DataType
1826          return value;
1827        case 3076014: // date
1828          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1829          return value;
1830        case -373213113: // assessor
1831          this.assessor = TypeConvertor.castToReference(value); // Reference
1832          return value;
1833        case -1273775369: // previous
1834          this.previous = TypeConvertor.castToReference(value); // Reference
1835          return value;
1836        case -309542241: // problem
1837          this.getProblem().add(TypeConvertor.castToReference(value)); // Reference
1838          return value;
1839        case 956015362: // investigation
1840          this.getInvestigation().add((ClinicalImpressionInvestigationComponent) value); // ClinicalImpressionInvestigationComponent
1841          return value;
1842        case -989163880: // protocol
1843          this.getProtocol().add(TypeConvertor.castToUri(value)); // UriType
1844          return value;
1845        case -1857640538: // summary
1846          this.summary = TypeConvertor.castToString(value); // StringType
1847          return value;
1848        case -853173367: // finding
1849          this.getFinding().add((ClinicalImpressionFindingComponent) value); // ClinicalImpressionFindingComponent
1850          return value;
1851        case -676337953: // prognosisCodeableConcept
1852          this.getPrognosisCodeableConcept().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1853          return value;
1854        case -587137783: // prognosisReference
1855          this.getPrognosisReference().add(TypeConvertor.castToReference(value)); // Reference
1856          return value;
1857        case 1922406657: // supportingInfo
1858          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
1859          return value;
1860        case 3387378: // note
1861          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1862          return value;
1863        default: return super.setProperty(hash, name, value);
1864        }
1865
1866      }
1867
1868      @Override
1869      public Base setProperty(String name, Base value) throws FHIRException {
1870        if (name.equals("identifier")) {
1871          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1872        } else if (name.equals("status")) {
1873          value = new ClinicalImpressionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1874          this.status = (Enumeration) value; // Enumeration<ClinicalImpressionStatus>
1875        } else if (name.equals("statusReason")) {
1876          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1877        } else if (name.equals("code")) {
1878          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1879        } else if (name.equals("description")) {
1880          this.description = TypeConvertor.castToString(value); // StringType
1881        } else if (name.equals("subject")) {
1882          this.subject = TypeConvertor.castToReference(value); // Reference
1883        } else if (name.equals("encounter")) {
1884          this.encounter = TypeConvertor.castToReference(value); // Reference
1885        } else if (name.equals("effective[x]")) {
1886          this.effective = TypeConvertor.castToType(value); // DataType
1887        } else if (name.equals("date")) {
1888          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1889        } else if (name.equals("assessor")) {
1890          this.assessor = TypeConvertor.castToReference(value); // Reference
1891        } else if (name.equals("previous")) {
1892          this.previous = TypeConvertor.castToReference(value); // Reference
1893        } else if (name.equals("problem")) {
1894          this.getProblem().add(TypeConvertor.castToReference(value));
1895        } else if (name.equals("investigation")) {
1896          this.getInvestigation().add((ClinicalImpressionInvestigationComponent) value);
1897        } else if (name.equals("protocol")) {
1898          this.getProtocol().add(TypeConvertor.castToUri(value));
1899        } else if (name.equals("summary")) {
1900          this.summary = TypeConvertor.castToString(value); // StringType
1901        } else if (name.equals("finding")) {
1902          this.getFinding().add((ClinicalImpressionFindingComponent) value);
1903        } else if (name.equals("prognosisCodeableConcept")) {
1904          this.getPrognosisCodeableConcept().add(TypeConvertor.castToCodeableConcept(value));
1905        } else if (name.equals("prognosisReference")) {
1906          this.getPrognosisReference().add(TypeConvertor.castToReference(value));
1907        } else if (name.equals("supportingInfo")) {
1908          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
1909        } else if (name.equals("note")) {
1910          this.getNote().add(TypeConvertor.castToAnnotation(value));
1911        } else
1912          return super.setProperty(name, value);
1913        return value;
1914      }
1915
1916      @Override
1917      public Base makeProperty(int hash, String name) throws FHIRException {
1918        switch (hash) {
1919        case -1618432855:  return addIdentifier(); 
1920        case -892481550:  return getStatusElement();
1921        case 2051346646:  return getStatusReason();
1922        case 3059181:  return getCode();
1923        case -1724546052:  return getDescriptionElement();
1924        case -1867885268:  return getSubject();
1925        case 1524132147:  return getEncounter();
1926        case 247104889:  return getEffective();
1927        case -1468651097:  return getEffective();
1928        case 3076014:  return getDateElement();
1929        case -373213113:  return getAssessor();
1930        case -1273775369:  return getPrevious();
1931        case -309542241:  return addProblem(); 
1932        case 956015362:  return addInvestigation(); 
1933        case -989163880:  return addProtocolElement();
1934        case -1857640538:  return getSummaryElement();
1935        case -853173367:  return addFinding(); 
1936        case -676337953:  return addPrognosisCodeableConcept(); 
1937        case -587137783:  return addPrognosisReference(); 
1938        case 1922406657:  return addSupportingInfo(); 
1939        case 3387378:  return addNote(); 
1940        default: return super.makeProperty(hash, name);
1941        }
1942
1943      }
1944
1945      @Override
1946      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1947        switch (hash) {
1948        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1949        case -892481550: /*status*/ return new String[] {"code"};
1950        case 2051346646: /*statusReason*/ return new String[] {"CodeableConcept"};
1951        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1952        case -1724546052: /*description*/ return new String[] {"string"};
1953        case -1867885268: /*subject*/ return new String[] {"Reference"};
1954        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1955        case -1468651097: /*effective*/ return new String[] {"dateTime", "Period"};
1956        case 3076014: /*date*/ return new String[] {"dateTime"};
1957        case -373213113: /*assessor*/ return new String[] {"Reference"};
1958        case -1273775369: /*previous*/ return new String[] {"Reference"};
1959        case -309542241: /*problem*/ return new String[] {"Reference"};
1960        case 956015362: /*investigation*/ return new String[] {};
1961        case -989163880: /*protocol*/ return new String[] {"uri"};
1962        case -1857640538: /*summary*/ return new String[] {"string"};
1963        case -853173367: /*finding*/ return new String[] {};
1964        case -676337953: /*prognosisCodeableConcept*/ return new String[] {"CodeableConcept"};
1965        case -587137783: /*prognosisReference*/ return new String[] {"Reference"};
1966        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
1967        case 3387378: /*note*/ return new String[] {"Annotation"};
1968        default: return super.getTypesForProperty(hash, name);
1969        }
1970
1971      }
1972
1973      @Override
1974      public Base addChild(String name) throws FHIRException {
1975        if (name.equals("identifier")) {
1976          return addIdentifier();
1977        }
1978        else if (name.equals("status")) {
1979          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.status");
1980        }
1981        else if (name.equals("statusReason")) {
1982          this.statusReason = new CodeableConcept();
1983          return this.statusReason;
1984        }
1985        else if (name.equals("code")) {
1986          this.code = new CodeableConcept();
1987          return this.code;
1988        }
1989        else if (name.equals("description")) {
1990          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.description");
1991        }
1992        else if (name.equals("subject")) {
1993          this.subject = new Reference();
1994          return this.subject;
1995        }
1996        else if (name.equals("encounter")) {
1997          this.encounter = new Reference();
1998          return this.encounter;
1999        }
2000        else if (name.equals("effectiveDateTime")) {
2001          this.effective = new DateTimeType();
2002          return this.effective;
2003        }
2004        else if (name.equals("effectivePeriod")) {
2005          this.effective = new Period();
2006          return this.effective;
2007        }
2008        else if (name.equals("date")) {
2009          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.date");
2010        }
2011        else if (name.equals("assessor")) {
2012          this.assessor = new Reference();
2013          return this.assessor;
2014        }
2015        else if (name.equals("previous")) {
2016          this.previous = new Reference();
2017          return this.previous;
2018        }
2019        else if (name.equals("problem")) {
2020          return addProblem();
2021        }
2022        else if (name.equals("investigation")) {
2023          return addInvestigation();
2024        }
2025        else if (name.equals("protocol")) {
2026          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.protocol");
2027        }
2028        else if (name.equals("summary")) {
2029          throw new FHIRException("Cannot call addChild on a primitive type ClinicalImpression.summary");
2030        }
2031        else if (name.equals("finding")) {
2032          return addFinding();
2033        }
2034        else if (name.equals("prognosisCodeableConcept")) {
2035          return addPrognosisCodeableConcept();
2036        }
2037        else if (name.equals("prognosisReference")) {
2038          return addPrognosisReference();
2039        }
2040        else if (name.equals("supportingInfo")) {
2041          return addSupportingInfo();
2042        }
2043        else if (name.equals("note")) {
2044          return addNote();
2045        }
2046        else
2047          return super.addChild(name);
2048      }
2049
2050  public String fhirType() {
2051    return "ClinicalImpression";
2052
2053  }
2054
2055      public ClinicalImpression copy() {
2056        ClinicalImpression dst = new ClinicalImpression();
2057        copyValues(dst);
2058        return dst;
2059      }
2060
2061      public void copyValues(ClinicalImpression dst) {
2062        super.copyValues(dst);
2063        if (identifier != null) {
2064          dst.identifier = new ArrayList<Identifier>();
2065          for (Identifier i : identifier)
2066            dst.identifier.add(i.copy());
2067        };
2068        dst.status = status == null ? null : status.copy();
2069        dst.statusReason = statusReason == null ? null : statusReason.copy();
2070        dst.code = code == null ? null : code.copy();
2071        dst.description = description == null ? null : description.copy();
2072        dst.subject = subject == null ? null : subject.copy();
2073        dst.encounter = encounter == null ? null : encounter.copy();
2074        dst.effective = effective == null ? null : effective.copy();
2075        dst.date = date == null ? null : date.copy();
2076        dst.assessor = assessor == null ? null : assessor.copy();
2077        dst.previous = previous == null ? null : previous.copy();
2078        if (problem != null) {
2079          dst.problem = new ArrayList<Reference>();
2080          for (Reference i : problem)
2081            dst.problem.add(i.copy());
2082        };
2083        if (investigation != null) {
2084          dst.investigation = new ArrayList<ClinicalImpressionInvestigationComponent>();
2085          for (ClinicalImpressionInvestigationComponent i : investigation)
2086            dst.investigation.add(i.copy());
2087        };
2088        if (protocol != null) {
2089          dst.protocol = new ArrayList<UriType>();
2090          for (UriType i : protocol)
2091            dst.protocol.add(i.copy());
2092        };
2093        dst.summary = summary == null ? null : summary.copy();
2094        if (finding != null) {
2095          dst.finding = new ArrayList<ClinicalImpressionFindingComponent>();
2096          for (ClinicalImpressionFindingComponent i : finding)
2097            dst.finding.add(i.copy());
2098        };
2099        if (prognosisCodeableConcept != null) {
2100          dst.prognosisCodeableConcept = new ArrayList<CodeableConcept>();
2101          for (CodeableConcept i : prognosisCodeableConcept)
2102            dst.prognosisCodeableConcept.add(i.copy());
2103        };
2104        if (prognosisReference != null) {
2105          dst.prognosisReference = new ArrayList<Reference>();
2106          for (Reference i : prognosisReference)
2107            dst.prognosisReference.add(i.copy());
2108        };
2109        if (supportingInfo != null) {
2110          dst.supportingInfo = new ArrayList<Reference>();
2111          for (Reference i : supportingInfo)
2112            dst.supportingInfo.add(i.copy());
2113        };
2114        if (note != null) {
2115          dst.note = new ArrayList<Annotation>();
2116          for (Annotation i : note)
2117            dst.note.add(i.copy());
2118        };
2119      }
2120
2121      protected ClinicalImpression typedCopy() {
2122        return copy();
2123      }
2124
2125      @Override
2126      public boolean equalsDeep(Base other_) {
2127        if (!super.equalsDeep(other_))
2128          return false;
2129        if (!(other_ instanceof ClinicalImpression))
2130          return false;
2131        ClinicalImpression o = (ClinicalImpression) other_;
2132        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(statusReason, o.statusReason, true)
2133           && compareDeep(code, o.code, true) && compareDeep(description, o.description, true) && compareDeep(subject, o.subject, true)
2134           && compareDeep(encounter, o.encounter, true) && compareDeep(effective, o.effective, true) && compareDeep(date, o.date, true)
2135           && compareDeep(assessor, o.assessor, true) && compareDeep(previous, o.previous, true) && compareDeep(problem, o.problem, true)
2136           && compareDeep(investigation, o.investigation, true) && compareDeep(protocol, o.protocol, true)
2137           && compareDeep(summary, o.summary, true) && compareDeep(finding, o.finding, true) && compareDeep(prognosisCodeableConcept, o.prognosisCodeableConcept, true)
2138           && compareDeep(prognosisReference, o.prognosisReference, true) && compareDeep(supportingInfo, o.supportingInfo, true)
2139           && compareDeep(note, o.note, true);
2140      }
2141
2142      @Override
2143      public boolean equalsShallow(Base other_) {
2144        if (!super.equalsShallow(other_))
2145          return false;
2146        if (!(other_ instanceof ClinicalImpression))
2147          return false;
2148        ClinicalImpression o = (ClinicalImpression) other_;
2149        return compareValues(status, o.status, true) && compareValues(description, o.description, true) && compareValues(date, o.date, true)
2150           && compareValues(protocol, o.protocol, true) && compareValues(summary, o.summary, true);
2151      }
2152
2153      public boolean isEmpty() {
2154        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, statusReason
2155          , code, description, subject, encounter, effective, date, assessor, previous
2156          , problem, investigation, protocol, summary, finding, prognosisCodeableConcept, prognosisReference
2157          , supportingInfo, note);
2158      }
2159
2160  @Override
2161  public ResourceType getResourceType() {
2162    return ResourceType.ClinicalImpression;
2163   }
2164
2165 /**
2166   * Search parameter: <b>assessor</b>
2167   * <p>
2168   * Description: <b>The clinician performing the assessment</b><br>
2169   * Type: <b>reference</b><br>
2170   * Path: <b>ClinicalImpression.assessor</b><br>
2171   * </p>
2172   */
2173  @SearchParamDefinition(name="assessor", path="ClinicalImpression.assessor", 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 } )
2174  public static final String SP_ASSESSOR = "assessor";
2175 /**
2176   * <b>Fluent Client</b> search parameter constant for <b>assessor</b>
2177   * <p>
2178   * Description: <b>The clinician performing the assessment</b><br>
2179   * Type: <b>reference</b><br>
2180   * Path: <b>ClinicalImpression.assessor</b><br>
2181   * </p>
2182   */
2183  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ASSESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ASSESSOR);
2184
2185/**
2186   * Constant for fluent queries to be used to add include statements. Specifies
2187   * the path value of "<b>ClinicalImpression:assessor</b>".
2188   */
2189  public static final ca.uhn.fhir.model.api.Include INCLUDE_ASSESSOR = new ca.uhn.fhir.model.api.Include("ClinicalImpression:assessor").toLocked();
2190
2191 /**
2192   * Search parameter: <b>encounter</b>
2193   * <p>
2194   * Description: <b>Encounter created as part of</b><br>
2195   * Type: <b>reference</b><br>
2196   * Path: <b>ClinicalImpression.encounter</b><br>
2197   * </p>
2198   */
2199  @SearchParamDefinition(name="encounter", path="ClinicalImpression.encounter", description="Encounter created as part of", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
2200  public static final String SP_ENCOUNTER = "encounter";
2201 /**
2202   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2203   * <p>
2204   * Description: <b>Encounter created as part of</b><br>
2205   * Type: <b>reference</b><br>
2206   * Path: <b>ClinicalImpression.encounter</b><br>
2207   * </p>
2208   */
2209  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2210
2211/**
2212   * Constant for fluent queries to be used to add include statements. Specifies
2213   * the path value of "<b>ClinicalImpression:encounter</b>".
2214   */
2215  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("ClinicalImpression:encounter").toLocked();
2216
2217 /**
2218   * Search parameter: <b>finding-code</b>
2219   * <p>
2220   * Description: <b>What was found</b><br>
2221   * Type: <b>token</b><br>
2222   * Path: <b>ClinicalImpression.finding.itemCodeableConcept</b><br>
2223   * </p>
2224   */
2225  @SearchParamDefinition(name="finding-code", path="ClinicalImpression.finding.itemCodeableConcept", description="What was found", type="token" )
2226  public static final String SP_FINDING_CODE = "finding-code";
2227 /**
2228   * <b>Fluent Client</b> search parameter constant for <b>finding-code</b>
2229   * <p>
2230   * Description: <b>What was found</b><br>
2231   * Type: <b>token</b><br>
2232   * Path: <b>ClinicalImpression.finding.itemCodeableConcept</b><br>
2233   * </p>
2234   */
2235  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FINDING_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FINDING_CODE);
2236
2237 /**
2238   * Search parameter: <b>finding-ref</b>
2239   * <p>
2240   * Description: <b>What was found</b><br>
2241   * Type: <b>reference</b><br>
2242   * Path: <b>ClinicalImpression.finding.itemReference</b><br>
2243   * </p>
2244   */
2245  @SearchParamDefinition(name="finding-ref", path="ClinicalImpression.finding.itemReference", description="What was found", type="reference", target={Condition.class, Media.class, Observation.class } )
2246  public static final String SP_FINDING_REF = "finding-ref";
2247 /**
2248   * <b>Fluent Client</b> search parameter constant for <b>finding-ref</b>
2249   * <p>
2250   * Description: <b>What was found</b><br>
2251   * Type: <b>reference</b><br>
2252   * Path: <b>ClinicalImpression.finding.itemReference</b><br>
2253   * </p>
2254   */
2255  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam FINDING_REF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_FINDING_REF);
2256
2257/**
2258   * Constant for fluent queries to be used to add include statements. Specifies
2259   * the path value of "<b>ClinicalImpression:finding-ref</b>".
2260   */
2261  public static final ca.uhn.fhir.model.api.Include INCLUDE_FINDING_REF = new ca.uhn.fhir.model.api.Include("ClinicalImpression:finding-ref").toLocked();
2262
2263 /**
2264   * Search parameter: <b>identifier</b>
2265   * <p>
2266   * Description: <b>Business identifier</b><br>
2267   * Type: <b>token</b><br>
2268   * Path: <b>ClinicalImpression.identifier</b><br>
2269   * </p>
2270   */
2271  @SearchParamDefinition(name="identifier", path="ClinicalImpression.identifier", description="Business identifier", type="token" )
2272  public static final String SP_IDENTIFIER = "identifier";
2273 /**
2274   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2275   * <p>
2276   * Description: <b>Business identifier</b><br>
2277   * Type: <b>token</b><br>
2278   * Path: <b>ClinicalImpression.identifier</b><br>
2279   * </p>
2280   */
2281  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2282
2283 /**
2284   * Search parameter: <b>investigation</b>
2285   * <p>
2286   * Description: <b>Record of a specific investigation</b><br>
2287   * Type: <b>reference</b><br>
2288   * Path: <b>ClinicalImpression.investigation.item</b><br>
2289   * </p>
2290   */
2291  @SearchParamDefinition(name="investigation", path="ClinicalImpression.investigation.item", description="Record of a specific investigation", type="reference", target={DiagnosticReport.class, FamilyMemberHistory.class, ImagingStudy.class, Media.class, Observation.class, QuestionnaireResponse.class, RiskAssessment.class } )
2292  public static final String SP_INVESTIGATION = "investigation";
2293 /**
2294   * <b>Fluent Client</b> search parameter constant for <b>investigation</b>
2295   * <p>
2296   * Description: <b>Record of a specific investigation</b><br>
2297   * Type: <b>reference</b><br>
2298   * Path: <b>ClinicalImpression.investigation.item</b><br>
2299   * </p>
2300   */
2301  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INVESTIGATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INVESTIGATION);
2302
2303/**
2304   * Constant for fluent queries to be used to add include statements. Specifies
2305   * the path value of "<b>ClinicalImpression:investigation</b>".
2306   */
2307  public static final ca.uhn.fhir.model.api.Include INCLUDE_INVESTIGATION = new ca.uhn.fhir.model.api.Include("ClinicalImpression:investigation").toLocked();
2308
2309 /**
2310   * Search parameter: <b>previous</b>
2311   * <p>
2312   * Description: <b>Reference to last assessment</b><br>
2313   * Type: <b>reference</b><br>
2314   * Path: <b>ClinicalImpression.previous</b><br>
2315   * </p>
2316   */
2317  @SearchParamDefinition(name="previous", path="ClinicalImpression.previous", description="Reference to last assessment", type="reference", target={ClinicalImpression.class } )
2318  public static final String SP_PREVIOUS = "previous";
2319 /**
2320   * <b>Fluent Client</b> search parameter constant for <b>previous</b>
2321   * <p>
2322   * Description: <b>Reference to last assessment</b><br>
2323   * Type: <b>reference</b><br>
2324   * Path: <b>ClinicalImpression.previous</b><br>
2325   * </p>
2326   */
2327  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREVIOUS = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREVIOUS);
2328
2329/**
2330   * Constant for fluent queries to be used to add include statements. Specifies
2331   * the path value of "<b>ClinicalImpression:previous</b>".
2332   */
2333  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREVIOUS = new ca.uhn.fhir.model.api.Include("ClinicalImpression:previous").toLocked();
2334
2335 /**
2336   * Search parameter: <b>problem</b>
2337   * <p>
2338   * Description: <b>Relevant impressions of patient state</b><br>
2339   * Type: <b>reference</b><br>
2340   * Path: <b>ClinicalImpression.problem</b><br>
2341   * </p>
2342   */
2343  @SearchParamDefinition(name="problem", path="ClinicalImpression.problem", description="Relevant impressions of patient state", type="reference", target={AllergyIntolerance.class, Condition.class } )
2344  public static final String SP_PROBLEM = "problem";
2345 /**
2346   * <b>Fluent Client</b> search parameter constant for <b>problem</b>
2347   * <p>
2348   * Description: <b>Relevant impressions of patient state</b><br>
2349   * Type: <b>reference</b><br>
2350   * Path: <b>ClinicalImpression.problem</b><br>
2351   * </p>
2352   */
2353  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PROBLEM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PROBLEM);
2354
2355/**
2356   * Constant for fluent queries to be used to add include statements. Specifies
2357   * the path value of "<b>ClinicalImpression:problem</b>".
2358   */
2359  public static final ca.uhn.fhir.model.api.Include INCLUDE_PROBLEM = new ca.uhn.fhir.model.api.Include("ClinicalImpression:problem").toLocked();
2360
2361 /**
2362   * Search parameter: <b>status</b>
2363   * <p>
2364   * Description: <b>in-progress | completed | entered-in-error</b><br>
2365   * Type: <b>token</b><br>
2366   * Path: <b>ClinicalImpression.status</b><br>
2367   * </p>
2368   */
2369  @SearchParamDefinition(name="status", path="ClinicalImpression.status", description="in-progress | completed | entered-in-error", type="token" )
2370  public static final String SP_STATUS = "status";
2371 /**
2372   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2373   * <p>
2374   * Description: <b>in-progress | completed | entered-in-error</b><br>
2375   * Type: <b>token</b><br>
2376   * Path: <b>ClinicalImpression.status</b><br>
2377   * </p>
2378   */
2379  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2380
2381 /**
2382   * Search parameter: <b>subject</b>
2383   * <p>
2384   * Description: <b>Patient or group assessed</b><br>
2385   * Type: <b>reference</b><br>
2386   * Path: <b>ClinicalImpression.subject</b><br>
2387   * </p>
2388   */
2389  @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 } )
2390  public static final String SP_SUBJECT = "subject";
2391 /**
2392   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2393   * <p>
2394   * Description: <b>Patient or group assessed</b><br>
2395   * Type: <b>reference</b><br>
2396   * Path: <b>ClinicalImpression.subject</b><br>
2397   * </p>
2398   */
2399  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2400
2401/**
2402   * Constant for fluent queries to be used to add include statements. Specifies
2403   * the path value of "<b>ClinicalImpression:subject</b>".
2404   */
2405  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("ClinicalImpression:subject").toLocked();
2406
2407 /**
2408   * Search parameter: <b>supporting-info</b>
2409   * <p>
2410   * Description: <b>Information supporting the clinical impression</b><br>
2411   * Type: <b>reference</b><br>
2412   * Path: <b>ClinicalImpression.supportingInfo</b><br>
2413   * </p>
2414   */
2415  @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, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2416  public static final String SP_SUPPORTING_INFO = "supporting-info";
2417 /**
2418   * <b>Fluent Client</b> search parameter constant for <b>supporting-info</b>
2419   * <p>
2420   * Description: <b>Information supporting the clinical impression</b><br>
2421   * Type: <b>reference</b><br>
2422   * Path: <b>ClinicalImpression.supportingInfo</b><br>
2423   * </p>
2424   */
2425  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUPPORTING_INFO = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUPPORTING_INFO);
2426
2427/**
2428   * Constant for fluent queries to be used to add include statements. Specifies
2429   * the path value of "<b>ClinicalImpression:supporting-info</b>".
2430   */
2431  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUPPORTING_INFO = new ca.uhn.fhir.model.api.Include("ClinicalImpression:supporting-info").toLocked();
2432
2433 /**
2434   * Search parameter: <b>date</b>
2435   * <p>
2436   * Description: <b>Multiple Resources: 
2437
2438* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
2439* [CarePlan](careplan.html): Time period plan covers
2440* [CareTeam](careteam.html): Time period team covers
2441* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
2442* [Composition](composition.html): Composition editing time
2443* [Consent](consent.html): When this Consent was created or indexed
2444* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
2445* [Encounter](encounter.html): A date within the period the Encounter lasted
2446* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
2447* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
2448* [Flag](flag.html): Time period when flag is active
2449* [Immunization](immunization.html): Vaccination  (non)-Administration Date
2450* [List](list.html): When the list was prepared
2451* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
2452* [Procedure](procedure.html): When the procedure was performed
2453* [RiskAssessment](riskassessment.html): When was assessment made?
2454* [SupplyRequest](supplyrequest.html): When the request was made
2455</b><br>
2456   * Type: <b>date</b><br>
2457   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
2458   * </p>
2459   */
2460  @SearchParamDefinition(name="date", path="AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (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): Time period team covers\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When this Consent was created or indexed\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [Encounter](encounter.html): A date within the period 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 was performed\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
2461  public static final String SP_DATE = "date";
2462 /**
2463   * <b>Fluent Client</b> search parameter constant for <b>date</b>
2464   * <p>
2465   * Description: <b>Multiple Resources: 
2466
2467* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
2468* [CarePlan](careplan.html): Time period plan covers
2469* [CareTeam](careteam.html): Time period team covers
2470* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
2471* [Composition](composition.html): Composition editing time
2472* [Consent](consent.html): When this Consent was created or indexed
2473* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
2474* [Encounter](encounter.html): A date within the period the Encounter lasted
2475* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
2476* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
2477* [Flag](flag.html): Time period when flag is active
2478* [Immunization](immunization.html): Vaccination  (non)-Administration Date
2479* [List](list.html): When the list was prepared
2480* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
2481* [Procedure](procedure.html): When the procedure was performed
2482* [RiskAssessment](riskassessment.html): When was assessment made?
2483* [SupplyRequest](supplyrequest.html): When the request was made
2484</b><br>
2485   * Type: <b>date</b><br>
2486   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
2487   * </p>
2488   */
2489  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
2490
2491 /**
2492   * Search parameter: <b>patient</b>
2493   * <p>
2494   * Description: <b>Multiple Resources: 
2495
2496* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2497* [CarePlan](careplan.html): Who the care plan is for
2498* [CareTeam](careteam.html): Who care team is for
2499* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2500* [Composition](composition.html): Who and/or what the composition is about
2501* [Condition](condition.html): Who has the condition?
2502* [Consent](consent.html): Who the consent applies to
2503* [DetectedIssue](detectedissue.html): Associated patient
2504* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2505* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2506* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2507* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2508* [DocumentReference](documentreference.html): Who/what is the subject of the document
2509* [Encounter](encounter.html): The patient or group present at the encounter
2510* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2511* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2512* [Flag](flag.html): The identity of a subject to list flags for
2513* [Goal](goal.html): Who this goal is intended for
2514* [ImagingStudy](imagingstudy.html): Who the study is about
2515* [Immunization](immunization.html): The patient for the vaccination record
2516* [List](list.html): If all resources have the same subject
2517* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2518* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2519* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2520* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2521* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2522* [Observation](observation.html): The subject that the observation is about (if patient)
2523* [Procedure](procedure.html): Search by subject - a patient
2524* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2525* [ServiceRequest](servicerequest.html): Search by subject - a patient
2526* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2527* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2528</b><br>
2529   * Type: <b>reference</b><br>
2530   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2531   * </p>
2532   */
2533  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient or group assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient or group present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2534  public static final String SP_PATIENT = "patient";
2535 /**
2536   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2537   * <p>
2538   * Description: <b>Multiple Resources: 
2539
2540* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2541* [CarePlan](careplan.html): Who the care plan is for
2542* [CareTeam](careteam.html): Who care team is for
2543* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2544* [Composition](composition.html): Who and/or what the composition is about
2545* [Condition](condition.html): Who has the condition?
2546* [Consent](consent.html): Who the consent applies to
2547* [DetectedIssue](detectedissue.html): Associated patient
2548* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2549* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2550* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2551* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2552* [DocumentReference](documentreference.html): Who/what is the subject of the document
2553* [Encounter](encounter.html): The patient or group present at the encounter
2554* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2555* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2556* [Flag](flag.html): The identity of a subject to list flags for
2557* [Goal](goal.html): Who this goal is intended for
2558* [ImagingStudy](imagingstudy.html): Who the study is about
2559* [Immunization](immunization.html): The patient for the vaccination record
2560* [List](list.html): If all resources have the same subject
2561* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2562* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2563* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2564* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2565* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2566* [Observation](observation.html): The subject that the observation is about (if patient)
2567* [Procedure](procedure.html): Search by subject - a patient
2568* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2569* [ServiceRequest](servicerequest.html): Search by subject - a patient
2570* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2571* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2572</b><br>
2573   * Type: <b>reference</b><br>
2574   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2575   * </p>
2576   */
2577  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2578
2579/**
2580   * Constant for fluent queries to be used to add include statements. Specifies
2581   * the path value of "<b>ClinicalImpression:patient</b>".
2582   */
2583  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ClinicalImpression:patient").toLocked();
2584
2585
2586}
2587