001package org.hl7.fhir.dstu3.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 Mon, Apr 17, 2017 17:38-0400 for FHIR v3.0.1
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.dstu3.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=1, 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 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 that this relationship is considered to be valid. 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 that this relationship is considered to be valid. If there are no dates defined, then the interval is unknown." )
134    protected Period period;
135
136    private static final long serialVersionUID = 1633785157L;
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 CodeableConcept getRelationship() { 
299      if (this.relationship == null)
300        if (Configuration.errorOnAutoCreate())
301          throw new Error("Attempt to auto-create RelatedPerson.relationship");
302        else if (Configuration.doAutoCreate())
303          this.relationship = new CodeableConcept(); // cc
304      return this.relationship;
305    }
306
307    public boolean hasRelationship() { 
308      return this.relationship != null && !this.relationship.isEmpty();
309    }
310
311    /**
312     * @param value {@link #relationship} (The nature of the relationship between a patient and the related person.)
313     */
314    public RelatedPerson setRelationship(CodeableConcept value) { 
315      this.relationship = value;
316      return this;
317    }
318
319    /**
320     * @return {@link #name} (A name associated with the person.)
321     */
322    public List<HumanName> getName() { 
323      if (this.name == null)
324        this.name = new ArrayList<HumanName>();
325      return this.name;
326    }
327
328    /**
329     * @return Returns a reference to <code>this</code> for easy method chaining
330     */
331    public RelatedPerson setName(List<HumanName> theName) { 
332      this.name = theName;
333      return this;
334    }
335
336    public boolean hasName() { 
337      if (this.name == null)
338        return false;
339      for (HumanName item : this.name)
340        if (!item.isEmpty())
341          return true;
342      return false;
343    }
344
345    public HumanName addName() { //3
346      HumanName t = new HumanName();
347      if (this.name == null)
348        this.name = new ArrayList<HumanName>();
349      this.name.add(t);
350      return t;
351    }
352
353    public RelatedPerson addName(HumanName t) { //3
354      if (t == null)
355        return this;
356      if (this.name == null)
357        this.name = new ArrayList<HumanName>();
358      this.name.add(t);
359      return this;
360    }
361
362    /**
363     * @return The first repetition of repeating field {@link #name}, creating it if it does not already exist
364     */
365    public HumanName getNameFirstRep() { 
366      if (getName().isEmpty()) {
367        addName();
368      }
369      return getName().get(0);
370    }
371
372    /**
373     * @return {@link #telecom} (A contact detail for the person, e.g. a telephone number or an email address.)
374     */
375    public List<ContactPoint> getTelecom() { 
376      if (this.telecom == null)
377        this.telecom = new ArrayList<ContactPoint>();
378      return this.telecom;
379    }
380
381    /**
382     * @return Returns a reference to <code>this</code> for easy method chaining
383     */
384    public RelatedPerson setTelecom(List<ContactPoint> theTelecom) { 
385      this.telecom = theTelecom;
386      return this;
387    }
388
389    public boolean hasTelecom() { 
390      if (this.telecom == null)
391        return false;
392      for (ContactPoint item : this.telecom)
393        if (!item.isEmpty())
394          return true;
395      return false;
396    }
397
398    public ContactPoint addTelecom() { //3
399      ContactPoint t = new ContactPoint();
400      if (this.telecom == null)
401        this.telecom = new ArrayList<ContactPoint>();
402      this.telecom.add(t);
403      return t;
404    }
405
406    public RelatedPerson addTelecom(ContactPoint t) { //3
407      if (t == null)
408        return this;
409      if (this.telecom == null)
410        this.telecom = new ArrayList<ContactPoint>();
411      this.telecom.add(t);
412      return this;
413    }
414
415    /**
416     * @return The first repetition of repeating field {@link #telecom}, creating it if it does not already exist
417     */
418    public ContactPoint getTelecomFirstRep() { 
419      if (getTelecom().isEmpty()) {
420        addTelecom();
421      }
422      return getTelecom().get(0);
423    }
424
425    /**
426     * @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
427     */
428    public Enumeration<AdministrativeGender> getGenderElement() { 
429      if (this.gender == null)
430        if (Configuration.errorOnAutoCreate())
431          throw new Error("Attempt to auto-create RelatedPerson.gender");
432        else if (Configuration.doAutoCreate())
433          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory()); // bb
434      return this.gender;
435    }
436
437    public boolean hasGenderElement() { 
438      return this.gender != null && !this.gender.isEmpty();
439    }
440
441    public boolean hasGender() { 
442      return this.gender != null && !this.gender.isEmpty();
443    }
444
445    /**
446     * @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
447     */
448    public RelatedPerson setGenderElement(Enumeration<AdministrativeGender> value) { 
449      this.gender = value;
450      return this;
451    }
452
453    /**
454     * @return Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
455     */
456    public AdministrativeGender getGender() { 
457      return this.gender == null ? null : this.gender.getValue();
458    }
459
460    /**
461     * @param value Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
462     */
463    public RelatedPerson setGender(AdministrativeGender value) { 
464      if (value == null)
465        this.gender = null;
466      else {
467        if (this.gender == null)
468          this.gender = new Enumeration<AdministrativeGender>(new AdministrativeGenderEnumFactory());
469        this.gender.setValue(value);
470      }
471      return this;
472    }
473
474    /**
475     * @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
476     */
477    public DateType getBirthDateElement() { 
478      if (this.birthDate == null)
479        if (Configuration.errorOnAutoCreate())
480          throw new Error("Attempt to auto-create RelatedPerson.birthDate");
481        else if (Configuration.doAutoCreate())
482          this.birthDate = new DateType(); // bb
483      return this.birthDate;
484    }
485
486    public boolean hasBirthDateElement() { 
487      return this.birthDate != null && !this.birthDate.isEmpty();
488    }
489
490    public boolean hasBirthDate() { 
491      return this.birthDate != null && !this.birthDate.isEmpty();
492    }
493
494    /**
495     * @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
496     */
497    public RelatedPerson setBirthDateElement(DateType value) { 
498      this.birthDate = value;
499      return this;
500    }
501
502    /**
503     * @return The date on which the related person was born.
504     */
505    public Date getBirthDate() { 
506      return this.birthDate == null ? null : this.birthDate.getValue();
507    }
508
509    /**
510     * @param value The date on which the related person was born.
511     */
512    public RelatedPerson setBirthDate(Date value) { 
513      if (value == null)
514        this.birthDate = null;
515      else {
516        if (this.birthDate == null)
517          this.birthDate = new DateType();
518        this.birthDate.setValue(value);
519      }
520      return this;
521    }
522
523    /**
524     * @return {@link #address} (Address where the related person can be contacted or visited.)
525     */
526    public List<Address> getAddress() { 
527      if (this.address == null)
528        this.address = new ArrayList<Address>();
529      return this.address;
530    }
531
532    /**
533     * @return Returns a reference to <code>this</code> for easy method chaining
534     */
535    public RelatedPerson setAddress(List<Address> theAddress) { 
536      this.address = theAddress;
537      return this;
538    }
539
540    public boolean hasAddress() { 
541      if (this.address == null)
542        return false;
543      for (Address item : this.address)
544        if (!item.isEmpty())
545          return true;
546      return false;
547    }
548
549    public Address addAddress() { //3
550      Address t = new Address();
551      if (this.address == null)
552        this.address = new ArrayList<Address>();
553      this.address.add(t);
554      return t;
555    }
556
557    public RelatedPerson addAddress(Address t) { //3
558      if (t == null)
559        return this;
560      if (this.address == null)
561        this.address = new ArrayList<Address>();
562      this.address.add(t);
563      return this;
564    }
565
566    /**
567     * @return The first repetition of repeating field {@link #address}, creating it if it does not already exist
568     */
569    public Address getAddressFirstRep() { 
570      if (getAddress().isEmpty()) {
571        addAddress();
572      }
573      return getAddress().get(0);
574    }
575
576    /**
577     * @return {@link #photo} (Image of the person.)
578     */
579    public List<Attachment> getPhoto() { 
580      if (this.photo == null)
581        this.photo = new ArrayList<Attachment>();
582      return this.photo;
583    }
584
585    /**
586     * @return Returns a reference to <code>this</code> for easy method chaining
587     */
588    public RelatedPerson setPhoto(List<Attachment> thePhoto) { 
589      this.photo = thePhoto;
590      return this;
591    }
592
593    public boolean hasPhoto() { 
594      if (this.photo == null)
595        return false;
596      for (Attachment item : this.photo)
597        if (!item.isEmpty())
598          return true;
599      return false;
600    }
601
602    public Attachment addPhoto() { //3
603      Attachment t = new Attachment();
604      if (this.photo == null)
605        this.photo = new ArrayList<Attachment>();
606      this.photo.add(t);
607      return t;
608    }
609
610    public RelatedPerson addPhoto(Attachment t) { //3
611      if (t == null)
612        return this;
613      if (this.photo == null)
614        this.photo = new ArrayList<Attachment>();
615      this.photo.add(t);
616      return this;
617    }
618
619    /**
620     * @return The first repetition of repeating field {@link #photo}, creating it if it does not already exist
621     */
622    public Attachment getPhotoFirstRep() { 
623      if (getPhoto().isEmpty()) {
624        addPhoto();
625      }
626      return getPhoto().get(0);
627    }
628
629    /**
630     * @return {@link #period} (The period of time that this relationship is considered to be valid. If there are no dates defined, then the interval is unknown.)
631     */
632    public Period getPeriod() { 
633      if (this.period == null)
634        if (Configuration.errorOnAutoCreate())
635          throw new Error("Attempt to auto-create RelatedPerson.period");
636        else if (Configuration.doAutoCreate())
637          this.period = new Period(); // cc
638      return this.period;
639    }
640
641    public boolean hasPeriod() { 
642      return this.period != null && !this.period.isEmpty();
643    }
644
645    /**
646     * @param value {@link #period} (The period of time that this relationship is considered to be valid. If there are no dates defined, then the interval is unknown.)
647     */
648    public RelatedPerson setPeriod(Period value) { 
649      this.period = value;
650      return this;
651    }
652
653      protected void listChildren(List<Property> childrenList) {
654        super.listChildren(childrenList);
655        childrenList.add(new Property("identifier", "Identifier", "Identifier for a person within a particular scope.", 0, java.lang.Integer.MAX_VALUE, identifier));
656        childrenList.add(new Property("active", "boolean", "Whether this related person record is in active use.", 0, java.lang.Integer.MAX_VALUE, active));
657        childrenList.add(new Property("patient", "Reference(Patient)", "The patient this person is related to.", 0, java.lang.Integer.MAX_VALUE, patient));
658        childrenList.add(new Property("relationship", "CodeableConcept", "The nature of the relationship between a patient and the related person.", 0, java.lang.Integer.MAX_VALUE, relationship));
659        childrenList.add(new Property("name", "HumanName", "A name associated with the person.", 0, java.lang.Integer.MAX_VALUE, name));
660        childrenList.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));
661        childrenList.add(new Property("gender", "code", "Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.", 0, java.lang.Integer.MAX_VALUE, gender));
662        childrenList.add(new Property("birthDate", "date", "The date on which the related person was born.", 0, java.lang.Integer.MAX_VALUE, birthDate));
663        childrenList.add(new Property("address", "Address", "Address where the related person can be contacted or visited.", 0, java.lang.Integer.MAX_VALUE, address));
664        childrenList.add(new Property("photo", "Attachment", "Image of the person.", 0, java.lang.Integer.MAX_VALUE, photo));
665        childrenList.add(new Property("period", "Period", "The period of time that this relationship is considered to be valid. If there are no dates defined, then the interval is unknown.", 0, java.lang.Integer.MAX_VALUE, period));
666      }
667
668      @Override
669      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
670        switch (hash) {
671        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
672        case -1422950650: /*active*/ return this.active == null ? new Base[0] : new Base[] {this.active}; // BooleanType
673        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
674        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : new Base[] {this.relationship}; // CodeableConcept
675        case 3373707: /*name*/ return this.name == null ? new Base[0] : this.name.toArray(new Base[this.name.size()]); // HumanName
676        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
677        case -1249512767: /*gender*/ return this.gender == null ? new Base[0] : new Base[] {this.gender}; // Enumeration<AdministrativeGender>
678        case -1210031859: /*birthDate*/ return this.birthDate == null ? new Base[0] : new Base[] {this.birthDate}; // DateType
679        case -1147692044: /*address*/ return this.address == null ? new Base[0] : this.address.toArray(new Base[this.address.size()]); // Address
680        case 106642994: /*photo*/ return this.photo == null ? new Base[0] : this.photo.toArray(new Base[this.photo.size()]); // Attachment
681        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
682        default: return super.getProperty(hash, name, checkValid);
683        }
684
685      }
686
687      @Override
688      public Base setProperty(int hash, String name, Base value) throws FHIRException {
689        switch (hash) {
690        case -1618432855: // identifier
691          this.getIdentifier().add(castToIdentifier(value)); // Identifier
692          return value;
693        case -1422950650: // active
694          this.active = castToBoolean(value); // BooleanType
695          return value;
696        case -791418107: // patient
697          this.patient = castToReference(value); // Reference
698          return value;
699        case -261851592: // relationship
700          this.relationship = castToCodeableConcept(value); // CodeableConcept
701          return value;
702        case 3373707: // name
703          this.getName().add(castToHumanName(value)); // HumanName
704          return value;
705        case -1429363305: // telecom
706          this.getTelecom().add(castToContactPoint(value)); // ContactPoint
707          return value;
708        case -1249512767: // gender
709          value = new AdministrativeGenderEnumFactory().fromType(castToCode(value));
710          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
711          return value;
712        case -1210031859: // birthDate
713          this.birthDate = castToDate(value); // DateType
714          return value;
715        case -1147692044: // address
716          this.getAddress().add(castToAddress(value)); // Address
717          return value;
718        case 106642994: // photo
719          this.getPhoto().add(castToAttachment(value)); // Attachment
720          return value;
721        case -991726143: // period
722          this.period = castToPeriod(value); // Period
723          return value;
724        default: return super.setProperty(hash, name, value);
725        }
726
727      }
728
729      @Override
730      public Base setProperty(String name, Base value) throws FHIRException {
731        if (name.equals("identifier")) {
732          this.getIdentifier().add(castToIdentifier(value));
733        } else if (name.equals("active")) {
734          this.active = castToBoolean(value); // BooleanType
735        } else if (name.equals("patient")) {
736          this.patient = castToReference(value); // Reference
737        } else if (name.equals("relationship")) {
738          this.relationship = castToCodeableConcept(value); // CodeableConcept
739        } else if (name.equals("name")) {
740          this.getName().add(castToHumanName(value));
741        } else if (name.equals("telecom")) {
742          this.getTelecom().add(castToContactPoint(value));
743        } else if (name.equals("gender")) {
744          value = new AdministrativeGenderEnumFactory().fromType(castToCode(value));
745          this.gender = (Enumeration) value; // Enumeration<AdministrativeGender>
746        } else if (name.equals("birthDate")) {
747          this.birthDate = castToDate(value); // DateType
748        } else if (name.equals("address")) {
749          this.getAddress().add(castToAddress(value));
750        } else if (name.equals("photo")) {
751          this.getPhoto().add(castToAttachment(value));
752        } else if (name.equals("period")) {
753          this.period = castToPeriod(value); // Period
754        } else
755          return super.setProperty(name, value);
756        return value;
757      }
758
759      @Override
760      public Base makeProperty(int hash, String name) throws FHIRException {
761        switch (hash) {
762        case -1618432855:  return addIdentifier(); 
763        case -1422950650:  return getActiveElement();
764        case -791418107:  return getPatient(); 
765        case -261851592:  return getRelationship(); 
766        case 3373707:  return addName(); 
767        case -1429363305:  return addTelecom(); 
768        case -1249512767:  return getGenderElement();
769        case -1210031859:  return getBirthDateElement();
770        case -1147692044:  return addAddress(); 
771        case 106642994:  return addPhoto(); 
772        case -991726143:  return getPeriod(); 
773        default: return super.makeProperty(hash, name);
774        }
775
776      }
777
778      @Override
779      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
780        switch (hash) {
781        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
782        case -1422950650: /*active*/ return new String[] {"boolean"};
783        case -791418107: /*patient*/ return new String[] {"Reference"};
784        case -261851592: /*relationship*/ return new String[] {"CodeableConcept"};
785        case 3373707: /*name*/ return new String[] {"HumanName"};
786        case -1429363305: /*telecom*/ return new String[] {"ContactPoint"};
787        case -1249512767: /*gender*/ return new String[] {"code"};
788        case -1210031859: /*birthDate*/ return new String[] {"date"};
789        case -1147692044: /*address*/ return new String[] {"Address"};
790        case 106642994: /*photo*/ return new String[] {"Attachment"};
791        case -991726143: /*period*/ return new String[] {"Period"};
792        default: return super.getTypesForProperty(hash, name);
793        }
794
795      }
796
797      @Override
798      public Base addChild(String name) throws FHIRException {
799        if (name.equals("identifier")) {
800          return addIdentifier();
801        }
802        else if (name.equals("active")) {
803          throw new FHIRException("Cannot call addChild on a primitive type RelatedPerson.active");
804        }
805        else if (name.equals("patient")) {
806          this.patient = new Reference();
807          return this.patient;
808        }
809        else if (name.equals("relationship")) {
810          this.relationship = new CodeableConcept();
811          return this.relationship;
812        }
813        else if (name.equals("name")) {
814          return addName();
815        }
816        else if (name.equals("telecom")) {
817          return addTelecom();
818        }
819        else if (name.equals("gender")) {
820          throw new FHIRException("Cannot call addChild on a primitive type RelatedPerson.gender");
821        }
822        else if (name.equals("birthDate")) {
823          throw new FHIRException("Cannot call addChild on a primitive type RelatedPerson.birthDate");
824        }
825        else if (name.equals("address")) {
826          return addAddress();
827        }
828        else if (name.equals("photo")) {
829          return addPhoto();
830        }
831        else if (name.equals("period")) {
832          this.period = new Period();
833          return this.period;
834        }
835        else
836          return super.addChild(name);
837      }
838
839  public String fhirType() {
840    return "RelatedPerson";
841
842  }
843
844      public RelatedPerson copy() {
845        RelatedPerson dst = new RelatedPerson();
846        copyValues(dst);
847        if (identifier != null) {
848          dst.identifier = new ArrayList<Identifier>();
849          for (Identifier i : identifier)
850            dst.identifier.add(i.copy());
851        };
852        dst.active = active == null ? null : active.copy();
853        dst.patient = patient == null ? null : patient.copy();
854        dst.relationship = relationship == null ? null : relationship.copy();
855        if (name != null) {
856          dst.name = new ArrayList<HumanName>();
857          for (HumanName i : name)
858            dst.name.add(i.copy());
859        };
860        if (telecom != null) {
861          dst.telecom = new ArrayList<ContactPoint>();
862          for (ContactPoint i : telecom)
863            dst.telecom.add(i.copy());
864        };
865        dst.gender = gender == null ? null : gender.copy();
866        dst.birthDate = birthDate == null ? null : birthDate.copy();
867        if (address != null) {
868          dst.address = new ArrayList<Address>();
869          for (Address i : address)
870            dst.address.add(i.copy());
871        };
872        if (photo != null) {
873          dst.photo = new ArrayList<Attachment>();
874          for (Attachment i : photo)
875            dst.photo.add(i.copy());
876        };
877        dst.period = period == null ? null : period.copy();
878        return dst;
879      }
880
881      protected RelatedPerson typedCopy() {
882        return copy();
883      }
884
885      @Override
886      public boolean equalsDeep(Base other) {
887        if (!super.equalsDeep(other))
888          return false;
889        if (!(other instanceof RelatedPerson))
890          return false;
891        RelatedPerson o = (RelatedPerson) other;
892        return compareDeep(identifier, o.identifier, true) && compareDeep(active, o.active, true) && compareDeep(patient, o.patient, true)
893           && compareDeep(relationship, o.relationship, true) && compareDeep(name, o.name, true) && compareDeep(telecom, o.telecom, true)
894           && compareDeep(gender, o.gender, true) && compareDeep(birthDate, o.birthDate, true) && compareDeep(address, o.address, true)
895           && compareDeep(photo, o.photo, true) && compareDeep(period, o.period, true);
896      }
897
898      @Override
899      public boolean equalsShallow(Base other) {
900        if (!super.equalsShallow(other))
901          return false;
902        if (!(other instanceof RelatedPerson))
903          return false;
904        RelatedPerson o = (RelatedPerson) other;
905        return compareValues(active, o.active, true) && compareValues(gender, o.gender, true) && compareValues(birthDate, o.birthDate, true)
906          ;
907      }
908
909      public boolean isEmpty() {
910        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, active, patient
911          , relationship, name, telecom, gender, birthDate, address, photo, period);
912      }
913
914  @Override
915  public ResourceType getResourceType() {
916    return ResourceType.RelatedPerson;
917   }
918
919 /**
920   * Search parameter: <b>identifier</b>
921   * <p>
922   * Description: <b>An Identifier of the RelatedPerson</b><br>
923   * Type: <b>token</b><br>
924   * Path: <b>RelatedPerson.identifier</b><br>
925   * </p>
926   */
927  @SearchParamDefinition(name="identifier", path="RelatedPerson.identifier", description="An Identifier of the RelatedPerson", type="token" )
928  public static final String SP_IDENTIFIER = "identifier";
929 /**
930   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
931   * <p>
932   * Description: <b>An Identifier of the RelatedPerson</b><br>
933   * Type: <b>token</b><br>
934   * Path: <b>RelatedPerson.identifier</b><br>
935   * </p>
936   */
937  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
938
939 /**
940   * Search parameter: <b>address</b>
941   * <p>
942   * Description: <b>A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text</b><br>
943   * Type: <b>string</b><br>
944   * Path: <b>RelatedPerson.address</b><br>
945   * </p>
946   */
947  @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, state, country, postalCode, and/or text", type="string" )
948  public static final String SP_ADDRESS = "address";
949 /**
950   * <b>Fluent Client</b> search parameter constant for <b>address</b>
951   * <p>
952   * Description: <b>A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text</b><br>
953   * Type: <b>string</b><br>
954   * Path: <b>RelatedPerson.address</b><br>
955   * </p>
956   */
957  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS);
958
959 /**
960   * Search parameter: <b>birthdate</b>
961   * <p>
962   * Description: <b>The Related Person's date of birth</b><br>
963   * Type: <b>date</b><br>
964   * Path: <b>RelatedPerson.birthDate</b><br>
965   * </p>
966   */
967  @SearchParamDefinition(name="birthdate", path="RelatedPerson.birthDate", description="The Related Person's date of birth", type="date" )
968  public static final String SP_BIRTHDATE = "birthdate";
969 /**
970   * <b>Fluent Client</b> search parameter constant for <b>birthdate</b>
971   * <p>
972   * Description: <b>The Related Person's date of birth</b><br>
973   * Type: <b>date</b><br>
974   * Path: <b>RelatedPerson.birthDate</b><br>
975   * </p>
976   */
977  public static final ca.uhn.fhir.rest.gclient.DateClientParam BIRTHDATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_BIRTHDATE);
978
979 /**
980   * Search parameter: <b>address-state</b>
981   * <p>
982   * Description: <b>A state specified in an address</b><br>
983   * Type: <b>string</b><br>
984   * Path: <b>RelatedPerson.address.state</b><br>
985   * </p>
986   */
987  @SearchParamDefinition(name="address-state", path="RelatedPerson.address.state", description="A state specified in an address", type="string" )
988  public static final String SP_ADDRESS_STATE = "address-state";
989 /**
990   * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
991   * <p>
992   * Description: <b>A state specified in an address</b><br>
993   * Type: <b>string</b><br>
994   * Path: <b>RelatedPerson.address.state</b><br>
995   * </p>
996   */
997  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_STATE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_STATE);
998
999 /**
1000   * Search parameter: <b>gender</b>
1001   * <p>
1002   * Description: <b>Gender of the related person</b><br>
1003   * Type: <b>token</b><br>
1004   * Path: <b>RelatedPerson.gender</b><br>
1005   * </p>
1006   */
1007  @SearchParamDefinition(name="gender", path="RelatedPerson.gender", description="Gender of the related person", type="token" )
1008  public static final String SP_GENDER = "gender";
1009 /**
1010   * <b>Fluent Client</b> search parameter constant for <b>gender</b>
1011   * <p>
1012   * Description: <b>Gender of the related person</b><br>
1013   * Type: <b>token</b><br>
1014   * Path: <b>RelatedPerson.gender</b><br>
1015   * </p>
1016   */
1017  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GENDER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GENDER);
1018
1019 /**
1020   * Search parameter: <b>active</b>
1021   * <p>
1022   * Description: <b>Indicates if the related person record is active</b><br>
1023   * Type: <b>token</b><br>
1024   * Path: <b>RelatedPerson.active</b><br>
1025   * </p>
1026   */
1027  @SearchParamDefinition(name="active", path="RelatedPerson.active", description="Indicates if the related person record is active", type="token" )
1028  public static final String SP_ACTIVE = "active";
1029 /**
1030   * <b>Fluent Client</b> search parameter constant for <b>active</b>
1031   * <p>
1032   * Description: <b>Indicates if the related person record is active</b><br>
1033   * Type: <b>token</b><br>
1034   * Path: <b>RelatedPerson.active</b><br>
1035   * </p>
1036   */
1037  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ACTIVE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ACTIVE);
1038
1039 /**
1040   * Search parameter: <b>address-postalcode</b>
1041   * <p>
1042   * Description: <b>A postal code specified in an address</b><br>
1043   * Type: <b>string</b><br>
1044   * Path: <b>RelatedPerson.address.postalCode</b><br>
1045   * </p>
1046   */
1047  @SearchParamDefinition(name="address-postalcode", path="RelatedPerson.address.postalCode", description="A postal code specified in an address", type="string" )
1048  public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
1049 /**
1050   * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
1051   * <p>
1052   * Description: <b>A postal code specified in an address</b><br>
1053   * Type: <b>string</b><br>
1054   * Path: <b>RelatedPerson.address.postalCode</b><br>
1055   * </p>
1056   */
1057  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_POSTALCODE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_POSTALCODE);
1058
1059 /**
1060   * Search parameter: <b>address-country</b>
1061   * <p>
1062   * Description: <b>A country specified in an address</b><br>
1063   * Type: <b>string</b><br>
1064   * Path: <b>RelatedPerson.address.country</b><br>
1065   * </p>
1066   */
1067  @SearchParamDefinition(name="address-country", path="RelatedPerson.address.country", description="A country specified in an address", type="string" )
1068  public static final String SP_ADDRESS_COUNTRY = "address-country";
1069 /**
1070   * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
1071   * <p>
1072   * Description: <b>A country specified in an address</b><br>
1073   * Type: <b>string</b><br>
1074   * Path: <b>RelatedPerson.address.country</b><br>
1075   * </p>
1076   */
1077  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_COUNTRY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_COUNTRY);
1078
1079 /**
1080   * Search parameter: <b>phonetic</b>
1081   * <p>
1082   * Description: <b>A portion of name using some kind of phonetic matching algorithm</b><br>
1083   * Type: <b>string</b><br>
1084   * Path: <b>RelatedPerson.name</b><br>
1085   * </p>
1086   */
1087  @SearchParamDefinition(name="phonetic", path="RelatedPerson.name", description="A portion of name using some kind of phonetic matching algorithm", type="string" )
1088  public static final String SP_PHONETIC = "phonetic";
1089 /**
1090   * <b>Fluent Client</b> search parameter constant for <b>phonetic</b>
1091   * <p>
1092   * Description: <b>A portion of name using some kind of phonetic matching algorithm</b><br>
1093   * Type: <b>string</b><br>
1094   * Path: <b>RelatedPerson.name</b><br>
1095   * </p>
1096   */
1097  public static final ca.uhn.fhir.rest.gclient.StringClientParam PHONETIC = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PHONETIC);
1098
1099 /**
1100   * Search parameter: <b>phone</b>
1101   * <p>
1102   * Description: <b>A value in a phone contact</b><br>
1103   * Type: <b>token</b><br>
1104   * Path: <b>RelatedPerson.telecom(system=phone)</b><br>
1105   * </p>
1106   */
1107  @SearchParamDefinition(name="phone", path="RelatedPerson.telecom.where(system='phone')", description="A value in a phone contact", type="token" )
1108  public static final String SP_PHONE = "phone";
1109 /**
1110   * <b>Fluent Client</b> search parameter constant for <b>phone</b>
1111   * <p>
1112   * Description: <b>A value in a phone contact</b><br>
1113   * Type: <b>token</b><br>
1114   * Path: <b>RelatedPerson.telecom(system=phone)</b><br>
1115   * </p>
1116   */
1117  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PHONE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PHONE);
1118
1119 /**
1120   * Search parameter: <b>patient</b>
1121   * <p>
1122   * Description: <b>The patient this related person is related to</b><br>
1123   * Type: <b>reference</b><br>
1124   * Path: <b>RelatedPerson.patient</b><br>
1125   * </p>
1126   */
1127  @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 } )
1128  public static final String SP_PATIENT = "patient";
1129 /**
1130   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1131   * <p>
1132   * Description: <b>The patient this related person is related to</b><br>
1133   * Type: <b>reference</b><br>
1134   * Path: <b>RelatedPerson.patient</b><br>
1135   * </p>
1136   */
1137  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1138
1139/**
1140   * Constant for fluent queries to be used to add include statements. Specifies
1141   * the path value of "<b>RelatedPerson:patient</b>".
1142   */
1143  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("RelatedPerson:patient").toLocked();
1144
1145 /**
1146   * Search parameter: <b>name</b>
1147   * <p>
1148   * 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>
1149   * Type: <b>string</b><br>
1150   * Path: <b>RelatedPerson.name</b><br>
1151   * </p>
1152   */
1153  @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" )
1154  public static final String SP_NAME = "name";
1155 /**
1156   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1157   * <p>
1158   * 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>
1159   * Type: <b>string</b><br>
1160   * Path: <b>RelatedPerson.name</b><br>
1161   * </p>
1162   */
1163  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1164
1165 /**
1166   * Search parameter: <b>address-use</b>
1167   * <p>
1168   * Description: <b>A use code specified in an address</b><br>
1169   * Type: <b>token</b><br>
1170   * Path: <b>RelatedPerson.address.use</b><br>
1171   * </p>
1172   */
1173  @SearchParamDefinition(name="address-use", path="RelatedPerson.address.use", description="A use code specified in an address", type="token" )
1174  public static final String SP_ADDRESS_USE = "address-use";
1175 /**
1176   * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
1177   * <p>
1178   * Description: <b>A use code specified in an address</b><br>
1179   * Type: <b>token</b><br>
1180   * Path: <b>RelatedPerson.address.use</b><br>
1181   * </p>
1182   */
1183  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADDRESS_USE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADDRESS_USE);
1184
1185 /**
1186   * Search parameter: <b>telecom</b>
1187   * <p>
1188   * Description: <b>The value in any kind of contact</b><br>
1189   * Type: <b>token</b><br>
1190   * Path: <b>RelatedPerson.telecom</b><br>
1191   * </p>
1192   */
1193  @SearchParamDefinition(name="telecom", path="RelatedPerson.telecom", description="The value in any kind of contact", type="token" )
1194  public static final String SP_TELECOM = "telecom";
1195 /**
1196   * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
1197   * <p>
1198   * Description: <b>The value in any kind of contact</b><br>
1199   * Type: <b>token</b><br>
1200   * Path: <b>RelatedPerson.telecom</b><br>
1201   * </p>
1202   */
1203  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TELECOM);
1204
1205 /**
1206   * Search parameter: <b>address-city</b>
1207   * <p>
1208   * Description: <b>A city specified in an address</b><br>
1209   * Type: <b>string</b><br>
1210   * Path: <b>RelatedPerson.address.city</b><br>
1211   * </p>
1212   */
1213  @SearchParamDefinition(name="address-city", path="RelatedPerson.address.city", description="A city specified in an address", type="string" )
1214  public static final String SP_ADDRESS_CITY = "address-city";
1215 /**
1216   * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
1217   * <p>
1218   * Description: <b>A city specified in an address</b><br>
1219   * Type: <b>string</b><br>
1220   * Path: <b>RelatedPerson.address.city</b><br>
1221   * </p>
1222   */
1223  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_CITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_CITY);
1224
1225 /**
1226   * Search parameter: <b>email</b>
1227   * <p>
1228   * Description: <b>A value in an email contact</b><br>
1229   * Type: <b>token</b><br>
1230   * Path: <b>RelatedPerson.telecom(system=email)</b><br>
1231   * </p>
1232   */
1233  @SearchParamDefinition(name="email", path="RelatedPerson.telecom.where(system='email')", description="A value in an email contact", type="token" )
1234  public static final String SP_EMAIL = "email";
1235 /**
1236   * <b>Fluent Client</b> search parameter constant for <b>email</b>
1237   * <p>
1238   * Description: <b>A value in an email contact</b><br>
1239   * Type: <b>token</b><br>
1240   * Path: <b>RelatedPerson.telecom(system=email)</b><br>
1241   * </p>
1242   */
1243  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EMAIL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EMAIL);
1244
1245
1246}
1247