001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care.
052 */
053@ResourceDef(name="CareTeam", profile="http://hl7.org/fhir/StructureDefinition/CareTeam")
054public class CareTeam extends DomainResource {
055
056    public enum CareTeamStatus {
057        /**
058         * The care team has been drafted and proposed, but not yet participating in the coordination and delivery of patient care.
059         */
060        PROPOSED, 
061        /**
062         * The care team is currently participating in the coordination and delivery of care.
063         */
064        ACTIVE, 
065        /**
066         * The care team is temporarily on hold or suspended and not participating in the coordination and delivery of care.
067         */
068        SUSPENDED, 
069        /**
070         * The care team was, but is no longer, participating in the coordination and delivery of care.
071         */
072        INACTIVE, 
073        /**
074         * The care team should have never existed.
075         */
076        ENTEREDINERROR, 
077        /**
078         * added to help the parsers with the generic types
079         */
080        NULL;
081        public static CareTeamStatus fromCode(String codeString) throws FHIRException {
082            if (codeString == null || "".equals(codeString))
083                return null;
084        if ("proposed".equals(codeString))
085          return PROPOSED;
086        if ("active".equals(codeString))
087          return ACTIVE;
088        if ("suspended".equals(codeString))
089          return SUSPENDED;
090        if ("inactive".equals(codeString))
091          return INACTIVE;
092        if ("entered-in-error".equals(codeString))
093          return ENTEREDINERROR;
094        if (Configuration.isAcceptInvalidEnums())
095          return null;
096        else
097          throw new FHIRException("Unknown CareTeamStatus code '"+codeString+"'");
098        }
099        public String toCode() {
100          switch (this) {
101            case PROPOSED: return "proposed";
102            case ACTIVE: return "active";
103            case SUSPENDED: return "suspended";
104            case INACTIVE: return "inactive";
105            case ENTEREDINERROR: return "entered-in-error";
106            default: return "?";
107          }
108        }
109        public String getSystem() {
110          switch (this) {
111            case PROPOSED: return "http://hl7.org/fhir/care-team-status";
112            case ACTIVE: return "http://hl7.org/fhir/care-team-status";
113            case SUSPENDED: return "http://hl7.org/fhir/care-team-status";
114            case INACTIVE: return "http://hl7.org/fhir/care-team-status";
115            case ENTEREDINERROR: return "http://hl7.org/fhir/care-team-status";
116            default: return "?";
117          }
118        }
119        public String getDefinition() {
120          switch (this) {
121            case PROPOSED: return "The care team has been drafted and proposed, but not yet participating in the coordination and delivery of patient care.";
122            case ACTIVE: return "The care team is currently participating in the coordination and delivery of care.";
123            case SUSPENDED: return "The care team is temporarily on hold or suspended and not participating in the coordination and delivery of care.";
124            case INACTIVE: return "The care team was, but is no longer, participating in the coordination and delivery of care.";
125            case ENTEREDINERROR: return "The care team should have never existed.";
126            default: return "?";
127          }
128        }
129        public String getDisplay() {
130          switch (this) {
131            case PROPOSED: return "Proposed";
132            case ACTIVE: return "Active";
133            case SUSPENDED: return "Suspended";
134            case INACTIVE: return "Inactive";
135            case ENTEREDINERROR: return "Entered in Error";
136            default: return "?";
137          }
138        }
139    }
140
141  public static class CareTeamStatusEnumFactory implements EnumFactory<CareTeamStatus> {
142    public CareTeamStatus fromCode(String codeString) throws IllegalArgumentException {
143      if (codeString == null || "".equals(codeString))
144            if (codeString == null || "".equals(codeString))
145                return null;
146        if ("proposed".equals(codeString))
147          return CareTeamStatus.PROPOSED;
148        if ("active".equals(codeString))
149          return CareTeamStatus.ACTIVE;
150        if ("suspended".equals(codeString))
151          return CareTeamStatus.SUSPENDED;
152        if ("inactive".equals(codeString))
153          return CareTeamStatus.INACTIVE;
154        if ("entered-in-error".equals(codeString))
155          return CareTeamStatus.ENTEREDINERROR;
156        throw new IllegalArgumentException("Unknown CareTeamStatus code '"+codeString+"'");
157        }
158        public Enumeration<CareTeamStatus> fromType(Base code) throws FHIRException {
159          if (code == null)
160            return null;
161          if (code.isEmpty())
162            return new Enumeration<CareTeamStatus>(this);
163          String codeString = ((PrimitiveType) code).asStringValue();
164          if (codeString == null || "".equals(codeString))
165            return null;
166        if ("proposed".equals(codeString))
167          return new Enumeration<CareTeamStatus>(this, CareTeamStatus.PROPOSED);
168        if ("active".equals(codeString))
169          return new Enumeration<CareTeamStatus>(this, CareTeamStatus.ACTIVE);
170        if ("suspended".equals(codeString))
171          return new Enumeration<CareTeamStatus>(this, CareTeamStatus.SUSPENDED);
172        if ("inactive".equals(codeString))
173          return new Enumeration<CareTeamStatus>(this, CareTeamStatus.INACTIVE);
174        if ("entered-in-error".equals(codeString))
175          return new Enumeration<CareTeamStatus>(this, CareTeamStatus.ENTEREDINERROR);
176        throw new FHIRException("Unknown CareTeamStatus code '"+codeString+"'");
177        }
178    public String toCode(CareTeamStatus code) {
179      if (code == CareTeamStatus.PROPOSED)
180        return "proposed";
181      if (code == CareTeamStatus.ACTIVE)
182        return "active";
183      if (code == CareTeamStatus.SUSPENDED)
184        return "suspended";
185      if (code == CareTeamStatus.INACTIVE)
186        return "inactive";
187      if (code == CareTeamStatus.ENTEREDINERROR)
188        return "entered-in-error";
189      return "?";
190      }
191    public String toSystem(CareTeamStatus code) {
192      return code.getSystem();
193      }
194    }
195
196    @Block()
197    public static class CareTeamParticipantComponent extends BackboneElement implements IBaseBackboneElement {
198        /**
199         * Indicates specific responsibility of an individual within the care team, such as "Primary care physician", "Trained social worker counselor", "Caregiver", etc.
200         */
201        @Child(name = "role", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
202        @Description(shortDefinition="Type of involvement", formalDefinition="Indicates specific responsibility of an individual within the care team, such as \"Primary care physician\", \"Trained social worker counselor\", \"Caregiver\", etc." )
203        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/participant-role")
204        protected CodeableConcept role;
205
206        /**
207         * The specific person or organization who is participating/expected to participate in the care team.
208         */
209        @Child(name = "member", type = {Practitioner.class, PractitionerRole.class, RelatedPerson.class, Patient.class, Organization.class, CareTeam.class}, order=2, min=0, max=1, modifier=false, summary=true)
210        @Description(shortDefinition="Who is involved", formalDefinition="The specific person or organization who is participating/expected to participate in the care team." )
211        protected Reference member;
212
213        /**
214         * The organization of the practitioner.
215         */
216        @Child(name = "onBehalfOf", type = {Organization.class}, order=3, min=0, max=1, modifier=false, summary=true)
217        @Description(shortDefinition="Organization of the practitioner", formalDefinition="The organization of the practitioner." )
218        protected Reference onBehalfOf;
219
220        /**
221         * When the member is generally available within this care team.
222         */
223        @Child(name = "coverage", type = {Period.class, Timing.class}, order=4, min=0, max=1, modifier=false, summary=false)
224        @Description(shortDefinition="When the member is generally available within this care team", formalDefinition="When the member is generally available within this care team." )
225        protected DataType coverage;
226
227        private static final long serialVersionUID = 192079749L;
228
229    /**
230     * Constructor
231     */
232      public CareTeamParticipantComponent() {
233        super();
234      }
235
236        /**
237         * @return {@link #role} (Indicates specific responsibility of an individual within the care team, such as "Primary care physician", "Trained social worker counselor", "Caregiver", etc.)
238         */
239        public CodeableConcept getRole() { 
240          if (this.role == null)
241            if (Configuration.errorOnAutoCreate())
242              throw new Error("Attempt to auto-create CareTeamParticipantComponent.role");
243            else if (Configuration.doAutoCreate())
244              this.role = new CodeableConcept(); // cc
245          return this.role;
246        }
247
248        public boolean hasRole() { 
249          return this.role != null && !this.role.isEmpty();
250        }
251
252        /**
253         * @param value {@link #role} (Indicates specific responsibility of an individual within the care team, such as "Primary care physician", "Trained social worker counselor", "Caregiver", etc.)
254         */
255        public CareTeamParticipantComponent setRole(CodeableConcept value) { 
256          this.role = value;
257          return this;
258        }
259
260        /**
261         * @return {@link #member} (The specific person or organization who is participating/expected to participate in the care team.)
262         */
263        public Reference getMember() { 
264          if (this.member == null)
265            if (Configuration.errorOnAutoCreate())
266              throw new Error("Attempt to auto-create CareTeamParticipantComponent.member");
267            else if (Configuration.doAutoCreate())
268              this.member = new Reference(); // cc
269          return this.member;
270        }
271
272        public boolean hasMember() { 
273          return this.member != null && !this.member.isEmpty();
274        }
275
276        /**
277         * @param value {@link #member} (The specific person or organization who is participating/expected to participate in the care team.)
278         */
279        public CareTeamParticipantComponent setMember(Reference value) { 
280          this.member = value;
281          return this;
282        }
283
284        /**
285         * @return {@link #onBehalfOf} (The organization of the practitioner.)
286         */
287        public Reference getOnBehalfOf() { 
288          if (this.onBehalfOf == null)
289            if (Configuration.errorOnAutoCreate())
290              throw new Error("Attempt to auto-create CareTeamParticipantComponent.onBehalfOf");
291            else if (Configuration.doAutoCreate())
292              this.onBehalfOf = new Reference(); // cc
293          return this.onBehalfOf;
294        }
295
296        public boolean hasOnBehalfOf() { 
297          return this.onBehalfOf != null && !this.onBehalfOf.isEmpty();
298        }
299
300        /**
301         * @param value {@link #onBehalfOf} (The organization of the practitioner.)
302         */
303        public CareTeamParticipantComponent setOnBehalfOf(Reference value) { 
304          this.onBehalfOf = value;
305          return this;
306        }
307
308        /**
309         * @return {@link #coverage} (When the member is generally available within this care team.)
310         */
311        public DataType getCoverage() { 
312          return this.coverage;
313        }
314
315        /**
316         * @return {@link #coverage} (When the member is generally available within this care team.)
317         */
318        public Period getCoveragePeriod() throws FHIRException { 
319          if (this.coverage == null)
320            this.coverage = new Period();
321          if (!(this.coverage instanceof Period))
322            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.coverage.getClass().getName()+" was encountered");
323          return (Period) this.coverage;
324        }
325
326        public boolean hasCoveragePeriod() { 
327          return this != null && this.coverage instanceof Period;
328        }
329
330        /**
331         * @return {@link #coverage} (When the member is generally available within this care team.)
332         */
333        public Timing getCoverageTiming() throws FHIRException { 
334          if (this.coverage == null)
335            this.coverage = new Timing();
336          if (!(this.coverage instanceof Timing))
337            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.coverage.getClass().getName()+" was encountered");
338          return (Timing) this.coverage;
339        }
340
341        public boolean hasCoverageTiming() { 
342          return this != null && this.coverage instanceof Timing;
343        }
344
345        public boolean hasCoverage() { 
346          return this.coverage != null && !this.coverage.isEmpty();
347        }
348
349        /**
350         * @param value {@link #coverage} (When the member is generally available within this care team.)
351         */
352        public CareTeamParticipantComponent setCoverage(DataType value) { 
353          if (value != null && !(value instanceof Period || value instanceof Timing))
354            throw new Error("Not the right type for CareTeam.participant.coverage[x]: "+value.fhirType());
355          this.coverage = value;
356          return this;
357        }
358
359        protected void listChildren(List<Property> children) {
360          super.listChildren(children);
361          children.add(new Property("role", "CodeableConcept", "Indicates specific responsibility of an individual within the care team, such as \"Primary care physician\", \"Trained social worker counselor\", \"Caregiver\", etc.", 0, 1, role));
362          children.add(new Property("member", "Reference(Practitioner|PractitionerRole|RelatedPerson|Patient|Organization|CareTeam)", "The specific person or organization who is participating/expected to participate in the care team.", 0, 1, member));
363          children.add(new Property("onBehalfOf", "Reference(Organization)", "The organization of the practitioner.", 0, 1, onBehalfOf));
364          children.add(new Property("coverage[x]", "Period|Timing", "When the member is generally available within this care team.", 0, 1, coverage));
365        }
366
367        @Override
368        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
369          switch (_hash) {
370          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "Indicates specific responsibility of an individual within the care team, such as \"Primary care physician\", \"Trained social worker counselor\", \"Caregiver\", etc.", 0, 1, role);
371          case -1077769574: /*member*/  return new Property("member", "Reference(Practitioner|PractitionerRole|RelatedPerson|Patient|Organization|CareTeam)", "The specific person or organization who is participating/expected to participate in the care team.", 0, 1, member);
372          case -14402964: /*onBehalfOf*/  return new Property("onBehalfOf", "Reference(Organization)", "The organization of the practitioner.", 0, 1, onBehalfOf);
373          case 227689880: /*coverage[x]*/  return new Property("coverage[x]", "Period|Timing", "When the member is generally available within this care team.", 0, 1, coverage);
374          case -351767064: /*coverage*/  return new Property("coverage[x]", "Period|Timing", "When the member is generally available within this care team.", 0, 1, coverage);
375          case 1024117193: /*coveragePeriod*/  return new Property("coverage[x]", "Period", "When the member is generally available within this care team.", 0, 1, coverage);
376          case 1142178898: /*coverageTiming*/  return new Property("coverage[x]", "Timing", "When the member is generally available within this care team.", 0, 1, coverage);
377          default: return super.getNamedProperty(_hash, _name, _checkValid);
378          }
379
380        }
381
382      @Override
383      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
384        switch (hash) {
385        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
386        case -1077769574: /*member*/ return this.member == null ? new Base[0] : new Base[] {this.member}; // Reference
387        case -14402964: /*onBehalfOf*/ return this.onBehalfOf == null ? new Base[0] : new Base[] {this.onBehalfOf}; // Reference
388        case -351767064: /*coverage*/ return this.coverage == null ? new Base[0] : new Base[] {this.coverage}; // DataType
389        default: return super.getProperty(hash, name, checkValid);
390        }
391
392      }
393
394      @Override
395      public Base setProperty(int hash, String name, Base value) throws FHIRException {
396        switch (hash) {
397        case 3506294: // role
398          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
399          return value;
400        case -1077769574: // member
401          this.member = TypeConvertor.castToReference(value); // Reference
402          return value;
403        case -14402964: // onBehalfOf
404          this.onBehalfOf = TypeConvertor.castToReference(value); // Reference
405          return value;
406        case -351767064: // coverage
407          this.coverage = TypeConvertor.castToType(value); // DataType
408          return value;
409        default: return super.setProperty(hash, name, value);
410        }
411
412      }
413
414      @Override
415      public Base setProperty(String name, Base value) throws FHIRException {
416        if (name.equals("role")) {
417          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
418        } else if (name.equals("member")) {
419          this.member = TypeConvertor.castToReference(value); // Reference
420        } else if (name.equals("onBehalfOf")) {
421          this.onBehalfOf = TypeConvertor.castToReference(value); // Reference
422        } else if (name.equals("coverage[x]")) {
423          this.coverage = TypeConvertor.castToType(value); // DataType
424        } else
425          return super.setProperty(name, value);
426        return value;
427      }
428
429      @Override
430      public Base makeProperty(int hash, String name) throws FHIRException {
431        switch (hash) {
432        case 3506294:  return getRole();
433        case -1077769574:  return getMember();
434        case -14402964:  return getOnBehalfOf();
435        case 227689880:  return getCoverage();
436        case -351767064:  return getCoverage();
437        default: return super.makeProperty(hash, name);
438        }
439
440      }
441
442      @Override
443      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
444        switch (hash) {
445        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
446        case -1077769574: /*member*/ return new String[] {"Reference"};
447        case -14402964: /*onBehalfOf*/ return new String[] {"Reference"};
448        case -351767064: /*coverage*/ return new String[] {"Period", "Timing"};
449        default: return super.getTypesForProperty(hash, name);
450        }
451
452      }
453
454      @Override
455      public Base addChild(String name) throws FHIRException {
456        if (name.equals("role")) {
457          this.role = new CodeableConcept();
458          return this.role;
459        }
460        else if (name.equals("member")) {
461          this.member = new Reference();
462          return this.member;
463        }
464        else if (name.equals("onBehalfOf")) {
465          this.onBehalfOf = new Reference();
466          return this.onBehalfOf;
467        }
468        else if (name.equals("coveragePeriod")) {
469          this.coverage = new Period();
470          return this.coverage;
471        }
472        else if (name.equals("coverageTiming")) {
473          this.coverage = new Timing();
474          return this.coverage;
475        }
476        else
477          return super.addChild(name);
478      }
479
480      public CareTeamParticipantComponent copy() {
481        CareTeamParticipantComponent dst = new CareTeamParticipantComponent();
482        copyValues(dst);
483        return dst;
484      }
485
486      public void copyValues(CareTeamParticipantComponent dst) {
487        super.copyValues(dst);
488        dst.role = role == null ? null : role.copy();
489        dst.member = member == null ? null : member.copy();
490        dst.onBehalfOf = onBehalfOf == null ? null : onBehalfOf.copy();
491        dst.coverage = coverage == null ? null : coverage.copy();
492      }
493
494      @Override
495      public boolean equalsDeep(Base other_) {
496        if (!super.equalsDeep(other_))
497          return false;
498        if (!(other_ instanceof CareTeamParticipantComponent))
499          return false;
500        CareTeamParticipantComponent o = (CareTeamParticipantComponent) other_;
501        return compareDeep(role, o.role, true) && compareDeep(member, o.member, true) && compareDeep(onBehalfOf, o.onBehalfOf, true)
502           && compareDeep(coverage, o.coverage, true);
503      }
504
505      @Override
506      public boolean equalsShallow(Base other_) {
507        if (!super.equalsShallow(other_))
508          return false;
509        if (!(other_ instanceof CareTeamParticipantComponent))
510          return false;
511        CareTeamParticipantComponent o = (CareTeamParticipantComponent) other_;
512        return true;
513      }
514
515      public boolean isEmpty() {
516        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(role, member, onBehalfOf
517          , coverage);
518      }
519
520  public String fhirType() {
521    return "CareTeam.participant";
522
523  }
524
525  }
526
527    /**
528     * Business identifiers assigned to this care team by the performer or other systems which remain constant as the resource is updated and propagates from server to server.
529     */
530    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
531    @Description(shortDefinition="External Ids for this team", formalDefinition="Business identifiers assigned to this care team by the performer or other systems which remain constant as the resource is updated and propagates from server to server." )
532    protected List<Identifier> identifier;
533
534    /**
535     * Indicates the current state of the care team.
536     */
537    @Child(name = "status", type = {CodeType.class}, order=1, min=0, max=1, modifier=true, summary=true)
538    @Description(shortDefinition="proposed | active | suspended | inactive | entered-in-error", formalDefinition="Indicates the current state of the care team." )
539    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-team-status")
540    protected Enumeration<CareTeamStatus> status;
541
542    /**
543     * Identifies what kind of team.  This is to support differentiation between multiple co-existing teams, such as care plan team, episode of care team, longitudinal care team.
544     */
545    @Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
546    @Description(shortDefinition="Type of team", formalDefinition="Identifies what kind of team.  This is to support differentiation between multiple co-existing teams, such as care plan team, episode of care team, longitudinal care team." )
547    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/care-team-category")
548    protected List<CodeableConcept> category;
549
550    /**
551     * A label for human use intended to distinguish like teams.  E.g. the "red" vs. "green" trauma teams.
552     */
553    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
554    @Description(shortDefinition="Name of the team, such as crisis assessment team", formalDefinition="A label for human use intended to distinguish like teams.  E.g. the \"red\" vs. \"green\" trauma teams." )
555    protected StringType name;
556
557    /**
558     * Identifies the patient or group whose intended care is handled by the team.
559     */
560    @Child(name = "subject", type = {Patient.class, Group.class}, order=4, min=0, max=1, modifier=false, summary=true)
561    @Description(shortDefinition="Who care team is for", formalDefinition="Identifies the patient or group whose intended care is handled by the team." )
562    protected Reference subject;
563
564    /**
565     * Indicates when the team did (or is intended to) come into effect and end.
566     */
567    @Child(name = "period", type = {Period.class}, order=5, min=0, max=1, modifier=false, summary=true)
568    @Description(shortDefinition="Time period team covers", formalDefinition="Indicates when the team did (or is intended to) come into effect and end." )
569    protected Period period;
570
571    /**
572     * Identifies all people and organizations who are expected to be involved in the care team.
573     */
574    @Child(name = "participant", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
575    @Description(shortDefinition="Members of the team", formalDefinition="Identifies all people and organizations who are expected to be involved in the care team." )
576    protected List<CareTeamParticipantComponent> participant;
577
578    /**
579     * Describes why the care team exists.
580     */
581    @Child(name = "reason", type = {CodeableReference.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
582    @Description(shortDefinition="Why the care team exists", formalDefinition="Describes why the care team exists." )
583    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings")
584    protected List<CodeableReference> reason;
585
586    /**
587     * The organization responsible for the care team.
588     */
589    @Child(name = "managingOrganization", type = {Organization.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
590    @Description(shortDefinition="Organization responsible for the care team", formalDefinition="The organization responsible for the care team." )
591    protected List<Reference> managingOrganization;
592
593    /**
594     * A central contact detail for the care team (that applies to all members).
595     */
596    @Child(name = "telecom", type = {ContactPoint.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
597    @Description(shortDefinition="A contact detail for the care team (that applies to all members)", formalDefinition="A central contact detail for the care team (that applies to all members)." )
598    protected List<ContactPoint> telecom;
599
600    /**
601     * Comments made about the CareTeam.
602     */
603    @Child(name = "note", type = {Annotation.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
604    @Description(shortDefinition="Comments made about the CareTeam", formalDefinition="Comments made about the CareTeam." )
605    protected List<Annotation> note;
606
607    private static final long serialVersionUID = 1147350970L;
608
609  /**
610   * Constructor
611   */
612    public CareTeam() {
613      super();
614    }
615
616    /**
617     * @return {@link #identifier} (Business identifiers assigned to this care team by the performer or other systems which remain constant as the resource is updated and propagates from server to server.)
618     */
619    public List<Identifier> getIdentifier() { 
620      if (this.identifier == null)
621        this.identifier = new ArrayList<Identifier>();
622      return this.identifier;
623    }
624
625    /**
626     * @return Returns a reference to <code>this</code> for easy method chaining
627     */
628    public CareTeam setIdentifier(List<Identifier> theIdentifier) { 
629      this.identifier = theIdentifier;
630      return this;
631    }
632
633    public boolean hasIdentifier() { 
634      if (this.identifier == null)
635        return false;
636      for (Identifier item : this.identifier)
637        if (!item.isEmpty())
638          return true;
639      return false;
640    }
641
642    public Identifier addIdentifier() { //3
643      Identifier t = new Identifier();
644      if (this.identifier == null)
645        this.identifier = new ArrayList<Identifier>();
646      this.identifier.add(t);
647      return t;
648    }
649
650    public CareTeam addIdentifier(Identifier t) { //3
651      if (t == null)
652        return this;
653      if (this.identifier == null)
654        this.identifier = new ArrayList<Identifier>();
655      this.identifier.add(t);
656      return this;
657    }
658
659    /**
660     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
661     */
662    public Identifier getIdentifierFirstRep() { 
663      if (getIdentifier().isEmpty()) {
664        addIdentifier();
665      }
666      return getIdentifier().get(0);
667    }
668
669    /**
670     * @return {@link #status} (Indicates the current state of the care team.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
671     */
672    public Enumeration<CareTeamStatus> getStatusElement() { 
673      if (this.status == null)
674        if (Configuration.errorOnAutoCreate())
675          throw new Error("Attempt to auto-create CareTeam.status");
676        else if (Configuration.doAutoCreate())
677          this.status = new Enumeration<CareTeamStatus>(new CareTeamStatusEnumFactory()); // bb
678      return this.status;
679    }
680
681    public boolean hasStatusElement() { 
682      return this.status != null && !this.status.isEmpty();
683    }
684
685    public boolean hasStatus() { 
686      return this.status != null && !this.status.isEmpty();
687    }
688
689    /**
690     * @param value {@link #status} (Indicates the current state of the care team.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
691     */
692    public CareTeam setStatusElement(Enumeration<CareTeamStatus> value) { 
693      this.status = value;
694      return this;
695    }
696
697    /**
698     * @return Indicates the current state of the care team.
699     */
700    public CareTeamStatus getStatus() { 
701      return this.status == null ? null : this.status.getValue();
702    }
703
704    /**
705     * @param value Indicates the current state of the care team.
706     */
707    public CareTeam setStatus(CareTeamStatus value) { 
708      if (value == null)
709        this.status = null;
710      else {
711        if (this.status == null)
712          this.status = new Enumeration<CareTeamStatus>(new CareTeamStatusEnumFactory());
713        this.status.setValue(value);
714      }
715      return this;
716    }
717
718    /**
719     * @return {@link #category} (Identifies what kind of team.  This is to support differentiation between multiple co-existing teams, such as care plan team, episode of care team, longitudinal care team.)
720     */
721    public List<CodeableConcept> getCategory() { 
722      if (this.category == null)
723        this.category = new ArrayList<CodeableConcept>();
724      return this.category;
725    }
726
727    /**
728     * @return Returns a reference to <code>this</code> for easy method chaining
729     */
730    public CareTeam setCategory(List<CodeableConcept> theCategory) { 
731      this.category = theCategory;
732      return this;
733    }
734
735    public boolean hasCategory() { 
736      if (this.category == null)
737        return false;
738      for (CodeableConcept item : this.category)
739        if (!item.isEmpty())
740          return true;
741      return false;
742    }
743
744    public CodeableConcept addCategory() { //3
745      CodeableConcept t = new CodeableConcept();
746      if (this.category == null)
747        this.category = new ArrayList<CodeableConcept>();
748      this.category.add(t);
749      return t;
750    }
751
752    public CareTeam addCategory(CodeableConcept t) { //3
753      if (t == null)
754        return this;
755      if (this.category == null)
756        this.category = new ArrayList<CodeableConcept>();
757      this.category.add(t);
758      return this;
759    }
760
761    /**
762     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
763     */
764    public CodeableConcept getCategoryFirstRep() { 
765      if (getCategory().isEmpty()) {
766        addCategory();
767      }
768      return getCategory().get(0);
769    }
770
771    /**
772     * @return {@link #name} (A label for human use intended to distinguish like teams.  E.g. the "red" vs. "green" trauma teams.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
773     */
774    public StringType getNameElement() { 
775      if (this.name == null)
776        if (Configuration.errorOnAutoCreate())
777          throw new Error("Attempt to auto-create CareTeam.name");
778        else if (Configuration.doAutoCreate())
779          this.name = new StringType(); // bb
780      return this.name;
781    }
782
783    public boolean hasNameElement() { 
784      return this.name != null && !this.name.isEmpty();
785    }
786
787    public boolean hasName() { 
788      return this.name != null && !this.name.isEmpty();
789    }
790
791    /**
792     * @param value {@link #name} (A label for human use intended to distinguish like teams.  E.g. the "red" vs. "green" trauma teams.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
793     */
794    public CareTeam setNameElement(StringType value) { 
795      this.name = value;
796      return this;
797    }
798
799    /**
800     * @return A label for human use intended to distinguish like teams.  E.g. the "red" vs. "green" trauma teams.
801     */
802    public String getName() { 
803      return this.name == null ? null : this.name.getValue();
804    }
805
806    /**
807     * @param value A label for human use intended to distinguish like teams.  E.g. the "red" vs. "green" trauma teams.
808     */
809    public CareTeam setName(String value) { 
810      if (Utilities.noString(value))
811        this.name = null;
812      else {
813        if (this.name == null)
814          this.name = new StringType();
815        this.name.setValue(value);
816      }
817      return this;
818    }
819
820    /**
821     * @return {@link #subject} (Identifies the patient or group whose intended care is handled by the team.)
822     */
823    public Reference getSubject() { 
824      if (this.subject == null)
825        if (Configuration.errorOnAutoCreate())
826          throw new Error("Attempt to auto-create CareTeam.subject");
827        else if (Configuration.doAutoCreate())
828          this.subject = new Reference(); // cc
829      return this.subject;
830    }
831
832    public boolean hasSubject() { 
833      return this.subject != null && !this.subject.isEmpty();
834    }
835
836    /**
837     * @param value {@link #subject} (Identifies the patient or group whose intended care is handled by the team.)
838     */
839    public CareTeam setSubject(Reference value) { 
840      this.subject = value;
841      return this;
842    }
843
844    /**
845     * @return {@link #period} (Indicates when the team did (or is intended to) come into effect and end.)
846     */
847    public Period getPeriod() { 
848      if (this.period == null)
849        if (Configuration.errorOnAutoCreate())
850          throw new Error("Attempt to auto-create CareTeam.period");
851        else if (Configuration.doAutoCreate())
852          this.period = new Period(); // cc
853      return this.period;
854    }
855
856    public boolean hasPeriod() { 
857      return this.period != null && !this.period.isEmpty();
858    }
859
860    /**
861     * @param value {@link #period} (Indicates when the team did (or is intended to) come into effect and end.)
862     */
863    public CareTeam setPeriod(Period value) { 
864      this.period = value;
865      return this;
866    }
867
868    /**
869     * @return {@link #participant} (Identifies all people and organizations who are expected to be involved in the care team.)
870     */
871    public List<CareTeamParticipantComponent> getParticipant() { 
872      if (this.participant == null)
873        this.participant = new ArrayList<CareTeamParticipantComponent>();
874      return this.participant;
875    }
876
877    /**
878     * @return Returns a reference to <code>this</code> for easy method chaining
879     */
880    public CareTeam setParticipant(List<CareTeamParticipantComponent> theParticipant) { 
881      this.participant = theParticipant;
882      return this;
883    }
884
885    public boolean hasParticipant() { 
886      if (this.participant == null)
887        return false;
888      for (CareTeamParticipantComponent item : this.participant)
889        if (!item.isEmpty())
890          return true;
891      return false;
892    }
893
894    public CareTeamParticipantComponent addParticipant() { //3
895      CareTeamParticipantComponent t = new CareTeamParticipantComponent();
896      if (this.participant == null)
897        this.participant = new ArrayList<CareTeamParticipantComponent>();
898      this.participant.add(t);
899      return t;
900    }
901
902    public CareTeam addParticipant(CareTeamParticipantComponent t) { //3
903      if (t == null)
904        return this;
905      if (this.participant == null)
906        this.participant = new ArrayList<CareTeamParticipantComponent>();
907      this.participant.add(t);
908      return this;
909    }
910
911    /**
912     * @return The first repetition of repeating field {@link #participant}, creating it if it does not already exist {3}
913     */
914    public CareTeamParticipantComponent getParticipantFirstRep() { 
915      if (getParticipant().isEmpty()) {
916        addParticipant();
917      }
918      return getParticipant().get(0);
919    }
920
921    /**
922     * @return {@link #reason} (Describes why the care team exists.)
923     */
924    public List<CodeableReference> getReason() { 
925      if (this.reason == null)
926        this.reason = new ArrayList<CodeableReference>();
927      return this.reason;
928    }
929
930    /**
931     * @return Returns a reference to <code>this</code> for easy method chaining
932     */
933    public CareTeam setReason(List<CodeableReference> theReason) { 
934      this.reason = theReason;
935      return this;
936    }
937
938    public boolean hasReason() { 
939      if (this.reason == null)
940        return false;
941      for (CodeableReference item : this.reason)
942        if (!item.isEmpty())
943          return true;
944      return false;
945    }
946
947    public CodeableReference addReason() { //3
948      CodeableReference t = new CodeableReference();
949      if (this.reason == null)
950        this.reason = new ArrayList<CodeableReference>();
951      this.reason.add(t);
952      return t;
953    }
954
955    public CareTeam addReason(CodeableReference t) { //3
956      if (t == null)
957        return this;
958      if (this.reason == null)
959        this.reason = new ArrayList<CodeableReference>();
960      this.reason.add(t);
961      return this;
962    }
963
964    /**
965     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
966     */
967    public CodeableReference getReasonFirstRep() { 
968      if (getReason().isEmpty()) {
969        addReason();
970      }
971      return getReason().get(0);
972    }
973
974    /**
975     * @return {@link #managingOrganization} (The organization responsible for the care team.)
976     */
977    public List<Reference> getManagingOrganization() { 
978      if (this.managingOrganization == null)
979        this.managingOrganization = new ArrayList<Reference>();
980      return this.managingOrganization;
981    }
982
983    /**
984     * @return Returns a reference to <code>this</code> for easy method chaining
985     */
986    public CareTeam setManagingOrganization(List<Reference> theManagingOrganization) { 
987      this.managingOrganization = theManagingOrganization;
988      return this;
989    }
990
991    public boolean hasManagingOrganization() { 
992      if (this.managingOrganization == null)
993        return false;
994      for (Reference item : this.managingOrganization)
995        if (!item.isEmpty())
996          return true;
997      return false;
998    }
999
1000    public Reference addManagingOrganization() { //3
1001      Reference t = new Reference();
1002      if (this.managingOrganization == null)
1003        this.managingOrganization = new ArrayList<Reference>();
1004      this.managingOrganization.add(t);
1005      return t;
1006    }
1007
1008    public CareTeam addManagingOrganization(Reference t) { //3
1009      if (t == null)
1010        return this;
1011      if (this.managingOrganization == null)
1012        this.managingOrganization = new ArrayList<Reference>();
1013      this.managingOrganization.add(t);
1014      return this;
1015    }
1016
1017    /**
1018     * @return The first repetition of repeating field {@link #managingOrganization}, creating it if it does not already exist {3}
1019     */
1020    public Reference getManagingOrganizationFirstRep() { 
1021      if (getManagingOrganization().isEmpty()) {
1022        addManagingOrganization();
1023      }
1024      return getManagingOrganization().get(0);
1025    }
1026
1027    /**
1028     * @return {@link #telecom} (A central contact detail for the care team (that applies to all members).)
1029     */
1030    public List<ContactPoint> getTelecom() { 
1031      if (this.telecom == null)
1032        this.telecom = new ArrayList<ContactPoint>();
1033      return this.telecom;
1034    }
1035
1036    /**
1037     * @return Returns a reference to <code>this</code> for easy method chaining
1038     */
1039    public CareTeam setTelecom(List<ContactPoint> theTelecom) { 
1040      this.telecom = theTelecom;
1041      return this;
1042    }
1043
1044    public boolean hasTelecom() { 
1045      if (this.telecom == null)
1046        return false;
1047      for (ContactPoint item : this.telecom)
1048        if (!item.isEmpty())
1049          return true;
1050      return false;
1051    }
1052
1053    public ContactPoint addTelecom() { //3
1054      ContactPoint t = new ContactPoint();
1055      if (this.telecom == null)
1056        this.telecom = new ArrayList<ContactPoint>();
1057      this.telecom.add(t);
1058      return t;
1059    }
1060
1061    public CareTeam addTelecom(ContactPoint t) { //3
1062      if (t == null)
1063        return this;
1064      if (this.telecom == null)
1065        this.telecom = new ArrayList<ContactPoint>();
1066      this.telecom.add(t);
1067      return this;
1068    }
1069
1070    /**
1071     * @return The first repetition of repeating field {@link #telecom}, creating it if it does not already exist {3}
1072     */
1073    public ContactPoint getTelecomFirstRep() { 
1074      if (getTelecom().isEmpty()) {
1075        addTelecom();
1076      }
1077      return getTelecom().get(0);
1078    }
1079
1080    /**
1081     * @return {@link #note} (Comments made about the CareTeam.)
1082     */
1083    public List<Annotation> getNote() { 
1084      if (this.note == null)
1085        this.note = new ArrayList<Annotation>();
1086      return this.note;
1087    }
1088
1089    /**
1090     * @return Returns a reference to <code>this</code> for easy method chaining
1091     */
1092    public CareTeam setNote(List<Annotation> theNote) { 
1093      this.note = theNote;
1094      return this;
1095    }
1096
1097    public boolean hasNote() { 
1098      if (this.note == null)
1099        return false;
1100      for (Annotation item : this.note)
1101        if (!item.isEmpty())
1102          return true;
1103      return false;
1104    }
1105
1106    public Annotation addNote() { //3
1107      Annotation t = new Annotation();
1108      if (this.note == null)
1109        this.note = new ArrayList<Annotation>();
1110      this.note.add(t);
1111      return t;
1112    }
1113
1114    public CareTeam addNote(Annotation t) { //3
1115      if (t == null)
1116        return this;
1117      if (this.note == null)
1118        this.note = new ArrayList<Annotation>();
1119      this.note.add(t);
1120      return this;
1121    }
1122
1123    /**
1124     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1125     */
1126    public Annotation getNoteFirstRep() { 
1127      if (getNote().isEmpty()) {
1128        addNote();
1129      }
1130      return getNote().get(0);
1131    }
1132
1133      protected void listChildren(List<Property> children) {
1134        super.listChildren(children);
1135        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this care team by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
1136        children.add(new Property("status", "code", "Indicates the current state of the care team.", 0, 1, status));
1137        children.add(new Property("category", "CodeableConcept", "Identifies what kind of team.  This is to support differentiation between multiple co-existing teams, such as care plan team, episode of care team, longitudinal care team.", 0, java.lang.Integer.MAX_VALUE, category));
1138        children.add(new Property("name", "string", "A label for human use intended to distinguish like teams.  E.g. the \"red\" vs. \"green\" trauma teams.", 0, 1, name));
1139        children.add(new Property("subject", "Reference(Patient|Group)", "Identifies the patient or group whose intended care is handled by the team.", 0, 1, subject));
1140        children.add(new Property("period", "Period", "Indicates when the team did (or is intended to) come into effect and end.", 0, 1, period));
1141        children.add(new Property("participant", "", "Identifies all people and organizations who are expected to be involved in the care team.", 0, java.lang.Integer.MAX_VALUE, participant));
1142        children.add(new Property("reason", "CodeableReference(Condition)", "Describes why the care team exists.", 0, java.lang.Integer.MAX_VALUE, reason));
1143        children.add(new Property("managingOrganization", "Reference(Organization)", "The organization responsible for the care team.", 0, java.lang.Integer.MAX_VALUE, managingOrganization));
1144        children.add(new Property("telecom", "ContactPoint", "A central contact detail for the care team (that applies to all members).", 0, java.lang.Integer.MAX_VALUE, telecom));
1145        children.add(new Property("note", "Annotation", "Comments made about the CareTeam.", 0, java.lang.Integer.MAX_VALUE, note));
1146      }
1147
1148      @Override
1149      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1150        switch (_hash) {
1151        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this care team by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
1152        case -892481550: /*status*/  return new Property("status", "code", "Indicates the current state of the care team.", 0, 1, status);
1153        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "Identifies what kind of team.  This is to support differentiation between multiple co-existing teams, such as care plan team, episode of care team, longitudinal care team.", 0, java.lang.Integer.MAX_VALUE, category);
1154        case 3373707: /*name*/  return new Property("name", "string", "A label for human use intended to distinguish like teams.  E.g. the \"red\" vs. \"green\" trauma teams.", 0, 1, name);
1155        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "Identifies the patient or group whose intended care is handled by the team.", 0, 1, subject);
1156        case -991726143: /*period*/  return new Property("period", "Period", "Indicates when the team did (or is intended to) come into effect and end.", 0, 1, period);
1157        case 767422259: /*participant*/  return new Property("participant", "", "Identifies all people and organizations who are expected to be involved in the care team.", 0, java.lang.Integer.MAX_VALUE, participant);
1158        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition)", "Describes why the care team exists.", 0, java.lang.Integer.MAX_VALUE, reason);
1159        case -2058947787: /*managingOrganization*/  return new Property("managingOrganization", "Reference(Organization)", "The organization responsible for the care team.", 0, java.lang.Integer.MAX_VALUE, managingOrganization);
1160        case -1429363305: /*telecom*/  return new Property("telecom", "ContactPoint", "A central contact detail for the care team (that applies to all members).", 0, java.lang.Integer.MAX_VALUE, telecom);
1161        case 3387378: /*note*/  return new Property("note", "Annotation", "Comments made about the CareTeam.", 0, java.lang.Integer.MAX_VALUE, note);
1162        default: return super.getNamedProperty(_hash, _name, _checkValid);
1163        }
1164
1165      }
1166
1167      @Override
1168      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1169        switch (hash) {
1170        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1171        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<CareTeamStatus>
1172        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1173        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1174        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1175        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
1176        case 767422259: /*participant*/ return this.participant == null ? new Base[0] : this.participant.toArray(new Base[this.participant.size()]); // CareTeamParticipantComponent
1177        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
1178        case -2058947787: /*managingOrganization*/ return this.managingOrganization == null ? new Base[0] : this.managingOrganization.toArray(new Base[this.managingOrganization.size()]); // Reference
1179        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
1180        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1181        default: return super.getProperty(hash, name, checkValid);
1182        }
1183
1184      }
1185
1186      @Override
1187      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1188        switch (hash) {
1189        case -1618432855: // identifier
1190          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1191          return value;
1192        case -892481550: // status
1193          value = new CareTeamStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1194          this.status = (Enumeration) value; // Enumeration<CareTeamStatus>
1195          return value;
1196        case 50511102: // category
1197          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1198          return value;
1199        case 3373707: // name
1200          this.name = TypeConvertor.castToString(value); // StringType
1201          return value;
1202        case -1867885268: // subject
1203          this.subject = TypeConvertor.castToReference(value); // Reference
1204          return value;
1205        case -991726143: // period
1206          this.period = TypeConvertor.castToPeriod(value); // Period
1207          return value;
1208        case 767422259: // participant
1209          this.getParticipant().add((CareTeamParticipantComponent) value); // CareTeamParticipantComponent
1210          return value;
1211        case -934964668: // reason
1212          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
1213          return value;
1214        case -2058947787: // managingOrganization
1215          this.getManagingOrganization().add(TypeConvertor.castToReference(value)); // Reference
1216          return value;
1217        case -1429363305: // telecom
1218          this.getTelecom().add(TypeConvertor.castToContactPoint(value)); // ContactPoint
1219          return value;
1220        case 3387378: // note
1221          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1222          return value;
1223        default: return super.setProperty(hash, name, value);
1224        }
1225
1226      }
1227
1228      @Override
1229      public Base setProperty(String name, Base value) throws FHIRException {
1230        if (name.equals("identifier")) {
1231          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1232        } else if (name.equals("status")) {
1233          value = new CareTeamStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1234          this.status = (Enumeration) value; // Enumeration<CareTeamStatus>
1235        } else if (name.equals("category")) {
1236          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1237        } else if (name.equals("name")) {
1238          this.name = TypeConvertor.castToString(value); // StringType
1239        } else if (name.equals("subject")) {
1240          this.subject = TypeConvertor.castToReference(value); // Reference
1241        } else if (name.equals("period")) {
1242          this.period = TypeConvertor.castToPeriod(value); // Period
1243        } else if (name.equals("participant")) {
1244          this.getParticipant().add((CareTeamParticipantComponent) value);
1245        } else if (name.equals("reason")) {
1246          this.getReason().add(TypeConvertor.castToCodeableReference(value));
1247        } else if (name.equals("managingOrganization")) {
1248          this.getManagingOrganization().add(TypeConvertor.castToReference(value));
1249        } else if (name.equals("telecom")) {
1250          this.getTelecom().add(TypeConvertor.castToContactPoint(value));
1251        } else if (name.equals("note")) {
1252          this.getNote().add(TypeConvertor.castToAnnotation(value));
1253        } else
1254          return super.setProperty(name, value);
1255        return value;
1256      }
1257
1258      @Override
1259      public Base makeProperty(int hash, String name) throws FHIRException {
1260        switch (hash) {
1261        case -1618432855:  return addIdentifier(); 
1262        case -892481550:  return getStatusElement();
1263        case 50511102:  return addCategory(); 
1264        case 3373707:  return getNameElement();
1265        case -1867885268:  return getSubject();
1266        case -991726143:  return getPeriod();
1267        case 767422259:  return addParticipant(); 
1268        case -934964668:  return addReason(); 
1269        case -2058947787:  return addManagingOrganization(); 
1270        case -1429363305:  return addTelecom(); 
1271        case 3387378:  return addNote(); 
1272        default: return super.makeProperty(hash, name);
1273        }
1274
1275      }
1276
1277      @Override
1278      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1279        switch (hash) {
1280        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1281        case -892481550: /*status*/ return new String[] {"code"};
1282        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1283        case 3373707: /*name*/ return new String[] {"string"};
1284        case -1867885268: /*subject*/ return new String[] {"Reference"};
1285        case -991726143: /*period*/ return new String[] {"Period"};
1286        case 767422259: /*participant*/ return new String[] {};
1287        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
1288        case -2058947787: /*managingOrganization*/ return new String[] {"Reference"};
1289        case -1429363305: /*telecom*/ return new String[] {"ContactPoint"};
1290        case 3387378: /*note*/ return new String[] {"Annotation"};
1291        default: return super.getTypesForProperty(hash, name);
1292        }
1293
1294      }
1295
1296      @Override
1297      public Base addChild(String name) throws FHIRException {
1298        if (name.equals("identifier")) {
1299          return addIdentifier();
1300        }
1301        else if (name.equals("status")) {
1302          throw new FHIRException("Cannot call addChild on a primitive type CareTeam.status");
1303        }
1304        else if (name.equals("category")) {
1305          return addCategory();
1306        }
1307        else if (name.equals("name")) {
1308          throw new FHIRException("Cannot call addChild on a primitive type CareTeam.name");
1309        }
1310        else if (name.equals("subject")) {
1311          this.subject = new Reference();
1312          return this.subject;
1313        }
1314        else if (name.equals("period")) {
1315          this.period = new Period();
1316          return this.period;
1317        }
1318        else if (name.equals("participant")) {
1319          return addParticipant();
1320        }
1321        else if (name.equals("reason")) {
1322          return addReason();
1323        }
1324        else if (name.equals("managingOrganization")) {
1325          return addManagingOrganization();
1326        }
1327        else if (name.equals("telecom")) {
1328          return addTelecom();
1329        }
1330        else if (name.equals("note")) {
1331          return addNote();
1332        }
1333        else
1334          return super.addChild(name);
1335      }
1336
1337  public String fhirType() {
1338    return "CareTeam";
1339
1340  }
1341
1342      public CareTeam copy() {
1343        CareTeam dst = new CareTeam();
1344        copyValues(dst);
1345        return dst;
1346      }
1347
1348      public void copyValues(CareTeam dst) {
1349        super.copyValues(dst);
1350        if (identifier != null) {
1351          dst.identifier = new ArrayList<Identifier>();
1352          for (Identifier i : identifier)
1353            dst.identifier.add(i.copy());
1354        };
1355        dst.status = status == null ? null : status.copy();
1356        if (category != null) {
1357          dst.category = new ArrayList<CodeableConcept>();
1358          for (CodeableConcept i : category)
1359            dst.category.add(i.copy());
1360        };
1361        dst.name = name == null ? null : name.copy();
1362        dst.subject = subject == null ? null : subject.copy();
1363        dst.period = period == null ? null : period.copy();
1364        if (participant != null) {
1365          dst.participant = new ArrayList<CareTeamParticipantComponent>();
1366          for (CareTeamParticipantComponent i : participant)
1367            dst.participant.add(i.copy());
1368        };
1369        if (reason != null) {
1370          dst.reason = new ArrayList<CodeableReference>();
1371          for (CodeableReference i : reason)
1372            dst.reason.add(i.copy());
1373        };
1374        if (managingOrganization != null) {
1375          dst.managingOrganization = new ArrayList<Reference>();
1376          for (Reference i : managingOrganization)
1377            dst.managingOrganization.add(i.copy());
1378        };
1379        if (telecom != null) {
1380          dst.telecom = new ArrayList<ContactPoint>();
1381          for (ContactPoint i : telecom)
1382            dst.telecom.add(i.copy());
1383        };
1384        if (note != null) {
1385          dst.note = new ArrayList<Annotation>();
1386          for (Annotation i : note)
1387            dst.note.add(i.copy());
1388        };
1389      }
1390
1391      protected CareTeam typedCopy() {
1392        return copy();
1393      }
1394
1395      @Override
1396      public boolean equalsDeep(Base other_) {
1397        if (!super.equalsDeep(other_))
1398          return false;
1399        if (!(other_ instanceof CareTeam))
1400          return false;
1401        CareTeam o = (CareTeam) other_;
1402        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(category, o.category, true)
1403           && compareDeep(name, o.name, true) && compareDeep(subject, o.subject, true) && compareDeep(period, o.period, true)
1404           && compareDeep(participant, o.participant, true) && compareDeep(reason, o.reason, true) && compareDeep(managingOrganization, o.managingOrganization, true)
1405           && compareDeep(telecom, o.telecom, true) && compareDeep(note, o.note, true);
1406      }
1407
1408      @Override
1409      public boolean equalsShallow(Base other_) {
1410        if (!super.equalsShallow(other_))
1411          return false;
1412        if (!(other_ instanceof CareTeam))
1413          return false;
1414        CareTeam o = (CareTeam) other_;
1415        return compareValues(status, o.status, true) && compareValues(name, o.name, true);
1416      }
1417
1418      public boolean isEmpty() {
1419        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, category
1420          , name, subject, period, participant, reason, managingOrganization, telecom, note
1421          );
1422      }
1423
1424  @Override
1425  public ResourceType getResourceType() {
1426    return ResourceType.CareTeam;
1427   }
1428
1429 /**
1430   * Search parameter: <b>category</b>
1431   * <p>
1432   * Description: <b>Type of team</b><br>
1433   * Type: <b>token</b><br>
1434   * Path: <b>CareTeam.category</b><br>
1435   * </p>
1436   */
1437  @SearchParamDefinition(name="category", path="CareTeam.category", description="Type of team", type="token" )
1438  public static final String SP_CATEGORY = "category";
1439 /**
1440   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1441   * <p>
1442   * Description: <b>Type of team</b><br>
1443   * Type: <b>token</b><br>
1444   * Path: <b>CareTeam.category</b><br>
1445   * </p>
1446   */
1447  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1448
1449 /**
1450   * Search parameter: <b>name</b>
1451   * <p>
1452   * Description: <b>Name of the team, such as crisis assessment team</b><br>
1453   * Type: <b>string</b><br>
1454   * Path: <b>CareTeam.name | CareTeam.extension('http://hl7.org/fhir/StructureDefinition/careteam-alias')</b><br>
1455   * </p>
1456   */
1457  @SearchParamDefinition(name="name", path="CareTeam.name | CareTeam.extension('http://hl7.org/fhir/StructureDefinition/careteam-alias')", description="Name of the team, such as crisis assessment team", type="string" )
1458  public static final String SP_NAME = "name";
1459 /**
1460   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1461   * <p>
1462   * Description: <b>Name of the team, such as crisis assessment team</b><br>
1463   * Type: <b>string</b><br>
1464   * Path: <b>CareTeam.name | CareTeam.extension('http://hl7.org/fhir/StructureDefinition/careteam-alias')</b><br>
1465   * </p>
1466   */
1467  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1468
1469 /**
1470   * Search parameter: <b>participant</b>
1471   * <p>
1472   * Description: <b>Who is involved</b><br>
1473   * Type: <b>reference</b><br>
1474   * Path: <b>CareTeam.participant.member</b><br>
1475   * </p>
1476   */
1477  @SearchParamDefinition(name="participant", path="CareTeam.participant.member", description="Who is involved", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={CareTeam.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
1478  public static final String SP_PARTICIPANT = "participant";
1479 /**
1480   * <b>Fluent Client</b> search parameter constant for <b>participant</b>
1481   * <p>
1482   * Description: <b>Who is involved</b><br>
1483   * Type: <b>reference</b><br>
1484   * Path: <b>CareTeam.participant.member</b><br>
1485   * </p>
1486   */
1487  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTICIPANT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARTICIPANT);
1488
1489/**
1490   * Constant for fluent queries to be used to add include statements. Specifies
1491   * the path value of "<b>CareTeam:participant</b>".
1492   */
1493  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTICIPANT = new ca.uhn.fhir.model.api.Include("CareTeam:participant").toLocked();
1494
1495 /**
1496   * Search parameter: <b>status</b>
1497   * <p>
1498   * Description: <b>proposed | active | suspended | inactive | entered-in-error</b><br>
1499   * Type: <b>token</b><br>
1500   * Path: <b>CareTeam.status</b><br>
1501   * </p>
1502   */
1503  @SearchParamDefinition(name="status", path="CareTeam.status", description="proposed | active | suspended | inactive | entered-in-error", type="token" )
1504  public static final String SP_STATUS = "status";
1505 /**
1506   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1507   * <p>
1508   * Description: <b>proposed | active | suspended | inactive | entered-in-error</b><br>
1509   * Type: <b>token</b><br>
1510   * Path: <b>CareTeam.status</b><br>
1511   * </p>
1512   */
1513  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1514
1515 /**
1516   * Search parameter: <b>subject</b>
1517   * <p>
1518   * Description: <b>Who care team is for</b><br>
1519   * Type: <b>reference</b><br>
1520   * Path: <b>CareTeam.subject</b><br>
1521   * </p>
1522   */
1523  @SearchParamDefinition(name="subject", path="CareTeam.subject", description="Who care team is for", type="reference", target={Group.class, Patient.class } )
1524  public static final String SP_SUBJECT = "subject";
1525 /**
1526   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1527   * <p>
1528   * Description: <b>Who care team is for</b><br>
1529   * Type: <b>reference</b><br>
1530   * Path: <b>CareTeam.subject</b><br>
1531   * </p>
1532   */
1533  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1534
1535/**
1536   * Constant for fluent queries to be used to add include statements. Specifies
1537   * the path value of "<b>CareTeam:subject</b>".
1538   */
1539  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("CareTeam:subject").toLocked();
1540
1541 /**
1542   * Search parameter: <b>date</b>
1543   * <p>
1544   * Description: <b>Multiple Resources: 
1545
1546* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
1547* [CarePlan](careplan.html): Time period plan covers
1548* [CareTeam](careteam.html): A date within the coverage time period.
1549* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
1550* [Composition](composition.html): Composition editing time
1551* [Consent](consent.html): When consent was agreed to
1552* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
1553* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
1554* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
1555* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
1556* [Flag](flag.html): Time period when flag is active
1557* [Immunization](immunization.html): Vaccination  (non)-Administration Date
1558* [List](list.html): When the list was prepared
1559* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
1560* [Procedure](procedure.html): When the procedure occurred or is occurring
1561* [RiskAssessment](riskassessment.html): When was assessment made?
1562* [SupplyRequest](supplyrequest.html): When the request was made
1563</b><br>
1564   * Type: <b>date</b><br>
1565   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
1566   * </p>
1567   */
1568  @SearchParamDefinition(name="date", path="AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [List](list.html): When the list was prepared\r\n* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
1569  public static final String SP_DATE = "date";
1570 /**
1571   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1572   * <p>
1573   * Description: <b>Multiple Resources: 
1574
1575* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
1576* [CarePlan](careplan.html): Time period plan covers
1577* [CareTeam](careteam.html): A date within the coverage time period.
1578* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
1579* [Composition](composition.html): Composition editing time
1580* [Consent](consent.html): When consent was agreed to
1581* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
1582* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
1583* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
1584* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
1585* [Flag](flag.html): Time period when flag is active
1586* [Immunization](immunization.html): Vaccination  (non)-Administration Date
1587* [List](list.html): When the list was prepared
1588* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
1589* [Procedure](procedure.html): When the procedure occurred or is occurring
1590* [RiskAssessment](riskassessment.html): When was assessment made?
1591* [SupplyRequest](supplyrequest.html): When the request was made
1592</b><br>
1593   * Type: <b>date</b><br>
1594   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
1595   * </p>
1596   */
1597  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1598
1599 /**
1600   * Search parameter: <b>identifier</b>
1601   * <p>
1602   * Description: <b>Multiple Resources: 
1603
1604* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1605* [CarePlan](careplan.html): External Ids for this plan
1606* [CareTeam](careteam.html): External Ids for this team
1607* [Composition](composition.html): Version-independent identifier for the Composition
1608* [Condition](condition.html): A unique identifier of the condition record
1609* [Consent](consent.html): Identifier for this record (external references)
1610* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1611* [DeviceRequest](devicerequest.html): Business identifier for request/order
1612* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1613* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
1614* [DocumentReference](documentreference.html): Identifier of the attachment binary
1615* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1616* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1617* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1618* [Goal](goal.html): External Ids for this goal
1619* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1620* [Immunization](immunization.html): Business identifier
1621* [List](list.html): Business identifier
1622* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1623* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1624* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1625* [MedicationUsage](medicationusage.html): Return statements with this external identifier
1626* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1627* [Observation](observation.html): The unique id for a particular observation
1628* [Procedure](procedure.html): A unique identifier for a procedure
1629* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1630* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1631* [SupplyDelivery](supplydelivery.html): External identifier
1632* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1633* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1634</b><br>
1635   * Type: <b>token</b><br>
1636   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.content.identifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationUsage.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
1637   * </p>
1638   */
1639  @SearchParamDefinition(name="identifier", path="AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.content.identifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationUsage.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [List](list.html): Business identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationUsage](medicationusage.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
1640  public static final String SP_IDENTIFIER = "identifier";
1641 /**
1642   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1643   * <p>
1644   * Description: <b>Multiple Resources: 
1645
1646* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1647* [CarePlan](careplan.html): External Ids for this plan
1648* [CareTeam](careteam.html): External Ids for this team
1649* [Composition](composition.html): Version-independent identifier for the Composition
1650* [Condition](condition.html): A unique identifier of the condition record
1651* [Consent](consent.html): Identifier for this record (external references)
1652* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1653* [DeviceRequest](devicerequest.html): Business identifier for request/order
1654* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1655* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
1656* [DocumentReference](documentreference.html): Identifier of the attachment binary
1657* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1658* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1659* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1660* [Goal](goal.html): External Ids for this goal
1661* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1662* [Immunization](immunization.html): Business identifier
1663* [List](list.html): Business identifier
1664* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1665* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1666* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1667* [MedicationUsage](medicationusage.html): Return statements with this external identifier
1668* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1669* [Observation](observation.html): The unique id for a particular observation
1670* [Procedure](procedure.html): A unique identifier for a procedure
1671* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1672* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1673* [SupplyDelivery](supplydelivery.html): External identifier
1674* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1675* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1676</b><br>
1677   * Type: <b>token</b><br>
1678   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.content.identifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationUsage.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
1679   * </p>
1680   */
1681  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1682
1683 /**
1684   * Search parameter: <b>patient</b>
1685   * <p>
1686   * Description: <b>Multiple Resources: 
1687
1688* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
1689* [CarePlan](careplan.html): Who the care plan is for
1690* [CareTeam](careteam.html): Who care team is for
1691* [ClinicalImpression](clinicalimpression.html): Patient assessed
1692* [Composition](composition.html): Who and/or what the composition is about
1693* [Condition](condition.html): Who has the condition?
1694* [Consent](consent.html): Who the consent applies to
1695* [DetectedIssue](detectedissue.html): Associated patient
1696* [DeviceRequest](devicerequest.html): Individual the service is ordered for
1697* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
1698* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
1699* [DocumentManifest](documentmanifest.html): The subject of the set of documents
1700* [DocumentReference](documentreference.html): Who/what is the subject of the document
1701* [Encounter](encounter.html): The patient present at the encounter
1702* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
1703* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
1704* [Flag](flag.html): The identity of a subject to list flags for
1705* [Goal](goal.html): Who this goal is intended for
1706* [ImagingStudy](imagingstudy.html): Who the study is about
1707* [Immunization](immunization.html): The patient for the vaccination record
1708* [List](list.html): If all resources have the same subject
1709* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
1710* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
1711* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
1712* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
1713* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
1714* [Observation](observation.html): The subject that the observation is about (if patient)
1715* [Procedure](procedure.html): Search by subject - a patient
1716* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
1717* [ServiceRequest](servicerequest.html): Search by subject - a patient
1718* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
1719* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
1720</b><br>
1721   * Type: <b>reference</b><br>
1722   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
1723   * </p>
1724   */
1725  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
1726  public static final String SP_PATIENT = "patient";
1727 /**
1728   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1729   * <p>
1730   * Description: <b>Multiple Resources: 
1731
1732* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
1733* [CarePlan](careplan.html): Who the care plan is for
1734* [CareTeam](careteam.html): Who care team is for
1735* [ClinicalImpression](clinicalimpression.html): Patient assessed
1736* [Composition](composition.html): Who and/or what the composition is about
1737* [Condition](condition.html): Who has the condition?
1738* [Consent](consent.html): Who the consent applies to
1739* [DetectedIssue](detectedissue.html): Associated patient
1740* [DeviceRequest](devicerequest.html): Individual the service is ordered for
1741* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
1742* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
1743* [DocumentManifest](documentmanifest.html): The subject of the set of documents
1744* [DocumentReference](documentreference.html): Who/what is the subject of the document
1745* [Encounter](encounter.html): The patient present at the encounter
1746* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
1747* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
1748* [Flag](flag.html): The identity of a subject to list flags for
1749* [Goal](goal.html): Who this goal is intended for
1750* [ImagingStudy](imagingstudy.html): Who the study is about
1751* [Immunization](immunization.html): The patient for the vaccination record
1752* [List](list.html): If all resources have the same subject
1753* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
1754* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
1755* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
1756* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
1757* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
1758* [Observation](observation.html): The subject that the observation is about (if patient)
1759* [Procedure](procedure.html): Search by subject - a patient
1760* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
1761* [ServiceRequest](servicerequest.html): Search by subject - a patient
1762* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
1763* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
1764</b><br>
1765   * Type: <b>reference</b><br>
1766   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
1767   * </p>
1768   */
1769  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1770
1771/**
1772   * Constant for fluent queries to be used to add include statements. Specifies
1773   * the path value of "<b>CareTeam:patient</b>".
1774   */
1775  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("CareTeam:patient").toLocked();
1776
1777
1778}
1779