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