001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 6, 2018 17:51-0400 for FHIR v3.4.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.r4.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.
048 */
049@ResourceDef(name="RelatedPerson", profile="http://hl7.org/fhir/Profile/RelatedPerson")
050public class RelatedPerson extends DomainResource {
051
052    /**
053     * Identifier for a person within a particular scope.
054     */
055    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
056    @Description(shortDefinition="A human identifier for this person", formalDefinition="Identifier for a person within a particular scope." )
057    protected List<Identifier> identifier;
058
059    /**
060     * Whether this related person record is in active use.
061     */
062    @Child(name = "active", type = {BooleanType.class}, order=1, min=0, max=1, modifier=true, summary=true)
063    @Description(shortDefinition="Whether this related person's record is in active use", formalDefinition="Whether this related person record is in active use." )
064    protected BooleanType active;
065
066    /**
067     * The patient this person is related to.
068     */
069    @Child(name = "patient", type = {Patient.class}, order=2, min=1, max=1, modifier=false, summary=true)
070    @Description(shortDefinition="The patient this person is related to", formalDefinition="The patient this person is related to." )
071    protected Reference patient;
072
073    /**
074     * The actual object that is the target of the reference (The patient this person is related to.)
075     */
076    protected Patient patientTarget;
077
078    /**
079     * The nature of the relationship between a patient and the related person.
080     */
081    @Child(name = "relationship", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
082    @Description(shortDefinition="The nature of the relationship", formalDefinition="The nature of the relationship between a patient and the related person." )
083    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype")
084    protected List<CodeableConcept> relationship;
085
086    /**
087     * A name associated with the person.
088     */
089    @Child(name = "name", type = {HumanName.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
090    @Description(shortDefinition="A name associated with the person", formalDefinition="A name associated with the person." )
091    protected List<HumanName> name;
092
093    /**
094     * A contact detail for the person, e.g. a telephone number or an email address.
095     */
096    @Child(name = "telecom", type = {ContactPoint.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
097    @Description(shortDefinition="A contact detail for the person", formalDefinition="A contact detail for the person, e.g. a telephone number or an email address." )
098    protected List<ContactPoint> telecom;
099
100    /**
101     * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
102     */
103    @Child(name = "gender", type = {CodeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
104    @Description(shortDefinition="male | female | other | unknown", formalDefinition="Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes." )
105    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administrative-gender")
106    protected Enumeration<AdministrativeGender> gender;
107
108    /**
109     * The date on which the related person was born.
110     */
111    @Child(name = "birthDate", type = {DateType.class}, order=7, min=0, max=1, modifier=false, summary=true)
112    @Description(shortDefinition="The date on which the related person was born", formalDefinition="The date on which the related person was born." )
113    protected DateType birthDate;
114
115    /**
116     * Address where the related person can be contacted or visited.
117     */
118    @Child(name = "address", type = {Address.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
119    @Description(shortDefinition="Address where the related person can be contacted or visited", formalDefinition="Address where the related person can be contacted or visited." )
120    protected List<Address> address;
121
122    /**
123     * Image of the person.
124     */
125    @Child(name = "photo", type = {Attachment.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
126    @Description(shortDefinition="Image of the person", formalDefinition="Image of the person." )
127    protected List<Attachment> photo;
128
129    /**
130     * The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown.
131     */
132    @Child(name = "period", type = {Period.class}, order=10, min=0, max=1, modifier=false, summary=false)
133    @Description(shortDefinition="Period of time that this relationship is considered valid", formalDefinition="The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown." )
134    protected Period period;
135
136    private static final long serialVersionUID = -243680341L;
137
138  /**
139   * Constructor
140   */
141    public RelatedPerson() {
142      super();
143    }
144
145  /**
146   * Constructor
147   */
148    public RelatedPerson(Reference patient) {
149      super();
150      this.patient = patient;
151    }
152
153    /**
154     * @return {@link #identifier} (Identifier for a person within a particular scope.)
155     */
156    public List<Identifier> getIdentifier() { 
157      if (this.identifier == null)
158        this.identifier = new ArrayList<Identifier>();
159      return this.identifier;
160    }
161
162    /**
163     * @return Returns a reference to <code>this</code> for easy method chaining
164     */
165    public RelatedPerson setIdentifier(List<Identifier> theIdentifier) { 
166      this.identifier = theIdentifier;
167      return this;
168    }
169
170    public boolean hasIdentifier() { 
171      if (this.identifier == null)
172        return false;
173      for (Identifier item : this.identifier)
174        if (!item.isEmpty())
175          return true;
176      return false;
177    }
178
179    public Identifier addIdentifier() { //3
180      Identifier t = new Identifier();
181      if (this.identifier == null)
182        this.identifier = new ArrayList<Identifier>();
183      this.identifier.add(t);
184      return t;
185    }
186
187    public RelatedPerson addIdentifier(Identifier t) { //3
188      if (t == null)
189        return this;
190      if (this.identifier == null)
191        this.identifier = new ArrayList<Identifier>();
192      this.identifier.add(t);
193      return this;
194    }
195
196    /**
197     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
198     */
199    public Identifier getIdentifierFirstRep() { 
200      if (getIdentifier().isEmpty()) {
201        addIdentifier();
202      }
203      return getIdentifier().get(0);
204    }
205
206    /**
207     * @return {@link #active} (Whether this related person record is in active use.). This is the underlying object with id, value and extensions. The accessor "getActive" gives direct access to the value
208     */
209    public BooleanType getActiveElement() { 
210      if (this.active == null)
211        if (Configuration.errorOnAutoCreate())
212          throw new Error("Attempt to auto-create RelatedPerson.active");
213        else if (Configuration.doAutoCreate())
214          this.active = new BooleanType(); // bb
215      return this.active;
216    }
217
218    public boolean hasActiveElement() { 
219      return this.active != null && !this.active.isEmpty();
220    }
221
222    public boolean hasActive() { 
223      return this.active != null && !this.active.isEmpty();
224    }
225
226    /**
227     * @param value {@link #active} (Whether this related person record is in active use.). This is the underlying object with id, value and extensions. The accessor "getActive" gives direct access to the value
228     */
229    public RelatedPerson setActiveElement(BooleanType value) { 
230      this.active = value;
231      return this;
232    }
233
234    /**
235     * @return Whether this related person record is in active use.
236     */
237    public boolean getActive() { 
238      return this.active == null || this.active.isEmpty() ? false : this.active.getValue();
239    }
240
241    /**
242     * @param value Whether this related person record is in active use.
243     */
244    public RelatedPerson setActive(boolean value) { 
245        if (this.active == null)
246          this.active = new BooleanType();
247        this.active.setValue(value);
248      return this;
249    }
250
251    /**
252     * @return {@link #patient} (The patient this person is related to.)
253     */
254    public Reference getPatient() { 
255      if (this.patient == null)
256        if (Configuration.errorOnAutoCreate())
257          throw new Error("Attempt to auto-create RelatedPerson.patient");
258        else if (Configuration.doAutoCreate())
259          this.patient = new Reference(); // cc
260      return this.patient;
261    }
262
263    public boolean hasPatient() { 
264      return this.patient != null && !this.patient.isEmpty();
265    }
266
267    /**
268     * @param value {@link #patient} (The patient this person is related to.)
269     */
270    public RelatedPerson setPatient(Reference value) { 
271      this.patient = value;
272      return this;
273    }
274
275    /**
276     * @return {@link #patient} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The patient this person is related to.)
277     */
278    public Patient getPatientTarget() { 
279      if (this.patientTarget == null)
280        if (Configuration.errorOnAutoCreate())
281          throw new Error("Attempt to auto-create RelatedPerson.patient");
282        else if (Configuration.doAutoCreate())
283          this.patientTarget = new Patient(); // aa
284      return this.patientTarget;
285    }
286
287    /**
288     * @param value {@link #patient} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The patient this person is related to.)
289     */
290    public RelatedPerson setPatientTarget(Patient value) { 
291      this.patientTarget = value;
292      return this;
293    }
294
295    /**
296     * @return {@link #relationship} (The nature of the relationship between a patient and the related person.)
297     */
298    public List<CodeableConcept> getRelationship() { 
299      if (this.relationship == null)
300        this.relationship = new ArrayList<CodeableConcept>();
301      return this.relationship;
302    }
303
304    /**
305     * @return Returns a reference to <code>this</code> for easy method chaining
306     */
307    public RelatedPerson setRelationship(List<CodeableConcept> theRelationship) { 
308      this.relationship = theRelationship;
309      return this;
310    }
311
312    public boolean hasRelationship() { 
313      if (this.relationship == null)
314        return false;
315      for (CodeableConcept item : this.relationship)
316        if (!item.isEmpty())
317          return true;
318      return false;
319    }
320
321    public CodeableConcept addRelationship() { //3
322      CodeableConcept t = new CodeableConcept();
323      if (this.relationship == null)
324        this.relationship = new ArrayList<CodeableConcept>();
325      this.relationship.add(t);
326      return t;
327    }
328
329    public RelatedPerson addRelationship(CodeableConcept t) { //3
330      if (t == null)
331        return this;
332      if (this.relationship == null)
333        this.relationship = new ArrayList<CodeableConcept>();
334      this.relationship.add(t);
335      return this;
336    }
337
338    /**
339     * @return The first repetition of repeating field {@link #relationship}, creating it if it does not already exist
340     */
341    public CodeableConcept getRelationshipFirstRep() { 
342      if (getRelationship().isEmpty()) {
343        addRelationship();
344      }
345      return getRelationship().get(0);
346    }
347
348    /**
349     * @return {@link #name} (A name associated with the person.)
350     */
351    public List<HumanName> getName() { 
352      if (this.name == null)
353        this.name = new ArrayList<HumanName>();
354      return this.name;
355    }
356
357    /**
358     * @return Returns a reference to <code>this</code> for easy method chaining
359     */
360    public RelatedPerson setName(List<HumanName> theName) { 
361      this.name = theName;
362      return this;
363    }
364
365    public boolean hasName() { 
366      if (this.name == null)
367        return false;
368      for (HumanName item : this.name)
369        if (!item.isEmpty())
370          return true;
371      return false;
372    }
373
374    public HumanName addName() { //3
375      HumanName t = new HumanName();
376      if (this.name == null)
377        this.name = new ArrayList<HumanName>();
378      this.name.add(t);
379      return t;
380    }
381
382    public RelatedPerson addName(HumanName t) { //3
383      if (t == null)
384        return this;
385      if (this.name == null)
386        this.name = new ArrayList<HumanName>();
387      this.name.add(t);
388      return this;
389    }
390
391    /**
392     * @return The first repetition of repeating field {@link #name}, creating it if it does not already exist
393     */
394    public HumanName getNameFirstRep() { 
395      if (getName().isEmpty()) {
396        addName();
397      }
398      return getName().get(0);
399    }
400
401    /**
402     * @return {@link #telecom} (A contact detail for the person, e.g. a telephone number or an email address.)
403     */
404    public List<ContactPoint> getTelecom() { 
405      if (this.telecom == null)
406        this.telecom = new ArrayList<ContactPoint>();
407      return this.telecom;
408    }
409
410    /**
411     * @return Returns a reference to <code>this</code> for easy method chaining
412     */
413    public RelatedPerson setTelecom(List<ContactPoint> theTelecom) { 
414      this.telecom = theTelecom;
415      return this;
416    }
417
418    public boolean hasTelecom() { 
419      if (this.telecom == null)
420        return false;
421      for (ContactPoint item : this.telecom)
422        if (!item.isEmpty())
423          return true;
424      return false;
425    }
426
427    public ContactPoint addTelecom() { //3
428      ContactPoint t = new ContactPoint();
429      if (this.telecom == null)
430        this.telecom = new ArrayList<ContactPoint>();
431      this.telecom.add(t);
432      return t;
433    }
434
435    public RelatedPerson addTelecom(ContactPoint t) { //3
436      if (t == null)
437        return this;
438      if (this.telecom == null)
439        this.telecom = new ArrayList<ContactPoint>();
440      this.telecom.add(t);
441      return this;
442    }
443
444    /**
445     * @return The first repetition of repeating field {@link #telecom}, creating it if it does not already exist
446     */
447    public ContactPoint getTelecomFirstRep() { 
448      if (getTelecom().isEmpty()) {
449        addTelecom();
450      }
451      return getTelecom().get(0);
452    }
453
454    /**
455     * @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
456     */
457    public Enumeration<AdministrativeGender> getGenderElement() { 
458      if (this.gender == null)
459        if (Configuration.errorOnAutoCreate())
460          throw new Error("Attempt to auto-create RelatedPerson.gender");
461        else if (Configuration.doAutoCreate())
462          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory()); // bb
463      return this.gender;
464    }
465
466    public boolean hasGenderElement() { 
467      return this.gender != null && !this.gender.isEmpty();
468    }
469
470    public boolean hasGender() { 
471      return this.gender != null && !this.gender.isEmpty();
472    }
473
474    /**
475     * @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
476     */
477    public RelatedPerson setGenderElement(Enumeration<AdministrativeGender> value) { 
478      this.gender = value;
479      return this;
480    }
481
482    /**
483     * @return Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
484     */
485    public AdministrativeGender getGender() { 
486      return this.gender == null ? null : this.gender.getValue();
487    }
488
489    /**
490     * @param value Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
491     */
492    public RelatedPerson setGender(AdministrativeGender value) { 
493      if (value == null)
494        this.gender = null;
495      else {
496        if (this.gender == null)
497          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory());
498        this.gender.setValue(value);
499      }
500      return this;
501    }
502
503    /**
504     * @return {@link #birthDate} (The date on which the related person was born.). This is the underlying object with id, value and extensions. The accessor "getBirthDate" gives direct access to the value
505     */
506    public DateType getBirthDateElement() { 
507      if (this.birthDate == null)
508        if (Configuration.errorOnAutoCreate())
509          throw new Error("Attempt to auto-create RelatedPerson.birthDate");
510        else if (Configuration.doAutoCreate())
511          this.birthDate = new DateType(); // bb
512      return this.birthDate;
513    }
514
515    public boolean hasBirthDateElement() { 
516      return this.birthDate != null && !this.birthDate.isEmpty();
517    }
518
519    public boolean hasBirthDate() { 
520      return this.birthDate != null && !this.birthDate.isEmpty();
521    }
522
523    /**
524     * @param value {@link #birthDate} (The date on which the related person was born.). This is the underlying object with id, value and extensions. The accessor "getBirthDate" gives direct access to the value
525     */
526    public RelatedPerson setBirthDateElement(DateType value) { 
527      this.birthDate = value;
528      return this;
529    }
530
531    /**
532     * @return The date on which the related person was born.
533     */
534    public Date getBirthDate() { 
535      return this.birthDate == null ? null : this.birthDate.getValue();
536    }
537
538    /**
539     * @param value The date on which the related person was born.
540     */
541    public RelatedPerson setBirthDate(Date value) { 
542      if (value == null)
543        this.birthDate = null;
544      else {
545        if (this.birthDate == null)
546          this.birthDate = new DateType();
547        this.birthDate.setValue(value);
548      }
549      return this;
550    }
551
552    /**
553     * @return {@link #address} (Address where the related person can be contacted or visited.)
554     */
555    public List<Address> getAddress() { 
556      if (this.address == null)
557        this.address = new ArrayList<Address>();
558      return this.address;
559    }
560
561    /**
562     * @return Returns a reference to <code>this</code> for easy method chaining
563     */
564    public RelatedPerson setAddress(List<Address> theAddress) { 
565      this.address = theAddress;
566      return this;
567    }
568
569    public boolean hasAddress() { 
570      if (this.address == null)
571        return false;
572      for (Address item : this.address)
573        if (!item.isEmpty())
574          return true;
575      return false;
576    }
577
578    public Address addAddress() { //3
579      Address t = new Address();
580      if (this.address == null)
581        this.address = new ArrayList<Address>();
582      this.address.add(t);
583      return t;
584    }
585
586    public RelatedPerson addAddress(Address t) { //3
587      if (t == null)
588        return this;
589      if (this.address == null)
590        this.address = new ArrayList<Address>();
591      this.address.add(t);
592      return this;
593    }
594
595    /**
596     * @return The first repetition of repeating field {@link #address}, creating it if it does not already exist
597     */
598    public Address getAddressFirstRep() { 
599      if (getAddress().isEmpty()) {
600        addAddress();
601      }
602      return getAddress().get(0);
603    }
604
605    /**
606     * @return {@link #photo} (Image of the person.)
607     */
608    public List<Attachment> getPhoto() { 
609      if (this.photo == null)
610        this.photo = new ArrayList<Attachment>();
611      return this.photo;
612    }
613
614    /**
615     * @return Returns a reference to <code>this</code> for easy method chaining
616     */
617    public RelatedPerson setPhoto(List<Attachment> thePhoto) { 
618      this.photo = thePhoto;
619      return this;
620    }
621
622    public boolean hasPhoto() { 
623      if (this.photo == null)
624        return false;
625      for (Attachment item : this.photo)
626        if (!item.isEmpty())
627          return true;
628      return false;
629    }
630
631    public Attachment addPhoto() { //3
632      Attachment t = new Attachment();
633      if (this.photo == null)
634        this.photo = new ArrayList<Attachment>();
635      this.photo.add(t);
636      return t;
637    }
638
639    public RelatedPerson addPhoto(Attachment t) { //3
640      if (t == null)
641        return this;
642      if (this.photo == null)
643        this.photo = new ArrayList<Attachment>();
644      this.photo.add(t);
645      return this;
646    }
647
648    /**
649     * @return The first repetition of repeating field {@link #photo}, creating it if it does not already exist
650     */
651    public Attachment getPhotoFirstRep() { 
652      if (getPhoto().isEmpty()) {
653        addPhoto();
654      }
655      return getPhoto().get(0);
656    }
657
658    /**
659     * @return {@link #period} (The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown.)
660     */
661    public Period getPeriod() { 
662      if (this.period == null)
663        if (Configuration.errorOnAutoCreate())
664          throw new Error("Attempt to auto-create RelatedPerson.period");
665        else if (Configuration.doAutoCreate())
666          this.period = new Period(); // cc
667      return this.period;
668    }
669
670    public boolean hasPeriod() { 
671      return this.period != null && !this.period.isEmpty();
672    }
673
674    /**
675     * @param value {@link #period} (The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown.)
676     */
677    public RelatedPerson setPeriod(Period value) { 
678      this.period = value;
679      return this;
680    }
681
682      protected void listChildren(List<Property> children) {
683        super.listChildren(children);
684        children.add(new Property("identifier", "Identifier", "Identifier for a person within a particular scope.", 0, java.lang.Integer.MAX_VALUE, identifier));
685        children.add(new Property("active", "boolean", "Whether this related person record is in active use.", 0, 1, active));
686        children.add(new Property("patient", "Reference(Patient)", "The patient this person is related to.", 0, 1, patient));
687        children.add(new Property("relationship", "CodeableConcept", "The nature of the relationship between a patient and the related person.", 0, java.lang.Integer.MAX_VALUE, relationship));
688        children.add(new Property("name", "HumanName", "A name associated with the person.", 0, java.lang.Integer.MAX_VALUE, name));
689        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));
690        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));
691        children.add(new Property("birthDate", "date", "The date on which the related person was born.", 0, 1, birthDate));
692        children.add(new Property("address", "Address", "Address where the related person can be contacted or visited.", 0, java.lang.Integer.MAX_VALUE, address));
693        children.add(new Property("photo", "Attachment", "Image of the person.", 0, java.lang.Integer.MAX_VALUE, photo));
694        children.add(new Property("period", "Period", "The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown.", 0, 1, period));
695      }
696
697      @Override
698      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
699        switch (_hash) {
700        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifier for a person within a particular scope.", 0, java.lang.Integer.MAX_VALUE, identifier);
701        case -1422950650: /*active*/  return new Property("active", "boolean", "Whether this related person record is in active use.", 0, 1, active);
702        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "The patient this person is related to.", 0, 1, patient);
703        case -261851592: /*relationship*/  return new Property("relationship", "CodeableConcept", "The nature of the relationship between a patient and the related person.", 0, java.lang.Integer.MAX_VALUE, relationship);
704        case 3373707: /*name*/  return new Property("name", "HumanName", "A name associated with the person.", 0, java.lang.Integer.MAX_VALUE, name);
705        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);
706        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);
707        case -1210031859: /*birthDate*/  return new Property("birthDate", "date", "The date on which the related person was born.", 0, 1, birthDate);
708        case -1147692044: /*address*/  return new Property("address", "Address", "Address where the related person can be contacted or visited.", 0, java.lang.Integer.MAX_VALUE, address);
709        case 106642994: /*photo*/  return new Property("photo", "Attachment", "Image of the person.", 0, java.lang.Integer.MAX_VALUE, photo);
710        case -991726143: /*period*/  return new Property("period", "Period", "The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown.", 0, 1, period);
711        default: return super.getNamedProperty(_hash, _name, _checkValid);
712        }
713
714      }
715
716      @Override
717      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
718        switch (hash) {
719        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
720        case -1422950650: /*active*/ return this.active == null ? new Base[0] : new Base[] {this.active}; // BooleanType
721        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
722        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : this.relationship.toArray(new Base[this.relationship.size()]); // CodeableConcept
723        case 3373707: /*name*/ return this.name == null ? new Base[0] : this.name.toArray(new Base[this.name.size()]); // HumanName
724        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
725        case -1249512767: /*gender*/ return this.gender == null ? new Base[0] : new Base[] {this.gender}; // Enumeration<AdministrativeGender>
726        case -1210031859: /*birthDate*/ return this.birthDate == null ? new Base[0] : new Base[] {this.birthDate}; // DateType
727        case -1147692044: /*address*/ return this.address == null ? new Base[0] : this.address.toArray(new Base[this.address.size()]); // Address
728        case 106642994: /*photo*/ return this.photo == null ? new Base[0] : this.photo.toArray(new Base[this.photo.size()]); // Attachment
729        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
730        default: return super.getProperty(hash, name, checkValid);
731        }
732
733      }
734
735      @Override
736      public Base setProperty(int hash, String name, Base value) throws FHIRException {
737        switch (hash) {
738        case -1618432855: // identifier
739          this.getIdentifier().add(castToIdentifier(value)); // Identifier
740          return value;
741        case -1422950650: // active
742          this.active = castToBoolean(value); // BooleanType
743          return value;
744        case -791418107: // patient
745          this.patient = castToReference(value); // Reference
746          return value;
747        case -261851592: // relationship
748          this.getRelationship().add(castToCodeableConcept(value)); // CodeableConcept
749          return value;
750        case 3373707: // name
751          this.getName().add(castToHumanName(value)); // HumanName
752          return value;
753        case -1429363305: // telecom
754          this.getTelecom().add(castToContactPoint(value)); // ContactPoint
755          return value;
756        case -1249512767: // gender
757          value = new AdministrativeGenderEnumFactory().fromType(castToCode(value));
758          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
759          return value;
760        case -1210031859: // birthDate
761          this.birthDate = castToDate(value); // DateType
762          return value;
763        case -1147692044: // address
764          this.getAddress().add(castToAddress(value)); // Address
765          return value;
766        case 106642994: // photo
767          this.getPhoto().add(castToAttachment(value)); // Attachment
768          return value;
769        case -991726143: // period
770          this.period = castToPeriod(value); // Period
771          return value;
772        default: return super.setProperty(hash, name, value);
773        }
774
775      }
776
777      @Override
778      public Base setProperty(String name, Base value) throws FHIRException {
779        if (name.equals("identifier")) {
780          this.getIdentifier().add(castToIdentifier(value));
781        } else if (name.equals("active")) {
782          this.active = castToBoolean(value); // BooleanType
783        } else if (name.equals("patient")) {
784          this.patient = castToReference(value); // Reference
785        } else if (name.equals("relationship")) {
786          this.getRelationship().add(castToCodeableConcept(value));
787        } else if (name.equals("name")) {
788          this.getName().add(castToHumanName(value));
789        } else if (name.equals("telecom")) {
790          this.getTelecom().add(castToContactPoint(value));
791        } else if (name.equals("gender")) {
792          value = new AdministrativeGenderEnumFactory().fromType(castToCode(value));
793          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
794        } else if (name.equals("birthDate")) {
795          this.birthDate = castToDate(value); // DateType
796        } else if (name.equals("address")) {
797          this.getAddress().add(castToAddress(value));
798        } else if (name.equals("photo")) {
799          this.getPhoto().add(castToAttachment(value));
800        } else if (name.equals("period")) {
801          this.period = castToPeriod(value); // Period
802        } else
803          return super.setProperty(name, value);
804        return value;
805      }
806
807      @Override
808      public Base makeProperty(int hash, String name) throws FHIRException {
809        switch (hash) {
810        case -1618432855:  return addIdentifier(); 
811        case -1422950650:  return getActiveElement();
812        case -791418107:  return getPatient(); 
813        case -261851592:  return addRelationship(); 
814        case 3373707:  return addName(); 
815        case -1429363305:  return addTelecom(); 
816        case -1249512767:  return getGenderElement();
817        case -1210031859:  return getBirthDateElement();
818        case -1147692044:  return addAddress(); 
819        case 106642994:  return addPhoto(); 
820        case -991726143:  return getPeriod(); 
821        default: return super.makeProperty(hash, name);
822        }
823
824      }
825
826      @Override
827      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
828        switch (hash) {
829        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
830        case -1422950650: /*active*/ return new String[] {"boolean"};
831        case -791418107: /*patient*/ return new String[] {"Reference"};
832        case -261851592: /*relationship*/ return new String[] {"CodeableConcept"};
833        case 3373707: /*name*/ return new String[] {"HumanName"};
834        case -1429363305: /*telecom*/ return new String[] {"ContactPoint"};
835        case -1249512767: /*gender*/ return new String[] {"code"};
836        case -1210031859: /*birthDate*/ return new String[] {"date"};
837        case -1147692044: /*address*/ return new String[] {"Address"};
838        case 106642994: /*photo*/ return new String[] {"Attachment"};
839        case -991726143: /*period*/ return new String[] {"Period"};
840        default: return super.getTypesForProperty(hash, name);
841        }
842
843      }
844
845      @Override
846      public Base addChild(String name) throws FHIRException {
847        if (name.equals("identifier")) {
848          return addIdentifier();
849        }
850        else if (name.equals("active")) {
851          throw new FHIRException("Cannot call addChild on a primitive type RelatedPerson.active");
852        }
853        else if (name.equals("patient")) {
854          this.patient = new Reference();
855          return this.patient;
856        }
857        else if (name.equals("relationship")) {
858          return addRelationship();
859        }
860        else if (name.equals("name")) {
861          return addName();
862        }
863        else if (name.equals("telecom")) {
864          return addTelecom();
865        }
866        else if (name.equals("gender")) {
867          throw new FHIRException("Cannot call addChild on a primitive type RelatedPerson.gender");
868        }
869        else if (name.equals("birthDate")) {
870          throw new FHIRException("Cannot call addChild on a primitive type RelatedPerson.birthDate");
871        }
872        else if (name.equals("address")) {
873          return addAddress();
874        }
875        else if (name.equals("photo")) {
876          return addPhoto();
877        }
878        else if (name.equals("period")) {
879          this.period = new Period();
880          return this.period;
881        }
882        else
883          return super.addChild(name);
884      }
885
886  public String fhirType() {
887    return "RelatedPerson";
888
889  }
890
891      public RelatedPerson copy() {
892        RelatedPerson dst = new RelatedPerson();
893        copyValues(dst);
894        if (identifier != null) {
895          dst.identifier = new ArrayList<Identifier>();
896          for (Identifier i : identifier)
897            dst.identifier.add(i.copy());
898        };
899        dst.active = active == null ? null : active.copy();
900        dst.patient = patient == null ? null : patient.copy();
901        if (relationship != null) {
902          dst.relationship = new ArrayList<CodeableConcept>();
903          for (CodeableConcept i : relationship)
904            dst.relationship.add(i.copy());
905        };
906        if (name != null) {
907          dst.name = new ArrayList<HumanName>();
908          for (HumanName i : name)
909            dst.name.add(i.copy());
910        };
911        if (telecom != null) {
912          dst.telecom = new ArrayList<ContactPoint>();
913          for (ContactPoint i : telecom)
914            dst.telecom.add(i.copy());
915        };
916        dst.gender = gender == null ? null : gender.copy();
917        dst.birthDate = birthDate == null ? null : birthDate.copy();
918        if (address != null) {
919          dst.address = new ArrayList<Address>();
920          for (Address i : address)
921            dst.address.add(i.copy());
922        };
923        if (photo != null) {
924          dst.photo = new ArrayList<Attachment>();
925          for (Attachment i : photo)
926            dst.photo.add(i.copy());
927        };
928        dst.period = period == null ? null : period.copy();
929        return dst;
930      }
931
932      protected RelatedPerson typedCopy() {
933        return copy();
934      }
935
936      @Override
937      public boolean equalsDeep(Base other_) {
938        if (!super.equalsDeep(other_))
939          return false;
940        if (!(other_ instanceof RelatedPerson))
941          return false;
942        RelatedPerson o = (RelatedPerson) other_;
943        return compareDeep(identifier, o.identifier, true) && compareDeep(active, o.active, true) && compareDeep(patient, o.patient, true)
944           && compareDeep(relationship, o.relationship, true) && compareDeep(name, o.name, true) && compareDeep(telecom, o.telecom, true)
945           && compareDeep(gender, o.gender, true) && compareDeep(birthDate, o.birthDate, true) && compareDeep(address, o.address, true)
946           && compareDeep(photo, o.photo, true) && compareDeep(period, o.period, true);
947      }
948
949      @Override
950      public boolean equalsShallow(Base other_) {
951        if (!super.equalsShallow(other_))
952          return false;
953        if (!(other_ instanceof RelatedPerson))
954          return false;
955        RelatedPerson o = (RelatedPerson) other_;
956        return compareValues(active, o.active, true) && compareValues(gender, o.gender, true) && compareValues(birthDate, o.birthDate, true)
957          ;
958      }
959
960      public boolean isEmpty() {
961        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, active, patient
962          , relationship, name, telecom, gender, birthDate, address, photo, period);
963      }
964
965  @Override
966  public ResourceType getResourceType() {
967    return ResourceType.RelatedPerson;
968   }
969
970 /**
971   * Search parameter: <b>identifier</b>
972   * <p>
973   * Description: <b>An Identifier of the RelatedPerson</b><br>
974   * Type: <b>token</b><br>
975   * Path: <b>RelatedPerson.identifier</b><br>
976   * </p>
977   */
978  @SearchParamDefinition(name="identifier", path="RelatedPerson.identifier", description="An Identifier of the RelatedPerson", type="token" )
979  public static final String SP_IDENTIFIER = "identifier";
980 /**
981   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
982   * <p>
983   * Description: <b>An Identifier of the RelatedPerson</b><br>
984   * Type: <b>token</b><br>
985   * Path: <b>RelatedPerson.identifier</b><br>
986   * </p>
987   */
988  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
989
990 /**
991   * Search parameter: <b>address</b>
992   * <p>
993   * Description: <b>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</b><br>
994   * Type: <b>string</b><br>
995   * Path: <b>RelatedPerson.address</b><br>
996   * </p>
997   */
998  @SearchParamDefinition(name="address", path="RelatedPerson.address", description="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", type="string" )
999  public static final String SP_ADDRESS = "address";
1000 /**
1001   * <b>Fluent Client</b> search parameter constant for <b>address</b>
1002   * <p>
1003   * Description: <b>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</b><br>
1004   * Type: <b>string</b><br>
1005   * Path: <b>RelatedPerson.address</b><br>
1006   * </p>
1007   */
1008  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS);
1009
1010 /**
1011   * Search parameter: <b>birthdate</b>
1012   * <p>
1013   * Description: <b>The Related Person's date of birth</b><br>
1014   * Type: <b>date</b><br>
1015   * Path: <b>RelatedPerson.birthDate</b><br>
1016   * </p>
1017   */
1018  @SearchParamDefinition(name="birthdate", path="RelatedPerson.birthDate", description="The Related Person's date of birth", type="date" )
1019  public static final String SP_BIRTHDATE = "birthdate";
1020 /**
1021   * <b>Fluent Client</b> search parameter constant for <b>birthdate</b>
1022   * <p>
1023   * Description: <b>The Related Person's date of birth</b><br>
1024   * Type: <b>date</b><br>
1025   * Path: <b>RelatedPerson.birthDate</b><br>
1026   * </p>
1027   */
1028  public static final ca.uhn.fhir.rest.gclient.DateClientParam BIRTHDATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_BIRTHDATE);
1029
1030 /**
1031   * Search parameter: <b>address-state</b>
1032   * <p>
1033   * Description: <b>A state specified in an address</b><br>
1034   * Type: <b>string</b><br>
1035   * Path: <b>RelatedPerson.address.state</b><br>
1036   * </p>
1037   */
1038  @SearchParamDefinition(name="address-state", path="RelatedPerson.address.state", description="A state specified in an address", type="string" )
1039  public static final String SP_ADDRESS_STATE = "address-state";
1040 /**
1041   * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
1042   * <p>
1043   * Description: <b>A state specified in an address</b><br>
1044   * Type: <b>string</b><br>
1045   * Path: <b>RelatedPerson.address.state</b><br>
1046   * </p>
1047   */
1048  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_STATE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_STATE);
1049
1050 /**
1051   * Search parameter: <b>gender</b>
1052   * <p>
1053   * Description: <b>Gender of the related person</b><br>
1054   * Type: <b>token</b><br>
1055   * Path: <b>RelatedPerson.gender</b><br>
1056   * </p>
1057   */
1058  @SearchParamDefinition(name="gender", path="RelatedPerson.gender", description="Gender of the related person", type="token" )
1059  public static final String SP_GENDER = "gender";
1060 /**
1061   * <b>Fluent Client</b> search parameter constant for <b>gender</b>
1062   * <p>
1063   * Description: <b>Gender of the related person</b><br>
1064   * Type: <b>token</b><br>
1065   * Path: <b>RelatedPerson.gender</b><br>
1066   * </p>
1067   */
1068  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GENDER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GENDER);
1069
1070 /**
1071   * Search parameter: <b>active</b>
1072   * <p>
1073   * Description: <b>Indicates if the related person record is active</b><br>
1074   * Type: <b>token</b><br>
1075   * Path: <b>RelatedPerson.active</b><br>
1076   * </p>
1077   */
1078  @SearchParamDefinition(name="active", path="RelatedPerson.active", description="Indicates if the related person record is active", type="token" )
1079  public static final String SP_ACTIVE = "active";
1080 /**
1081   * <b>Fluent Client</b> search parameter constant for <b>active</b>
1082   * <p>
1083   * Description: <b>Indicates if the related person record is active</b><br>
1084   * Type: <b>token</b><br>
1085   * Path: <b>RelatedPerson.active</b><br>
1086   * </p>
1087   */
1088  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTIVE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ACTIVE);
1089
1090 /**
1091   * Search parameter: <b>address-postalcode</b>
1092   * <p>
1093   * Description: <b>A postal code specified in an address</b><br>
1094   * Type: <b>string</b><br>
1095   * Path: <b>RelatedPerson.address.postalCode</b><br>
1096   * </p>
1097   */
1098  @SearchParamDefinition(name="address-postalcode", path="RelatedPerson.address.postalCode", description="A postal code specified in an address", type="string" )
1099  public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
1100 /**
1101   * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
1102   * <p>
1103   * Description: <b>A postal code specified in an address</b><br>
1104   * Type: <b>string</b><br>
1105   * Path: <b>RelatedPerson.address.postalCode</b><br>
1106   * </p>
1107   */
1108  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_POSTALCODE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_POSTALCODE);
1109
1110 /**
1111   * Search parameter: <b>address-country</b>
1112   * <p>
1113   * Description: <b>A country specified in an address</b><br>
1114   * Type: <b>string</b><br>
1115   * Path: <b>RelatedPerson.address.country</b><br>
1116   * </p>
1117   */
1118  @SearchParamDefinition(name="address-country", path="RelatedPerson.address.country", description="A country specified in an address", type="string" )
1119  public static final String SP_ADDRESS_COUNTRY = "address-country";
1120 /**
1121   * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
1122   * <p>
1123   * Description: <b>A country specified in an address</b><br>
1124   * Type: <b>string</b><br>
1125   * Path: <b>RelatedPerson.address.country</b><br>
1126   * </p>
1127   */
1128  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_COUNTRY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_COUNTRY);
1129
1130 /**
1131   * Search parameter: <b>phonetic</b>
1132   * <p>
1133   * Description: <b>A portion of name using some kind of phonetic matching algorithm</b><br>
1134   * Type: <b>string</b><br>
1135   * Path: <b>RelatedPerson.name</b><br>
1136   * </p>
1137   */
1138  @SearchParamDefinition(name="phonetic", path="RelatedPerson.name", description="A portion of name using some kind of phonetic matching algorithm", type="string" )
1139  public static final String SP_PHONETIC = "phonetic";
1140 /**
1141   * <b>Fluent Client</b> search parameter constant for <b>phonetic</b>
1142   * <p>
1143   * Description: <b>A portion of name using some kind of phonetic matching algorithm</b><br>
1144   * Type: <b>string</b><br>
1145   * Path: <b>RelatedPerson.name</b><br>
1146   * </p>
1147   */
1148  public static final ca.uhn.fhir.rest.gclient.StringClientParam PHONETIC = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PHONETIC);
1149
1150 /**
1151   * Search parameter: <b>phone</b>
1152   * <p>
1153   * Description: <b>A value in a phone contact</b><br>
1154   * Type: <b>token</b><br>
1155   * Path: <b>RelatedPerson.telecom(system=phone)</b><br>
1156   * </p>
1157   */
1158  @SearchParamDefinition(name="phone", path="RelatedPerson.telecom.where(system='phone')", description="A value in a phone contact", type="token" )
1159  public static final String SP_PHONE = "phone";
1160 /**
1161   * <b>Fluent Client</b> search parameter constant for <b>phone</b>
1162   * <p>
1163   * Description: <b>A value in a phone contact</b><br>
1164   * Type: <b>token</b><br>
1165   * Path: <b>RelatedPerson.telecom(system=phone)</b><br>
1166   * </p>
1167   */
1168  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PHONE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PHONE);
1169
1170 /**
1171   * Search parameter: <b>patient</b>
1172   * <p>
1173   * Description: <b>The patient this related person is related to</b><br>
1174   * Type: <b>reference</b><br>
1175   * Path: <b>RelatedPerson.patient</b><br>
1176   * </p>
1177   */
1178  @SearchParamDefinition(name="patient", path="RelatedPerson.patient", description="The patient this related person is related to", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Patient.class } )
1179  public static final String SP_PATIENT = "patient";
1180 /**
1181   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1182   * <p>
1183   * Description: <b>The patient this related person is related to</b><br>
1184   * Type: <b>reference</b><br>
1185   * Path: <b>RelatedPerson.patient</b><br>
1186   * </p>
1187   */
1188  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1189
1190/**
1191   * Constant for fluent queries to be used to add include statements. Specifies
1192   * the path value of "<b>RelatedPerson:patient</b>".
1193   */
1194  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("RelatedPerson:patient").toLocked();
1195
1196 /**
1197   * Search parameter: <b>name</b>
1198   * <p>
1199   * 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>
1200   * Type: <b>string</b><br>
1201   * Path: <b>RelatedPerson.name</b><br>
1202   * </p>
1203   */
1204  @SearchParamDefinition(name="name", path="RelatedPerson.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" )
1205  public static final String SP_NAME = "name";
1206 /**
1207   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1208   * <p>
1209   * 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>
1210   * Type: <b>string</b><br>
1211   * Path: <b>RelatedPerson.name</b><br>
1212   * </p>
1213   */
1214  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1215
1216 /**
1217   * Search parameter: <b>address-use</b>
1218   * <p>
1219   * Description: <b>A use code specified in an address</b><br>
1220   * Type: <b>token</b><br>
1221   * Path: <b>RelatedPerson.address.use</b><br>
1222   * </p>
1223   */
1224  @SearchParamDefinition(name="address-use", path="RelatedPerson.address.use", description="A use code specified in an address", type="token" )
1225  public static final String SP_ADDRESS_USE = "address-use";
1226 /**
1227   * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
1228   * <p>
1229   * Description: <b>A use code specified in an address</b><br>
1230   * Type: <b>token</b><br>
1231   * Path: <b>RelatedPerson.address.use</b><br>
1232   * </p>
1233   */
1234  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADDRESS_USE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADDRESS_USE);
1235
1236 /**
1237   * Search parameter: <b>telecom</b>
1238   * <p>
1239   * Description: <b>The value in any kind of contact</b><br>
1240   * Type: <b>token</b><br>
1241   * Path: <b>RelatedPerson.telecom</b><br>
1242   * </p>
1243   */
1244  @SearchParamDefinition(name="telecom", path="RelatedPerson.telecom", description="The value in any kind of contact", type="token" )
1245  public static final String SP_TELECOM = "telecom";
1246 /**
1247   * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
1248   * <p>
1249   * Description: <b>The value in any kind of contact</b><br>
1250   * Type: <b>token</b><br>
1251   * Path: <b>RelatedPerson.telecom</b><br>
1252   * </p>
1253   */
1254  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TELECOM);
1255
1256 /**
1257   * Search parameter: <b>address-city</b>
1258   * <p>
1259   * Description: <b>A city specified in an address</b><br>
1260   * Type: <b>string</b><br>
1261   * Path: <b>RelatedPerson.address.city</b><br>
1262   * </p>
1263   */
1264  @SearchParamDefinition(name="address-city", path="RelatedPerson.address.city", description="A city specified in an address", type="string" )
1265  public static final String SP_ADDRESS_CITY = "address-city";
1266 /**
1267   * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
1268   * <p>
1269   * Description: <b>A city specified in an address</b><br>
1270   * Type: <b>string</b><br>
1271   * Path: <b>RelatedPerson.address.city</b><br>
1272   * </p>
1273   */
1274  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_CITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_CITY);
1275
1276 /**
1277   * Search parameter: <b>email</b>
1278   * <p>
1279   * Description: <b>A value in an email contact</b><br>
1280   * Type: <b>token</b><br>
1281   * Path: <b>RelatedPerson.telecom(system=email)</b><br>
1282   * </p>
1283   */
1284  @SearchParamDefinition(name="email", path="RelatedPerson.telecom.where(system='email')", description="A value in an email contact", type="token" )
1285  public static final String SP_EMAIL = "email";
1286 /**
1287   * <b>Fluent Client</b> search parameter constant for <b>email</b>
1288   * <p>
1289   * Description: <b>A value in an email contact</b><br>
1290   * Type: <b>token</b><br>
1291   * Path: <b>RelatedPerson.telecom(system=email)</b><br>
1292   * </p>
1293   */
1294  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EMAIL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EMAIL);
1295
1296
1297}
1298