001package org.hl7.fhir.r4b.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 Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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 * Demographics and administrative information about a person independent of a specific health-related context.
052 */
053@ResourceDef(name="Person", profile="http://hl7.org/fhir/StructureDefinition/Person")
054public class Person extends DomainResource {
055
056    public enum IdentityAssuranceLevel {
057        /**
058         * Little or no confidence in the asserted identity's accuracy.
059         */
060        LEVEL1, 
061        /**
062         * Some confidence in the asserted identity's accuracy.
063         */
064        LEVEL2, 
065        /**
066         * High confidence in the asserted identity's accuracy.
067         */
068        LEVEL3, 
069        /**
070         * Very high confidence in the asserted identity's accuracy.
071         */
072        LEVEL4, 
073        /**
074         * added to help the parsers with the generic types
075         */
076        NULL;
077        public static IdentityAssuranceLevel fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("level1".equals(codeString))
081          return LEVEL1;
082        if ("level2".equals(codeString))
083          return LEVEL2;
084        if ("level3".equals(codeString))
085          return LEVEL3;
086        if ("level4".equals(codeString))
087          return LEVEL4;
088        if (Configuration.isAcceptInvalidEnums())
089          return null;
090        else
091          throw new FHIRException("Unknown IdentityAssuranceLevel code '"+codeString+"'");
092        }
093        public String toCode() {
094          switch (this) {
095            case LEVEL1: return "level1";
096            case LEVEL2: return "level2";
097            case LEVEL3: return "level3";
098            case LEVEL4: return "level4";
099            case NULL: return null;
100            default: return "?";
101          }
102        }
103        public String getSystem() {
104          switch (this) {
105            case LEVEL1: return "http://hl7.org/fhir/identity-assuranceLevel";
106            case LEVEL2: return "http://hl7.org/fhir/identity-assuranceLevel";
107            case LEVEL3: return "http://hl7.org/fhir/identity-assuranceLevel";
108            case LEVEL4: return "http://hl7.org/fhir/identity-assuranceLevel";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113        public String getDefinition() {
114          switch (this) {
115            case LEVEL1: return "Little or no confidence in the asserted identity's accuracy.";
116            case LEVEL2: return "Some confidence in the asserted identity's accuracy.";
117            case LEVEL3: return "High confidence in the asserted identity's accuracy.";
118            case LEVEL4: return "Very high confidence in the asserted identity's accuracy.";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123        public String getDisplay() {
124          switch (this) {
125            case LEVEL1: return "Level 1";
126            case LEVEL2: return "Level 2";
127            case LEVEL3: return "Level 3";
128            case LEVEL4: return "Level 4";
129            case NULL: return null;
130            default: return "?";
131          }
132        }
133    }
134
135  public static class IdentityAssuranceLevelEnumFactory implements EnumFactory<IdentityAssuranceLevel> {
136    public IdentityAssuranceLevel fromCode(String codeString) throws IllegalArgumentException {
137      if (codeString == null || "".equals(codeString))
138            if (codeString == null || "".equals(codeString))
139                return null;
140        if ("level1".equals(codeString))
141          return IdentityAssuranceLevel.LEVEL1;
142        if ("level2".equals(codeString))
143          return IdentityAssuranceLevel.LEVEL2;
144        if ("level3".equals(codeString))
145          return IdentityAssuranceLevel.LEVEL3;
146        if ("level4".equals(codeString))
147          return IdentityAssuranceLevel.LEVEL4;
148        throw new IllegalArgumentException("Unknown IdentityAssuranceLevel code '"+codeString+"'");
149        }
150        public Enumeration<IdentityAssuranceLevel> fromType(Base code) throws FHIRException {
151          if (code == null)
152            return null;
153          if (code.isEmpty())
154            return new Enumeration<IdentityAssuranceLevel>(this);
155          String codeString = ((PrimitiveType) code).asStringValue();
156          if (codeString == null || "".equals(codeString))
157            return null;
158        if ("level1".equals(codeString))
159          return new Enumeration<IdentityAssuranceLevel>(this, IdentityAssuranceLevel.LEVEL1);
160        if ("level2".equals(codeString))
161          return new Enumeration<IdentityAssuranceLevel>(this, IdentityAssuranceLevel.LEVEL2);
162        if ("level3".equals(codeString))
163          return new Enumeration<IdentityAssuranceLevel>(this, IdentityAssuranceLevel.LEVEL3);
164        if ("level4".equals(codeString))
165          return new Enumeration<IdentityAssuranceLevel>(this, IdentityAssuranceLevel.LEVEL4);
166        throw new FHIRException("Unknown IdentityAssuranceLevel code '"+codeString+"'");
167        }
168    public String toCode(IdentityAssuranceLevel code) {
169      if (code == IdentityAssuranceLevel.LEVEL1)
170        return "level1";
171      if (code == IdentityAssuranceLevel.LEVEL2)
172        return "level2";
173      if (code == IdentityAssuranceLevel.LEVEL3)
174        return "level3";
175      if (code == IdentityAssuranceLevel.LEVEL4)
176        return "level4";
177      return "?";
178      }
179    public String toSystem(IdentityAssuranceLevel code) {
180      return code.getSystem();
181      }
182    }
183
184    @Block()
185    public static class PersonLinkComponent extends BackboneElement implements IBaseBackboneElement {
186        /**
187         * The resource to which this actual person is associated.
188         */
189        @Child(name = "target", type = {Patient.class, Practitioner.class, RelatedPerson.class, Person.class}, order=1, min=1, max=1, modifier=false, summary=false)
190        @Description(shortDefinition="The resource to which this actual person is associated", formalDefinition="The resource to which this actual person is associated." )
191        protected Reference target;
192
193        /**
194         * Level of assurance that this link is associated with the target resource.
195         */
196        @Child(name = "assurance", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
197        @Description(shortDefinition="level1 | level2 | level3 | level4", formalDefinition="Level of assurance that this link is associated with the target resource." )
198        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/identity-assuranceLevel")
199        protected Enumeration<IdentityAssuranceLevel> assurance;
200
201        private static final long serialVersionUID = -1393523223L;
202
203    /**
204     * Constructor
205     */
206      public PersonLinkComponent() {
207        super();
208      }
209
210    /**
211     * Constructor
212     */
213      public PersonLinkComponent(Reference target) {
214        super();
215        this.setTarget(target);
216      }
217
218        /**
219         * @return {@link #target} (The resource to which this actual person is associated.)
220         */
221        public Reference getTarget() { 
222          if (this.target == null)
223            if (Configuration.errorOnAutoCreate())
224              throw new Error("Attempt to auto-create PersonLinkComponent.target");
225            else if (Configuration.doAutoCreate())
226              this.target = new Reference(); // cc
227          return this.target;
228        }
229
230        public boolean hasTarget() { 
231          return this.target != null && !this.target.isEmpty();
232        }
233
234        /**
235         * @param value {@link #target} (The resource to which this actual person is associated.)
236         */
237        public PersonLinkComponent setTarget(Reference value) { 
238          this.target = value;
239          return this;
240        }
241
242        /**
243         * @return {@link #assurance} (Level of assurance that this link is associated with the target resource.). This is the underlying object with id, value and extensions. The accessor "getAssurance" gives direct access to the value
244         */
245        public Enumeration<IdentityAssuranceLevel> getAssuranceElement() { 
246          if (this.assurance == null)
247            if (Configuration.errorOnAutoCreate())
248              throw new Error("Attempt to auto-create PersonLinkComponent.assurance");
249            else if (Configuration.doAutoCreate())
250              this.assurance = new Enumeration<IdentityAssuranceLevel>(new IdentityAssuranceLevelEnumFactory()); // bb
251          return this.assurance;
252        }
253
254        public boolean hasAssuranceElement() { 
255          return this.assurance != null && !this.assurance.isEmpty();
256        }
257
258        public boolean hasAssurance() { 
259          return this.assurance != null && !this.assurance.isEmpty();
260        }
261
262        /**
263         * @param value {@link #assurance} (Level of assurance that this link is associated with the target resource.). This is the underlying object with id, value and extensions. The accessor "getAssurance" gives direct access to the value
264         */
265        public PersonLinkComponent setAssuranceElement(Enumeration<IdentityAssuranceLevel> value) { 
266          this.assurance = value;
267          return this;
268        }
269
270        /**
271         * @return Level of assurance that this link is associated with the target resource.
272         */
273        public IdentityAssuranceLevel getAssurance() { 
274          return this.assurance == null ? null : this.assurance.getValue();
275        }
276
277        /**
278         * @param value Level of assurance that this link is associated with the target resource.
279         */
280        public PersonLinkComponent setAssurance(IdentityAssuranceLevel value) { 
281          if (value == null)
282            this.assurance = null;
283          else {
284            if (this.assurance == null)
285              this.assurance = new Enumeration<IdentityAssuranceLevel>(new IdentityAssuranceLevelEnumFactory());
286            this.assurance.setValue(value);
287          }
288          return this;
289        }
290
291        protected void listChildren(List<Property> children) {
292          super.listChildren(children);
293          children.add(new Property("target", "Reference(Patient|Practitioner|RelatedPerson|Person)", "The resource to which this actual person is associated.", 0, 1, target));
294          children.add(new Property("assurance", "code", "Level of assurance that this link is associated with the target resource.", 0, 1, assurance));
295        }
296
297        @Override
298        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
299          switch (_hash) {
300          case -880905839: /*target*/  return new Property("target", "Reference(Patient|Practitioner|RelatedPerson|Person)", "The resource to which this actual person is associated.", 0, 1, target);
301          case 1771900717: /*assurance*/  return new Property("assurance", "code", "Level of assurance that this link is associated with the target resource.", 0, 1, assurance);
302          default: return super.getNamedProperty(_hash, _name, _checkValid);
303          }
304
305        }
306
307      @Override
308      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
309        switch (hash) {
310        case -880905839: /*target*/ return this.target == null ? new Base[0] : new Base[] {this.target}; // Reference
311        case 1771900717: /*assurance*/ return this.assurance == null ? new Base[0] : new Base[] {this.assurance}; // Enumeration<IdentityAssuranceLevel>
312        default: return super.getProperty(hash, name, checkValid);
313        }
314
315      }
316
317      @Override
318      public Base setProperty(int hash, String name, Base value) throws FHIRException {
319        switch (hash) {
320        case -880905839: // target
321          this.target = TypeConvertor.castToReference(value); // Reference
322          return value;
323        case 1771900717: // assurance
324          value = new IdentityAssuranceLevelEnumFactory().fromType(TypeConvertor.castToCode(value));
325          this.assurance = (Enumeration) value; // Enumeration<IdentityAssuranceLevel>
326          return value;
327        default: return super.setProperty(hash, name, value);
328        }
329
330      }
331
332      @Override
333      public Base setProperty(String name, Base value) throws FHIRException {
334        if (name.equals("target")) {
335          this.target = TypeConvertor.castToReference(value); // Reference
336        } else if (name.equals("assurance")) {
337          value = new IdentityAssuranceLevelEnumFactory().fromType(TypeConvertor.castToCode(value));
338          this.assurance = (Enumeration) value; // Enumeration<IdentityAssuranceLevel>
339        } else
340          return super.setProperty(name, value);
341        return value;
342      }
343
344      @Override
345      public Base makeProperty(int hash, String name) throws FHIRException {
346        switch (hash) {
347        case -880905839:  return getTarget();
348        case 1771900717:  return getAssuranceElement();
349        default: return super.makeProperty(hash, name);
350        }
351
352      }
353
354      @Override
355      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
356        switch (hash) {
357        case -880905839: /*target*/ return new String[] {"Reference"};
358        case 1771900717: /*assurance*/ return new String[] {"code"};
359        default: return super.getTypesForProperty(hash, name);
360        }
361
362      }
363
364      @Override
365      public Base addChild(String name) throws FHIRException {
366        if (name.equals("target")) {
367          this.target = new Reference();
368          return this.target;
369        }
370        else if (name.equals("assurance")) {
371          throw new FHIRException("Cannot call addChild on a primitive type Person.link.assurance");
372        }
373        else
374          return super.addChild(name);
375      }
376
377      public PersonLinkComponent copy() {
378        PersonLinkComponent dst = new PersonLinkComponent();
379        copyValues(dst);
380        return dst;
381      }
382
383      public void copyValues(PersonLinkComponent dst) {
384        super.copyValues(dst);
385        dst.target = target == null ? null : target.copy();
386        dst.assurance = assurance == null ? null : assurance.copy();
387      }
388
389      @Override
390      public boolean equalsDeep(Base other_) {
391        if (!super.equalsDeep(other_))
392          return false;
393        if (!(other_ instanceof PersonLinkComponent))
394          return false;
395        PersonLinkComponent o = (PersonLinkComponent) other_;
396        return compareDeep(target, o.target, true) && compareDeep(assurance, o.assurance, true);
397      }
398
399      @Override
400      public boolean equalsShallow(Base other_) {
401        if (!super.equalsShallow(other_))
402          return false;
403        if (!(other_ instanceof PersonLinkComponent))
404          return false;
405        PersonLinkComponent o = (PersonLinkComponent) other_;
406        return compareValues(assurance, o.assurance, true);
407      }
408
409      public boolean isEmpty() {
410        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(target, assurance);
411      }
412
413  public String fhirType() {
414    return "Person.link";
415
416  }
417
418  }
419
420    /**
421     * Identifier for a person within a particular scope.
422     */
423    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
424    @Description(shortDefinition="A human identifier for this person", formalDefinition="Identifier for a person within a particular scope." )
425    protected List<Identifier> identifier;
426
427    /**
428     * A name associated with the person.
429     */
430    @Child(name = "name", type = {HumanName.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
431    @Description(shortDefinition="A name associated with the person", formalDefinition="A name associated with the person." )
432    protected List<HumanName> name;
433
434    /**
435     * A contact detail for the person, e.g. a telephone number or an email address.
436     */
437    @Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
438    @Description(shortDefinition="A contact detail for the person", formalDefinition="A contact detail for the person, e.g. a telephone number or an email address." )
439    protected List<ContactPoint> telecom;
440
441    /**
442     * Administrative Gender.
443     */
444    @Child(name = "gender", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
445    @Description(shortDefinition="male | female | other | unknown", formalDefinition="Administrative Gender." )
446    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administrative-gender")
447    protected Enumeration<AdministrativeGender> gender;
448
449    /**
450     * The birth date for the person.
451     */
452    @Child(name = "birthDate", type = {DateType.class}, order=4, min=0, max=1, modifier=false, summary=true)
453    @Description(shortDefinition="The date on which the person was born", formalDefinition="The birth date for the person." )
454    protected DateType birthDate;
455
456    /**
457     * One or more addresses for the person.
458     */
459    @Child(name = "address", type = {Address.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
460    @Description(shortDefinition="One or more addresses for the person", formalDefinition="One or more addresses for the person." )
461    protected List<Address> address;
462
463    /**
464     * An image that can be displayed as a thumbnail of the person to enhance the identification of the individual.
465     */
466    @Child(name = "photo", type = {Attachment.class}, order=6, min=0, max=1, modifier=false, summary=false)
467    @Description(shortDefinition="Image of the person", formalDefinition="An image that can be displayed as a thumbnail of the person to enhance the identification of the individual." )
468    protected Attachment photo;
469
470    /**
471     * The organization that is the custodian of the person record.
472     */
473    @Child(name = "managingOrganization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
474    @Description(shortDefinition="The organization that is the custodian of the person record", formalDefinition="The organization that is the custodian of the person record." )
475    protected Reference managingOrganization;
476
477    /**
478     * Whether this person's record is in active use.
479     */
480    @Child(name = "active", type = {BooleanType.class}, order=8, min=0, max=1, modifier=true, summary=true)
481    @Description(shortDefinition="This person's record is in active use", formalDefinition="Whether this person's record is in active use." )
482    protected BooleanType active;
483
484    /**
485     * Link to a resource that concerns the same actual person.
486     */
487    @Child(name = "link", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
488    @Description(shortDefinition="Link to a resource that concerns the same actual person", formalDefinition="Link to a resource that concerns the same actual person." )
489    protected List<PersonLinkComponent> link;
490
491    private static final long serialVersionUID = -237141861L;
492
493  /**
494   * Constructor
495   */
496    public Person() {
497      super();
498    }
499
500    /**
501     * @return {@link #identifier} (Identifier for a person within a particular scope.)
502     */
503    public List<Identifier> getIdentifier() { 
504      if (this.identifier == null)
505        this.identifier = new ArrayList<Identifier>();
506      return this.identifier;
507    }
508
509    /**
510     * @return Returns a reference to <code>this</code> for easy method chaining
511     */
512    public Person setIdentifier(List<Identifier> theIdentifier) { 
513      this.identifier = theIdentifier;
514      return this;
515    }
516
517    public boolean hasIdentifier() { 
518      if (this.identifier == null)
519        return false;
520      for (Identifier item : this.identifier)
521        if (!item.isEmpty())
522          return true;
523      return false;
524    }
525
526    public Identifier addIdentifier() { //3
527      Identifier t = new Identifier();
528      if (this.identifier == null)
529        this.identifier = new ArrayList<Identifier>();
530      this.identifier.add(t);
531      return t;
532    }
533
534    public Person addIdentifier(Identifier t) { //3
535      if (t == null)
536        return this;
537      if (this.identifier == null)
538        this.identifier = new ArrayList<Identifier>();
539      this.identifier.add(t);
540      return this;
541    }
542
543    /**
544     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
545     */
546    public Identifier getIdentifierFirstRep() { 
547      if (getIdentifier().isEmpty()) {
548        addIdentifier();
549      }
550      return getIdentifier().get(0);
551    }
552
553    /**
554     * @return {@link #name} (A name associated with the person.)
555     */
556    public List<HumanName> getName() { 
557      if (this.name == null)
558        this.name = new ArrayList<HumanName>();
559      return this.name;
560    }
561
562    /**
563     * @return Returns a reference to <code>this</code> for easy method chaining
564     */
565    public Person setName(List<HumanName> theName) { 
566      this.name = theName;
567      return this;
568    }
569
570    public boolean hasName() { 
571      if (this.name == null)
572        return false;
573      for (HumanName item : this.name)
574        if (!item.isEmpty())
575          return true;
576      return false;
577    }
578
579    public HumanName addName() { //3
580      HumanName t = new HumanName();
581      if (this.name == null)
582        this.name = new ArrayList<HumanName>();
583      this.name.add(t);
584      return t;
585    }
586
587    public Person addName(HumanName t) { //3
588      if (t == null)
589        return this;
590      if (this.name == null)
591        this.name = new ArrayList<HumanName>();
592      this.name.add(t);
593      return this;
594    }
595
596    /**
597     * @return The first repetition of repeating field {@link #name}, creating it if it does not already exist {3}
598     */
599    public HumanName getNameFirstRep() { 
600      if (getName().isEmpty()) {
601        addName();
602      }
603      return getName().get(0);
604    }
605
606    /**
607     * @return {@link #telecom} (A contact detail for the person, e.g. a telephone number or an email address.)
608     */
609    public List<ContactPoint> getTelecom() { 
610      if (this.telecom == null)
611        this.telecom = new ArrayList<ContactPoint>();
612      return this.telecom;
613    }
614
615    /**
616     * @return Returns a reference to <code>this</code> for easy method chaining
617     */
618    public Person setTelecom(List<ContactPoint> theTelecom) { 
619      this.telecom = theTelecom;
620      return this;
621    }
622
623    public boolean hasTelecom() { 
624      if (this.telecom == null)
625        return false;
626      for (ContactPoint item : this.telecom)
627        if (!item.isEmpty())
628          return true;
629      return false;
630    }
631
632    public ContactPoint addTelecom() { //3
633      ContactPoint t = new ContactPoint();
634      if (this.telecom == null)
635        this.telecom = new ArrayList<ContactPoint>();
636      this.telecom.add(t);
637      return t;
638    }
639
640    public Person addTelecom(ContactPoint t) { //3
641      if (t == null)
642        return this;
643      if (this.telecom == null)
644        this.telecom = new ArrayList<ContactPoint>();
645      this.telecom.add(t);
646      return this;
647    }
648
649    /**
650     * @return The first repetition of repeating field {@link #telecom}, creating it if it does not already exist {3}
651     */
652    public ContactPoint getTelecomFirstRep() { 
653      if (getTelecom().isEmpty()) {
654        addTelecom();
655      }
656      return getTelecom().get(0);
657    }
658
659    /**
660     * @return {@link #gender} (Administrative Gender.). This is the underlying object with id, value and extensions. The accessor "getGender" gives direct access to the value
661     */
662    public Enumeration<AdministrativeGender> getGenderElement() { 
663      if (this.gender == null)
664        if (Configuration.errorOnAutoCreate())
665          throw new Error("Attempt to auto-create Person.gender");
666        else if (Configuration.doAutoCreate())
667          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory()); // bb
668      return this.gender;
669    }
670
671    public boolean hasGenderElement() { 
672      return this.gender != null && !this.gender.isEmpty();
673    }
674
675    public boolean hasGender() { 
676      return this.gender != null && !this.gender.isEmpty();
677    }
678
679    /**
680     * @param value {@link #gender} (Administrative Gender.). This is the underlying object with id, value and extensions. The accessor "getGender" gives direct access to the value
681     */
682    public Person setGenderElement(Enumeration<AdministrativeGender> value) { 
683      this.gender = value;
684      return this;
685    }
686
687    /**
688     * @return Administrative Gender.
689     */
690    public AdministrativeGender getGender() { 
691      return this.gender == null ? null : this.gender.getValue();
692    }
693
694    /**
695     * @param value Administrative Gender.
696     */
697    public Person setGender(AdministrativeGender value) { 
698      if (value == null)
699        this.gender = null;
700      else {
701        if (this.gender == null)
702          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory());
703        this.gender.setValue(value);
704      }
705      return this;
706    }
707
708    /**
709     * @return {@link #birthDate} (The birth date for the person.). This is the underlying object with id, value and extensions. The accessor "getBirthDate" gives direct access to the value
710     */
711    public DateType getBirthDateElement() { 
712      if (this.birthDate == null)
713        if (Configuration.errorOnAutoCreate())
714          throw new Error("Attempt to auto-create Person.birthDate");
715        else if (Configuration.doAutoCreate())
716          this.birthDate = new DateType(); // bb
717      return this.birthDate;
718    }
719
720    public boolean hasBirthDateElement() { 
721      return this.birthDate != null && !this.birthDate.isEmpty();
722    }
723
724    public boolean hasBirthDate() { 
725      return this.birthDate != null && !this.birthDate.isEmpty();
726    }
727
728    /**
729     * @param value {@link #birthDate} (The birth date for the person.). This is the underlying object with id, value and extensions. The accessor "getBirthDate" gives direct access to the value
730     */
731    public Person setBirthDateElement(DateType value) { 
732      this.birthDate = value;
733      return this;
734    }
735
736    /**
737     * @return The birth date for the person.
738     */
739    public Date getBirthDate() { 
740      return this.birthDate == null ? null : this.birthDate.getValue();
741    }
742
743    /**
744     * @param value The birth date for the person.
745     */
746    public Person setBirthDate(Date value) { 
747      if (value == null)
748        this.birthDate = null;
749      else {
750        if (this.birthDate == null)
751          this.birthDate = new DateType();
752        this.birthDate.setValue(value);
753      }
754      return this;
755    }
756
757    /**
758     * @return {@link #address} (One or more addresses for the person.)
759     */
760    public List<Address> getAddress() { 
761      if (this.address == null)
762        this.address = new ArrayList<Address>();
763      return this.address;
764    }
765
766    /**
767     * @return Returns a reference to <code>this</code> for easy method chaining
768     */
769    public Person setAddress(List<Address> theAddress) { 
770      this.address = theAddress;
771      return this;
772    }
773
774    public boolean hasAddress() { 
775      if (this.address == null)
776        return false;
777      for (Address item : this.address)
778        if (!item.isEmpty())
779          return true;
780      return false;
781    }
782
783    public Address addAddress() { //3
784      Address t = new Address();
785      if (this.address == null)
786        this.address = new ArrayList<Address>();
787      this.address.add(t);
788      return t;
789    }
790
791    public Person addAddress(Address t) { //3
792      if (t == null)
793        return this;
794      if (this.address == null)
795        this.address = new ArrayList<Address>();
796      this.address.add(t);
797      return this;
798    }
799
800    /**
801     * @return The first repetition of repeating field {@link #address}, creating it if it does not already exist {3}
802     */
803    public Address getAddressFirstRep() { 
804      if (getAddress().isEmpty()) {
805        addAddress();
806      }
807      return getAddress().get(0);
808    }
809
810    /**
811     * @return {@link #photo} (An image that can be displayed as a thumbnail of the person to enhance the identification of the individual.)
812     */
813    public Attachment getPhoto() { 
814      if (this.photo == null)
815        if (Configuration.errorOnAutoCreate())
816          throw new Error("Attempt to auto-create Person.photo");
817        else if (Configuration.doAutoCreate())
818          this.photo = new Attachment(); // cc
819      return this.photo;
820    }
821
822    public boolean hasPhoto() { 
823      return this.photo != null && !this.photo.isEmpty();
824    }
825
826    /**
827     * @param value {@link #photo} (An image that can be displayed as a thumbnail of the person to enhance the identification of the individual.)
828     */
829    public Person setPhoto(Attachment value) { 
830      this.photo = value;
831      return this;
832    }
833
834    /**
835     * @return {@link #managingOrganization} (The organization that is the custodian of the person record.)
836     */
837    public Reference getManagingOrganization() { 
838      if (this.managingOrganization == null)
839        if (Configuration.errorOnAutoCreate())
840          throw new Error("Attempt to auto-create Person.managingOrganization");
841        else if (Configuration.doAutoCreate())
842          this.managingOrganization = new Reference(); // cc
843      return this.managingOrganization;
844    }
845
846    public boolean hasManagingOrganization() { 
847      return this.managingOrganization != null && !this.managingOrganization.isEmpty();
848    }
849
850    /**
851     * @param value {@link #managingOrganization} (The organization that is the custodian of the person record.)
852     */
853    public Person setManagingOrganization(Reference value) { 
854      this.managingOrganization = value;
855      return this;
856    }
857
858    /**
859     * @return {@link #active} (Whether this person'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
860     */
861    public BooleanType getActiveElement() { 
862      if (this.active == null)
863        if (Configuration.errorOnAutoCreate())
864          throw new Error("Attempt to auto-create Person.active");
865        else if (Configuration.doAutoCreate())
866          this.active = new BooleanType(); // bb
867      return this.active;
868    }
869
870    public boolean hasActiveElement() { 
871      return this.active != null && !this.active.isEmpty();
872    }
873
874    public boolean hasActive() { 
875      return this.active != null && !this.active.isEmpty();
876    }
877
878    /**
879     * @param value {@link #active} (Whether this person'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
880     */
881    public Person setActiveElement(BooleanType value) { 
882      this.active = value;
883      return this;
884    }
885
886    /**
887     * @return Whether this person's record is in active use.
888     */
889    public boolean getActive() { 
890      return this.active == null || this.active.isEmpty() ? false : this.active.getValue();
891    }
892
893    /**
894     * @param value Whether this person's record is in active use.
895     */
896    public Person setActive(boolean value) { 
897        if (this.active == null)
898          this.active = new BooleanType();
899        this.active.setValue(value);
900      return this;
901    }
902
903    /**
904     * @return {@link #link} (Link to a resource that concerns the same actual person.)
905     */
906    public List<PersonLinkComponent> getLink() { 
907      if (this.link == null)
908        this.link = new ArrayList<PersonLinkComponent>();
909      return this.link;
910    }
911
912    /**
913     * @return Returns a reference to <code>this</code> for easy method chaining
914     */
915    public Person setLink(List<PersonLinkComponent> theLink) { 
916      this.link = theLink;
917      return this;
918    }
919
920    public boolean hasLink() { 
921      if (this.link == null)
922        return false;
923      for (PersonLinkComponent item : this.link)
924        if (!item.isEmpty())
925          return true;
926      return false;
927    }
928
929    public PersonLinkComponent addLink() { //3
930      PersonLinkComponent t = new PersonLinkComponent();
931      if (this.link == null)
932        this.link = new ArrayList<PersonLinkComponent>();
933      this.link.add(t);
934      return t;
935    }
936
937    public Person addLink(PersonLinkComponent t) { //3
938      if (t == null)
939        return this;
940      if (this.link == null)
941        this.link = new ArrayList<PersonLinkComponent>();
942      this.link.add(t);
943      return this;
944    }
945
946    /**
947     * @return The first repetition of repeating field {@link #link}, creating it if it does not already exist {3}
948     */
949    public PersonLinkComponent getLinkFirstRep() { 
950      if (getLink().isEmpty()) {
951        addLink();
952      }
953      return getLink().get(0);
954    }
955
956      protected void listChildren(List<Property> children) {
957        super.listChildren(children);
958        children.add(new Property("identifier", "Identifier", "Identifier for a person within a particular scope.", 0, java.lang.Integer.MAX_VALUE, identifier));
959        children.add(new Property("name", "HumanName", "A name associated with the person.", 0, java.lang.Integer.MAX_VALUE, name));
960        children.add(new Property("telecom", "ContactPoint", "A contact detail for the person, e.g. a telephone number or an email address.", 0, java.lang.Integer.MAX_VALUE, telecom));
961        children.add(new Property("gender", "code", "Administrative Gender.", 0, 1, gender));
962        children.add(new Property("birthDate", "date", "The birth date for the person.", 0, 1, birthDate));
963        children.add(new Property("address", "Address", "One or more addresses for the person.", 0, java.lang.Integer.MAX_VALUE, address));
964        children.add(new Property("photo", "Attachment", "An image that can be displayed as a thumbnail of the person to enhance the identification of the individual.", 0, 1, photo));
965        children.add(new Property("managingOrganization", "Reference(Organization)", "The organization that is the custodian of the person record.", 0, 1, managingOrganization));
966        children.add(new Property("active", "boolean", "Whether this person's record is in active use.", 0, 1, active));
967        children.add(new Property("link", "", "Link to a resource that concerns the same actual person.", 0, java.lang.Integer.MAX_VALUE, link));
968      }
969
970      @Override
971      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
972        switch (_hash) {
973        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifier for a person within a particular scope.", 0, java.lang.Integer.MAX_VALUE, identifier);
974        case 3373707: /*name*/  return new Property("name", "HumanName", "A name associated with the person.", 0, java.lang.Integer.MAX_VALUE, name);
975        case -1429363305: /*telecom*/  return new Property("telecom", "ContactPoint", "A contact detail for the person, e.g. a telephone number or an email address.", 0, java.lang.Integer.MAX_VALUE, telecom);
976        case -1249512767: /*gender*/  return new Property("gender", "code", "Administrative Gender.", 0, 1, gender);
977        case -1210031859: /*birthDate*/  return new Property("birthDate", "date", "The birth date for the person.", 0, 1, birthDate);
978        case -1147692044: /*address*/  return new Property("address", "Address", "One or more addresses for the person.", 0, java.lang.Integer.MAX_VALUE, address);
979        case 106642994: /*photo*/  return new Property("photo", "Attachment", "An image that can be displayed as a thumbnail of the person to enhance the identification of the individual.", 0, 1, photo);
980        case -2058947787: /*managingOrganization*/  return new Property("managingOrganization", "Reference(Organization)", "The organization that is the custodian of the person record.", 0, 1, managingOrganization);
981        case -1422950650: /*active*/  return new Property("active", "boolean", "Whether this person's record is in active use.", 0, 1, active);
982        case 3321850: /*link*/  return new Property("link", "", "Link to a resource that concerns the same actual person.", 0, java.lang.Integer.MAX_VALUE, link);
983        default: return super.getNamedProperty(_hash, _name, _checkValid);
984        }
985
986      }
987
988      @Override
989      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
990        switch (hash) {
991        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
992        case 3373707: /*name*/ return this.name == null ? new Base[0] : this.name.toArray(new Base[this.name.size()]); // HumanName
993        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
994        case -1249512767: /*gender*/ return this.gender == null ? new Base[0] : new Base[] {this.gender}; // Enumeration<AdministrativeGender>
995        case -1210031859: /*birthDate*/ return this.birthDate == null ? new Base[0] : new Base[] {this.birthDate}; // DateType
996        case -1147692044: /*address*/ return this.address == null ? new Base[0] : this.address.toArray(new Base[this.address.size()]); // Address
997        case 106642994: /*photo*/ return this.photo == null ? new Base[0] : new Base[] {this.photo}; // Attachment
998        case -2058947787: /*managingOrganization*/ return this.managingOrganization == null ? new Base[0] : new Base[] {this.managingOrganization}; // Reference
999        case -1422950650: /*active*/ return this.active == null ? new Base[0] : new Base[] {this.active}; // BooleanType
1000        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // PersonLinkComponent
1001        default: return super.getProperty(hash, name, checkValid);
1002        }
1003
1004      }
1005
1006      @Override
1007      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1008        switch (hash) {
1009        case -1618432855: // identifier
1010          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1011          return value;
1012        case 3373707: // name
1013          this.getName().add(TypeConvertor.castToHumanName(value)); // HumanName
1014          return value;
1015        case -1429363305: // telecom
1016          this.getTelecom().add(TypeConvertor.castToContactPoint(value)); // ContactPoint
1017          return value;
1018        case -1249512767: // gender
1019          value = new AdministrativeGenderEnumFactory().fromType(TypeConvertor.castToCode(value));
1020          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
1021          return value;
1022        case -1210031859: // birthDate
1023          this.birthDate = TypeConvertor.castToDate(value); // DateType
1024          return value;
1025        case -1147692044: // address
1026          this.getAddress().add(TypeConvertor.castToAddress(value)); // Address
1027          return value;
1028        case 106642994: // photo
1029          this.photo = TypeConvertor.castToAttachment(value); // Attachment
1030          return value;
1031        case -2058947787: // managingOrganization
1032          this.managingOrganization = TypeConvertor.castToReference(value); // Reference
1033          return value;
1034        case -1422950650: // active
1035          this.active = TypeConvertor.castToBoolean(value); // BooleanType
1036          return value;
1037        case 3321850: // link
1038          this.getLink().add((PersonLinkComponent) value); // PersonLinkComponent
1039          return value;
1040        default: return super.setProperty(hash, name, value);
1041        }
1042
1043      }
1044
1045      @Override
1046      public Base setProperty(String name, Base value) throws FHIRException {
1047        if (name.equals("identifier")) {
1048          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1049        } else if (name.equals("name")) {
1050          this.getName().add(TypeConvertor.castToHumanName(value));
1051        } else if (name.equals("telecom")) {
1052          this.getTelecom().add(TypeConvertor.castToContactPoint(value));
1053        } else if (name.equals("gender")) {
1054          value = new AdministrativeGenderEnumFactory().fromType(TypeConvertor.castToCode(value));
1055          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
1056        } else if (name.equals("birthDate")) {
1057          this.birthDate = TypeConvertor.castToDate(value); // DateType
1058        } else if (name.equals("address")) {
1059          this.getAddress().add(TypeConvertor.castToAddress(value));
1060        } else if (name.equals("photo")) {
1061          this.photo = TypeConvertor.castToAttachment(value); // Attachment
1062        } else if (name.equals("managingOrganization")) {
1063          this.managingOrganization = TypeConvertor.castToReference(value); // Reference
1064        } else if (name.equals("active")) {
1065          this.active = TypeConvertor.castToBoolean(value); // BooleanType
1066        } else if (name.equals("link")) {
1067          this.getLink().add((PersonLinkComponent) value);
1068        } else
1069          return super.setProperty(name, value);
1070        return value;
1071      }
1072
1073      @Override
1074      public Base makeProperty(int hash, String name) throws FHIRException {
1075        switch (hash) {
1076        case -1618432855:  return addIdentifier(); 
1077        case 3373707:  return addName(); 
1078        case -1429363305:  return addTelecom(); 
1079        case -1249512767:  return getGenderElement();
1080        case -1210031859:  return getBirthDateElement();
1081        case -1147692044:  return addAddress(); 
1082        case 106642994:  return getPhoto();
1083        case -2058947787:  return getManagingOrganization();
1084        case -1422950650:  return getActiveElement();
1085        case 3321850:  return addLink(); 
1086        default: return super.makeProperty(hash, name);
1087        }
1088
1089      }
1090
1091      @Override
1092      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1093        switch (hash) {
1094        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1095        case 3373707: /*name*/ return new String[] {"HumanName"};
1096        case -1429363305: /*telecom*/ return new String[] {"ContactPoint"};
1097        case -1249512767: /*gender*/ return new String[] {"code"};
1098        case -1210031859: /*birthDate*/ return new String[] {"date"};
1099        case -1147692044: /*address*/ return new String[] {"Address"};
1100        case 106642994: /*photo*/ return new String[] {"Attachment"};
1101        case -2058947787: /*managingOrganization*/ return new String[] {"Reference"};
1102        case -1422950650: /*active*/ return new String[] {"boolean"};
1103        case 3321850: /*link*/ return new String[] {};
1104        default: return super.getTypesForProperty(hash, name);
1105        }
1106
1107      }
1108
1109      @Override
1110      public Base addChild(String name) throws FHIRException {
1111        if (name.equals("identifier")) {
1112          return addIdentifier();
1113        }
1114        else if (name.equals("name")) {
1115          return addName();
1116        }
1117        else if (name.equals("telecom")) {
1118          return addTelecom();
1119        }
1120        else if (name.equals("gender")) {
1121          throw new FHIRException("Cannot call addChild on a primitive type Person.gender");
1122        }
1123        else if (name.equals("birthDate")) {
1124          throw new FHIRException("Cannot call addChild on a primitive type Person.birthDate");
1125        }
1126        else if (name.equals("address")) {
1127          return addAddress();
1128        }
1129        else if (name.equals("photo")) {
1130          this.photo = new Attachment();
1131          return this.photo;
1132        }
1133        else if (name.equals("managingOrganization")) {
1134          this.managingOrganization = new Reference();
1135          return this.managingOrganization;
1136        }
1137        else if (name.equals("active")) {
1138          throw new FHIRException("Cannot call addChild on a primitive type Person.active");
1139        }
1140        else if (name.equals("link")) {
1141          return addLink();
1142        }
1143        else
1144          return super.addChild(name);
1145      }
1146
1147  public String fhirType() {
1148    return "Person";
1149
1150  }
1151
1152      public Person copy() {
1153        Person dst = new Person();
1154        copyValues(dst);
1155        return dst;
1156      }
1157
1158      public void copyValues(Person dst) {
1159        super.copyValues(dst);
1160        if (identifier != null) {
1161          dst.identifier = new ArrayList<Identifier>();
1162          for (Identifier i : identifier)
1163            dst.identifier.add(i.copy());
1164        };
1165        if (name != null) {
1166          dst.name = new ArrayList<HumanName>();
1167          for (HumanName i : name)
1168            dst.name.add(i.copy());
1169        };
1170        if (telecom != null) {
1171          dst.telecom = new ArrayList<ContactPoint>();
1172          for (ContactPoint i : telecom)
1173            dst.telecom.add(i.copy());
1174        };
1175        dst.gender = gender == null ? null : gender.copy();
1176        dst.birthDate = birthDate == null ? null : birthDate.copy();
1177        if (address != null) {
1178          dst.address = new ArrayList<Address>();
1179          for (Address i : address)
1180            dst.address.add(i.copy());
1181        };
1182        dst.photo = photo == null ? null : photo.copy();
1183        dst.managingOrganization = managingOrganization == null ? null : managingOrganization.copy();
1184        dst.active = active == null ? null : active.copy();
1185        if (link != null) {
1186          dst.link = new ArrayList<PersonLinkComponent>();
1187          for (PersonLinkComponent i : link)
1188            dst.link.add(i.copy());
1189        };
1190      }
1191
1192      protected Person typedCopy() {
1193        return copy();
1194      }
1195
1196      @Override
1197      public boolean equalsDeep(Base other_) {
1198        if (!super.equalsDeep(other_))
1199          return false;
1200        if (!(other_ instanceof Person))
1201          return false;
1202        Person o = (Person) other_;
1203        return compareDeep(identifier, o.identifier, true) && compareDeep(name, o.name, true) && compareDeep(telecom, o.telecom, true)
1204           && compareDeep(gender, o.gender, true) && compareDeep(birthDate, o.birthDate, true) && compareDeep(address, o.address, true)
1205           && compareDeep(photo, o.photo, true) && compareDeep(managingOrganization, o.managingOrganization, true)
1206           && compareDeep(active, o.active, true) && compareDeep(link, o.link, true);
1207      }
1208
1209      @Override
1210      public boolean equalsShallow(Base other_) {
1211        if (!super.equalsShallow(other_))
1212          return false;
1213        if (!(other_ instanceof Person))
1214          return false;
1215        Person o = (Person) other_;
1216        return compareValues(gender, o.gender, true) && compareValues(birthDate, o.birthDate, true) && compareValues(active, o.active, true)
1217          ;
1218      }
1219
1220      public boolean isEmpty() {
1221        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, name, telecom
1222          , gender, birthDate, address, photo, managingOrganization, active, link);
1223      }
1224
1225  @Override
1226  public ResourceType getResourceType() {
1227    return ResourceType.Person;
1228   }
1229
1230 /**
1231   * Search parameter: <b>identifier</b>
1232   * <p>
1233   * Description: <b>A person Identifier</b><br>
1234   * Type: <b>token</b><br>
1235   * Path: <b>Person.identifier</b><br>
1236   * </p>
1237   */
1238  @SearchParamDefinition(name="identifier", path="Person.identifier", description="A person Identifier", type="token" )
1239  public static final String SP_IDENTIFIER = "identifier";
1240 /**
1241   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1242   * <p>
1243   * Description: <b>A person Identifier</b><br>
1244   * Type: <b>token</b><br>
1245   * Path: <b>Person.identifier</b><br>
1246   * </p>
1247   */
1248  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1249
1250 /**
1251   * Search parameter: <b>link</b>
1252   * <p>
1253   * Description: <b>Any link has this Patient, Person, RelatedPerson or Practitioner reference</b><br>
1254   * Type: <b>reference</b><br>
1255   * Path: <b>Person.link.target</b><br>
1256   * </p>
1257   */
1258  @SearchParamDefinition(name="link", path="Person.link.target", description="Any link has this Patient, Person, RelatedPerson or Practitioner reference", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={Patient.class, Person.class, Practitioner.class, RelatedPerson.class } )
1259  public static final String SP_LINK = "link";
1260 /**
1261   * <b>Fluent Client</b> search parameter constant for <b>link</b>
1262   * <p>
1263   * Description: <b>Any link has this Patient, Person, RelatedPerson or Practitioner reference</b><br>
1264   * Type: <b>reference</b><br>
1265   * Path: <b>Person.link.target</b><br>
1266   * </p>
1267   */
1268  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LINK = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_LINK);
1269
1270/**
1271   * Constant for fluent queries to be used to add include statements. Specifies
1272   * the path value of "<b>Person:link</b>".
1273   */
1274  public static final ca.uhn.fhir.model.api.Include INCLUDE_LINK = new ca.uhn.fhir.model.api.Include("Person:link").toLocked();
1275
1276 /**
1277   * Search parameter: <b>name</b>
1278   * <p>
1279   * 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>
1280   * Type: <b>string</b><br>
1281   * Path: <b>Person.name</b><br>
1282   * </p>
1283   */
1284  @SearchParamDefinition(name="name", path="Person.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" )
1285  public static final String SP_NAME = "name";
1286 /**
1287   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1288   * <p>
1289   * 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>
1290   * Type: <b>string</b><br>
1291   * Path: <b>Person.name</b><br>
1292   * </p>
1293   */
1294  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1295
1296 /**
1297   * Search parameter: <b>organization</b>
1298   * <p>
1299   * Description: <b>The organization at which this person record is being managed</b><br>
1300   * Type: <b>reference</b><br>
1301   * Path: <b>Person.managingOrganization</b><br>
1302   * </p>
1303   */
1304  @SearchParamDefinition(name="organization", path="Person.managingOrganization", description="The organization at which this person record is being managed", type="reference", target={Organization.class } )
1305  public static final String SP_ORGANIZATION = "organization";
1306 /**
1307   * <b>Fluent Client</b> search parameter constant for <b>organization</b>
1308   * <p>
1309   * Description: <b>The organization at which this person record is being managed</b><br>
1310   * Type: <b>reference</b><br>
1311   * Path: <b>Person.managingOrganization</b><br>
1312   * </p>
1313   */
1314  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ORGANIZATION);
1315
1316/**
1317   * Constant for fluent queries to be used to add include statements. Specifies
1318   * the path value of "<b>Person:organization</b>".
1319   */
1320  public static final ca.uhn.fhir.model.api.Include INCLUDE_ORGANIZATION = new ca.uhn.fhir.model.api.Include("Person:organization").toLocked();
1321
1322 /**
1323   * Search parameter: <b>patient</b>
1324   * <p>
1325   * Description: <b>The Person links to this Patient</b><br>
1326   * Type: <b>reference</b><br>
1327   * Path: <b>Person.link.target.where(resolve() is Patient)</b><br>
1328   * </p>
1329   */
1330  @SearchParamDefinition(name="patient", path="Person.link.target.where(resolve() is Patient)", description="The Person links to this Patient", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class, Person.class, Practitioner.class, RelatedPerson.class } )
1331  public static final String SP_PATIENT = "patient";
1332 /**
1333   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1334   * <p>
1335   * Description: <b>The Person links to this Patient</b><br>
1336   * Type: <b>reference</b><br>
1337   * Path: <b>Person.link.target.where(resolve() is Patient)</b><br>
1338   * </p>
1339   */
1340  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1341
1342/**
1343   * Constant for fluent queries to be used to add include statements. Specifies
1344   * the path value of "<b>Person:patient</b>".
1345   */
1346  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Person:patient").toLocked();
1347
1348 /**
1349   * Search parameter: <b>practitioner</b>
1350   * <p>
1351   * Description: <b>The Person links to this Practitioner</b><br>
1352   * Type: <b>reference</b><br>
1353   * Path: <b>Person.link.target.where(resolve() is Practitioner)</b><br>
1354   * </p>
1355   */
1356  @SearchParamDefinition(name="practitioner", path="Person.link.target.where(resolve() is Practitioner)", description="The Person links to this Practitioner", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Patient.class, Person.class, Practitioner.class, RelatedPerson.class } )
1357  public static final String SP_PRACTITIONER = "practitioner";
1358 /**
1359   * <b>Fluent Client</b> search parameter constant for <b>practitioner</b>
1360   * <p>
1361   * Description: <b>The Person links to this Practitioner</b><br>
1362   * Type: <b>reference</b><br>
1363   * Path: <b>Person.link.target.where(resolve() is Practitioner)</b><br>
1364   * </p>
1365   */
1366  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRACTITIONER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRACTITIONER);
1367
1368/**
1369   * Constant for fluent queries to be used to add include statements. Specifies
1370   * the path value of "<b>Person:practitioner</b>".
1371   */
1372  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRACTITIONER = new ca.uhn.fhir.model.api.Include("Person:practitioner").toLocked();
1373
1374 /**
1375   * Search parameter: <b>relatedperson</b>
1376   * <p>
1377   * Description: <b>The Person links to this RelatedPerson</b><br>
1378   * Type: <b>reference</b><br>
1379   * Path: <b>Person.link.target.where(resolve() is RelatedPerson)</b><br>
1380   * </p>
1381   */
1382  @SearchParamDefinition(name="relatedperson", path="Person.link.target.where(resolve() is RelatedPerson)", description="The Person links to this RelatedPerson", type="reference", target={Patient.class, Person.class, Practitioner.class, RelatedPerson.class } )
1383  public static final String SP_RELATEDPERSON = "relatedperson";
1384 /**
1385   * <b>Fluent Client</b> search parameter constant for <b>relatedperson</b>
1386   * <p>
1387   * Description: <b>The Person links to this RelatedPerson</b><br>
1388   * Type: <b>reference</b><br>
1389   * Path: <b>Person.link.target.where(resolve() is RelatedPerson)</b><br>
1390   * </p>
1391   */
1392  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RELATEDPERSON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RELATEDPERSON);
1393
1394/**
1395   * Constant for fluent queries to be used to add include statements. Specifies
1396   * the path value of "<b>Person:relatedperson</b>".
1397   */
1398  public static final ca.uhn.fhir.model.api.Include INCLUDE_RELATEDPERSON = new ca.uhn.fhir.model.api.Include("Person:relatedperson").toLocked();
1399
1400 /**
1401   * Search parameter: <b>address-city</b>
1402   * <p>
1403   * Description: <b>Multiple Resources: 
1404
1405* [Patient](patient.html): A city specified in an address
1406* [Person](person.html): A city specified in an address
1407* [Practitioner](practitioner.html): A city specified in an address
1408* [RelatedPerson](relatedperson.html): A city specified in an address
1409</b><br>
1410   * Type: <b>string</b><br>
1411   * Path: <b>Patient.address.city | Person.address.city | Practitioner.address.city | RelatedPerson.address.city</b><br>
1412   * </p>
1413   */
1414  @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" )
1415  public static final String SP_ADDRESS_CITY = "address-city";
1416 /**
1417   * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
1418   * <p>
1419   * Description: <b>Multiple Resources: 
1420
1421* [Patient](patient.html): A city specified in an address
1422* [Person](person.html): A city specified in an address
1423* [Practitioner](practitioner.html): A city specified in an address
1424* [RelatedPerson](relatedperson.html): A city specified in an address
1425</b><br>
1426   * Type: <b>string</b><br>
1427   * Path: <b>Patient.address.city | Person.address.city | Practitioner.address.city | RelatedPerson.address.city</b><br>
1428   * </p>
1429   */
1430  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_CITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_CITY);
1431
1432 /**
1433   * Search parameter: <b>address-country</b>
1434   * <p>
1435   * Description: <b>Multiple Resources: 
1436
1437* [Patient](patient.html): A country specified in an address
1438* [Person](person.html): A country specified in an address
1439* [Practitioner](practitioner.html): A country specified in an address
1440* [RelatedPerson](relatedperson.html): A country specified in an address
1441</b><br>
1442   * Type: <b>string</b><br>
1443   * Path: <b>Patient.address.country | Person.address.country | Practitioner.address.country | RelatedPerson.address.country</b><br>
1444   * </p>
1445   */
1446  @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" )
1447  public static final String SP_ADDRESS_COUNTRY = "address-country";
1448 /**
1449   * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
1450   * <p>
1451   * Description: <b>Multiple Resources: 
1452
1453* [Patient](patient.html): A country specified in an address
1454* [Person](person.html): A country specified in an address
1455* [Practitioner](practitioner.html): A country specified in an address
1456* [RelatedPerson](relatedperson.html): A country specified in an address
1457</b><br>
1458   * Type: <b>string</b><br>
1459   * Path: <b>Patient.address.country | Person.address.country | Practitioner.address.country | RelatedPerson.address.country</b><br>
1460   * </p>
1461   */
1462  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_COUNTRY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_COUNTRY);
1463
1464 /**
1465   * Search parameter: <b>address-postalcode</b>
1466   * <p>
1467   * Description: <b>Multiple Resources: 
1468
1469* [Patient](patient.html): A postalCode specified in an address
1470* [Person](person.html): A postal code specified in an address
1471* [Practitioner](practitioner.html): A postalCode specified in an address
1472* [RelatedPerson](relatedperson.html): A postal code specified in an address
1473</b><br>
1474   * Type: <b>string</b><br>
1475   * Path: <b>Patient.address.postalCode | Person.address.postalCode | Practitioner.address.postalCode | RelatedPerson.address.postalCode</b><br>
1476   * </p>
1477   */
1478  @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" )
1479  public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
1480 /**
1481   * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
1482   * <p>
1483   * Description: <b>Multiple Resources: 
1484
1485* [Patient](patient.html): A postalCode specified in an address
1486* [Person](person.html): A postal code specified in an address
1487* [Practitioner](practitioner.html): A postalCode specified in an address
1488* [RelatedPerson](relatedperson.html): A postal code specified in an address
1489</b><br>
1490   * Type: <b>string</b><br>
1491   * Path: <b>Patient.address.postalCode | Person.address.postalCode | Practitioner.address.postalCode | RelatedPerson.address.postalCode</b><br>
1492   * </p>
1493   */
1494  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_POSTALCODE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_POSTALCODE);
1495
1496 /**
1497   * Search parameter: <b>address-state</b>
1498   * <p>
1499   * Description: <b>Multiple Resources: 
1500
1501* [Patient](patient.html): A state specified in an address
1502* [Person](person.html): A state specified in an address
1503* [Practitioner](practitioner.html): A state specified in an address
1504* [RelatedPerson](relatedperson.html): A state specified in an address
1505</b><br>
1506   * Type: <b>string</b><br>
1507   * Path: <b>Patient.address.state | Person.address.state | Practitioner.address.state | RelatedPerson.address.state</b><br>
1508   * </p>
1509   */
1510  @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" )
1511  public static final String SP_ADDRESS_STATE = "address-state";
1512 /**
1513   * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
1514   * <p>
1515   * Description: <b>Multiple Resources: 
1516
1517* [Patient](patient.html): A state specified in an address
1518* [Person](person.html): A state specified in an address
1519* [Practitioner](practitioner.html): A state specified in an address
1520* [RelatedPerson](relatedperson.html): A state specified in an address
1521</b><br>
1522   * Type: <b>string</b><br>
1523   * Path: <b>Patient.address.state | Person.address.state | Practitioner.address.state | RelatedPerson.address.state</b><br>
1524   * </p>
1525   */
1526  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_STATE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_STATE);
1527
1528 /**
1529   * Search parameter: <b>address-use</b>
1530   * <p>
1531   * Description: <b>Multiple Resources: 
1532
1533* [Patient](patient.html): A use code specified in an address
1534* [Person](person.html): A use code specified in an address
1535* [Practitioner](practitioner.html): A use code specified in an address
1536* [RelatedPerson](relatedperson.html): A use code specified in an address
1537</b><br>
1538   * Type: <b>token</b><br>
1539   * Path: <b>Patient.address.use | Person.address.use | Practitioner.address.use | RelatedPerson.address.use</b><br>
1540   * </p>
1541   */
1542  @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" )
1543  public static final String SP_ADDRESS_USE = "address-use";
1544 /**
1545   * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
1546   * <p>
1547   * Description: <b>Multiple Resources: 
1548
1549* [Patient](patient.html): A use code specified in an address
1550* [Person](person.html): A use code specified in an address
1551* [Practitioner](practitioner.html): A use code specified in an address
1552* [RelatedPerson](relatedperson.html): A use code specified in an address
1553</b><br>
1554   * Type: <b>token</b><br>
1555   * Path: <b>Patient.address.use | Person.address.use | Practitioner.address.use | RelatedPerson.address.use</b><br>
1556   * </p>
1557   */
1558  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADDRESS_USE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADDRESS_USE);
1559
1560 /**
1561   * Search parameter: <b>address</b>
1562   * <p>
1563   * Description: <b>Multiple Resources: 
1564
1565* [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
1566* [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
1567* [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
1568* [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
1569</b><br>
1570   * Type: <b>string</b><br>
1571   * Path: <b>Patient.address | Person.address | Practitioner.address | RelatedPerson.address</b><br>
1572   * </p>
1573   */
1574  @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" )
1575  public static final String SP_ADDRESS = "address";
1576 /**
1577   * <b>Fluent Client</b> search parameter constant for <b>address</b>
1578   * <p>
1579   * Description: <b>Multiple Resources: 
1580
1581* [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
1582* [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
1583* [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
1584* [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
1585</b><br>
1586   * Type: <b>string</b><br>
1587   * Path: <b>Patient.address | Person.address | Practitioner.address | RelatedPerson.address</b><br>
1588   * </p>
1589   */
1590  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS);
1591
1592 /**
1593   * Search parameter: <b>birthdate</b>
1594   * <p>
1595   * Description: <b>Multiple Resources: 
1596
1597* [Patient](patient.html): The patient's date of birth
1598* [Person](person.html): The person's date of birth
1599* [RelatedPerson](relatedperson.html): The Related Person's date of birth
1600</b><br>
1601   * Type: <b>date</b><br>
1602   * Path: <b>Patient.birthDate | Person.birthDate | RelatedPerson.birthDate</b><br>
1603   * </p>
1604   */
1605  @SearchParamDefinition(name="birthdate", path="Patient.birthDate | Person.birthDate | RelatedPerson.birthDate", description="Multiple Resources: \r\n\r\n* [Patient](patient.html): The patient's date of birth\r\n* [Person](person.html): The person's date of birth\r\n* [RelatedPerson](relatedperson.html): The Related Person's date of birth\r\n", type="date" )
1606  public static final String SP_BIRTHDATE = "birthdate";
1607 /**
1608   * <b>Fluent Client</b> search parameter constant for <b>birthdate</b>
1609   * <p>
1610   * Description: <b>Multiple Resources: 
1611
1612* [Patient](patient.html): The patient's date of birth
1613* [Person](person.html): The person's date of birth
1614* [RelatedPerson](relatedperson.html): The Related Person's date of birth
1615</b><br>
1616   * Type: <b>date</b><br>
1617   * Path: <b>Patient.birthDate | Person.birthDate | RelatedPerson.birthDate</b><br>
1618   * </p>
1619   */
1620  public static final ca.uhn.fhir.rest.gclient.DateClientParam BIRTHDATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_BIRTHDATE);
1621
1622 /**
1623   * Search parameter: <b>email</b>
1624   * <p>
1625   * Description: <b>Multiple Resources: 
1626
1627* [Patient](patient.html): A value in an email contact
1628* [Person](person.html): A value in an email contact
1629* [Practitioner](practitioner.html): A value in an email contact
1630* [PractitionerRole](practitionerrole.html): A value in an email contact
1631* [RelatedPerson](relatedperson.html): A value in an email contact
1632</b><br>
1633   * Type: <b>token</b><br>
1634   * Path: <b>Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.telecom.where(system='email') | RelatedPerson.telecom.where(system='email')</b><br>
1635   * </p>
1636   */
1637  @SearchParamDefinition(name="email", path="Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.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" )
1638  public static final String SP_EMAIL = "email";
1639 /**
1640   * <b>Fluent Client</b> search parameter constant for <b>email</b>
1641   * <p>
1642   * Description: <b>Multiple Resources: 
1643
1644* [Patient](patient.html): A value in an email contact
1645* [Person](person.html): A value in an email contact
1646* [Practitioner](practitioner.html): A value in an email contact
1647* [PractitionerRole](practitionerrole.html): A value in an email contact
1648* [RelatedPerson](relatedperson.html): A value in an email contact
1649</b><br>
1650   * Type: <b>token</b><br>
1651   * Path: <b>Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.telecom.where(system='email') | RelatedPerson.telecom.where(system='email')</b><br>
1652   * </p>
1653   */
1654  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EMAIL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EMAIL);
1655
1656 /**
1657   * Search parameter: <b>gender</b>
1658   * <p>
1659   * Description: <b>Multiple Resources: 
1660
1661* [Patient](patient.html): Gender of the patient
1662* [Person](person.html): The gender of the person
1663* [Practitioner](practitioner.html): Gender of the practitioner
1664* [RelatedPerson](relatedperson.html): Gender of the related person
1665</b><br>
1666   * Type: <b>token</b><br>
1667   * Path: <b>Patient.gender | Person.gender | Practitioner.gender | RelatedPerson.gender</b><br>
1668   * </p>
1669   */
1670  @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" )
1671  public static final String SP_GENDER = "gender";
1672 /**
1673   * <b>Fluent Client</b> search parameter constant for <b>gender</b>
1674   * <p>
1675   * Description: <b>Multiple Resources: 
1676
1677* [Patient](patient.html): Gender of the patient
1678* [Person](person.html): The gender of the person
1679* [Practitioner](practitioner.html): Gender of the practitioner
1680* [RelatedPerson](relatedperson.html): Gender of the related person
1681</b><br>
1682   * Type: <b>token</b><br>
1683   * Path: <b>Patient.gender | Person.gender | Practitioner.gender | RelatedPerson.gender</b><br>
1684   * </p>
1685   */
1686  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GENDER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GENDER);
1687
1688 /**
1689   * Search parameter: <b>phone</b>
1690   * <p>
1691   * Description: <b>Multiple Resources: 
1692
1693* [Patient](patient.html): A value in a phone contact
1694* [Person](person.html): A value in a phone contact
1695* [Practitioner](practitioner.html): A value in a phone contact
1696* [PractitionerRole](practitionerrole.html): A value in a phone contact
1697* [RelatedPerson](relatedperson.html): A value in a phone contact
1698</b><br>
1699   * Type: <b>token</b><br>
1700   * Path: <b>Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.telecom.where(system='phone') | RelatedPerson.telecom.where(system='phone')</b><br>
1701   * </p>
1702   */
1703  @SearchParamDefinition(name="phone", path="Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.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" )
1704  public static final String SP_PHONE = "phone";
1705 /**
1706   * <b>Fluent Client</b> search parameter constant for <b>phone</b>
1707   * <p>
1708   * Description: <b>Multiple Resources: 
1709
1710* [Patient](patient.html): A value in a phone contact
1711* [Person](person.html): A value in a phone contact
1712* [Practitioner](practitioner.html): A value in a phone contact
1713* [PractitionerRole](practitionerrole.html): A value in a phone contact
1714* [RelatedPerson](relatedperson.html): A value in a phone contact
1715</b><br>
1716   * Type: <b>token</b><br>
1717   * Path: <b>Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.telecom.where(system='phone') | RelatedPerson.telecom.where(system='phone')</b><br>
1718   * </p>
1719   */
1720  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PHONE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PHONE);
1721
1722 /**
1723   * Search parameter: <b>phonetic</b>
1724   * <p>
1725   * Description: <b>Multiple Resources: 
1726
1727* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm
1728* [Person](person.html): A portion of name using some kind of phonetic matching algorithm
1729* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm
1730* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm
1731</b><br>
1732   * Type: <b>string</b><br>
1733   * Path: <b>Patient.name | Person.name | Practitioner.name | RelatedPerson.name</b><br>
1734   * </p>
1735   */
1736  @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" )
1737  public static final String SP_PHONETIC = "phonetic";
1738 /**
1739   * <b>Fluent Client</b> search parameter constant for <b>phonetic</b>
1740   * <p>
1741   * Description: <b>Multiple Resources: 
1742
1743* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm
1744* [Person](person.html): A portion of name using some kind of phonetic matching algorithm
1745* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm
1746* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm
1747</b><br>
1748   * Type: <b>string</b><br>
1749   * Path: <b>Patient.name | Person.name | Practitioner.name | RelatedPerson.name</b><br>
1750   * </p>
1751   */
1752  public static final ca.uhn.fhir.rest.gclient.StringClientParam PHONETIC = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PHONETIC);
1753
1754 /**
1755   * Search parameter: <b>telecom</b>
1756   * <p>
1757   * Description: <b>Multiple Resources: 
1758
1759* [Patient](patient.html): The value in any kind of telecom details of the patient
1760* [Person](person.html): The value in any kind of contact
1761* [Practitioner](practitioner.html): The value in any kind of contact
1762* [PractitionerRole](practitionerrole.html): The value in any kind of contact
1763* [RelatedPerson](relatedperson.html): The value in any kind of contact
1764</b><br>
1765   * Type: <b>token</b><br>
1766   * Path: <b>Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.telecom | RelatedPerson.telecom</b><br>
1767   * </p>
1768   */
1769  @SearchParamDefinition(name="telecom", path="Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.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" )
1770  public static final String SP_TELECOM = "telecom";
1771 /**
1772   * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
1773   * <p>
1774   * Description: <b>Multiple Resources: 
1775
1776* [Patient](patient.html): The value in any kind of telecom details of the patient
1777* [Person](person.html): The value in any kind of contact
1778* [Practitioner](practitioner.html): The value in any kind of contact
1779* [PractitionerRole](practitionerrole.html): The value in any kind of contact
1780* [RelatedPerson](relatedperson.html): The value in any kind of contact
1781</b><br>
1782   * Type: <b>token</b><br>
1783   * Path: <b>Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.telecom | RelatedPerson.telecom</b><br>
1784   * </p>
1785   */
1786  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TELECOM);
1787
1788
1789}
1790