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