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