001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A person who is directly or indirectly involved in the provisioning of healthcare or related services.
052 */
053@ResourceDef(name="Practitioner", profile="http://hl7.org/fhir/StructureDefinition/Practitioner")
054public class Practitioner extends DomainResource {
055
056    @Block()
057    public static class PractitionerQualificationComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * An identifier that applies to this person's qualification.
060         */
061        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
062        @Description(shortDefinition="An identifier for this qualification for the practitioner", formalDefinition="An identifier that applies to this person's qualification." )
063        protected List<Identifier> identifier;
064
065        /**
066         * Coded representation of the qualification.
067         */
068        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=false)
069        @Description(shortDefinition="Coded representation of the qualification", formalDefinition="Coded representation of the qualification." )
070        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v2-0360")
071        protected CodeableConcept code;
072
073        /**
074         * Period during which the qualification is valid.
075         */
076        @Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=false)
077        @Description(shortDefinition="Period during which the qualification is valid", formalDefinition="Period during which the qualification is valid." )
078        protected Period period;
079
080        /**
081         * Organization that regulates and issues the qualification.
082         */
083        @Child(name = "issuer", type = {Organization.class}, order=4, min=0, max=1, modifier=false, summary=false)
084        @Description(shortDefinition="Organization that regulates and issues the qualification", formalDefinition="Organization that regulates and issues the qualification." )
085        protected Reference issuer;
086
087        private static final long serialVersionUID = 1561812204L;
088
089    /**
090     * Constructor
091     */
092      public PractitionerQualificationComponent() {
093        super();
094      }
095
096    /**
097     * Constructor
098     */
099      public PractitionerQualificationComponent(CodeableConcept code) {
100        super();
101        this.setCode(code);
102      }
103
104        /**
105         * @return {@link #identifier} (An identifier that applies to this person's qualification.)
106         */
107        public List<Identifier> getIdentifier() { 
108          if (this.identifier == null)
109            this.identifier = new ArrayList<Identifier>();
110          return this.identifier;
111        }
112
113        /**
114         * @return Returns a reference to <code>this</code> for easy method chaining
115         */
116        public PractitionerQualificationComponent setIdentifier(List<Identifier> theIdentifier) { 
117          this.identifier = theIdentifier;
118          return this;
119        }
120
121        public boolean hasIdentifier() { 
122          if (this.identifier == null)
123            return false;
124          for (Identifier item : this.identifier)
125            if (!item.isEmpty())
126              return true;
127          return false;
128        }
129
130        public Identifier addIdentifier() { //3
131          Identifier t = new Identifier();
132          if (this.identifier == null)
133            this.identifier = new ArrayList<Identifier>();
134          this.identifier.add(t);
135          return t;
136        }
137
138        public PractitionerQualificationComponent addIdentifier(Identifier t) { //3
139          if (t == null)
140            return this;
141          if (this.identifier == null)
142            this.identifier = new ArrayList<Identifier>();
143          this.identifier.add(t);
144          return this;
145        }
146
147        /**
148         * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
149         */
150        public Identifier getIdentifierFirstRep() { 
151          if (getIdentifier().isEmpty()) {
152            addIdentifier();
153          }
154          return getIdentifier().get(0);
155        }
156
157        /**
158         * @return {@link #code} (Coded representation of the qualification.)
159         */
160        public CodeableConcept getCode() { 
161          if (this.code == null)
162            if (Configuration.errorOnAutoCreate())
163              throw new Error("Attempt to auto-create PractitionerQualificationComponent.code");
164            else if (Configuration.doAutoCreate())
165              this.code = new CodeableConcept(); // cc
166          return this.code;
167        }
168
169        public boolean hasCode() { 
170          return this.code != null && !this.code.isEmpty();
171        }
172
173        /**
174         * @param value {@link #code} (Coded representation of the qualification.)
175         */
176        public PractitionerQualificationComponent setCode(CodeableConcept value) { 
177          this.code = value;
178          return this;
179        }
180
181        /**
182         * @return {@link #period} (Period during which the qualification is valid.)
183         */
184        public Period getPeriod() { 
185          if (this.period == null)
186            if (Configuration.errorOnAutoCreate())
187              throw new Error("Attempt to auto-create PractitionerQualificationComponent.period");
188            else if (Configuration.doAutoCreate())
189              this.period = new Period(); // cc
190          return this.period;
191        }
192
193        public boolean hasPeriod() { 
194          return this.period != null && !this.period.isEmpty();
195        }
196
197        /**
198         * @param value {@link #period} (Period during which the qualification is valid.)
199         */
200        public PractitionerQualificationComponent setPeriod(Period value) { 
201          this.period = value;
202          return this;
203        }
204
205        /**
206         * @return {@link #issuer} (Organization that regulates and issues the qualification.)
207         */
208        public Reference getIssuer() { 
209          if (this.issuer == null)
210            if (Configuration.errorOnAutoCreate())
211              throw new Error("Attempt to auto-create PractitionerQualificationComponent.issuer");
212            else if (Configuration.doAutoCreate())
213              this.issuer = new Reference(); // cc
214          return this.issuer;
215        }
216
217        public boolean hasIssuer() { 
218          return this.issuer != null && !this.issuer.isEmpty();
219        }
220
221        /**
222         * @param value {@link #issuer} (Organization that regulates and issues the qualification.)
223         */
224        public PractitionerQualificationComponent setIssuer(Reference value) { 
225          this.issuer = value;
226          return this;
227        }
228
229        protected void listChildren(List<Property> children) {
230          super.listChildren(children);
231          children.add(new Property("identifier", "Identifier", "An identifier that applies to this person's qualification.", 0, java.lang.Integer.MAX_VALUE, identifier));
232          children.add(new Property("code", "CodeableConcept", "Coded representation of the qualification.", 0, 1, code));
233          children.add(new Property("period", "Period", "Period during which the qualification is valid.", 0, 1, period));
234          children.add(new Property("issuer", "Reference(Organization)", "Organization that regulates and issues the qualification.", 0, 1, issuer));
235        }
236
237        @Override
238        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
239          switch (_hash) {
240          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "An identifier that applies to this person's qualification.", 0, java.lang.Integer.MAX_VALUE, identifier);
241          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Coded representation of the qualification.", 0, 1, code);
242          case -991726143: /*period*/  return new Property("period", "Period", "Period during which the qualification is valid.", 0, 1, period);
243          case -1179159879: /*issuer*/  return new Property("issuer", "Reference(Organization)", "Organization that regulates and issues the qualification.", 0, 1, issuer);
244          default: return super.getNamedProperty(_hash, _name, _checkValid);
245          }
246
247        }
248
249      @Override
250      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
251        switch (hash) {
252        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
253        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
254        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
255        case -1179159879: /*issuer*/ return this.issuer == null ? new Base[0] : new Base[] {this.issuer}; // Reference
256        default: return super.getProperty(hash, name, checkValid);
257        }
258
259      }
260
261      @Override
262      public Base setProperty(int hash, String name, Base value) throws FHIRException {
263        switch (hash) {
264        case -1618432855: // identifier
265          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
266          return value;
267        case 3059181: // code
268          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
269          return value;
270        case -991726143: // period
271          this.period = TypeConvertor.castToPeriod(value); // Period
272          return value;
273        case -1179159879: // issuer
274          this.issuer = TypeConvertor.castToReference(value); // Reference
275          return value;
276        default: return super.setProperty(hash, name, value);
277        }
278
279      }
280
281      @Override
282      public Base setProperty(String name, Base value) throws FHIRException {
283        if (name.equals("identifier")) {
284          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
285        } else if (name.equals("code")) {
286          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
287        } else if (name.equals("period")) {
288          this.period = TypeConvertor.castToPeriod(value); // Period
289        } else if (name.equals("issuer")) {
290          this.issuer = TypeConvertor.castToReference(value); // Reference
291        } else
292          return super.setProperty(name, value);
293        return value;
294      }
295
296      @Override
297      public Base makeProperty(int hash, String name) throws FHIRException {
298        switch (hash) {
299        case -1618432855:  return addIdentifier(); 
300        case 3059181:  return getCode();
301        case -991726143:  return getPeriod();
302        case -1179159879:  return getIssuer();
303        default: return super.makeProperty(hash, name);
304        }
305
306      }
307
308      @Override
309      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
310        switch (hash) {
311        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
312        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
313        case -991726143: /*period*/ return new String[] {"Period"};
314        case -1179159879: /*issuer*/ return new String[] {"Reference"};
315        default: return super.getTypesForProperty(hash, name);
316        }
317
318      }
319
320      @Override
321      public Base addChild(String name) throws FHIRException {
322        if (name.equals("identifier")) {
323          return addIdentifier();
324        }
325        else if (name.equals("code")) {
326          this.code = new CodeableConcept();
327          return this.code;
328        }
329        else if (name.equals("period")) {
330          this.period = new Period();
331          return this.period;
332        }
333        else if (name.equals("issuer")) {
334          this.issuer = new Reference();
335          return this.issuer;
336        }
337        else
338          return super.addChild(name);
339      }
340
341      public PractitionerQualificationComponent copy() {
342        PractitionerQualificationComponent dst = new PractitionerQualificationComponent();
343        copyValues(dst);
344        return dst;
345      }
346
347      public void copyValues(PractitionerQualificationComponent dst) {
348        super.copyValues(dst);
349        if (identifier != null) {
350          dst.identifier = new ArrayList<Identifier>();
351          for (Identifier i : identifier)
352            dst.identifier.add(i.copy());
353        };
354        dst.code = code == null ? null : code.copy();
355        dst.period = period == null ? null : period.copy();
356        dst.issuer = issuer == null ? null : issuer.copy();
357      }
358
359      @Override
360      public boolean equalsDeep(Base other_) {
361        if (!super.equalsDeep(other_))
362          return false;
363        if (!(other_ instanceof PractitionerQualificationComponent))
364          return false;
365        PractitionerQualificationComponent o = (PractitionerQualificationComponent) other_;
366        return compareDeep(identifier, o.identifier, true) && compareDeep(code, o.code, true) && compareDeep(period, o.period, true)
367           && compareDeep(issuer, o.issuer, true);
368      }
369
370      @Override
371      public boolean equalsShallow(Base other_) {
372        if (!super.equalsShallow(other_))
373          return false;
374        if (!(other_ instanceof PractitionerQualificationComponent))
375          return false;
376        PractitionerQualificationComponent o = (PractitionerQualificationComponent) other_;
377        return true;
378      }
379
380      public boolean isEmpty() {
381        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, code, period
382          , issuer);
383      }
384
385  public String fhirType() {
386    return "Practitioner.qualification";
387
388  }
389
390  }
391
392    @Block()
393    public static class PractitionerCommunicationComponent extends BackboneElement implements IBaseBackboneElement {
394        /**
395         * The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. "en" for English, or "en-US" for American English versus "en-AU" for Australian English.
396         */
397        @Child(name = "language", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
398        @Description(shortDefinition="The language code used to communicate with the practitioner", formalDefinition="The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. \"en\" for English, or \"en-US\" for American English versus \"en-AU\" for Australian English." )
399        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/all-languages")
400        protected CodeableConcept language;
401
402        /**
403         * Indicates whether or not the person prefers this language (over other languages he masters up a certain level).
404         */
405        @Child(name = "preferred", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
406        @Description(shortDefinition="Language preference indicator", formalDefinition="Indicates whether or not the person prefers this language (over other languages he masters up a certain level)." )
407        protected BooleanType preferred;
408
409        private static final long serialVersionUID = 633792918L;
410
411    /**
412     * Constructor
413     */
414      public PractitionerCommunicationComponent() {
415        super();
416      }
417
418    /**
419     * Constructor
420     */
421      public PractitionerCommunicationComponent(CodeableConcept language) {
422        super();
423        this.setLanguage(language);
424      }
425
426        /**
427         * @return {@link #language} (The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. "en" for English, or "en-US" for American English versus "en-AU" for Australian English.)
428         */
429        public CodeableConcept getLanguage() { 
430          if (this.language == null)
431            if (Configuration.errorOnAutoCreate())
432              throw new Error("Attempt to auto-create PractitionerCommunicationComponent.language");
433            else if (Configuration.doAutoCreate())
434              this.language = new CodeableConcept(); // cc
435          return this.language;
436        }
437
438        public boolean hasLanguage() { 
439          return this.language != null && !this.language.isEmpty();
440        }
441
442        /**
443         * @param value {@link #language} (The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. "en" for English, or "en-US" for American English versus "en-AU" for Australian English.)
444         */
445        public PractitionerCommunicationComponent setLanguage(CodeableConcept value) { 
446          this.language = value;
447          return this;
448        }
449
450        /**
451         * @return {@link #preferred} (Indicates whether or not the person prefers this language (over other languages he masters up a certain level).). This is the underlying object with id, value and extensions. The accessor "getPreferred" gives direct access to the value
452         */
453        public BooleanType getPreferredElement() { 
454          if (this.preferred == null)
455            if (Configuration.errorOnAutoCreate())
456              throw new Error("Attempt to auto-create PractitionerCommunicationComponent.preferred");
457            else if (Configuration.doAutoCreate())
458              this.preferred = new BooleanType(); // bb
459          return this.preferred;
460        }
461
462        public boolean hasPreferredElement() { 
463          return this.preferred != null && !this.preferred.isEmpty();
464        }
465
466        public boolean hasPreferred() { 
467          return this.preferred != null && !this.preferred.isEmpty();
468        }
469
470        /**
471         * @param value {@link #preferred} (Indicates whether or not the person prefers this language (over other languages he masters up a certain level).). This is the underlying object with id, value and extensions. The accessor "getPreferred" gives direct access to the value
472         */
473        public PractitionerCommunicationComponent setPreferredElement(BooleanType value) { 
474          this.preferred = value;
475          return this;
476        }
477
478        /**
479         * @return Indicates whether or not the person prefers this language (over other languages he masters up a certain level).
480         */
481        public boolean getPreferred() { 
482          return this.preferred == null || this.preferred.isEmpty() ? false : this.preferred.getValue();
483        }
484
485        /**
486         * @param value Indicates whether or not the person prefers this language (over other languages he masters up a certain level).
487         */
488        public PractitionerCommunicationComponent setPreferred(boolean value) { 
489            if (this.preferred == null)
490              this.preferred = new BooleanType();
491            this.preferred.setValue(value);
492          return this;
493        }
494
495        protected void listChildren(List<Property> children) {
496          super.listChildren(children);
497          children.add(new Property("language", "CodeableConcept", "The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. \"en\" for English, or \"en-US\" for American English versus \"en-AU\" for Australian English.", 0, 1, language));
498          children.add(new Property("preferred", "boolean", "Indicates whether or not the person prefers this language (over other languages he masters up a certain level).", 0, 1, preferred));
499        }
500
501        @Override
502        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
503          switch (_hash) {
504          case -1613589672: /*language*/  return new Property("language", "CodeableConcept", "The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. \"en\" for English, or \"en-US\" for American English versus \"en-AU\" for Australian English.", 0, 1, language);
505          case -1294005119: /*preferred*/  return new Property("preferred", "boolean", "Indicates whether or not the person prefers this language (over other languages he masters up a certain level).", 0, 1, preferred);
506          default: return super.getNamedProperty(_hash, _name, _checkValid);
507          }
508
509        }
510
511      @Override
512      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
513        switch (hash) {
514        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeableConcept
515        case -1294005119: /*preferred*/ return this.preferred == null ? new Base[0] : new Base[] {this.preferred}; // BooleanType
516        default: return super.getProperty(hash, name, checkValid);
517        }
518
519      }
520
521      @Override
522      public Base setProperty(int hash, String name, Base value) throws FHIRException {
523        switch (hash) {
524        case -1613589672: // language
525          this.language = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
526          return value;
527        case -1294005119: // preferred
528          this.preferred = TypeConvertor.castToBoolean(value); // BooleanType
529          return value;
530        default: return super.setProperty(hash, name, value);
531        }
532
533      }
534
535      @Override
536      public Base setProperty(String name, Base value) throws FHIRException {
537        if (name.equals("language")) {
538          this.language = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
539        } else if (name.equals("preferred")) {
540          this.preferred = TypeConvertor.castToBoolean(value); // BooleanType
541        } else
542          return super.setProperty(name, value);
543        return value;
544      }
545
546      @Override
547      public Base makeProperty(int hash, String name) throws FHIRException {
548        switch (hash) {
549        case -1613589672:  return getLanguage();
550        case -1294005119:  return getPreferredElement();
551        default: return super.makeProperty(hash, name);
552        }
553
554      }
555
556      @Override
557      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
558        switch (hash) {
559        case -1613589672: /*language*/ return new String[] {"CodeableConcept"};
560        case -1294005119: /*preferred*/ return new String[] {"boolean"};
561        default: return super.getTypesForProperty(hash, name);
562        }
563
564      }
565
566      @Override
567      public Base addChild(String name) throws FHIRException {
568        if (name.equals("language")) {
569          this.language = new CodeableConcept();
570          return this.language;
571        }
572        else if (name.equals("preferred")) {
573          throw new FHIRException("Cannot call addChild on a singleton property Practitioner.communication.preferred");
574        }
575        else
576          return super.addChild(name);
577      }
578
579      public PractitionerCommunicationComponent copy() {
580        PractitionerCommunicationComponent dst = new PractitionerCommunicationComponent();
581        copyValues(dst);
582        return dst;
583      }
584
585      public void copyValues(PractitionerCommunicationComponent dst) {
586        super.copyValues(dst);
587        dst.language = language == null ? null : language.copy();
588        dst.preferred = preferred == null ? null : preferred.copy();
589      }
590
591      @Override
592      public boolean equalsDeep(Base other_) {
593        if (!super.equalsDeep(other_))
594          return false;
595        if (!(other_ instanceof PractitionerCommunicationComponent))
596          return false;
597        PractitionerCommunicationComponent o = (PractitionerCommunicationComponent) other_;
598        return compareDeep(language, o.language, true) && compareDeep(preferred, o.preferred, true);
599      }
600
601      @Override
602      public boolean equalsShallow(Base other_) {
603        if (!super.equalsShallow(other_))
604          return false;
605        if (!(other_ instanceof PractitionerCommunicationComponent))
606          return false;
607        PractitionerCommunicationComponent o = (PractitionerCommunicationComponent) other_;
608        return compareValues(preferred, o.preferred, true);
609      }
610
611      public boolean isEmpty() {
612        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(language, preferred);
613      }
614
615  public String fhirType() {
616    return "Practitioner.communication";
617
618  }
619
620  }
621
622    /**
623     * An identifier that applies to this person in this role.
624     */
625    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
626    @Description(shortDefinition="An identifier for the person as this agent", formalDefinition="An identifier that applies to this person in this role." )
627    protected List<Identifier> identifier;
628
629    /**
630     * Whether this practitioner's record is in active use.
631     */
632    @Child(name = "active", type = {BooleanType.class}, order=1, min=0, max=1, modifier=true, summary=true)
633    @Description(shortDefinition="Whether this practitioner's record is in active use", formalDefinition="Whether this practitioner's record is in active use." )
634    protected BooleanType active;
635
636    /**
637     * The name(s) associated with the practitioner.
638     */
639    @Child(name = "name", type = {HumanName.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
640    @Description(shortDefinition="The name(s) associated with the practitioner", formalDefinition="The name(s) associated with the practitioner." )
641    protected List<HumanName> name;
642
643    /**
644     * A contact detail for the practitioner, e.g. a telephone number or an email address.
645     */
646    @Child(name = "telecom", type = {ContactPoint.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
647    @Description(shortDefinition="A contact detail for the practitioner (that apply to all roles)", formalDefinition="A contact detail for the practitioner, e.g. a telephone number or an email address." )
648    protected List<ContactPoint> telecom;
649
650    /**
651     * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
652     */
653    @Child(name = "gender", type = {CodeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
654    @Description(shortDefinition="male | female | other | unknown", formalDefinition="Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes." )
655    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administrative-gender")
656    protected Enumeration<AdministrativeGender> gender;
657
658    /**
659     * The date of birth for the practitioner.
660     */
661    @Child(name = "birthDate", type = {DateType.class}, order=5, min=0, max=1, modifier=false, summary=true)
662    @Description(shortDefinition="The date  on which the practitioner was born", formalDefinition="The date of birth for the practitioner." )
663    protected DateType birthDate;
664
665    /**
666     * Indicates if the practitioner is deceased or not.
667     */
668    @Child(name = "deceased", type = {BooleanType.class, DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
669    @Description(shortDefinition="Indicates if the practitioner is deceased or not", formalDefinition="Indicates if the practitioner is deceased or not." )
670    protected DataType deceased;
671
672    /**
673     * Address(es) of the practitioner that are not role specific (typically home address). 
674Work addresses are not typically entered in this property as they are usually role dependent.
675     */
676    @Child(name = "address", type = {Address.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
677    @Description(shortDefinition="Address(es) of the practitioner that are not role specific (typically home address)", formalDefinition="Address(es) of the practitioner that are not role specific (typically home address). \rWork addresses are not typically entered in this property as they are usually role dependent." )
678    protected List<Address> address;
679
680    /**
681     * Image of the person.
682     */
683    @Child(name = "photo", type = {Attachment.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
684    @Description(shortDefinition="Image of the person", formalDefinition="Image of the person." )
685    protected List<Attachment> photo;
686
687    /**
688     * The official qualifications, certifications, accreditations, training, licenses (and other types of educations/skills/capabilities) that authorize or otherwise pertain to the provision of care by the practitioner.
689
690For example, a medical license issued by a medical board of licensure authorizing the practitioner to practice medicine within a certain locality.
691     */
692    @Child(name = "qualification", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
693    @Description(shortDefinition="Qualifications, certifications, accreditations, licenses, training, etc. pertaining to the provision of care", formalDefinition="The official qualifications, certifications, accreditations, training, licenses (and other types of educations/skills/capabilities) that authorize or otherwise pertain to the provision of care by the practitioner.\r\rFor example, a medical license issued by a medical board of licensure authorizing the practitioner to practice medicine within a certain locality." )
694    protected List<PractitionerQualificationComponent> qualification;
695
696    /**
697     * A language which may be used to communicate with the practitioner, often for correspondence/administrative purposes.
698
699The `PractitionerRole.communication` property should be used for publishing the languages that a practitioner is able to communicate with patients (on a per Organization/Role basis).
700     */
701    @Child(name = "communication", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
702    @Description(shortDefinition="A language which may be used to communicate with the practitioner", formalDefinition="A language which may be used to communicate with the practitioner, often for correspondence/administrative purposes.\r\rThe `PractitionerRole.communication` property should be used for publishing the languages that a practitioner is able to communicate with patients (on a per Organization/Role basis)." )
703    protected List<PractitionerCommunicationComponent> communication;
704
705    private static final long serialVersionUID = -54730811L;
706
707  /**
708   * Constructor
709   */
710    public Practitioner() {
711      super();
712    }
713
714    /**
715     * @return {@link #identifier} (An identifier that applies to this person in this role.)
716     */
717    public List<Identifier> getIdentifier() { 
718      if (this.identifier == null)
719        this.identifier = new ArrayList<Identifier>();
720      return this.identifier;
721    }
722
723    /**
724     * @return Returns a reference to <code>this</code> for easy method chaining
725     */
726    public Practitioner setIdentifier(List<Identifier> theIdentifier) { 
727      this.identifier = theIdentifier;
728      return this;
729    }
730
731    public boolean hasIdentifier() { 
732      if (this.identifier == null)
733        return false;
734      for (Identifier item : this.identifier)
735        if (!item.isEmpty())
736          return true;
737      return false;
738    }
739
740    public Identifier addIdentifier() { //3
741      Identifier t = new Identifier();
742      if (this.identifier == null)
743        this.identifier = new ArrayList<Identifier>();
744      this.identifier.add(t);
745      return t;
746    }
747
748    public Practitioner addIdentifier(Identifier t) { //3
749      if (t == null)
750        return this;
751      if (this.identifier == null)
752        this.identifier = new ArrayList<Identifier>();
753      this.identifier.add(t);
754      return this;
755    }
756
757    /**
758     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
759     */
760    public Identifier getIdentifierFirstRep() { 
761      if (getIdentifier().isEmpty()) {
762        addIdentifier();
763      }
764      return getIdentifier().get(0);
765    }
766
767    /**
768     * @return {@link #active} (Whether this practitioner's record is in active use.). This is the underlying object with id, value and extensions. The accessor "getActive" gives direct access to the value
769     */
770    public BooleanType getActiveElement() { 
771      if (this.active == null)
772        if (Configuration.errorOnAutoCreate())
773          throw new Error("Attempt to auto-create Practitioner.active");
774        else if (Configuration.doAutoCreate())
775          this.active = new BooleanType(); // bb
776      return this.active;
777    }
778
779    public boolean hasActiveElement() { 
780      return this.active != null && !this.active.isEmpty();
781    }
782
783    public boolean hasActive() { 
784      return this.active != null && !this.active.isEmpty();
785    }
786
787    /**
788     * @param value {@link #active} (Whether this practitioner's record is in active use.). This is the underlying object with id, value and extensions. The accessor "getActive" gives direct access to the value
789     */
790    public Practitioner setActiveElement(BooleanType value) { 
791      this.active = value;
792      return this;
793    }
794
795    /**
796     * @return Whether this practitioner's record is in active use.
797     */
798    public boolean getActive() { 
799      return this.active == null || this.active.isEmpty() ? false : this.active.getValue();
800    }
801
802    /**
803     * @param value Whether this practitioner's record is in active use.
804     */
805    public Practitioner setActive(boolean value) { 
806        if (this.active == null)
807          this.active = new BooleanType();
808        this.active.setValue(value);
809      return this;
810    }
811
812    /**
813     * @return {@link #name} (The name(s) associated with the practitioner.)
814     */
815    public List<HumanName> getName() { 
816      if (this.name == null)
817        this.name = new ArrayList<HumanName>();
818      return this.name;
819    }
820
821    /**
822     * @return Returns a reference to <code>this</code> for easy method chaining
823     */
824    public Practitioner setName(List<HumanName> theName) { 
825      this.name = theName;
826      return this;
827    }
828
829    public boolean hasName() { 
830      if (this.name == null)
831        return false;
832      for (HumanName item : this.name)
833        if (!item.isEmpty())
834          return true;
835      return false;
836    }
837
838    public HumanName addName() { //3
839      HumanName t = new HumanName();
840      if (this.name == null)
841        this.name = new ArrayList<HumanName>();
842      this.name.add(t);
843      return t;
844    }
845
846    public Practitioner addName(HumanName t) { //3
847      if (t == null)
848        return this;
849      if (this.name == null)
850        this.name = new ArrayList<HumanName>();
851      this.name.add(t);
852      return this;
853    }
854
855    /**
856     * @return The first repetition of repeating field {@link #name}, creating it if it does not already exist {3}
857     */
858    public HumanName getNameFirstRep() { 
859      if (getName().isEmpty()) {
860        addName();
861      }
862      return getName().get(0);
863    }
864
865    /**
866     * @return {@link #telecom} (A contact detail for the practitioner, e.g. a telephone number or an email address.)
867     */
868    public List<ContactPoint> getTelecom() { 
869      if (this.telecom == null)
870        this.telecom = new ArrayList<ContactPoint>();
871      return this.telecom;
872    }
873
874    /**
875     * @return Returns a reference to <code>this</code> for easy method chaining
876     */
877    public Practitioner setTelecom(List<ContactPoint> theTelecom) { 
878      this.telecom = theTelecom;
879      return this;
880    }
881
882    public boolean hasTelecom() { 
883      if (this.telecom == null)
884        return false;
885      for (ContactPoint item : this.telecom)
886        if (!item.isEmpty())
887          return true;
888      return false;
889    }
890
891    public ContactPoint addTelecom() { //3
892      ContactPoint t = new ContactPoint();
893      if (this.telecom == null)
894        this.telecom = new ArrayList<ContactPoint>();
895      this.telecom.add(t);
896      return t;
897    }
898
899    public Practitioner addTelecom(ContactPoint t) { //3
900      if (t == null)
901        return this;
902      if (this.telecom == null)
903        this.telecom = new ArrayList<ContactPoint>();
904      this.telecom.add(t);
905      return this;
906    }
907
908    /**
909     * @return The first repetition of repeating field {@link #telecom}, creating it if it does not already exist {3}
910     */
911    public ContactPoint getTelecomFirstRep() { 
912      if (getTelecom().isEmpty()) {
913        addTelecom();
914      }
915      return getTelecom().get(0);
916    }
917
918    /**
919     * @return {@link #gender} (Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.). This is the underlying object with id, value and extensions. The accessor "getGender" gives direct access to the value
920     */
921    public Enumeration<AdministrativeGender> getGenderElement() { 
922      if (this.gender == null)
923        if (Configuration.errorOnAutoCreate())
924          throw new Error("Attempt to auto-create Practitioner.gender");
925        else if (Configuration.doAutoCreate())
926          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory()); // bb
927      return this.gender;
928    }
929
930    public boolean hasGenderElement() { 
931      return this.gender != null && !this.gender.isEmpty();
932    }
933
934    public boolean hasGender() { 
935      return this.gender != null && !this.gender.isEmpty();
936    }
937
938    /**
939     * @param value {@link #gender} (Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.). This is the underlying object with id, value and extensions. The accessor "getGender" gives direct access to the value
940     */
941    public Practitioner setGenderElement(Enumeration<AdministrativeGender> value) { 
942      this.gender = value;
943      return this;
944    }
945
946    /**
947     * @return Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
948     */
949    public AdministrativeGender getGender() { 
950      return this.gender == null ? null : this.gender.getValue();
951    }
952
953    /**
954     * @param value Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
955     */
956    public Practitioner setGender(AdministrativeGender value) { 
957      if (value == null)
958        this.gender = null;
959      else {
960        if (this.gender == null)
961          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory());
962        this.gender.setValue(value);
963      }
964      return this;
965    }
966
967    /**
968     * @return {@link #birthDate} (The date of birth for the practitioner.). This is the underlying object with id, value and extensions. The accessor "getBirthDate" gives direct access to the value
969     */
970    public DateType getBirthDateElement() { 
971      if (this.birthDate == null)
972        if (Configuration.errorOnAutoCreate())
973          throw new Error("Attempt to auto-create Practitioner.birthDate");
974        else if (Configuration.doAutoCreate())
975          this.birthDate = new DateType(); // bb
976      return this.birthDate;
977    }
978
979    public boolean hasBirthDateElement() { 
980      return this.birthDate != null && !this.birthDate.isEmpty();
981    }
982
983    public boolean hasBirthDate() { 
984      return this.birthDate != null && !this.birthDate.isEmpty();
985    }
986
987    /**
988     * @param value {@link #birthDate} (The date of birth for the practitioner.). This is the underlying object with id, value and extensions. The accessor "getBirthDate" gives direct access to the value
989     */
990    public Practitioner setBirthDateElement(DateType value) { 
991      this.birthDate = value;
992      return this;
993    }
994
995    /**
996     * @return The date of birth for the practitioner.
997     */
998    public Date getBirthDate() { 
999      return this.birthDate == null ? null : this.birthDate.getValue();
1000    }
1001
1002    /**
1003     * @param value The date of birth for the practitioner.
1004     */
1005    public Practitioner setBirthDate(Date value) { 
1006      if (value == null)
1007        this.birthDate = null;
1008      else {
1009        if (this.birthDate == null)
1010          this.birthDate = new DateType();
1011        this.birthDate.setValue(value);
1012      }
1013      return this;
1014    }
1015
1016    /**
1017     * @return {@link #deceased} (Indicates if the practitioner is deceased or not.)
1018     */
1019    public DataType getDeceased() { 
1020      return this.deceased;
1021    }
1022
1023    /**
1024     * @return {@link #deceased} (Indicates if the practitioner is deceased or not.)
1025     */
1026    public BooleanType getDeceasedBooleanType() throws FHIRException { 
1027      if (this.deceased == null)
1028        this.deceased = new BooleanType();
1029      if (!(this.deceased instanceof BooleanType))
1030        throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.deceased.getClass().getName()+" was encountered");
1031      return (BooleanType) this.deceased;
1032    }
1033
1034    public boolean hasDeceasedBooleanType() { 
1035      return this != null && this.deceased instanceof BooleanType;
1036    }
1037
1038    /**
1039     * @return {@link #deceased} (Indicates if the practitioner is deceased or not.)
1040     */
1041    public DateTimeType getDeceasedDateTimeType() throws FHIRException { 
1042      if (this.deceased == null)
1043        this.deceased = new DateTimeType();
1044      if (!(this.deceased instanceof DateTimeType))
1045        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.deceased.getClass().getName()+" was encountered");
1046      return (DateTimeType) this.deceased;
1047    }
1048
1049    public boolean hasDeceasedDateTimeType() { 
1050      return this != null && this.deceased instanceof DateTimeType;
1051    }
1052
1053    public boolean hasDeceased() { 
1054      return this.deceased != null && !this.deceased.isEmpty();
1055    }
1056
1057    /**
1058     * @param value {@link #deceased} (Indicates if the practitioner is deceased or not.)
1059     */
1060    public Practitioner setDeceased(DataType value) { 
1061      if (value != null && !(value instanceof BooleanType || value instanceof DateTimeType))
1062        throw new FHIRException("Not the right type for Practitioner.deceased[x]: "+value.fhirType());
1063      this.deceased = value;
1064      return this;
1065    }
1066
1067    /**
1068     * @return {@link #address} (Address(es) of the practitioner that are not role specific (typically home address). 
1069Work addresses are not typically entered in this property as they are usually role dependent.)
1070     */
1071    public List<Address> getAddress() { 
1072      if (this.address == null)
1073        this.address = new ArrayList<Address>();
1074      return this.address;
1075    }
1076
1077    /**
1078     * @return Returns a reference to <code>this</code> for easy method chaining
1079     */
1080    public Practitioner setAddress(List<Address> theAddress) { 
1081      this.address = theAddress;
1082      return this;
1083    }
1084
1085    public boolean hasAddress() { 
1086      if (this.address == null)
1087        return false;
1088      for (Address item : this.address)
1089        if (!item.isEmpty())
1090          return true;
1091      return false;
1092    }
1093
1094    public Address addAddress() { //3
1095      Address t = new Address();
1096      if (this.address == null)
1097        this.address = new ArrayList<Address>();
1098      this.address.add(t);
1099      return t;
1100    }
1101
1102    public Practitioner addAddress(Address t) { //3
1103      if (t == null)
1104        return this;
1105      if (this.address == null)
1106        this.address = new ArrayList<Address>();
1107      this.address.add(t);
1108      return this;
1109    }
1110
1111    /**
1112     * @return The first repetition of repeating field {@link #address}, creating it if it does not already exist {3}
1113     */
1114    public Address getAddressFirstRep() { 
1115      if (getAddress().isEmpty()) {
1116        addAddress();
1117      }
1118      return getAddress().get(0);
1119    }
1120
1121    /**
1122     * @return {@link #photo} (Image of the person.)
1123     */
1124    public List<Attachment> getPhoto() { 
1125      if (this.photo == null)
1126        this.photo = new ArrayList<Attachment>();
1127      return this.photo;
1128    }
1129
1130    /**
1131     * @return Returns a reference to <code>this</code> for easy method chaining
1132     */
1133    public Practitioner setPhoto(List<Attachment> thePhoto) { 
1134      this.photo = thePhoto;
1135      return this;
1136    }
1137
1138    public boolean hasPhoto() { 
1139      if (this.photo == null)
1140        return false;
1141      for (Attachment item : this.photo)
1142        if (!item.isEmpty())
1143          return true;
1144      return false;
1145    }
1146
1147    public Attachment addPhoto() { //3
1148      Attachment t = new Attachment();
1149      if (this.photo == null)
1150        this.photo = new ArrayList<Attachment>();
1151      this.photo.add(t);
1152      return t;
1153    }
1154
1155    public Practitioner addPhoto(Attachment t) { //3
1156      if (t == null)
1157        return this;
1158      if (this.photo == null)
1159        this.photo = new ArrayList<Attachment>();
1160      this.photo.add(t);
1161      return this;
1162    }
1163
1164    /**
1165     * @return The first repetition of repeating field {@link #photo}, creating it if it does not already exist {3}
1166     */
1167    public Attachment getPhotoFirstRep() { 
1168      if (getPhoto().isEmpty()) {
1169        addPhoto();
1170      }
1171      return getPhoto().get(0);
1172    }
1173
1174    /**
1175     * @return {@link #qualification} (The official qualifications, certifications, accreditations, training, licenses (and other types of educations/skills/capabilities) that authorize or otherwise pertain to the provision of care by the practitioner.
1176
1177For example, a medical license issued by a medical board of licensure authorizing the practitioner to practice medicine within a certain locality.)
1178     */
1179    public List<PractitionerQualificationComponent> getQualification() { 
1180      if (this.qualification == null)
1181        this.qualification = new ArrayList<PractitionerQualificationComponent>();
1182      return this.qualification;
1183    }
1184
1185    /**
1186     * @return Returns a reference to <code>this</code> for easy method chaining
1187     */
1188    public Practitioner setQualification(List<PractitionerQualificationComponent> theQualification) { 
1189      this.qualification = theQualification;
1190      return this;
1191    }
1192
1193    public boolean hasQualification() { 
1194      if (this.qualification == null)
1195        return false;
1196      for (PractitionerQualificationComponent item : this.qualification)
1197        if (!item.isEmpty())
1198          return true;
1199      return false;
1200    }
1201
1202    public PractitionerQualificationComponent addQualification() { //3
1203      PractitionerQualificationComponent t = new PractitionerQualificationComponent();
1204      if (this.qualification == null)
1205        this.qualification = new ArrayList<PractitionerQualificationComponent>();
1206      this.qualification.add(t);
1207      return t;
1208    }
1209
1210    public Practitioner addQualification(PractitionerQualificationComponent t) { //3
1211      if (t == null)
1212        return this;
1213      if (this.qualification == null)
1214        this.qualification = new ArrayList<PractitionerQualificationComponent>();
1215      this.qualification.add(t);
1216      return this;
1217    }
1218
1219    /**
1220     * @return The first repetition of repeating field {@link #qualification}, creating it if it does not already exist {3}
1221     */
1222    public PractitionerQualificationComponent getQualificationFirstRep() { 
1223      if (getQualification().isEmpty()) {
1224        addQualification();
1225      }
1226      return getQualification().get(0);
1227    }
1228
1229    /**
1230     * @return {@link #communication} (A language which may be used to communicate with the practitioner, often for correspondence/administrative purposes.
1231
1232The `PractitionerRole.communication` property should be used for publishing the languages that a practitioner is able to communicate with patients (on a per Organization/Role basis).)
1233     */
1234    public List<PractitionerCommunicationComponent> getCommunication() { 
1235      if (this.communication == null)
1236        this.communication = new ArrayList<PractitionerCommunicationComponent>();
1237      return this.communication;
1238    }
1239
1240    /**
1241     * @return Returns a reference to <code>this</code> for easy method chaining
1242     */
1243    public Practitioner setCommunication(List<PractitionerCommunicationComponent> theCommunication) { 
1244      this.communication = theCommunication;
1245      return this;
1246    }
1247
1248    public boolean hasCommunication() { 
1249      if (this.communication == null)
1250        return false;
1251      for (PractitionerCommunicationComponent item : this.communication)
1252        if (!item.isEmpty())
1253          return true;
1254      return false;
1255    }
1256
1257    public PractitionerCommunicationComponent addCommunication() { //3
1258      PractitionerCommunicationComponent t = new PractitionerCommunicationComponent();
1259      if (this.communication == null)
1260        this.communication = new ArrayList<PractitionerCommunicationComponent>();
1261      this.communication.add(t);
1262      return t;
1263    }
1264
1265    public Practitioner addCommunication(PractitionerCommunicationComponent t) { //3
1266      if (t == null)
1267        return this;
1268      if (this.communication == null)
1269        this.communication = new ArrayList<PractitionerCommunicationComponent>();
1270      this.communication.add(t);
1271      return this;
1272    }
1273
1274    /**
1275     * @return The first repetition of repeating field {@link #communication}, creating it if it does not already exist {3}
1276     */
1277    public PractitionerCommunicationComponent getCommunicationFirstRep() { 
1278      if (getCommunication().isEmpty()) {
1279        addCommunication();
1280      }
1281      return getCommunication().get(0);
1282    }
1283
1284      protected void listChildren(List<Property> children) {
1285        super.listChildren(children);
1286        children.add(new Property("identifier", "Identifier", "An identifier that applies to this person in this role.", 0, java.lang.Integer.MAX_VALUE, identifier));
1287        children.add(new Property("active", "boolean", "Whether this practitioner's record is in active use.", 0, 1, active));
1288        children.add(new Property("name", "HumanName", "The name(s) associated with the practitioner.", 0, java.lang.Integer.MAX_VALUE, name));
1289        children.add(new Property("telecom", "ContactPoint", "A contact detail for the practitioner, e.g. a telephone number or an email address.", 0, java.lang.Integer.MAX_VALUE, telecom));
1290        children.add(new Property("gender", "code", "Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.", 0, 1, gender));
1291        children.add(new Property("birthDate", "date", "The date of birth for the practitioner.", 0, 1, birthDate));
1292        children.add(new Property("deceased[x]", "boolean|dateTime", "Indicates if the practitioner is deceased or not.", 0, 1, deceased));
1293        children.add(new Property("address", "Address", "Address(es) of the practitioner that are not role specific (typically home address). \rWork addresses are not typically entered in this property as they are usually role dependent.", 0, java.lang.Integer.MAX_VALUE, address));
1294        children.add(new Property("photo", "Attachment", "Image of the person.", 0, java.lang.Integer.MAX_VALUE, photo));
1295        children.add(new Property("qualification", "", "The official qualifications, certifications, accreditations, training, licenses (and other types of educations/skills/capabilities) that authorize or otherwise pertain to the provision of care by the practitioner.\r\rFor example, a medical license issued by a medical board of licensure authorizing the practitioner to practice medicine within a certain locality.", 0, java.lang.Integer.MAX_VALUE, qualification));
1296        children.add(new Property("communication", "", "A language which may be used to communicate with the practitioner, often for correspondence/administrative purposes.\r\rThe `PractitionerRole.communication` property should be used for publishing the languages that a practitioner is able to communicate with patients (on a per Organization/Role basis).", 0, java.lang.Integer.MAX_VALUE, communication));
1297      }
1298
1299      @Override
1300      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1301        switch (_hash) {
1302        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "An identifier that applies to this person in this role.", 0, java.lang.Integer.MAX_VALUE, identifier);
1303        case -1422950650: /*active*/  return new Property("active", "boolean", "Whether this practitioner's record is in active use.", 0, 1, active);
1304        case 3373707: /*name*/  return new Property("name", "HumanName", "The name(s) associated with the practitioner.", 0, java.lang.Integer.MAX_VALUE, name);
1305        case -1429363305: /*telecom*/  return new Property("telecom", "ContactPoint", "A contact detail for the practitioner, e.g. a telephone number or an email address.", 0, java.lang.Integer.MAX_VALUE, telecom);
1306        case -1249512767: /*gender*/  return new Property("gender", "code", "Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.", 0, 1, gender);
1307        case -1210031859: /*birthDate*/  return new Property("birthDate", "date", "The date of birth for the practitioner.", 0, 1, birthDate);
1308        case -1311442804: /*deceased[x]*/  return new Property("deceased[x]", "boolean|dateTime", "Indicates if the practitioner is deceased or not.", 0, 1, deceased);
1309        case 561497972: /*deceased*/  return new Property("deceased[x]", "boolean|dateTime", "Indicates if the practitioner is deceased or not.", 0, 1, deceased);
1310        case 497463828: /*deceasedBoolean*/  return new Property("deceased[x]", "boolean", "Indicates if the practitioner is deceased or not.", 0, 1, deceased);
1311        case -1971804369: /*deceasedDateTime*/  return new Property("deceased[x]", "dateTime", "Indicates if the practitioner is deceased or not.", 0, 1, deceased);
1312        case -1147692044: /*address*/  return new Property("address", "Address", "Address(es) of the practitioner that are not role specific (typically home address). \rWork addresses are not typically entered in this property as they are usually role dependent.", 0, java.lang.Integer.MAX_VALUE, address);
1313        case 106642994: /*photo*/  return new Property("photo", "Attachment", "Image of the person.", 0, java.lang.Integer.MAX_VALUE, photo);
1314        case -631333393: /*qualification*/  return new Property("qualification", "", "The official qualifications, certifications, accreditations, training, licenses (and other types of educations/skills/capabilities) that authorize or otherwise pertain to the provision of care by the practitioner.\r\rFor example, a medical license issued by a medical board of licensure authorizing the practitioner to practice medicine within a certain locality.", 0, java.lang.Integer.MAX_VALUE, qualification);
1315        case -1035284522: /*communication*/  return new Property("communication", "", "A language which may be used to communicate with the practitioner, often for correspondence/administrative purposes.\r\rThe `PractitionerRole.communication` property should be used for publishing the languages that a practitioner is able to communicate with patients (on a per Organization/Role basis).", 0, java.lang.Integer.MAX_VALUE, communication);
1316        default: return super.getNamedProperty(_hash, _name, _checkValid);
1317        }
1318
1319      }
1320
1321      @Override
1322      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1323        switch (hash) {
1324        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1325        case -1422950650: /*active*/ return this.active == null ? new Base[0] : new Base[] {this.active}; // BooleanType
1326        case 3373707: /*name*/ return this.name == null ? new Base[0] : this.name.toArray(new Base[this.name.size()]); // HumanName
1327        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
1328        case -1249512767: /*gender*/ return this.gender == null ? new Base[0] : new Base[] {this.gender}; // Enumeration<AdministrativeGender>
1329        case -1210031859: /*birthDate*/ return this.birthDate == null ? new Base[0] : new Base[] {this.birthDate}; // DateType
1330        case 561497972: /*deceased*/ return this.deceased == null ? new Base[0] : new Base[] {this.deceased}; // DataType
1331        case -1147692044: /*address*/ return this.address == null ? new Base[0] : this.address.toArray(new Base[this.address.size()]); // Address
1332        case 106642994: /*photo*/ return this.photo == null ? new Base[0] : this.photo.toArray(new Base[this.photo.size()]); // Attachment
1333        case -631333393: /*qualification*/ return this.qualification == null ? new Base[0] : this.qualification.toArray(new Base[this.qualification.size()]); // PractitionerQualificationComponent
1334        case -1035284522: /*communication*/ return this.communication == null ? new Base[0] : this.communication.toArray(new Base[this.communication.size()]); // PractitionerCommunicationComponent
1335        default: return super.getProperty(hash, name, checkValid);
1336        }
1337
1338      }
1339
1340      @Override
1341      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1342        switch (hash) {
1343        case -1618432855: // identifier
1344          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1345          return value;
1346        case -1422950650: // active
1347          this.active = TypeConvertor.castToBoolean(value); // BooleanType
1348          return value;
1349        case 3373707: // name
1350          this.getName().add(TypeConvertor.castToHumanName(value)); // HumanName
1351          return value;
1352        case -1429363305: // telecom
1353          this.getTelecom().add(TypeConvertor.castToContactPoint(value)); // ContactPoint
1354          return value;
1355        case -1249512767: // gender
1356          value = new AdministrativeGenderEnumFactory().fromType(TypeConvertor.castToCode(value));
1357          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
1358          return value;
1359        case -1210031859: // birthDate
1360          this.birthDate = TypeConvertor.castToDate(value); // DateType
1361          return value;
1362        case 561497972: // deceased
1363          this.deceased = TypeConvertor.castToType(value); // DataType
1364          return value;
1365        case -1147692044: // address
1366          this.getAddress().add(TypeConvertor.castToAddress(value)); // Address
1367          return value;
1368        case 106642994: // photo
1369          this.getPhoto().add(TypeConvertor.castToAttachment(value)); // Attachment
1370          return value;
1371        case -631333393: // qualification
1372          this.getQualification().add((PractitionerQualificationComponent) value); // PractitionerQualificationComponent
1373          return value;
1374        case -1035284522: // communication
1375          this.getCommunication().add((PractitionerCommunicationComponent) value); // PractitionerCommunicationComponent
1376          return value;
1377        default: return super.setProperty(hash, name, value);
1378        }
1379
1380      }
1381
1382      @Override
1383      public Base setProperty(String name, Base value) throws FHIRException {
1384        if (name.equals("identifier")) {
1385          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1386        } else if (name.equals("active")) {
1387          this.active = TypeConvertor.castToBoolean(value); // BooleanType
1388        } else if (name.equals("name")) {
1389          this.getName().add(TypeConvertor.castToHumanName(value));
1390        } else if (name.equals("telecom")) {
1391          this.getTelecom().add(TypeConvertor.castToContactPoint(value));
1392        } else if (name.equals("gender")) {
1393          value = new AdministrativeGenderEnumFactory().fromType(TypeConvertor.castToCode(value));
1394          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
1395        } else if (name.equals("birthDate")) {
1396          this.birthDate = TypeConvertor.castToDate(value); // DateType
1397        } else if (name.equals("deceased[x]")) {
1398          this.deceased = TypeConvertor.castToType(value); // DataType
1399        } else if (name.equals("address")) {
1400          this.getAddress().add(TypeConvertor.castToAddress(value));
1401        } else if (name.equals("photo")) {
1402          this.getPhoto().add(TypeConvertor.castToAttachment(value));
1403        } else if (name.equals("qualification")) {
1404          this.getQualification().add((PractitionerQualificationComponent) value);
1405        } else if (name.equals("communication")) {
1406          this.getCommunication().add((PractitionerCommunicationComponent) value);
1407        } else
1408          return super.setProperty(name, value);
1409        return value;
1410      }
1411
1412      @Override
1413      public Base makeProperty(int hash, String name) throws FHIRException {
1414        switch (hash) {
1415        case -1618432855:  return addIdentifier(); 
1416        case -1422950650:  return getActiveElement();
1417        case 3373707:  return addName(); 
1418        case -1429363305:  return addTelecom(); 
1419        case -1249512767:  return getGenderElement();
1420        case -1210031859:  return getBirthDateElement();
1421        case -1311442804:  return getDeceased();
1422        case 561497972:  return getDeceased();
1423        case -1147692044:  return addAddress(); 
1424        case 106642994:  return addPhoto(); 
1425        case -631333393:  return addQualification(); 
1426        case -1035284522:  return addCommunication(); 
1427        default: return super.makeProperty(hash, name);
1428        }
1429
1430      }
1431
1432      @Override
1433      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1434        switch (hash) {
1435        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1436        case -1422950650: /*active*/ return new String[] {"boolean"};
1437        case 3373707: /*name*/ return new String[] {"HumanName"};
1438        case -1429363305: /*telecom*/ return new String[] {"ContactPoint"};
1439        case -1249512767: /*gender*/ return new String[] {"code"};
1440        case -1210031859: /*birthDate*/ return new String[] {"date"};
1441        case 561497972: /*deceased*/ return new String[] {"boolean", "dateTime"};
1442        case -1147692044: /*address*/ return new String[] {"Address"};
1443        case 106642994: /*photo*/ return new String[] {"Attachment"};
1444        case -631333393: /*qualification*/ return new String[] {};
1445        case -1035284522: /*communication*/ return new String[] {};
1446        default: return super.getTypesForProperty(hash, name);
1447        }
1448
1449      }
1450
1451      @Override
1452      public Base addChild(String name) throws FHIRException {
1453        if (name.equals("identifier")) {
1454          return addIdentifier();
1455        }
1456        else if (name.equals("active")) {
1457          throw new FHIRException("Cannot call addChild on a singleton property Practitioner.active");
1458        }
1459        else if (name.equals("name")) {
1460          return addName();
1461        }
1462        else if (name.equals("telecom")) {
1463          return addTelecom();
1464        }
1465        else if (name.equals("gender")) {
1466          throw new FHIRException("Cannot call addChild on a singleton property Practitioner.gender");
1467        }
1468        else if (name.equals("birthDate")) {
1469          throw new FHIRException("Cannot call addChild on a singleton property Practitioner.birthDate");
1470        }
1471        else if (name.equals("deceasedBoolean")) {
1472          this.deceased = new BooleanType();
1473          return this.deceased;
1474        }
1475        else if (name.equals("deceasedDateTime")) {
1476          this.deceased = new DateTimeType();
1477          return this.deceased;
1478        }
1479        else if (name.equals("address")) {
1480          return addAddress();
1481        }
1482        else if (name.equals("photo")) {
1483          return addPhoto();
1484        }
1485        else if (name.equals("qualification")) {
1486          return addQualification();
1487        }
1488        else if (name.equals("communication")) {
1489          return addCommunication();
1490        }
1491        else
1492          return super.addChild(name);
1493      }
1494
1495  public String fhirType() {
1496    return "Practitioner";
1497
1498  }
1499
1500      public Practitioner copy() {
1501        Practitioner dst = new Practitioner();
1502        copyValues(dst);
1503        return dst;
1504      }
1505
1506      public void copyValues(Practitioner dst) {
1507        super.copyValues(dst);
1508        if (identifier != null) {
1509          dst.identifier = new ArrayList<Identifier>();
1510          for (Identifier i : identifier)
1511            dst.identifier.add(i.copy());
1512        };
1513        dst.active = active == null ? null : active.copy();
1514        if (name != null) {
1515          dst.name = new ArrayList<HumanName>();
1516          for (HumanName i : name)
1517            dst.name.add(i.copy());
1518        };
1519        if (telecom != null) {
1520          dst.telecom = new ArrayList<ContactPoint>();
1521          for (ContactPoint i : telecom)
1522            dst.telecom.add(i.copy());
1523        };
1524        dst.gender = gender == null ? null : gender.copy();
1525        dst.birthDate = birthDate == null ? null : birthDate.copy();
1526        dst.deceased = deceased == null ? null : deceased.copy();
1527        if (address != null) {
1528          dst.address = new ArrayList<Address>();
1529          for (Address i : address)
1530            dst.address.add(i.copy());
1531        };
1532        if (photo != null) {
1533          dst.photo = new ArrayList<Attachment>();
1534          for (Attachment i : photo)
1535            dst.photo.add(i.copy());
1536        };
1537        if (qualification != null) {
1538          dst.qualification = new ArrayList<PractitionerQualificationComponent>();
1539          for (PractitionerQualificationComponent i : qualification)
1540            dst.qualification.add(i.copy());
1541        };
1542        if (communication != null) {
1543          dst.communication = new ArrayList<PractitionerCommunicationComponent>();
1544          for (PractitionerCommunicationComponent i : communication)
1545            dst.communication.add(i.copy());
1546        };
1547      }
1548
1549      protected Practitioner typedCopy() {
1550        return copy();
1551      }
1552
1553      @Override
1554      public boolean equalsDeep(Base other_) {
1555        if (!super.equalsDeep(other_))
1556          return false;
1557        if (!(other_ instanceof Practitioner))
1558          return false;
1559        Practitioner o = (Practitioner) other_;
1560        return compareDeep(identifier, o.identifier, true) && compareDeep(active, o.active, true) && compareDeep(name, o.name, true)
1561           && compareDeep(telecom, o.telecom, true) && compareDeep(gender, o.gender, true) && compareDeep(birthDate, o.birthDate, true)
1562           && compareDeep(deceased, o.deceased, true) && compareDeep(address, o.address, true) && compareDeep(photo, o.photo, true)
1563           && compareDeep(qualification, o.qualification, true) && compareDeep(communication, o.communication, true)
1564          ;
1565      }
1566
1567      @Override
1568      public boolean equalsShallow(Base other_) {
1569        if (!super.equalsShallow(other_))
1570          return false;
1571        if (!(other_ instanceof Practitioner))
1572          return false;
1573        Practitioner o = (Practitioner) other_;
1574        return compareValues(active, o.active, true) && compareValues(gender, o.gender, true) && compareValues(birthDate, o.birthDate, true)
1575          ;
1576      }
1577
1578      public boolean isEmpty() {
1579        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, active, name
1580          , telecom, gender, birthDate, deceased, address, photo, qualification, communication
1581          );
1582      }
1583
1584  @Override
1585  public ResourceType getResourceType() {
1586    return ResourceType.Practitioner;
1587   }
1588
1589 /**
1590   * Search parameter: <b>active</b>
1591   * <p>
1592   * Description: <b>Whether the practitioner record is active</b><br>
1593   * Type: <b>token</b><br>
1594   * Path: <b>Practitioner.active</b><br>
1595   * </p>
1596   */
1597  @SearchParamDefinition(name="active", path="Practitioner.active", description="Whether the practitioner record is active", type="token" )
1598  public static final String SP_ACTIVE = "active";
1599 /**
1600   * <b>Fluent Client</b> search parameter constant for <b>active</b>
1601   * <p>
1602   * Description: <b>Whether the practitioner record is active</b><br>
1603   * Type: <b>token</b><br>
1604   * Path: <b>Practitioner.active</b><br>
1605   * </p>
1606   */
1607  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTIVE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ACTIVE);
1608
1609 /**
1610   * Search parameter: <b>communication</b>
1611   * <p>
1612   * Description: <b>A language to communicate with the practitioner</b><br>
1613   * Type: <b>token</b><br>
1614   * Path: <b>Practitioner.communication.language</b><br>
1615   * </p>
1616   */
1617  @SearchParamDefinition(name="communication", path="Practitioner.communication.language", description="A language to communicate with the practitioner", type="token" )
1618  public static final String SP_COMMUNICATION = "communication";
1619 /**
1620   * <b>Fluent Client</b> search parameter constant for <b>communication</b>
1621   * <p>
1622   * Description: <b>A language to communicate with the practitioner</b><br>
1623   * Type: <b>token</b><br>
1624   * Path: <b>Practitioner.communication.language</b><br>
1625   * </p>
1626   */
1627  public static final ca.uhn.fhir.rest.gclient.TokenClientParam COMMUNICATION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_COMMUNICATION);
1628
1629 /**
1630   * Search parameter: <b>death-date</b>
1631   * <p>
1632   * Description: <b>The date of death has been provided and satisfies this search value</b><br>
1633   * Type: <b>date</b><br>
1634   * Path: <b>(Practitioner.deceased.ofType(dateTime))</b><br>
1635   * </p>
1636   */
1637  @SearchParamDefinition(name="death-date", path="(Practitioner.deceased.ofType(dateTime))", description="The date of death has been provided and satisfies this search value", type="date" )
1638  public static final String SP_DEATH_DATE = "death-date";
1639 /**
1640   * <b>Fluent Client</b> search parameter constant for <b>death-date</b>
1641   * <p>
1642   * Description: <b>The date of death has been provided and satisfies this search value</b><br>
1643   * Type: <b>date</b><br>
1644   * Path: <b>(Practitioner.deceased.ofType(dateTime))</b><br>
1645   * </p>
1646   */
1647  public static final ca.uhn.fhir.rest.gclient.DateClientParam DEATH_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DEATH_DATE);
1648
1649 /**
1650   * Search parameter: <b>deceased</b>
1651   * <p>
1652   * Description: <b>This Practitioner has been marked as deceased, or has a death date entered</b><br>
1653   * Type: <b>token</b><br>
1654   * Path: <b>Practitioner.deceased.exists() and Practitioner.deceased != false</b><br>
1655   * </p>
1656   */
1657  @SearchParamDefinition(name="deceased", path="Practitioner.deceased.exists() and Practitioner.deceased != false", description="This Practitioner has been marked as deceased, or has a death date entered", type="token" )
1658  public static final String SP_DECEASED = "deceased";
1659 /**
1660   * <b>Fluent Client</b> search parameter constant for <b>deceased</b>
1661   * <p>
1662   * Description: <b>This Practitioner has been marked as deceased, or has a death date entered</b><br>
1663   * Type: <b>token</b><br>
1664   * Path: <b>Practitioner.deceased.exists() and Practitioner.deceased != false</b><br>
1665   * </p>
1666   */
1667  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DECEASED = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DECEASED);
1668
1669 /**
1670   * Search parameter: <b>identifier</b>
1671   * <p>
1672   * Description: <b>A practitioner's Identifier</b><br>
1673   * Type: <b>token</b><br>
1674   * Path: <b>Practitioner.identifier | Practitioner.qualification.identifier</b><br>
1675   * </p>
1676   */
1677  @SearchParamDefinition(name="identifier", path="Practitioner.identifier | Practitioner.qualification.identifier", description="A practitioner's Identifier", type="token" )
1678  public static final String SP_IDENTIFIER = "identifier";
1679 /**
1680   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1681   * <p>
1682   * Description: <b>A practitioner's Identifier</b><br>
1683   * Type: <b>token</b><br>
1684   * Path: <b>Practitioner.identifier | Practitioner.qualification.identifier</b><br>
1685   * </p>
1686   */
1687  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1688
1689 /**
1690   * Search parameter: <b>name</b>
1691   * <p>
1692   * Description: <b>A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text</b><br>
1693   * Type: <b>string</b><br>
1694   * Path: <b>Practitioner.name</b><br>
1695   * </p>
1696   */
1697  @SearchParamDefinition(name="name", path="Practitioner.name", description="A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text", type="string" )
1698  public static final String SP_NAME = "name";
1699 /**
1700   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1701   * <p>
1702   * Description: <b>A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text</b><br>
1703   * Type: <b>string</b><br>
1704   * Path: <b>Practitioner.name</b><br>
1705   * </p>
1706   */
1707  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1708
1709 /**
1710   * Search parameter: <b>qualification-period</b>
1711   * <p>
1712   * Description: <b>The date(s) a qualification is valid for</b><br>
1713   * Type: <b>date</b><br>
1714   * Path: <b>Practitioner.qualification.period</b><br>
1715   * </p>
1716   */
1717  @SearchParamDefinition(name="qualification-period", path="Practitioner.qualification.period", description="The date(s) a qualification is valid for", type="date" )
1718  public static final String SP_QUALIFICATION_PERIOD = "qualification-period";
1719 /**
1720   * <b>Fluent Client</b> search parameter constant for <b>qualification-period</b>
1721   * <p>
1722   * Description: <b>The date(s) a qualification is valid for</b><br>
1723   * Type: <b>date</b><br>
1724   * Path: <b>Practitioner.qualification.period</b><br>
1725   * </p>
1726   */
1727  public static final ca.uhn.fhir.rest.gclient.DateClientParam QUALIFICATION_PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_QUALIFICATION_PERIOD);
1728
1729 /**
1730   * Search parameter: <b>address-city</b>
1731   * <p>
1732   * Description: <b>Multiple Resources: 
1733
1734* [Patient](patient.html): A city specified in an address
1735* [Person](person.html): A city specified in an address
1736* [Practitioner](practitioner.html): A city specified in an address
1737* [RelatedPerson](relatedperson.html): A city specified in an address
1738</b><br>
1739   * Type: <b>string</b><br>
1740   * Path: <b>Patient.address.city | Person.address.city | Practitioner.address.city | RelatedPerson.address.city</b><br>
1741   * </p>
1742   */
1743  @SearchParamDefinition(name="address-city", path="Patient.address.city | Person.address.city | Practitioner.address.city | RelatedPerson.address.city", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A city specified in an address\r\n* [Person](person.html): A city specified in an address\r\n* [Practitioner](practitioner.html): A city specified in an address\r\n* [RelatedPerson](relatedperson.html): A city specified in an address\r\n", type="string" )
1744  public static final String SP_ADDRESS_CITY = "address-city";
1745 /**
1746   * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
1747   * <p>
1748   * Description: <b>Multiple Resources: 
1749
1750* [Patient](patient.html): A city specified in an address
1751* [Person](person.html): A city specified in an address
1752* [Practitioner](practitioner.html): A city specified in an address
1753* [RelatedPerson](relatedperson.html): A city specified in an address
1754</b><br>
1755   * Type: <b>string</b><br>
1756   * Path: <b>Patient.address.city | Person.address.city | Practitioner.address.city | RelatedPerson.address.city</b><br>
1757   * </p>
1758   */
1759  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_CITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_CITY);
1760
1761 /**
1762   * Search parameter: <b>address-country</b>
1763   * <p>
1764   * Description: <b>Multiple Resources: 
1765
1766* [Patient](patient.html): A country specified in an address
1767* [Person](person.html): A country specified in an address
1768* [Practitioner](practitioner.html): A country specified in an address
1769* [RelatedPerson](relatedperson.html): A country specified in an address
1770</b><br>
1771   * Type: <b>string</b><br>
1772   * Path: <b>Patient.address.country | Person.address.country | Practitioner.address.country | RelatedPerson.address.country</b><br>
1773   * </p>
1774   */
1775  @SearchParamDefinition(name="address-country", path="Patient.address.country | Person.address.country | Practitioner.address.country | RelatedPerson.address.country", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A country specified in an address\r\n* [Person](person.html): A country specified in an address\r\n* [Practitioner](practitioner.html): A country specified in an address\r\n* [RelatedPerson](relatedperson.html): A country specified in an address\r\n", type="string" )
1776  public static final String SP_ADDRESS_COUNTRY = "address-country";
1777 /**
1778   * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
1779   * <p>
1780   * Description: <b>Multiple Resources: 
1781
1782* [Patient](patient.html): A country specified in an address
1783* [Person](person.html): A country specified in an address
1784* [Practitioner](practitioner.html): A country specified in an address
1785* [RelatedPerson](relatedperson.html): A country specified in an address
1786</b><br>
1787   * Type: <b>string</b><br>
1788   * Path: <b>Patient.address.country | Person.address.country | Practitioner.address.country | RelatedPerson.address.country</b><br>
1789   * </p>
1790   */
1791  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_COUNTRY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_COUNTRY);
1792
1793 /**
1794   * Search parameter: <b>address-postalcode</b>
1795   * <p>
1796   * Description: <b>Multiple Resources: 
1797
1798* [Patient](patient.html): A postalCode specified in an address
1799* [Person](person.html): A postal code specified in an address
1800* [Practitioner](practitioner.html): A postalCode specified in an address
1801* [RelatedPerson](relatedperson.html): A postal code specified in an address
1802</b><br>
1803   * Type: <b>string</b><br>
1804   * Path: <b>Patient.address.postalCode | Person.address.postalCode | Practitioner.address.postalCode | RelatedPerson.address.postalCode</b><br>
1805   * </p>
1806   */
1807  @SearchParamDefinition(name="address-postalcode", path="Patient.address.postalCode | Person.address.postalCode | Practitioner.address.postalCode | RelatedPerson.address.postalCode", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A postalCode specified in an address\r\n* [Person](person.html): A postal code specified in an address\r\n* [Practitioner](practitioner.html): A postalCode specified in an address\r\n* [RelatedPerson](relatedperson.html): A postal code specified in an address\r\n", type="string" )
1808  public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
1809 /**
1810   * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
1811   * <p>
1812   * Description: <b>Multiple Resources: 
1813
1814* [Patient](patient.html): A postalCode specified in an address
1815* [Person](person.html): A postal code specified in an address
1816* [Practitioner](practitioner.html): A postalCode specified in an address
1817* [RelatedPerson](relatedperson.html): A postal code specified in an address
1818</b><br>
1819   * Type: <b>string</b><br>
1820   * Path: <b>Patient.address.postalCode | Person.address.postalCode | Practitioner.address.postalCode | RelatedPerson.address.postalCode</b><br>
1821   * </p>
1822   */
1823  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_POSTALCODE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_POSTALCODE);
1824
1825 /**
1826   * Search parameter: <b>address-state</b>
1827   * <p>
1828   * Description: <b>Multiple Resources: 
1829
1830* [Patient](patient.html): A state specified in an address
1831* [Person](person.html): A state specified in an address
1832* [Practitioner](practitioner.html): A state specified in an address
1833* [RelatedPerson](relatedperson.html): A state specified in an address
1834</b><br>
1835   * Type: <b>string</b><br>
1836   * Path: <b>Patient.address.state | Person.address.state | Practitioner.address.state | RelatedPerson.address.state</b><br>
1837   * </p>
1838   */
1839  @SearchParamDefinition(name="address-state", path="Patient.address.state | Person.address.state | Practitioner.address.state | RelatedPerson.address.state", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A state specified in an address\r\n* [Person](person.html): A state specified in an address\r\n* [Practitioner](practitioner.html): A state specified in an address\r\n* [RelatedPerson](relatedperson.html): A state specified in an address\r\n", type="string" )
1840  public static final String SP_ADDRESS_STATE = "address-state";
1841 /**
1842   * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
1843   * <p>
1844   * Description: <b>Multiple Resources: 
1845
1846* [Patient](patient.html): A state specified in an address
1847* [Person](person.html): A state specified in an address
1848* [Practitioner](practitioner.html): A state specified in an address
1849* [RelatedPerson](relatedperson.html): A state specified in an address
1850</b><br>
1851   * Type: <b>string</b><br>
1852   * Path: <b>Patient.address.state | Person.address.state | Practitioner.address.state | RelatedPerson.address.state</b><br>
1853   * </p>
1854   */
1855  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_STATE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_STATE);
1856
1857 /**
1858   * Search parameter: <b>address-use</b>
1859   * <p>
1860   * Description: <b>Multiple Resources: 
1861
1862* [Patient](patient.html): A use code specified in an address
1863* [Person](person.html): A use code specified in an address
1864* [Practitioner](practitioner.html): A use code specified in an address
1865* [RelatedPerson](relatedperson.html): A use code specified in an address
1866</b><br>
1867   * Type: <b>token</b><br>
1868   * Path: <b>Patient.address.use | Person.address.use | Practitioner.address.use | RelatedPerson.address.use</b><br>
1869   * </p>
1870   */
1871  @SearchParamDefinition(name="address-use", path="Patient.address.use | Person.address.use | Practitioner.address.use | RelatedPerson.address.use", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A use code specified in an address\r\n* [Person](person.html): A use code specified in an address\r\n* [Practitioner](practitioner.html): A use code specified in an address\r\n* [RelatedPerson](relatedperson.html): A use code specified in an address\r\n", type="token" )
1872  public static final String SP_ADDRESS_USE = "address-use";
1873 /**
1874   * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
1875   * <p>
1876   * Description: <b>Multiple Resources: 
1877
1878* [Patient](patient.html): A use code specified in an address
1879* [Person](person.html): A use code specified in an address
1880* [Practitioner](practitioner.html): A use code specified in an address
1881* [RelatedPerson](relatedperson.html): A use code specified in an address
1882</b><br>
1883   * Type: <b>token</b><br>
1884   * Path: <b>Patient.address.use | Person.address.use | Practitioner.address.use | RelatedPerson.address.use</b><br>
1885   * </p>
1886   */
1887  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADDRESS_USE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADDRESS_USE);
1888
1889 /**
1890   * Search parameter: <b>address</b>
1891   * <p>
1892   * Description: <b>Multiple Resources: 
1893
1894* [Patient](patient.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1895* [Person](person.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1896* [Practitioner](practitioner.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1897* [RelatedPerson](relatedperson.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1898</b><br>
1899   * Type: <b>string</b><br>
1900   * Path: <b>Patient.address | Person.address | Practitioner.address | RelatedPerson.address</b><br>
1901   * </p>
1902   */
1903  @SearchParamDefinition(name="address", path="Patient.address | Person.address | Practitioner.address | RelatedPerson.address", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n* [Person](person.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n* [Practitioner](practitioner.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n* [RelatedPerson](relatedperson.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\r\n", type="string" )
1904  public static final String SP_ADDRESS = "address";
1905 /**
1906   * <b>Fluent Client</b> search parameter constant for <b>address</b>
1907   * <p>
1908   * Description: <b>Multiple Resources: 
1909
1910* [Patient](patient.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1911* [Person](person.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1912* [Practitioner](practitioner.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1913* [RelatedPerson](relatedperson.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
1914</b><br>
1915   * Type: <b>string</b><br>
1916   * Path: <b>Patient.address | Person.address | Practitioner.address | RelatedPerson.address</b><br>
1917   * </p>
1918   */
1919  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS);
1920
1921 /**
1922   * Search parameter: <b>email</b>
1923   * <p>
1924   * Description: <b>Multiple Resources: 
1925
1926* [Patient](patient.html): A value in an email contact
1927* [Person](person.html): A value in an email contact
1928* [Practitioner](practitioner.html): A value in an email contact
1929* [PractitionerRole](practitionerrole.html): A value in an email contact
1930* [RelatedPerson](relatedperson.html): A value in an email contact
1931</b><br>
1932   * Type: <b>token</b><br>
1933   * Path: <b>Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.contact.telecom.where(system='email') | RelatedPerson.telecom.where(system='email')</b><br>
1934   * </p>
1935   */
1936  @SearchParamDefinition(name="email", path="Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.contact.telecom.where(system='email') | RelatedPerson.telecom.where(system='email')", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A value in an email contact\r\n* [Person](person.html): A value in an email contact\r\n* [Practitioner](practitioner.html): A value in an email contact\r\n* [PractitionerRole](practitionerrole.html): A value in an email contact\r\n* [RelatedPerson](relatedperson.html): A value in an email contact\r\n", type="token" )
1937  public static final String SP_EMAIL = "email";
1938 /**
1939   * <b>Fluent Client</b> search parameter constant for <b>email</b>
1940   * <p>
1941   * Description: <b>Multiple Resources: 
1942
1943* [Patient](patient.html): A value in an email contact
1944* [Person](person.html): A value in an email contact
1945* [Practitioner](practitioner.html): A value in an email contact
1946* [PractitionerRole](practitionerrole.html): A value in an email contact
1947* [RelatedPerson](relatedperson.html): A value in an email contact
1948</b><br>
1949   * Type: <b>token</b><br>
1950   * Path: <b>Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.contact.telecom.where(system='email') | RelatedPerson.telecom.where(system='email')</b><br>
1951   * </p>
1952   */
1953  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EMAIL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EMAIL);
1954
1955 /**
1956   * Search parameter: <b>family</b>
1957   * <p>
1958   * Description: <b>Multiple Resources: 
1959
1960* [Patient](patient.html): A portion of the family name of the patient
1961* [Practitioner](practitioner.html): A portion of the family name
1962</b><br>
1963   * Type: <b>string</b><br>
1964   * Path: <b>Patient.name.family | Practitioner.name.family</b><br>
1965   * </p>
1966   */
1967  @SearchParamDefinition(name="family", path="Patient.name.family | Practitioner.name.family", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A portion of the family name of the patient\r\n* [Practitioner](practitioner.html): A portion of the family name\r\n", type="string" )
1968  public static final String SP_FAMILY = "family";
1969 /**
1970   * <b>Fluent Client</b> search parameter constant for <b>family</b>
1971   * <p>
1972   * Description: <b>Multiple Resources: 
1973
1974* [Patient](patient.html): A portion of the family name of the patient
1975* [Practitioner](practitioner.html): A portion of the family name
1976</b><br>
1977   * Type: <b>string</b><br>
1978   * Path: <b>Patient.name.family | Practitioner.name.family</b><br>
1979   * </p>
1980   */
1981  public static final ca.uhn.fhir.rest.gclient.StringClientParam FAMILY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_FAMILY);
1982
1983 /**
1984   * Search parameter: <b>gender</b>
1985   * <p>
1986   * Description: <b>Multiple Resources: 
1987
1988* [Patient](patient.html): Gender of the patient
1989* [Person](person.html): The gender of the person
1990* [Practitioner](practitioner.html): Gender of the practitioner
1991* [RelatedPerson](relatedperson.html): Gender of the related person
1992</b><br>
1993   * Type: <b>token</b><br>
1994   * Path: <b>Patient.gender | Person.gender | Practitioner.gender | RelatedPerson.gender</b><br>
1995   * </p>
1996   */
1997  @SearchParamDefinition(name="gender", path="Patient.gender | Person.gender | Practitioner.gender | RelatedPerson.gender", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): Gender of the patient\r\n* [Person](person.html): The gender of the person\r\n* [Practitioner](practitioner.html): Gender of the practitioner\r\n* [RelatedPerson](relatedperson.html): Gender of the related person\r\n", type="token" )
1998  public static final String SP_GENDER = "gender";
1999 /**
2000   * <b>Fluent Client</b> search parameter constant for <b>gender</b>
2001   * <p>
2002   * Description: <b>Multiple Resources: 
2003
2004* [Patient](patient.html): Gender of the patient
2005* [Person](person.html): The gender of the person
2006* [Practitioner](practitioner.html): Gender of the practitioner
2007* [RelatedPerson](relatedperson.html): Gender of the related person
2008</b><br>
2009   * Type: <b>token</b><br>
2010   * Path: <b>Patient.gender | Person.gender | Practitioner.gender | RelatedPerson.gender</b><br>
2011   * </p>
2012   */
2013  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GENDER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GENDER);
2014
2015 /**
2016   * Search parameter: <b>given</b>
2017   * <p>
2018   * Description: <b>Multiple Resources: 
2019
2020* [Patient](patient.html): A portion of the given name of the patient
2021* [Practitioner](practitioner.html): A portion of the given name
2022</b><br>
2023   * Type: <b>string</b><br>
2024   * Path: <b>Patient.name.given | Practitioner.name.given</b><br>
2025   * </p>
2026   */
2027  @SearchParamDefinition(name="given", path="Patient.name.given | Practitioner.name.given", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A portion of the given name of the patient\r\n* [Practitioner](practitioner.html): A portion of the given name\r\n", type="string" )
2028  public static final String SP_GIVEN = "given";
2029 /**
2030   * <b>Fluent Client</b> search parameter constant for <b>given</b>
2031   * <p>
2032   * Description: <b>Multiple Resources: 
2033
2034* [Patient](patient.html): A portion of the given name of the patient
2035* [Practitioner](practitioner.html): A portion of the given name
2036</b><br>
2037   * Type: <b>string</b><br>
2038   * Path: <b>Patient.name.given | Practitioner.name.given</b><br>
2039   * </p>
2040   */
2041  public static final ca.uhn.fhir.rest.gclient.StringClientParam GIVEN = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_GIVEN);
2042
2043 /**
2044   * Search parameter: <b>phone</b>
2045   * <p>
2046   * Description: <b>Multiple Resources: 
2047
2048* [Patient](patient.html): A value in a phone contact
2049* [Person](person.html): A value in a phone contact
2050* [Practitioner](practitioner.html): A value in a phone contact
2051* [PractitionerRole](practitionerrole.html): A value in a phone contact
2052* [RelatedPerson](relatedperson.html): A value in a phone contact
2053</b><br>
2054   * Type: <b>token</b><br>
2055   * Path: <b>Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.contact.telecom.where(system='phone') | RelatedPerson.telecom.where(system='phone')</b><br>
2056   * </p>
2057   */
2058  @SearchParamDefinition(name="phone", path="Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.contact.telecom.where(system='phone') | RelatedPerson.telecom.where(system='phone')", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A value in a phone contact\r\n* [Person](person.html): A value in a phone contact\r\n* [Practitioner](practitioner.html): A value in a phone contact\r\n* [PractitionerRole](practitionerrole.html): A value in a phone contact\r\n* [RelatedPerson](relatedperson.html): A value in a phone contact\r\n", type="token" )
2059  public static final String SP_PHONE = "phone";
2060 /**
2061   * <b>Fluent Client</b> search parameter constant for <b>phone</b>
2062   * <p>
2063   * Description: <b>Multiple Resources: 
2064
2065* [Patient](patient.html): A value in a phone contact
2066* [Person](person.html): A value in a phone contact
2067* [Practitioner](practitioner.html): A value in a phone contact
2068* [PractitionerRole](practitionerrole.html): A value in a phone contact
2069* [RelatedPerson](relatedperson.html): A value in a phone contact
2070</b><br>
2071   * Type: <b>token</b><br>
2072   * Path: <b>Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.contact.telecom.where(system='phone') | RelatedPerson.telecom.where(system='phone')</b><br>
2073   * </p>
2074   */
2075  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PHONE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PHONE);
2076
2077 /**
2078   * Search parameter: <b>phonetic</b>
2079   * <p>
2080   * Description: <b>Multiple Resources: 
2081
2082* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm
2083* [Person](person.html): A portion of name using some kind of phonetic matching algorithm
2084* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm
2085* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm
2086</b><br>
2087   * Type: <b>string</b><br>
2088   * Path: <b>Patient.name | Person.name | Practitioner.name | RelatedPerson.name</b><br>
2089   * </p>
2090   */
2091  @SearchParamDefinition(name="phonetic", path="Patient.name | Person.name | Practitioner.name | RelatedPerson.name", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm\r\n* [Person](person.html): A portion of name using some kind of phonetic matching algorithm\r\n* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm\r\n* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm\r\n", type="string" )
2092  public static final String SP_PHONETIC = "phonetic";
2093 /**
2094   * <b>Fluent Client</b> search parameter constant for <b>phonetic</b>
2095   * <p>
2096   * Description: <b>Multiple Resources: 
2097
2098* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm
2099* [Person](person.html): A portion of name using some kind of phonetic matching algorithm
2100* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm
2101* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm
2102</b><br>
2103   * Type: <b>string</b><br>
2104   * Path: <b>Patient.name | Person.name | Practitioner.name | RelatedPerson.name</b><br>
2105   * </p>
2106   */
2107  public static final ca.uhn.fhir.rest.gclient.StringClientParam PHONETIC = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PHONETIC);
2108
2109 /**
2110   * Search parameter: <b>telecom</b>
2111   * <p>
2112   * Description: <b>Multiple Resources: 
2113
2114* [Patient](patient.html): The value in any kind of telecom details of the patient
2115* [Person](person.html): The value in any kind of contact
2116* [Practitioner](practitioner.html): The value in any kind of contact
2117* [PractitionerRole](practitionerrole.html): The value in any kind of contact
2118* [RelatedPerson](relatedperson.html): The value in any kind of contact
2119</b><br>
2120   * Type: <b>token</b><br>
2121   * Path: <b>Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.contact.telecom | RelatedPerson.telecom</b><br>
2122   * </p>
2123   */
2124  @SearchParamDefinition(name="telecom", path="Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.contact.telecom | RelatedPerson.telecom", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): The value in any kind of telecom details of the patient\r\n* [Person](person.html): The value in any kind of contact\r\n* [Practitioner](practitioner.html): The value in any kind of contact\r\n* [PractitionerRole](practitionerrole.html): The value in any kind of contact\r\n* [RelatedPerson](relatedperson.html): The value in any kind of contact\r\n", type="token" )
2125  public static final String SP_TELECOM = "telecom";
2126 /**
2127   * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
2128   * <p>
2129   * Description: <b>Multiple Resources: 
2130
2131* [Patient](patient.html): The value in any kind of telecom details of the patient
2132* [Person](person.html): The value in any kind of contact
2133* [Practitioner](practitioner.html): The value in any kind of contact
2134* [PractitionerRole](practitionerrole.html): The value in any kind of contact
2135* [RelatedPerson](relatedperson.html): The value in any kind of contact
2136</b><br>
2137   * Type: <b>token</b><br>
2138   * Path: <b>Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.contact.telecom | RelatedPerson.telecom</b><br>
2139   * </p>
2140   */
2141  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TELECOM);
2142
2143
2144}
2145