001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
033import java.util.ArrayList;
034import java.util.List;
035
036import org.hl7.fhir.exceptions.FHIRException;
037
038import ca.uhn.fhir.model.api.annotation.Child;
039import ca.uhn.fhir.model.api.annotation.Description;
040import ca.uhn.fhir.model.api.annotation.ResourceDef;
041import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
042
043/**
044 * Defines an affiliation/assotiation/relationship between 2 distinct
045 * oganizations, that is not a part-of relationship/sub-division relationship.
046 */
047@ResourceDef(name = "OrganizationAffiliation", profile = "http://hl7.org/fhir/StructureDefinition/OrganizationAffiliation")
048public class OrganizationAffiliation extends DomainResource {
049
050  /**
051   * Business identifiers that are specific to this role.
052   */
053  @Child(name = "identifier", type = {
054      Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
055  @Description(shortDefinition = "Business identifiers that are specific to this role", formalDefinition = "Business identifiers that are specific to this role.")
056  protected List<Identifier> identifier;
057
058  /**
059   * Whether this organization affiliation record is in active use.
060   */
061  @Child(name = "active", type = { BooleanType.class }, order = 1, min = 0, max = 1, modifier = false, summary = true)
062  @Description(shortDefinition = "Whether this organization affiliation record is in active use", formalDefinition = "Whether this organization affiliation record is in active use.")
063  protected BooleanType active;
064
065  /**
066   * The period during which the participatingOrganization is affiliated with the
067   * primary organization.
068   */
069  @Child(name = "period", type = { Period.class }, order = 2, min = 0, max = 1, modifier = false, summary = true)
070  @Description(shortDefinition = "The period during which the participatingOrganization is affiliated with the primary organization", formalDefinition = "The period during which the participatingOrganization is affiliated with the primary organization.")
071  protected Period period;
072
073  /**
074   * Organization where the role is available (primary organization/has members).
075   */
076  @Child(name = "organization", type = {
077      Organization.class }, order = 3, min = 0, max = 1, modifier = false, summary = true)
078  @Description(shortDefinition = "Organization where the role is available", formalDefinition = "Organization where the role is available (primary organization/has members).")
079  protected Reference organization;
080
081  /**
082   * The actual object that is the target of the reference (Organization where the
083   * role is available (primary organization/has members).)
084   */
085  protected Organization organizationTarget;
086
087  /**
088   * The Participating Organization provides/performs the role(s) defined by the
089   * code to the Primary Organization (e.g. providing services or is a member of).
090   */
091  @Child(name = "participatingOrganization", type = {
092      Organization.class }, order = 4, min = 0, max = 1, modifier = false, summary = true)
093  @Description(shortDefinition = "Organization that provides/performs the role (e.g. providing services or is a member of)", formalDefinition = "The Participating Organization provides/performs the role(s) defined by the code to the Primary Organization (e.g. providing services or is a member of).")
094  protected Reference participatingOrganization;
095
096  /**
097   * The actual object that is the target of the reference (The Participating
098   * Organization provides/performs the role(s) defined by the code to the Primary
099   * Organization (e.g. providing services or is a member of).)
100   */
101  protected Organization participatingOrganizationTarget;
102
103  /**
104   * Health insurance provider network in which the participatingOrganization
105   * provides the role's services (if defined) at the indicated locations (if
106   * defined).
107   */
108  @Child(name = "network", type = {
109      Organization.class }, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
110  @Description(shortDefinition = "Health insurance provider network in which the participatingOrganization provides the role's services (if defined) at the indicated locations (if defined)", formalDefinition = "Health insurance provider network in which the participatingOrganization provides the role's services (if defined) at the indicated locations (if defined).")
111  protected List<Reference> network;
112  /**
113   * The actual objects that are the target of the reference (Health insurance
114   * provider network in which the participatingOrganization provides the role's
115   * services (if defined) at the indicated locations (if defined).)
116   */
117  protected List<Organization> networkTarget;
118
119  /**
120   * Definition of the role the participatingOrganization plays in the
121   * association.
122   */
123  @Child(name = "code", type = {
124      CodeableConcept.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
125  @Description(shortDefinition = "Definition of the role the participatingOrganization plays", formalDefinition = "Definition of the role the participatingOrganization plays in the association.")
126  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/organization-role")
127  protected List<CodeableConcept> code;
128
129  /**
130   * Specific specialty of the participatingOrganization in the context of the
131   * role.
132   */
133  @Child(name = "specialty", type = {
134      CodeableConcept.class }, order = 7, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
135  @Description(shortDefinition = "Specific specialty of the participatingOrganization in the context of the role", formalDefinition = "Specific specialty of the participatingOrganization in the context of the role.")
136  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/c80-practice-codes")
137  protected List<CodeableConcept> specialty;
138
139  /**
140   * The location(s) at which the role occurs.
141   */
142  @Child(name = "location", type = {
143      Location.class }, order = 8, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
144  @Description(shortDefinition = "The location(s) at which the role occurs", formalDefinition = "The location(s) at which the role occurs.")
145  protected List<Reference> location;
146  /**
147   * The actual objects that are the target of the reference (The location(s) at
148   * which the role occurs.)
149   */
150  protected List<Location> locationTarget;
151
152  /**
153   * Healthcare services provided through the role.
154   */
155  @Child(name = "healthcareService", type = {
156      HealthcareService.class }, order = 9, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
157  @Description(shortDefinition = "Healthcare services provided through the role", formalDefinition = "Healthcare services provided through the role.")
158  protected List<Reference> healthcareService;
159  /**
160   * The actual objects that are the target of the reference (Healthcare services
161   * provided through the role.)
162   */
163  protected List<HealthcareService> healthcareServiceTarget;
164
165  /**
166   * Contact details at the participatingOrganization relevant to this
167   * Affiliation.
168   */
169  @Child(name = "telecom", type = {
170      ContactPoint.class }, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
171  @Description(shortDefinition = "Contact details at the participatingOrganization relevant to this Affiliation", formalDefinition = "Contact details at the participatingOrganization relevant to this Affiliation.")
172  protected List<ContactPoint> telecom;
173
174  /**
175   * Technical endpoints providing access to services operated for this role.
176   */
177  @Child(name = "endpoint", type = {
178      Endpoint.class }, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
179  @Description(shortDefinition = "Technical endpoints providing access to services operated for this role", formalDefinition = "Technical endpoints providing access to services operated for this role.")
180  protected List<Reference> endpoint;
181  /**
182   * The actual objects that are the target of the reference (Technical endpoints
183   * providing access to services operated for this role.)
184   */
185  protected List<Endpoint> endpointTarget;
186
187  private static final long serialVersionUID = -62510821L;
188
189  /**
190   * Constructor
191   */
192  public OrganizationAffiliation() {
193    super();
194  }
195
196  /**
197   * @return {@link #identifier} (Business identifiers that are specific to this
198   *         role.)
199   */
200  public List<Identifier> getIdentifier() {
201    if (this.identifier == null)
202      this.identifier = new ArrayList<Identifier>();
203    return this.identifier;
204  }
205
206  /**
207   * @return Returns a reference to <code>this</code> for easy method chaining
208   */
209  public OrganizationAffiliation setIdentifier(List<Identifier> theIdentifier) {
210    this.identifier = theIdentifier;
211    return this;
212  }
213
214  public boolean hasIdentifier() {
215    if (this.identifier == null)
216      return false;
217    for (Identifier item : this.identifier)
218      if (!item.isEmpty())
219        return true;
220    return false;
221  }
222
223  public Identifier addIdentifier() { // 3
224    Identifier t = new Identifier();
225    if (this.identifier == null)
226      this.identifier = new ArrayList<Identifier>();
227    this.identifier.add(t);
228    return t;
229  }
230
231  public OrganizationAffiliation addIdentifier(Identifier t) { // 3
232    if (t == null)
233      return this;
234    if (this.identifier == null)
235      this.identifier = new ArrayList<Identifier>();
236    this.identifier.add(t);
237    return this;
238  }
239
240  /**
241   * @return The first repetition of repeating field {@link #identifier}, creating
242   *         it if it does not already exist
243   */
244  public Identifier getIdentifierFirstRep() {
245    if (getIdentifier().isEmpty()) {
246      addIdentifier();
247    }
248    return getIdentifier().get(0);
249  }
250
251  /**
252   * @return {@link #active} (Whether this organization affiliation record is in
253   *         active use.). This is the underlying object with id, value and
254   *         extensions. The accessor "getActive" gives direct access to the value
255   */
256  public BooleanType getActiveElement() {
257    if (this.active == null)
258      if (Configuration.errorOnAutoCreate())
259        throw new Error("Attempt to auto-create OrganizationAffiliation.active");
260      else if (Configuration.doAutoCreate())
261        this.active = new BooleanType(); // bb
262    return this.active;
263  }
264
265  public boolean hasActiveElement() {
266    return this.active != null && !this.active.isEmpty();
267  }
268
269  public boolean hasActive() {
270    return this.active != null && !this.active.isEmpty();
271  }
272
273  /**
274   * @param value {@link #active} (Whether this organization affiliation record is
275   *              in active use.). This is the underlying object with id, value
276   *              and extensions. The accessor "getActive" gives direct access to
277   *              the value
278   */
279  public OrganizationAffiliation setActiveElement(BooleanType value) {
280    this.active = value;
281    return this;
282  }
283
284  /**
285   * @return Whether this organization affiliation record is in active use.
286   */
287  public boolean getActive() {
288    return this.active == null || this.active.isEmpty() ? false : this.active.getValue();
289  }
290
291  /**
292   * @param value Whether this organization affiliation record is in active use.
293   */
294  public OrganizationAffiliation setActive(boolean value) {
295    if (this.active == null)
296      this.active = new BooleanType();
297    this.active.setValue(value);
298    return this;
299  }
300
301  /**
302   * @return {@link #period} (The period during which the
303   *         participatingOrganization is affiliated with the primary
304   *         organization.)
305   */
306  public Period getPeriod() {
307    if (this.period == null)
308      if (Configuration.errorOnAutoCreate())
309        throw new Error("Attempt to auto-create OrganizationAffiliation.period");
310      else if (Configuration.doAutoCreate())
311        this.period = new Period(); // cc
312    return this.period;
313  }
314
315  public boolean hasPeriod() {
316    return this.period != null && !this.period.isEmpty();
317  }
318
319  /**
320   * @param value {@link #period} (The period during which the
321   *              participatingOrganization is affiliated with the primary
322   *              organization.)
323   */
324  public OrganizationAffiliation setPeriod(Period value) {
325    this.period = value;
326    return this;
327  }
328
329  /**
330   * @return {@link #organization} (Organization where the role is available
331   *         (primary organization/has members).)
332   */
333  public Reference getOrganization() {
334    if (this.organization == null)
335      if (Configuration.errorOnAutoCreate())
336        throw new Error("Attempt to auto-create OrganizationAffiliation.organization");
337      else if (Configuration.doAutoCreate())
338        this.organization = new Reference(); // cc
339    return this.organization;
340  }
341
342  public boolean hasOrganization() {
343    return this.organization != null && !this.organization.isEmpty();
344  }
345
346  /**
347   * @param value {@link #organization} (Organization where the role is available
348   *              (primary organization/has members).)
349   */
350  public OrganizationAffiliation setOrganization(Reference value) {
351    this.organization = value;
352    return this;
353  }
354
355  /**
356   * @return {@link #organization} The actual object that is the target of the
357   *         reference. The reference library doesn't populate this, but you can
358   *         use it to hold the resource if you resolve it. (Organization where
359   *         the role is available (primary organization/has members).)
360   */
361  public Organization getOrganizationTarget() {
362    if (this.organizationTarget == null)
363      if (Configuration.errorOnAutoCreate())
364        throw new Error("Attempt to auto-create OrganizationAffiliation.organization");
365      else if (Configuration.doAutoCreate())
366        this.organizationTarget = new Organization(); // aa
367    return this.organizationTarget;
368  }
369
370  /**
371   * @param value {@link #organization} The actual object that is the target of
372   *              the reference. The reference library doesn't use these, but you
373   *              can use it to hold the resource if you resolve it. (Organization
374   *              where the role is available (primary organization/has members).)
375   */
376  public OrganizationAffiliation setOrganizationTarget(Organization value) {
377    this.organizationTarget = value;
378    return this;
379  }
380
381  /**
382   * @return {@link #participatingOrganization} (The Participating Organization
383   *         provides/performs the role(s) defined by the code to the Primary
384   *         Organization (e.g. providing services or is a member of).)
385   */
386  public Reference getParticipatingOrganization() {
387    if (this.participatingOrganization == null)
388      if (Configuration.errorOnAutoCreate())
389        throw new Error("Attempt to auto-create OrganizationAffiliation.participatingOrganization");
390      else if (Configuration.doAutoCreate())
391        this.participatingOrganization = new Reference(); // cc
392    return this.participatingOrganization;
393  }
394
395  public boolean hasParticipatingOrganization() {
396    return this.participatingOrganization != null && !this.participatingOrganization.isEmpty();
397  }
398
399  /**
400   * @param value {@link #participatingOrganization} (The Participating
401   *              Organization provides/performs the role(s) defined by the code
402   *              to the Primary Organization (e.g. providing services or is a
403   *              member of).)
404   */
405  public OrganizationAffiliation setParticipatingOrganization(Reference value) {
406    this.participatingOrganization = value;
407    return this;
408  }
409
410  /**
411   * @return {@link #participatingOrganization} The actual object that is the
412   *         target of the reference. The reference library doesn't populate this,
413   *         but you can use it to hold the resource if you resolve it. (The
414   *         Participating Organization provides/performs the role(s) defined by
415   *         the code to the Primary Organization (e.g. providing services or is a
416   *         member of).)
417   */
418  public Organization getParticipatingOrganizationTarget() {
419    if (this.participatingOrganizationTarget == null)
420      if (Configuration.errorOnAutoCreate())
421        throw new Error("Attempt to auto-create OrganizationAffiliation.participatingOrganization");
422      else if (Configuration.doAutoCreate())
423        this.participatingOrganizationTarget = new Organization(); // aa
424    return this.participatingOrganizationTarget;
425  }
426
427  /**
428   * @param value {@link #participatingOrganization} The actual object that is the
429   *              target of the reference. The reference library doesn't use
430   *              these, but you can use it to hold the resource if you resolve
431   *              it. (The Participating Organization provides/performs the
432   *              role(s) defined by the code to the Primary Organization (e.g.
433   *              providing services or is a member of).)
434   */
435  public OrganizationAffiliation setParticipatingOrganizationTarget(Organization value) {
436    this.participatingOrganizationTarget = value;
437    return this;
438  }
439
440  /**
441   * @return {@link #network} (Health insurance provider network in which the
442   *         participatingOrganization provides the role's services (if defined)
443   *         at the indicated locations (if defined).)
444   */
445  public List<Reference> getNetwork() {
446    if (this.network == null)
447      this.network = new ArrayList<Reference>();
448    return this.network;
449  }
450
451  /**
452   * @return Returns a reference to <code>this</code> for easy method chaining
453   */
454  public OrganizationAffiliation setNetwork(List<Reference> theNetwork) {
455    this.network = theNetwork;
456    return this;
457  }
458
459  public boolean hasNetwork() {
460    if (this.network == null)
461      return false;
462    for (Reference item : this.network)
463      if (!item.isEmpty())
464        return true;
465    return false;
466  }
467
468  public Reference addNetwork() { // 3
469    Reference t = new Reference();
470    if (this.network == null)
471      this.network = new ArrayList<Reference>();
472    this.network.add(t);
473    return t;
474  }
475
476  public OrganizationAffiliation addNetwork(Reference t) { // 3
477    if (t == null)
478      return this;
479    if (this.network == null)
480      this.network = new ArrayList<Reference>();
481    this.network.add(t);
482    return this;
483  }
484
485  /**
486   * @return The first repetition of repeating field {@link #network}, creating it
487   *         if it does not already exist
488   */
489  public Reference getNetworkFirstRep() {
490    if (getNetwork().isEmpty()) {
491      addNetwork();
492    }
493    return getNetwork().get(0);
494  }
495
496  /**
497   * @return {@link #code} (Definition of the role the participatingOrganization
498   *         plays in the association.)
499   */
500  public List<CodeableConcept> getCode() {
501    if (this.code == null)
502      this.code = new ArrayList<CodeableConcept>();
503    return this.code;
504  }
505
506  /**
507   * @return Returns a reference to <code>this</code> for easy method chaining
508   */
509  public OrganizationAffiliation setCode(List<CodeableConcept> theCode) {
510    this.code = theCode;
511    return this;
512  }
513
514  public boolean hasCode() {
515    if (this.code == null)
516      return false;
517    for (CodeableConcept item : this.code)
518      if (!item.isEmpty())
519        return true;
520    return false;
521  }
522
523  public CodeableConcept addCode() { // 3
524    CodeableConcept t = new CodeableConcept();
525    if (this.code == null)
526      this.code = new ArrayList<CodeableConcept>();
527    this.code.add(t);
528    return t;
529  }
530
531  public OrganizationAffiliation addCode(CodeableConcept t) { // 3
532    if (t == null)
533      return this;
534    if (this.code == null)
535      this.code = new ArrayList<CodeableConcept>();
536    this.code.add(t);
537    return this;
538  }
539
540  /**
541   * @return The first repetition of repeating field {@link #code}, creating it if
542   *         it does not already exist
543   */
544  public CodeableConcept getCodeFirstRep() {
545    if (getCode().isEmpty()) {
546      addCode();
547    }
548    return getCode().get(0);
549  }
550
551  /**
552   * @return {@link #specialty} (Specific specialty of the
553   *         participatingOrganization in the context of the role.)
554   */
555  public List<CodeableConcept> getSpecialty() {
556    if (this.specialty == null)
557      this.specialty = new ArrayList<CodeableConcept>();
558    return this.specialty;
559  }
560
561  /**
562   * @return Returns a reference to <code>this</code> for easy method chaining
563   */
564  public OrganizationAffiliation setSpecialty(List<CodeableConcept> theSpecialty) {
565    this.specialty = theSpecialty;
566    return this;
567  }
568
569  public boolean hasSpecialty() {
570    if (this.specialty == null)
571      return false;
572    for (CodeableConcept item : this.specialty)
573      if (!item.isEmpty())
574        return true;
575    return false;
576  }
577
578  public CodeableConcept addSpecialty() { // 3
579    CodeableConcept t = new CodeableConcept();
580    if (this.specialty == null)
581      this.specialty = new ArrayList<CodeableConcept>();
582    this.specialty.add(t);
583    return t;
584  }
585
586  public OrganizationAffiliation addSpecialty(CodeableConcept t) { // 3
587    if (t == null)
588      return this;
589    if (this.specialty == null)
590      this.specialty = new ArrayList<CodeableConcept>();
591    this.specialty.add(t);
592    return this;
593  }
594
595  /**
596   * @return The first repetition of repeating field {@link #specialty}, creating
597   *         it if it does not already exist
598   */
599  public CodeableConcept getSpecialtyFirstRep() {
600    if (getSpecialty().isEmpty()) {
601      addSpecialty();
602    }
603    return getSpecialty().get(0);
604  }
605
606  /**
607   * @return {@link #location} (The location(s) at which the role occurs.)
608   */
609  public List<Reference> getLocation() {
610    if (this.location == null)
611      this.location = new ArrayList<Reference>();
612    return this.location;
613  }
614
615  /**
616   * @return Returns a reference to <code>this</code> for easy method chaining
617   */
618  public OrganizationAffiliation setLocation(List<Reference> theLocation) {
619    this.location = theLocation;
620    return this;
621  }
622
623  public boolean hasLocation() {
624    if (this.location == null)
625      return false;
626    for (Reference item : this.location)
627      if (!item.isEmpty())
628        return true;
629    return false;
630  }
631
632  public Reference addLocation() { // 3
633    Reference t = new Reference();
634    if (this.location == null)
635      this.location = new ArrayList<Reference>();
636    this.location.add(t);
637    return t;
638  }
639
640  public OrganizationAffiliation addLocation(Reference t) { // 3
641    if (t == null)
642      return this;
643    if (this.location == null)
644      this.location = new ArrayList<Reference>();
645    this.location.add(t);
646    return this;
647  }
648
649  /**
650   * @return The first repetition of repeating field {@link #location}, creating
651   *         it if it does not already exist
652   */
653  public Reference getLocationFirstRep() {
654    if (getLocation().isEmpty()) {
655      addLocation();
656    }
657    return getLocation().get(0);
658  }
659
660  /**
661   * @return {@link #healthcareService} (Healthcare services provided through the
662   *         role.)
663   */
664  public List<Reference> getHealthcareService() {
665    if (this.healthcareService == null)
666      this.healthcareService = new ArrayList<Reference>();
667    return this.healthcareService;
668  }
669
670  /**
671   * @return Returns a reference to <code>this</code> for easy method chaining
672   */
673  public OrganizationAffiliation setHealthcareService(List<Reference> theHealthcareService) {
674    this.healthcareService = theHealthcareService;
675    return this;
676  }
677
678  public boolean hasHealthcareService() {
679    if (this.healthcareService == null)
680      return false;
681    for (Reference item : this.healthcareService)
682      if (!item.isEmpty())
683        return true;
684    return false;
685  }
686
687  public Reference addHealthcareService() { // 3
688    Reference t = new Reference();
689    if (this.healthcareService == null)
690      this.healthcareService = new ArrayList<Reference>();
691    this.healthcareService.add(t);
692    return t;
693  }
694
695  public OrganizationAffiliation addHealthcareService(Reference t) { // 3
696    if (t == null)
697      return this;
698    if (this.healthcareService == null)
699      this.healthcareService = new ArrayList<Reference>();
700    this.healthcareService.add(t);
701    return this;
702  }
703
704  /**
705   * @return The first repetition of repeating field {@link #healthcareService},
706   *         creating it if it does not already exist
707   */
708  public Reference getHealthcareServiceFirstRep() {
709    if (getHealthcareService().isEmpty()) {
710      addHealthcareService();
711    }
712    return getHealthcareService().get(0);
713  }
714
715  /**
716   * @return {@link #telecom} (Contact details at the participatingOrganization
717   *         relevant to this Affiliation.)
718   */
719  public List<ContactPoint> getTelecom() {
720    if (this.telecom == null)
721      this.telecom = new ArrayList<ContactPoint>();
722    return this.telecom;
723  }
724
725  /**
726   * @return Returns a reference to <code>this</code> for easy method chaining
727   */
728  public OrganizationAffiliation setTelecom(List<ContactPoint> theTelecom) {
729    this.telecom = theTelecom;
730    return this;
731  }
732
733  public boolean hasTelecom() {
734    if (this.telecom == null)
735      return false;
736    for (ContactPoint item : this.telecom)
737      if (!item.isEmpty())
738        return true;
739    return false;
740  }
741
742  public ContactPoint addTelecom() { // 3
743    ContactPoint t = new ContactPoint();
744    if (this.telecom == null)
745      this.telecom = new ArrayList<ContactPoint>();
746    this.telecom.add(t);
747    return t;
748  }
749
750  public OrganizationAffiliation addTelecom(ContactPoint t) { // 3
751    if (t == null)
752      return this;
753    if (this.telecom == null)
754      this.telecom = new ArrayList<ContactPoint>();
755    this.telecom.add(t);
756    return this;
757  }
758
759  /**
760   * @return The first repetition of repeating field {@link #telecom}, creating it
761   *         if it does not already exist
762   */
763  public ContactPoint getTelecomFirstRep() {
764    if (getTelecom().isEmpty()) {
765      addTelecom();
766    }
767    return getTelecom().get(0);
768  }
769
770  /**
771   * @return {@link #endpoint} (Technical endpoints providing access to services
772   *         operated for this role.)
773   */
774  public List<Reference> getEndpoint() {
775    if (this.endpoint == null)
776      this.endpoint = new ArrayList<Reference>();
777    return this.endpoint;
778  }
779
780  /**
781   * @return Returns a reference to <code>this</code> for easy method chaining
782   */
783  public OrganizationAffiliation setEndpoint(List<Reference> theEndpoint) {
784    this.endpoint = theEndpoint;
785    return this;
786  }
787
788  public boolean hasEndpoint() {
789    if (this.endpoint == null)
790      return false;
791    for (Reference item : this.endpoint)
792      if (!item.isEmpty())
793        return true;
794    return false;
795  }
796
797  public Reference addEndpoint() { // 3
798    Reference t = new Reference();
799    if (this.endpoint == null)
800      this.endpoint = new ArrayList<Reference>();
801    this.endpoint.add(t);
802    return t;
803  }
804
805  public OrganizationAffiliation addEndpoint(Reference t) { // 3
806    if (t == null)
807      return this;
808    if (this.endpoint == null)
809      this.endpoint = new ArrayList<Reference>();
810    this.endpoint.add(t);
811    return this;
812  }
813
814  /**
815   * @return The first repetition of repeating field {@link #endpoint}, creating
816   *         it if it does not already exist
817   */
818  public Reference getEndpointFirstRep() {
819    if (getEndpoint().isEmpty()) {
820      addEndpoint();
821    }
822    return getEndpoint().get(0);
823  }
824
825  protected void listChildren(List<Property> children) {
826    super.listChildren(children);
827    children.add(new Property("identifier", "Identifier", "Business identifiers that are specific to this role.", 0,
828        java.lang.Integer.MAX_VALUE, identifier));
829    children.add(new Property("active", "boolean", "Whether this organization affiliation record is in active use.", 0,
830        1, active));
831    children.add(new Property("period", "Period",
832        "The period during which the participatingOrganization is affiliated with the primary organization.", 0, 1,
833        period));
834    children.add(new Property("organization", "Reference(Organization)",
835        "Organization where the role is available (primary organization/has members).", 0, 1, organization));
836    children.add(new Property("participatingOrganization", "Reference(Organization)",
837        "The Participating Organization provides/performs the role(s) defined by the code to the Primary Organization (e.g. providing services or is a member of).",
838        0, 1, participatingOrganization));
839    children.add(new Property("network", "Reference(Organization)",
840        "Health insurance provider network in which the participatingOrganization provides the role's services (if defined) at the indicated locations (if defined).",
841        0, java.lang.Integer.MAX_VALUE, network));
842    children.add(new Property("code", "CodeableConcept",
843        "Definition of the role the participatingOrganization plays in the association.", 0,
844        java.lang.Integer.MAX_VALUE, code));
845    children.add(new Property("specialty", "CodeableConcept",
846        "Specific specialty of the participatingOrganization in the context of the role.", 0,
847        java.lang.Integer.MAX_VALUE, specialty));
848    children.add(new Property("location", "Reference(Location)", "The location(s) at which the role occurs.", 0,
849        java.lang.Integer.MAX_VALUE, location));
850    children.add(new Property("healthcareService", "Reference(HealthcareService)",
851        "Healthcare services provided through the role.", 0, java.lang.Integer.MAX_VALUE, healthcareService));
852    children.add(new Property("telecom", "ContactPoint",
853        "Contact details at the participatingOrganization relevant to this Affiliation.", 0,
854        java.lang.Integer.MAX_VALUE, telecom));
855    children.add(new Property("endpoint", "Reference(Endpoint)",
856        "Technical endpoints providing access to services operated for this role.", 0, java.lang.Integer.MAX_VALUE,
857        endpoint));
858  }
859
860  @Override
861  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
862    switch (_hash) {
863    case -1618432855:
864      /* identifier */ return new Property("identifier", "Identifier",
865          "Business identifiers that are specific to this role.", 0, java.lang.Integer.MAX_VALUE, identifier);
866    case -1422950650:
867      /* active */ return new Property("active", "boolean",
868          "Whether this organization affiliation record is in active use.", 0, 1, active);
869    case -991726143:
870      /* period */ return new Property("period", "Period",
871          "The period during which the participatingOrganization is affiliated with the primary organization.", 0, 1,
872          period);
873    case 1178922291:
874      /* organization */ return new Property("organization", "Reference(Organization)",
875          "Organization where the role is available (primary organization/has members).", 0, 1, organization);
876    case 1593310702:
877      /* participatingOrganization */ return new Property("participatingOrganization", "Reference(Organization)",
878          "The Participating Organization provides/performs the role(s) defined by the code to the Primary Organization (e.g. providing services or is a member of).",
879          0, 1, participatingOrganization);
880    case 1843485230:
881      /* network */ return new Property("network", "Reference(Organization)",
882          "Health insurance provider network in which the participatingOrganization provides the role's services (if defined) at the indicated locations (if defined).",
883          0, java.lang.Integer.MAX_VALUE, network);
884    case 3059181:
885      /* code */ return new Property("code", "CodeableConcept",
886          "Definition of the role the participatingOrganization plays in the association.", 0,
887          java.lang.Integer.MAX_VALUE, code);
888    case -1694759682:
889      /* specialty */ return new Property("specialty", "CodeableConcept",
890          "Specific specialty of the participatingOrganization in the context of the role.", 0,
891          java.lang.Integer.MAX_VALUE, specialty);
892    case 1901043637:
893      /* location */ return new Property("location", "Reference(Location)", "The location(s) at which the role occurs.",
894          0, java.lang.Integer.MAX_VALUE, location);
895    case 1289661064:
896      /* healthcareService */ return new Property("healthcareService", "Reference(HealthcareService)",
897          "Healthcare services provided through the role.", 0, java.lang.Integer.MAX_VALUE, healthcareService);
898    case -1429363305:
899      /* telecom */ return new Property("telecom", "ContactPoint",
900          "Contact details at the participatingOrganization relevant to this Affiliation.", 0,
901          java.lang.Integer.MAX_VALUE, telecom);
902    case 1741102485:
903      /* endpoint */ return new Property("endpoint", "Reference(Endpoint)",
904          "Technical endpoints providing access to services operated for this role.", 0, java.lang.Integer.MAX_VALUE,
905          endpoint);
906    default:
907      return super.getNamedProperty(_hash, _name, _checkValid);
908    }
909
910  }
911
912  @Override
913  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
914    switch (hash) {
915    case -1618432855:
916      /* identifier */ return this.identifier == null ? new Base[0]
917          : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
918    case -1422950650:
919      /* active */ return this.active == null ? new Base[0] : new Base[] { this.active }; // BooleanType
920    case -991726143:
921      /* period */ return this.period == null ? new Base[0] : new Base[] { this.period }; // Period
922    case 1178922291:
923      /* organization */ return this.organization == null ? new Base[0] : new Base[] { this.organization }; // Reference
924    case 1593310702:
925      /* participatingOrganization */ return this.participatingOrganization == null ? new Base[0]
926          : new Base[] { this.participatingOrganization }; // Reference
927    case 1843485230:
928      /* network */ return this.network == null ? new Base[0] : this.network.toArray(new Base[this.network.size()]); // Reference
929    case 3059181:
930      /* code */ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept
931    case -1694759682:
932      /* specialty */ return this.specialty == null ? new Base[0]
933          : this.specialty.toArray(new Base[this.specialty.size()]); // CodeableConcept
934    case 1901043637:
935      /* location */ return this.location == null ? new Base[0] : this.location.toArray(new Base[this.location.size()]); // Reference
936    case 1289661064:
937      /* healthcareService */ return this.healthcareService == null ? new Base[0]
938          : this.healthcareService.toArray(new Base[this.healthcareService.size()]); // Reference
939    case -1429363305:
940      /* telecom */ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
941    case 1741102485:
942      /* endpoint */ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference
943    default:
944      return super.getProperty(hash, name, checkValid);
945    }
946
947  }
948
949  @Override
950  public Base setProperty(int hash, String name, Base value) throws FHIRException {
951    switch (hash) {
952    case -1618432855: // identifier
953      this.getIdentifier().add(castToIdentifier(value)); // Identifier
954      return value;
955    case -1422950650: // active
956      this.active = castToBoolean(value); // BooleanType
957      return value;
958    case -991726143: // period
959      this.period = castToPeriod(value); // Period
960      return value;
961    case 1178922291: // organization
962      this.organization = castToReference(value); // Reference
963      return value;
964    case 1593310702: // participatingOrganization
965      this.participatingOrganization = castToReference(value); // Reference
966      return value;
967    case 1843485230: // network
968      this.getNetwork().add(castToReference(value)); // Reference
969      return value;
970    case 3059181: // code
971      this.getCode().add(castToCodeableConcept(value)); // CodeableConcept
972      return value;
973    case -1694759682: // specialty
974      this.getSpecialty().add(castToCodeableConcept(value)); // CodeableConcept
975      return value;
976    case 1901043637: // location
977      this.getLocation().add(castToReference(value)); // Reference
978      return value;
979    case 1289661064: // healthcareService
980      this.getHealthcareService().add(castToReference(value)); // Reference
981      return value;
982    case -1429363305: // telecom
983      this.getTelecom().add(castToContactPoint(value)); // ContactPoint
984      return value;
985    case 1741102485: // endpoint
986      this.getEndpoint().add(castToReference(value)); // Reference
987      return value;
988    default:
989      return super.setProperty(hash, name, value);
990    }
991
992  }
993
994  @Override
995  public Base setProperty(String name, Base value) throws FHIRException {
996    if (name.equals("identifier")) {
997      this.getIdentifier().add(castToIdentifier(value));
998    } else if (name.equals("active")) {
999      this.active = castToBoolean(value); // BooleanType
1000    } else if (name.equals("period")) {
1001      this.period = castToPeriod(value); // Period
1002    } else if (name.equals("organization")) {
1003      this.organization = castToReference(value); // Reference
1004    } else if (name.equals("participatingOrganization")) {
1005      this.participatingOrganization = castToReference(value); // Reference
1006    } else if (name.equals("network")) {
1007      this.getNetwork().add(castToReference(value));
1008    } else if (name.equals("code")) {
1009      this.getCode().add(castToCodeableConcept(value));
1010    } else if (name.equals("specialty")) {
1011      this.getSpecialty().add(castToCodeableConcept(value));
1012    } else if (name.equals("location")) {
1013      this.getLocation().add(castToReference(value));
1014    } else if (name.equals("healthcareService")) {
1015      this.getHealthcareService().add(castToReference(value));
1016    } else if (name.equals("telecom")) {
1017      this.getTelecom().add(castToContactPoint(value));
1018    } else if (name.equals("endpoint")) {
1019      this.getEndpoint().add(castToReference(value));
1020    } else
1021      return super.setProperty(name, value);
1022    return value;
1023  }
1024
1025  @Override
1026  public void removeChild(String name, Base value) throws FHIRException {
1027    if (name.equals("identifier")) {
1028      this.getIdentifier().remove(castToIdentifier(value));
1029    } else if (name.equals("active")) {
1030      this.active = null;
1031    } else if (name.equals("period")) {
1032      this.period = null;
1033    } else if (name.equals("organization")) {
1034      this.organization = null;
1035    } else if (name.equals("participatingOrganization")) {
1036      this.participatingOrganization = null;
1037    } else if (name.equals("network")) {
1038      this.getNetwork().remove(castToReference(value));
1039    } else if (name.equals("code")) {
1040      this.getCode().remove(castToCodeableConcept(value));
1041    } else if (name.equals("specialty")) {
1042      this.getSpecialty().remove(castToCodeableConcept(value));
1043    } else if (name.equals("location")) {
1044      this.getLocation().remove(castToReference(value));
1045    } else if (name.equals("healthcareService")) {
1046      this.getHealthcareService().remove(castToReference(value));
1047    } else if (name.equals("telecom")) {
1048      this.getTelecom().remove(castToContactPoint(value));
1049    } else if (name.equals("endpoint")) {
1050      this.getEndpoint().remove(castToReference(value));
1051    } else
1052      super.removeChild(name, value);
1053    
1054  }
1055
1056  @Override
1057  public Base makeProperty(int hash, String name) throws FHIRException {
1058    switch (hash) {
1059    case -1618432855:
1060      return addIdentifier();
1061    case -1422950650:
1062      return getActiveElement();
1063    case -991726143:
1064      return getPeriod();
1065    case 1178922291:
1066      return getOrganization();
1067    case 1593310702:
1068      return getParticipatingOrganization();
1069    case 1843485230:
1070      return addNetwork();
1071    case 3059181:
1072      return addCode();
1073    case -1694759682:
1074      return addSpecialty();
1075    case 1901043637:
1076      return addLocation();
1077    case 1289661064:
1078      return addHealthcareService();
1079    case -1429363305:
1080      return addTelecom();
1081    case 1741102485:
1082      return addEndpoint();
1083    default:
1084      return super.makeProperty(hash, name);
1085    }
1086
1087  }
1088
1089  @Override
1090  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1091    switch (hash) {
1092    case -1618432855:
1093      /* identifier */ return new String[] { "Identifier" };
1094    case -1422950650:
1095      /* active */ return new String[] { "boolean" };
1096    case -991726143:
1097      /* period */ return new String[] { "Period" };
1098    case 1178922291:
1099      /* organization */ return new String[] { "Reference" };
1100    case 1593310702:
1101      /* participatingOrganization */ return new String[] { "Reference" };
1102    case 1843485230:
1103      /* network */ return new String[] { "Reference" };
1104    case 3059181:
1105      /* code */ return new String[] { "CodeableConcept" };
1106    case -1694759682:
1107      /* specialty */ return new String[] { "CodeableConcept" };
1108    case 1901043637:
1109      /* location */ return new String[] { "Reference" };
1110    case 1289661064:
1111      /* healthcareService */ return new String[] { "Reference" };
1112    case -1429363305:
1113      /* telecom */ return new String[] { "ContactPoint" };
1114    case 1741102485:
1115      /* endpoint */ return new String[] { "Reference" };
1116    default:
1117      return super.getTypesForProperty(hash, name);
1118    }
1119
1120  }
1121
1122  @Override
1123  public Base addChild(String name) throws FHIRException {
1124    if (name.equals("identifier")) {
1125      return addIdentifier();
1126    } else if (name.equals("active")) {
1127      throw new FHIRException("Cannot call addChild on a singleton property OrganizationAffiliation.active");
1128    } else if (name.equals("period")) {
1129      this.period = new Period();
1130      return this.period;
1131    } else if (name.equals("organization")) {
1132      this.organization = new Reference();
1133      return this.organization;
1134    } else if (name.equals("participatingOrganization")) {
1135      this.participatingOrganization = new Reference();
1136      return this.participatingOrganization;
1137    } else if (name.equals("network")) {
1138      return addNetwork();
1139    } else if (name.equals("code")) {
1140      return addCode();
1141    } else if (name.equals("specialty")) {
1142      return addSpecialty();
1143    } else if (name.equals("location")) {
1144      return addLocation();
1145    } else if (name.equals("healthcareService")) {
1146      return addHealthcareService();
1147    } else if (name.equals("telecom")) {
1148      return addTelecom();
1149    } else if (name.equals("endpoint")) {
1150      return addEndpoint();
1151    } else
1152      return super.addChild(name);
1153  }
1154
1155  public String fhirType() {
1156    return "OrganizationAffiliation";
1157
1158  }
1159
1160  public OrganizationAffiliation copy() {
1161    OrganizationAffiliation dst = new OrganizationAffiliation();
1162    copyValues(dst);
1163    return dst;
1164  }
1165
1166  public void copyValues(OrganizationAffiliation dst) {
1167    super.copyValues(dst);
1168    if (identifier != null) {
1169      dst.identifier = new ArrayList<Identifier>();
1170      for (Identifier i : identifier)
1171        dst.identifier.add(i.copy());
1172    }
1173    ;
1174    dst.active = active == null ? null : active.copy();
1175    dst.period = period == null ? null : period.copy();
1176    dst.organization = organization == null ? null : organization.copy();
1177    dst.participatingOrganization = participatingOrganization == null ? null : participatingOrganization.copy();
1178    if (network != null) {
1179      dst.network = new ArrayList<Reference>();
1180      for (Reference i : network)
1181        dst.network.add(i.copy());
1182    }
1183    ;
1184    if (code != null) {
1185      dst.code = new ArrayList<CodeableConcept>();
1186      for (CodeableConcept i : code)
1187        dst.code.add(i.copy());
1188    }
1189    ;
1190    if (specialty != null) {
1191      dst.specialty = new ArrayList<CodeableConcept>();
1192      for (CodeableConcept i : specialty)
1193        dst.specialty.add(i.copy());
1194    }
1195    ;
1196    if (location != null) {
1197      dst.location = new ArrayList<Reference>();
1198      for (Reference i : location)
1199        dst.location.add(i.copy());
1200    }
1201    ;
1202    if (healthcareService != null) {
1203      dst.healthcareService = new ArrayList<Reference>();
1204      for (Reference i : healthcareService)
1205        dst.healthcareService.add(i.copy());
1206    }
1207    ;
1208    if (telecom != null) {
1209      dst.telecom = new ArrayList<ContactPoint>();
1210      for (ContactPoint i : telecom)
1211        dst.telecom.add(i.copy());
1212    }
1213    ;
1214    if (endpoint != null) {
1215      dst.endpoint = new ArrayList<Reference>();
1216      for (Reference i : endpoint)
1217        dst.endpoint.add(i.copy());
1218    }
1219    ;
1220  }
1221
1222  protected OrganizationAffiliation typedCopy() {
1223    return copy();
1224  }
1225
1226  @Override
1227  public boolean equalsDeep(Base other_) {
1228    if (!super.equalsDeep(other_))
1229      return false;
1230    if (!(other_ instanceof OrganizationAffiliation))
1231      return false;
1232    OrganizationAffiliation o = (OrganizationAffiliation) other_;
1233    return compareDeep(identifier, o.identifier, true) && compareDeep(active, o.active, true)
1234        && compareDeep(period, o.period, true) && compareDeep(organization, o.organization, true)
1235        && compareDeep(participatingOrganization, o.participatingOrganization, true)
1236        && compareDeep(network, o.network, true) && compareDeep(code, o.code, true)
1237        && compareDeep(specialty, o.specialty, true) && compareDeep(location, o.location, true)
1238        && compareDeep(healthcareService, o.healthcareService, true) && compareDeep(telecom, o.telecom, true)
1239        && compareDeep(endpoint, o.endpoint, true);
1240  }
1241
1242  @Override
1243  public boolean equalsShallow(Base other_) {
1244    if (!super.equalsShallow(other_))
1245      return false;
1246    if (!(other_ instanceof OrganizationAffiliation))
1247      return false;
1248    OrganizationAffiliation o = (OrganizationAffiliation) other_;
1249    return compareValues(active, o.active, true);
1250  }
1251
1252  public boolean isEmpty() {
1253    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, active, period, organization,
1254        participatingOrganization, network, code, specialty, location, healthcareService, telecom, endpoint);
1255  }
1256
1257  @Override
1258  public ResourceType getResourceType() {
1259    return ResourceType.OrganizationAffiliation;
1260  }
1261
1262  /**
1263   * Search parameter: <b>date</b>
1264   * <p>
1265   * Description: <b>The period during which the participatingOrganization is
1266   * affiliated with the primary organization</b><br>
1267   * Type: <b>date</b><br>
1268   * Path: <b>OrganizationAffiliation.period</b><br>
1269   * </p>
1270   */
1271  @SearchParamDefinition(name = "date", path = "OrganizationAffiliation.period", description = "The period during which the participatingOrganization is affiliated with the primary organization", type = "date")
1272  public static final String SP_DATE = "date";
1273  /**
1274   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1275   * <p>
1276   * Description: <b>The period during which the participatingOrganization is
1277   * affiliated with the primary organization</b><br>
1278   * Type: <b>date</b><br>
1279   * Path: <b>OrganizationAffiliation.period</b><br>
1280   * </p>
1281   */
1282  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(
1283      SP_DATE);
1284
1285  /**
1286   * Search parameter: <b>identifier</b>
1287   * <p>
1288   * Description: <b>An organization affiliation's Identifier</b><br>
1289   * Type: <b>token</b><br>
1290   * Path: <b>OrganizationAffiliation.identifier</b><br>
1291   * </p>
1292   */
1293  @SearchParamDefinition(name = "identifier", path = "OrganizationAffiliation.identifier", description = "An organization affiliation's Identifier", type = "token")
1294  public static final String SP_IDENTIFIER = "identifier";
1295  /**
1296   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1297   * <p>
1298   * Description: <b>An organization affiliation's Identifier</b><br>
1299   * Type: <b>token</b><br>
1300   * Path: <b>OrganizationAffiliation.identifier</b><br>
1301   * </p>
1302   */
1303  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1304      SP_IDENTIFIER);
1305
1306  /**
1307   * Search parameter: <b>specialty</b>
1308   * <p>
1309   * Description: <b>Specific specialty of the participatingOrganization in the
1310   * context of the role</b><br>
1311   * Type: <b>token</b><br>
1312   * Path: <b>OrganizationAffiliation.specialty</b><br>
1313   * </p>
1314   */
1315  @SearchParamDefinition(name = "specialty", path = "OrganizationAffiliation.specialty", description = "Specific specialty of the participatingOrganization in the context of the role", type = "token")
1316  public static final String SP_SPECIALTY = "specialty";
1317  /**
1318   * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
1319   * <p>
1320   * Description: <b>Specific specialty of the participatingOrganization in the
1321   * context of the role</b><br>
1322   * Type: <b>token</b><br>
1323   * Path: <b>OrganizationAffiliation.specialty</b><br>
1324   * </p>
1325   */
1326  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1327      SP_SPECIALTY);
1328
1329  /**
1330   * Search parameter: <b>role</b>
1331   * <p>
1332   * Description: <b>Definition of the role the participatingOrganization
1333   * plays</b><br>
1334   * Type: <b>token</b><br>
1335   * Path: <b>OrganizationAffiliation.code</b><br>
1336   * </p>
1337   */
1338  @SearchParamDefinition(name = "role", path = "OrganizationAffiliation.code", description = "Definition of the role the participatingOrganization plays", type = "token")
1339  public static final String SP_ROLE = "role";
1340  /**
1341   * <b>Fluent Client</b> search parameter constant for <b>role</b>
1342   * <p>
1343   * Description: <b>Definition of the role the participatingOrganization
1344   * plays</b><br>
1345   * Type: <b>token</b><br>
1346   * Path: <b>OrganizationAffiliation.code</b><br>
1347   * </p>
1348   */
1349  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ROLE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1350      SP_ROLE);
1351
1352  /**
1353   * Search parameter: <b>active</b>
1354   * <p>
1355   * Description: <b>Whether this organization affiliation record is in active
1356   * use</b><br>
1357   * Type: <b>token</b><br>
1358   * Path: <b>OrganizationAffiliation.active</b><br>
1359   * </p>
1360   */
1361  @SearchParamDefinition(name = "active", path = "OrganizationAffiliation.active", description = "Whether this organization affiliation record is in active use", type = "token")
1362  public static final String SP_ACTIVE = "active";
1363  /**
1364   * <b>Fluent Client</b> search parameter constant for <b>active</b>
1365   * <p>
1366   * Description: <b>Whether this organization affiliation record is in active
1367   * use</b><br>
1368   * Type: <b>token</b><br>
1369   * Path: <b>OrganizationAffiliation.active</b><br>
1370   * </p>
1371   */
1372  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTIVE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1373      SP_ACTIVE);
1374
1375  /**
1376   * Search parameter: <b>primary-organization</b>
1377   * <p>
1378   * Description: <b>The organization that receives the services from the
1379   * participating organization</b><br>
1380   * Type: <b>reference</b><br>
1381   * Path: <b>OrganizationAffiliation.organization</b><br>
1382   * </p>
1383   */
1384  @SearchParamDefinition(name = "primary-organization", path = "OrganizationAffiliation.organization", description = "The organization that receives the services from the participating organization", type = "reference", target = {
1385      Organization.class })
1386  public static final String SP_PRIMARY_ORGANIZATION = "primary-organization";
1387  /**
1388   * <b>Fluent Client</b> search parameter constant for
1389   * <b>primary-organization</b>
1390   * <p>
1391   * Description: <b>The organization that receives the services from the
1392   * participating organization</b><br>
1393   * Type: <b>reference</b><br>
1394   * Path: <b>OrganizationAffiliation.organization</b><br>
1395   * </p>
1396   */
1397  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRIMARY_ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1398      SP_PRIMARY_ORGANIZATION);
1399
1400  /**
1401   * Constant for fluent queries to be used to add include statements. Specifies
1402   * the path value of "<b>OrganizationAffiliation:primary-organization</b>".
1403   */
1404  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRIMARY_ORGANIZATION = new ca.uhn.fhir.model.api.Include(
1405      "OrganizationAffiliation:primary-organization").toLocked();
1406
1407  /**
1408   * Search parameter: <b>network</b>
1409   * <p>
1410   * Description: <b>Health insurance provider network in which the
1411   * participatingOrganization provides the role's services (if defined) at the
1412   * indicated locations (if defined)</b><br>
1413   * Type: <b>reference</b><br>
1414   * Path: <b>OrganizationAffiliation.network</b><br>
1415   * </p>
1416   */
1417  @SearchParamDefinition(name = "network", path = "OrganizationAffiliation.network", description = "Health insurance provider network in which the participatingOrganization provides the role's services (if defined) at the indicated locations (if defined)", type = "reference", target = {
1418      Organization.class })
1419  public static final String SP_NETWORK = "network";
1420  /**
1421   * <b>Fluent Client</b> search parameter constant for <b>network</b>
1422   * <p>
1423   * Description: <b>Health insurance provider network in which the
1424   * participatingOrganization provides the role's services (if defined) at the
1425   * indicated locations (if defined)</b><br>
1426   * Type: <b>reference</b><br>
1427   * Path: <b>OrganizationAffiliation.network</b><br>
1428   * </p>
1429   */
1430  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam NETWORK = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1431      SP_NETWORK);
1432
1433  /**
1434   * Constant for fluent queries to be used to add include statements. Specifies
1435   * the path value of "<b>OrganizationAffiliation:network</b>".
1436   */
1437  public static final ca.uhn.fhir.model.api.Include INCLUDE_NETWORK = new ca.uhn.fhir.model.api.Include(
1438      "OrganizationAffiliation:network").toLocked();
1439
1440  /**
1441   * Search parameter: <b>endpoint</b>
1442   * <p>
1443   * Description: <b>Technical endpoints providing access to services operated for
1444   * this role</b><br>
1445   * Type: <b>reference</b><br>
1446   * Path: <b>OrganizationAffiliation.endpoint</b><br>
1447   * </p>
1448   */
1449  @SearchParamDefinition(name = "endpoint", path = "OrganizationAffiliation.endpoint", description = "Technical endpoints providing access to services operated for this role", type = "reference", target = {
1450      Endpoint.class })
1451  public static final String SP_ENDPOINT = "endpoint";
1452  /**
1453   * <b>Fluent Client</b> search parameter constant for <b>endpoint</b>
1454   * <p>
1455   * Description: <b>Technical endpoints providing access to services operated for
1456   * this role</b><br>
1457   * Type: <b>reference</b><br>
1458   * Path: <b>OrganizationAffiliation.endpoint</b><br>
1459   * </p>
1460   */
1461  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENDPOINT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1462      SP_ENDPOINT);
1463
1464  /**
1465   * Constant for fluent queries to be used to add include statements. Specifies
1466   * the path value of "<b>OrganizationAffiliation:endpoint</b>".
1467   */
1468  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENDPOINT = new ca.uhn.fhir.model.api.Include(
1469      "OrganizationAffiliation:endpoint").toLocked();
1470
1471  /**
1472   * Search parameter: <b>phone</b>
1473   * <p>
1474   * Description: <b>A value in a phone contact</b><br>
1475   * Type: <b>token</b><br>
1476   * Path: <b>OrganizationAffiliation.telecom(system=phone)</b><br>
1477   * </p>
1478   */
1479  @SearchParamDefinition(name = "phone", path = "OrganizationAffiliation.telecom.where(system='phone')", description = "A value in a phone contact", type = "token")
1480  public static final String SP_PHONE = "phone";
1481  /**
1482   * <b>Fluent Client</b> search parameter constant for <b>phone</b>
1483   * <p>
1484   * Description: <b>A value in a phone contact</b><br>
1485   * Type: <b>token</b><br>
1486   * Path: <b>OrganizationAffiliation.telecom(system=phone)</b><br>
1487   * </p>
1488   */
1489  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PHONE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1490      SP_PHONE);
1491
1492  /**
1493   * Search parameter: <b>service</b>
1494   * <p>
1495   * Description: <b>Healthcare services provided through the role</b><br>
1496   * Type: <b>reference</b><br>
1497   * Path: <b>OrganizationAffiliation.healthcareService</b><br>
1498   * </p>
1499   */
1500  @SearchParamDefinition(name = "service", path = "OrganizationAffiliation.healthcareService", description = "Healthcare services provided through the role", type = "reference", target = {
1501      HealthcareService.class })
1502  public static final String SP_SERVICE = "service";
1503  /**
1504   * <b>Fluent Client</b> search parameter constant for <b>service</b>
1505   * <p>
1506   * Description: <b>Healthcare services provided through the role</b><br>
1507   * Type: <b>reference</b><br>
1508   * Path: <b>OrganizationAffiliation.healthcareService</b><br>
1509   * </p>
1510   */
1511  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SERVICE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1512      SP_SERVICE);
1513
1514  /**
1515   * Constant for fluent queries to be used to add include statements. Specifies
1516   * the path value of "<b>OrganizationAffiliation:service</b>".
1517   */
1518  public static final ca.uhn.fhir.model.api.Include INCLUDE_SERVICE = new ca.uhn.fhir.model.api.Include(
1519      "OrganizationAffiliation:service").toLocked();
1520
1521  /**
1522   * Search parameter: <b>participating-organization</b>
1523   * <p>
1524   * Description: <b>The organization that provides services to the primary
1525   * organization</b><br>
1526   * Type: <b>reference</b><br>
1527   * Path: <b>OrganizationAffiliation.participatingOrganization</b><br>
1528   * </p>
1529   */
1530  @SearchParamDefinition(name = "participating-organization", path = "OrganizationAffiliation.participatingOrganization", description = "The organization that provides services to the primary organization", type = "reference", target = {
1531      Organization.class })
1532  public static final String SP_PARTICIPATING_ORGANIZATION = "participating-organization";
1533  /**
1534   * <b>Fluent Client</b> search parameter constant for
1535   * <b>participating-organization</b>
1536   * <p>
1537   * Description: <b>The organization that provides services to the primary
1538   * organization</b><br>
1539   * Type: <b>reference</b><br>
1540   * Path: <b>OrganizationAffiliation.participatingOrganization</b><br>
1541   * </p>
1542   */
1543  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTICIPATING_ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1544      SP_PARTICIPATING_ORGANIZATION);
1545
1546  /**
1547   * Constant for fluent queries to be used to add include statements. Specifies
1548   * the path value of
1549   * "<b>OrganizationAffiliation:participating-organization</b>".
1550   */
1551  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTICIPATING_ORGANIZATION = new ca.uhn.fhir.model.api.Include(
1552      "OrganizationAffiliation:participating-organization").toLocked();
1553
1554  /**
1555   * Search parameter: <b>telecom</b>
1556   * <p>
1557   * Description: <b>The value in any kind of contact</b><br>
1558   * Type: <b>token</b><br>
1559   * Path: <b>OrganizationAffiliation.telecom</b><br>
1560   * </p>
1561   */
1562  @SearchParamDefinition(name = "telecom", path = "OrganizationAffiliation.telecom", description = "The value in any kind of contact", type = "token")
1563  public static final String SP_TELECOM = "telecom";
1564  /**
1565   * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
1566   * <p>
1567   * Description: <b>The value in any kind of contact</b><br>
1568   * Type: <b>token</b><br>
1569   * Path: <b>OrganizationAffiliation.telecom</b><br>
1570   * </p>
1571   */
1572  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1573      SP_TELECOM);
1574
1575  /**
1576   * Search parameter: <b>location</b>
1577   * <p>
1578   * Description: <b>The location(s) at which the role occurs</b><br>
1579   * Type: <b>reference</b><br>
1580   * Path: <b>OrganizationAffiliation.location</b><br>
1581   * </p>
1582   */
1583  @SearchParamDefinition(name = "location", path = "OrganizationAffiliation.location", description = "The location(s) at which the role occurs", type = "reference", target = {
1584      Location.class })
1585  public static final String SP_LOCATION = "location";
1586  /**
1587   * <b>Fluent Client</b> search parameter constant for <b>location</b>
1588   * <p>
1589   * Description: <b>The location(s) at which the role occurs</b><br>
1590   * Type: <b>reference</b><br>
1591   * Path: <b>OrganizationAffiliation.location</b><br>
1592   * </p>
1593   */
1594  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1595      SP_LOCATION);
1596
1597  /**
1598   * Constant for fluent queries to be used to add include statements. Specifies
1599   * the path value of "<b>OrganizationAffiliation:location</b>".
1600   */
1601  public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include(
1602      "OrganizationAffiliation:location").toLocked();
1603
1604  /**
1605   * Search parameter: <b>email</b>
1606   * <p>
1607   * Description: <b>A value in an email contact</b><br>
1608   * Type: <b>token</b><br>
1609   * Path: <b>OrganizationAffiliation.telecom(system=email)</b><br>
1610   * </p>
1611   */
1612  @SearchParamDefinition(name = "email", path = "OrganizationAffiliation.telecom.where(system='email')", description = "A value in an email contact", type = "token")
1613  public static final String SP_EMAIL = "email";
1614  /**
1615   * <b>Fluent Client</b> search parameter constant for <b>email</b>
1616   * <p>
1617   * Description: <b>A value in an email contact</b><br>
1618   * Type: <b>token</b><br>
1619   * Path: <b>OrganizationAffiliation.telecom(system=email)</b><br>
1620   * </p>
1621   */
1622  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EMAIL = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1623      SP_EMAIL);
1624
1625}