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