001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Significant health conditions for a person related to the patient relevant in the context of care for the patient.
052 */
053@ResourceDef(name="FamilyMemberHistory", profile="http://hl7.org/fhir/StructureDefinition/FamilyMemberHistory")
054public class FamilyMemberHistory extends DomainResource {
055
056    public enum FamilyHistoryStatus {
057        /**
058         * Some health information is known and captured, but not complete - see notes for details.
059         */
060        PARTIAL, 
061        /**
062         * All available related health information is captured as of the date (and possibly time) when the family member history was taken.
063         */
064        COMPLETED, 
065        /**
066         * This instance should not have been part of this patient's medical record.
067         */
068        ENTEREDINERROR, 
069        /**
070         * Health information for this family member is unavailable/unknown.
071         */
072        HEALTHUNKNOWN, 
073        /**
074         * added to help the parsers with the generic types
075         */
076        NULL;
077        public static FamilyHistoryStatus fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("partial".equals(codeString))
081          return PARTIAL;
082        if ("completed".equals(codeString))
083          return COMPLETED;
084        if ("entered-in-error".equals(codeString))
085          return ENTEREDINERROR;
086        if ("health-unknown".equals(codeString))
087          return HEALTHUNKNOWN;
088        if (Configuration.isAcceptInvalidEnums())
089          return null;
090        else
091          throw new FHIRException("Unknown FamilyHistoryStatus code '"+codeString+"'");
092        }
093        public String toCode() {
094          switch (this) {
095            case PARTIAL: return "partial";
096            case COMPLETED: return "completed";
097            case ENTEREDINERROR: return "entered-in-error";
098            case HEALTHUNKNOWN: return "health-unknown";
099            case NULL: return null;
100            default: return "?";
101          }
102        }
103        public String getSystem() {
104          switch (this) {
105            case PARTIAL: return "http://hl7.org/fhir/history-status";
106            case COMPLETED: return "http://hl7.org/fhir/history-status";
107            case ENTEREDINERROR: return "http://hl7.org/fhir/history-status";
108            case HEALTHUNKNOWN: return "http://hl7.org/fhir/history-status";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113        public String getDefinition() {
114          switch (this) {
115            case PARTIAL: return "Some health information is known and captured, but not complete - see notes for details.";
116            case COMPLETED: return "All available related health information is captured as of the date (and possibly time) when the family member history was taken.";
117            case ENTEREDINERROR: return "This instance should not have been part of this patient's medical record.";
118            case HEALTHUNKNOWN: return "Health information for this family member is unavailable/unknown.";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123        public String getDisplay() {
124          switch (this) {
125            case PARTIAL: return "Partial";
126            case COMPLETED: return "Completed";
127            case ENTEREDINERROR: return "Entered in Error";
128            case HEALTHUNKNOWN: return "Health Unknown";
129            case NULL: return null;
130            default: return "?";
131          }
132        }
133    }
134
135  public static class FamilyHistoryStatusEnumFactory implements EnumFactory<FamilyHistoryStatus> {
136    public FamilyHistoryStatus fromCode(String codeString) throws IllegalArgumentException {
137      if (codeString == null || "".equals(codeString))
138            if (codeString == null || "".equals(codeString))
139                return null;
140        if ("partial".equals(codeString))
141          return FamilyHistoryStatus.PARTIAL;
142        if ("completed".equals(codeString))
143          return FamilyHistoryStatus.COMPLETED;
144        if ("entered-in-error".equals(codeString))
145          return FamilyHistoryStatus.ENTEREDINERROR;
146        if ("health-unknown".equals(codeString))
147          return FamilyHistoryStatus.HEALTHUNKNOWN;
148        throw new IllegalArgumentException("Unknown FamilyHistoryStatus code '"+codeString+"'");
149        }
150        public Enumeration<FamilyHistoryStatus> fromType(PrimitiveType<?> code) throws FHIRException {
151          if (code == null)
152            return null;
153          if (code.isEmpty())
154            return new Enumeration<FamilyHistoryStatus>(this, FamilyHistoryStatus.NULL, code);
155          String codeString = ((PrimitiveType) code).asStringValue();
156          if (codeString == null || "".equals(codeString))
157            return new Enumeration<FamilyHistoryStatus>(this, FamilyHistoryStatus.NULL, code);
158        if ("partial".equals(codeString))
159          return new Enumeration<FamilyHistoryStatus>(this, FamilyHistoryStatus.PARTIAL, code);
160        if ("completed".equals(codeString))
161          return new Enumeration<FamilyHistoryStatus>(this, FamilyHistoryStatus.COMPLETED, code);
162        if ("entered-in-error".equals(codeString))
163          return new Enumeration<FamilyHistoryStatus>(this, FamilyHistoryStatus.ENTEREDINERROR, code);
164        if ("health-unknown".equals(codeString))
165          return new Enumeration<FamilyHistoryStatus>(this, FamilyHistoryStatus.HEALTHUNKNOWN, code);
166        throw new FHIRException("Unknown FamilyHistoryStatus code '"+codeString+"'");
167        }
168    public String toCode(FamilyHistoryStatus code) {
169      if (code == FamilyHistoryStatus.PARTIAL)
170        return "partial";
171      if (code == FamilyHistoryStatus.COMPLETED)
172        return "completed";
173      if (code == FamilyHistoryStatus.ENTEREDINERROR)
174        return "entered-in-error";
175      if (code == FamilyHistoryStatus.HEALTHUNKNOWN)
176        return "health-unknown";
177      return "?";
178      }
179    public String toSystem(FamilyHistoryStatus code) {
180      return code.getSystem();
181      }
182    }
183
184    @Block()
185    public static class FamilyMemberHistoryParticipantComponent extends BackboneElement implements IBaseBackboneElement {
186        /**
187         * Distinguishes the type of involvement of the actor in the activities related to the family member history.
188         */
189        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
190        @Description(shortDefinition="Type of involvement", formalDefinition="Distinguishes the type of involvement of the actor in the activities related to the family member history." )
191        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/participation-role-type")
192        protected CodeableConcept function;
193
194        /**
195         * Indicates who or what participated in the activities related to the family member history.
196         */
197        @Child(name = "actor", type = {Practitioner.class, PractitionerRole.class, Patient.class, RelatedPerson.class, Device.class, Organization.class, CareTeam.class}, order=2, min=1, max=1, modifier=false, summary=true)
198        @Description(shortDefinition="Who or what participated in the activities related to the family member history", formalDefinition="Indicates who or what participated in the activities related to the family member history." )
199        protected Reference actor;
200
201        private static final long serialVersionUID = -576943815L;
202
203    /**
204     * Constructor
205     */
206      public FamilyMemberHistoryParticipantComponent() {
207        super();
208      }
209
210    /**
211     * Constructor
212     */
213      public FamilyMemberHistoryParticipantComponent(Reference actor) {
214        super();
215        this.setActor(actor);
216      }
217
218        /**
219         * @return {@link #function} (Distinguishes the type of involvement of the actor in the activities related to the family member history.)
220         */
221        public CodeableConcept getFunction() { 
222          if (this.function == null)
223            if (Configuration.errorOnAutoCreate())
224              throw new Error("Attempt to auto-create FamilyMemberHistoryParticipantComponent.function");
225            else if (Configuration.doAutoCreate())
226              this.function = new CodeableConcept(); // cc
227          return this.function;
228        }
229
230        public boolean hasFunction() { 
231          return this.function != null && !this.function.isEmpty();
232        }
233
234        /**
235         * @param value {@link #function} (Distinguishes the type of involvement of the actor in the activities related to the family member history.)
236         */
237        public FamilyMemberHistoryParticipantComponent setFunction(CodeableConcept value) { 
238          this.function = value;
239          return this;
240        }
241
242        /**
243         * @return {@link #actor} (Indicates who or what participated in the activities related to the family member history.)
244         */
245        public Reference getActor() { 
246          if (this.actor == null)
247            if (Configuration.errorOnAutoCreate())
248              throw new Error("Attempt to auto-create FamilyMemberHistoryParticipantComponent.actor");
249            else if (Configuration.doAutoCreate())
250              this.actor = new Reference(); // cc
251          return this.actor;
252        }
253
254        public boolean hasActor() { 
255          return this.actor != null && !this.actor.isEmpty();
256        }
257
258        /**
259         * @param value {@link #actor} (Indicates who or what participated in the activities related to the family member history.)
260         */
261        public FamilyMemberHistoryParticipantComponent setActor(Reference value) { 
262          this.actor = value;
263          return this;
264        }
265
266        protected void listChildren(List<Property> children) {
267          super.listChildren(children);
268          children.add(new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the actor in the activities related to the family member history.", 0, 1, function));
269          children.add(new Property("actor", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson|Device|Organization|CareTeam)", "Indicates who or what participated in the activities related to the family member history.", 0, 1, actor));
270        }
271
272        @Override
273        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
274          switch (_hash) {
275          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the actor in the activities related to the family member history.", 0, 1, function);
276          case 92645877: /*actor*/  return new Property("actor", "Reference(Practitioner|PractitionerRole|Patient|RelatedPerson|Device|Organization|CareTeam)", "Indicates who or what participated in the activities related to the family member history.", 0, 1, actor);
277          default: return super.getNamedProperty(_hash, _name, _checkValid);
278          }
279
280        }
281
282      @Override
283      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
284        switch (hash) {
285        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
286        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
287        default: return super.getProperty(hash, name, checkValid);
288        }
289
290      }
291
292      @Override
293      public Base setProperty(int hash, String name, Base value) throws FHIRException {
294        switch (hash) {
295        case 1380938712: // function
296          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
297          return value;
298        case 92645877: // actor
299          this.actor = TypeConvertor.castToReference(value); // Reference
300          return value;
301        default: return super.setProperty(hash, name, value);
302        }
303
304      }
305
306      @Override
307      public Base setProperty(String name, Base value) throws FHIRException {
308        if (name.equals("function")) {
309          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
310        } else if (name.equals("actor")) {
311          this.actor = TypeConvertor.castToReference(value); // Reference
312        } else
313          return super.setProperty(name, value);
314        return value;
315      }
316
317      @Override
318      public Base makeProperty(int hash, String name) throws FHIRException {
319        switch (hash) {
320        case 1380938712:  return getFunction();
321        case 92645877:  return getActor();
322        default: return super.makeProperty(hash, name);
323        }
324
325      }
326
327      @Override
328      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
329        switch (hash) {
330        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
331        case 92645877: /*actor*/ return new String[] {"Reference"};
332        default: return super.getTypesForProperty(hash, name);
333        }
334
335      }
336
337      @Override
338      public Base addChild(String name) throws FHIRException {
339        if (name.equals("function")) {
340          this.function = new CodeableConcept();
341          return this.function;
342        }
343        else if (name.equals("actor")) {
344          this.actor = new Reference();
345          return this.actor;
346        }
347        else
348          return super.addChild(name);
349      }
350
351      public FamilyMemberHistoryParticipantComponent copy() {
352        FamilyMemberHistoryParticipantComponent dst = new FamilyMemberHistoryParticipantComponent();
353        copyValues(dst);
354        return dst;
355      }
356
357      public void copyValues(FamilyMemberHistoryParticipantComponent dst) {
358        super.copyValues(dst);
359        dst.function = function == null ? null : function.copy();
360        dst.actor = actor == null ? null : actor.copy();
361      }
362
363      @Override
364      public boolean equalsDeep(Base other_) {
365        if (!super.equalsDeep(other_))
366          return false;
367        if (!(other_ instanceof FamilyMemberHistoryParticipantComponent))
368          return false;
369        FamilyMemberHistoryParticipantComponent o = (FamilyMemberHistoryParticipantComponent) other_;
370        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true);
371      }
372
373      @Override
374      public boolean equalsShallow(Base other_) {
375        if (!super.equalsShallow(other_))
376          return false;
377        if (!(other_ instanceof FamilyMemberHistoryParticipantComponent))
378          return false;
379        FamilyMemberHistoryParticipantComponent o = (FamilyMemberHistoryParticipantComponent) other_;
380        return true;
381      }
382
383      public boolean isEmpty() {
384        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor);
385      }
386
387  public String fhirType() {
388    return "FamilyMemberHistory.participant";
389
390  }
391
392  }
393
394    @Block()
395    public static class FamilyMemberHistoryConditionComponent extends BackboneElement implements IBaseBackboneElement {
396        /**
397         * The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system.
398         */
399        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
400        @Description(shortDefinition="Condition suffered by relation", formalDefinition="The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system." )
401        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
402        protected CodeableConcept code;
403
404        /**
405         * Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation.
406         */
407        @Child(name = "outcome", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
408        @Description(shortDefinition="deceased | permanent disability | etc", formalDefinition="Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation." )
409        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-outcome")
410        protected CodeableConcept outcome;
411
412        /**
413         * This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.
414         */
415        @Child(name = "contributedToDeath", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
416        @Description(shortDefinition="Whether the condition contributed to the cause of death", formalDefinition="This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown." )
417        protected BooleanType contributedToDeath;
418
419        /**
420         * Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.
421         */
422        @Child(name = "onset", type = {Age.class, Range.class, Period.class, StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
423        @Description(shortDefinition="When condition first manifested", formalDefinition="Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence." )
424        protected DataType onset;
425
426        /**
427         * An area where general notes can be placed about this specific condition.
428         */
429        @Child(name = "note", type = {Annotation.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
430        @Description(shortDefinition="Extra information about condition", formalDefinition="An area where general notes can be placed about this specific condition." )
431        protected List<Annotation> note;
432
433        private static final long serialVersionUID = -91335661L;
434
435    /**
436     * Constructor
437     */
438      public FamilyMemberHistoryConditionComponent() {
439        super();
440      }
441
442    /**
443     * Constructor
444     */
445      public FamilyMemberHistoryConditionComponent(CodeableConcept code) {
446        super();
447        this.setCode(code);
448      }
449
450        /**
451         * @return {@link #code} (The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system.)
452         */
453        public CodeableConcept getCode() { 
454          if (this.code == null)
455            if (Configuration.errorOnAutoCreate())
456              throw new Error("Attempt to auto-create FamilyMemberHistoryConditionComponent.code");
457            else if (Configuration.doAutoCreate())
458              this.code = new CodeableConcept(); // cc
459          return this.code;
460        }
461
462        public boolean hasCode() { 
463          return this.code != null && !this.code.isEmpty();
464        }
465
466        /**
467         * @param value {@link #code} (The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system.)
468         */
469        public FamilyMemberHistoryConditionComponent setCode(CodeableConcept value) { 
470          this.code = value;
471          return this;
472        }
473
474        /**
475         * @return {@link #outcome} (Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation.)
476         */
477        public CodeableConcept getOutcome() { 
478          if (this.outcome == null)
479            if (Configuration.errorOnAutoCreate())
480              throw new Error("Attempt to auto-create FamilyMemberHistoryConditionComponent.outcome");
481            else if (Configuration.doAutoCreate())
482              this.outcome = new CodeableConcept(); // cc
483          return this.outcome;
484        }
485
486        public boolean hasOutcome() { 
487          return this.outcome != null && !this.outcome.isEmpty();
488        }
489
490        /**
491         * @param value {@link #outcome} (Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation.)
492         */
493        public FamilyMemberHistoryConditionComponent setOutcome(CodeableConcept value) { 
494          this.outcome = value;
495          return this;
496        }
497
498        /**
499         * @return {@link #contributedToDeath} (This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.). This is the underlying object with id, value and extensions. The accessor "getContributedToDeath" gives direct access to the value
500         */
501        public BooleanType getContributedToDeathElement() { 
502          if (this.contributedToDeath == null)
503            if (Configuration.errorOnAutoCreate())
504              throw new Error("Attempt to auto-create FamilyMemberHistoryConditionComponent.contributedToDeath");
505            else if (Configuration.doAutoCreate())
506              this.contributedToDeath = new BooleanType(); // bb
507          return this.contributedToDeath;
508        }
509
510        public boolean hasContributedToDeathElement() { 
511          return this.contributedToDeath != null && !this.contributedToDeath.isEmpty();
512        }
513
514        public boolean hasContributedToDeath() { 
515          return this.contributedToDeath != null && !this.contributedToDeath.isEmpty();
516        }
517
518        /**
519         * @param value {@link #contributedToDeath} (This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.). This is the underlying object with id, value and extensions. The accessor "getContributedToDeath" gives direct access to the value
520         */
521        public FamilyMemberHistoryConditionComponent setContributedToDeathElement(BooleanType value) { 
522          this.contributedToDeath = value;
523          return this;
524        }
525
526        /**
527         * @return This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.
528         */
529        public boolean getContributedToDeath() { 
530          return this.contributedToDeath == null || this.contributedToDeath.isEmpty() ? false : this.contributedToDeath.getValue();
531        }
532
533        /**
534         * @param value This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.
535         */
536        public FamilyMemberHistoryConditionComponent setContributedToDeath(boolean value) { 
537            if (this.contributedToDeath == null)
538              this.contributedToDeath = new BooleanType();
539            this.contributedToDeath.setValue(value);
540          return this;
541        }
542
543        /**
544         * @return {@link #onset} (Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.)
545         */
546        public DataType getOnset() { 
547          return this.onset;
548        }
549
550        /**
551         * @return {@link #onset} (Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.)
552         */
553        public Age getOnsetAge() throws FHIRException { 
554          if (this.onset == null)
555            this.onset = new Age();
556          if (!(this.onset instanceof Age))
557            throw new FHIRException("Type mismatch: the type Age was expected, but "+this.onset.getClass().getName()+" was encountered");
558          return (Age) this.onset;
559        }
560
561        public boolean hasOnsetAge() { 
562          return this != null && this.onset instanceof Age;
563        }
564
565        /**
566         * @return {@link #onset} (Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.)
567         */
568        public Range getOnsetRange() throws FHIRException { 
569          if (this.onset == null)
570            this.onset = new Range();
571          if (!(this.onset instanceof Range))
572            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.onset.getClass().getName()+" was encountered");
573          return (Range) this.onset;
574        }
575
576        public boolean hasOnsetRange() { 
577          return this != null && this.onset instanceof Range;
578        }
579
580        /**
581         * @return {@link #onset} (Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.)
582         */
583        public Period getOnsetPeriod() throws FHIRException { 
584          if (this.onset == null)
585            this.onset = new Period();
586          if (!(this.onset instanceof Period))
587            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.onset.getClass().getName()+" was encountered");
588          return (Period) this.onset;
589        }
590
591        public boolean hasOnsetPeriod() { 
592          return this != null && this.onset instanceof Period;
593        }
594
595        /**
596         * @return {@link #onset} (Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.)
597         */
598        public StringType getOnsetStringType() throws FHIRException { 
599          if (this.onset == null)
600            this.onset = new StringType();
601          if (!(this.onset instanceof StringType))
602            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.onset.getClass().getName()+" was encountered");
603          return (StringType) this.onset;
604        }
605
606        public boolean hasOnsetStringType() { 
607          return this != null && this.onset instanceof StringType;
608        }
609
610        public boolean hasOnset() { 
611          return this.onset != null && !this.onset.isEmpty();
612        }
613
614        /**
615         * @param value {@link #onset} (Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.)
616         */
617        public FamilyMemberHistoryConditionComponent setOnset(DataType value) { 
618          if (value != null && !(value instanceof Age || value instanceof Range || value instanceof Period || value instanceof StringType))
619            throw new FHIRException("Not the right type for FamilyMemberHistory.condition.onset[x]: "+value.fhirType());
620          this.onset = value;
621          return this;
622        }
623
624        /**
625         * @return {@link #note} (An area where general notes can be placed about this specific condition.)
626         */
627        public List<Annotation> getNote() { 
628          if (this.note == null)
629            this.note = new ArrayList<Annotation>();
630          return this.note;
631        }
632
633        /**
634         * @return Returns a reference to <code>this</code> for easy method chaining
635         */
636        public FamilyMemberHistoryConditionComponent setNote(List<Annotation> theNote) { 
637          this.note = theNote;
638          return this;
639        }
640
641        public boolean hasNote() { 
642          if (this.note == null)
643            return false;
644          for (Annotation item : this.note)
645            if (!item.isEmpty())
646              return true;
647          return false;
648        }
649
650        public Annotation addNote() { //3
651          Annotation t = new Annotation();
652          if (this.note == null)
653            this.note = new ArrayList<Annotation>();
654          this.note.add(t);
655          return t;
656        }
657
658        public FamilyMemberHistoryConditionComponent addNote(Annotation t) { //3
659          if (t == null)
660            return this;
661          if (this.note == null)
662            this.note = new ArrayList<Annotation>();
663          this.note.add(t);
664          return this;
665        }
666
667        /**
668         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
669         */
670        public Annotation getNoteFirstRep() { 
671          if (getNote().isEmpty()) {
672            addNote();
673          }
674          return getNote().get(0);
675        }
676
677        protected void listChildren(List<Property> children) {
678          super.listChildren(children);
679          children.add(new Property("code", "CodeableConcept", "The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system.", 0, 1, code));
680          children.add(new Property("outcome", "CodeableConcept", "Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation.", 0, 1, outcome));
681          children.add(new Property("contributedToDeath", "boolean", "This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.", 0, 1, contributedToDeath));
682          children.add(new Property("onset[x]", "Age|Range|Period|string", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset));
683          children.add(new Property("note", "Annotation", "An area where general notes can be placed about this specific condition.", 0, java.lang.Integer.MAX_VALUE, note));
684        }
685
686        @Override
687        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
688          switch (_hash) {
689          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system.", 0, 1, code);
690          case -1106507950: /*outcome*/  return new Property("outcome", "CodeableConcept", "Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation.", 0, 1, outcome);
691          case -363644638: /*contributedToDeath*/  return new Property("contributedToDeath", "boolean", "This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.", 0, 1, contributedToDeath);
692          case -1886216323: /*onset[x]*/  return new Property("onset[x]", "Age|Range|Period|string", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset);
693          case 105901603: /*onset*/  return new Property("onset[x]", "Age|Range|Period|string", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset);
694          case -1886241828: /*onsetAge*/  return new Property("onset[x]", "Age", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset);
695          case -186664742: /*onsetRange*/  return new Property("onset[x]", "Range", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset);
696          case -1545082428: /*onsetPeriod*/  return new Property("onset[x]", "Period", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset);
697          case -1445342188: /*onsetString*/  return new Property("onset[x]", "string", "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence.", 0, 1, onset);
698          case 3387378: /*note*/  return new Property("note", "Annotation", "An area where general notes can be placed about this specific condition.", 0, java.lang.Integer.MAX_VALUE, note);
699          default: return super.getNamedProperty(_hash, _name, _checkValid);
700          }
701
702        }
703
704      @Override
705      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
706        switch (hash) {
707        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
708        case -1106507950: /*outcome*/ return this.outcome == null ? new Base[0] : new Base[] {this.outcome}; // CodeableConcept
709        case -363644638: /*contributedToDeath*/ return this.contributedToDeath == null ? new Base[0] : new Base[] {this.contributedToDeath}; // BooleanType
710        case 105901603: /*onset*/ return this.onset == null ? new Base[0] : new Base[] {this.onset}; // DataType
711        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
712        default: return super.getProperty(hash, name, checkValid);
713        }
714
715      }
716
717      @Override
718      public Base setProperty(int hash, String name, Base value) throws FHIRException {
719        switch (hash) {
720        case 3059181: // code
721          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
722          return value;
723        case -1106507950: // outcome
724          this.outcome = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
725          return value;
726        case -363644638: // contributedToDeath
727          this.contributedToDeath = TypeConvertor.castToBoolean(value); // BooleanType
728          return value;
729        case 105901603: // onset
730          this.onset = TypeConvertor.castToType(value); // DataType
731          return value;
732        case 3387378: // note
733          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
734          return value;
735        default: return super.setProperty(hash, name, value);
736        }
737
738      }
739
740      @Override
741      public Base setProperty(String name, Base value) throws FHIRException {
742        if (name.equals("code")) {
743          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
744        } else if (name.equals("outcome")) {
745          this.outcome = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
746        } else if (name.equals("contributedToDeath")) {
747          this.contributedToDeath = TypeConvertor.castToBoolean(value); // BooleanType
748        } else if (name.equals("onset[x]")) {
749          this.onset = TypeConvertor.castToType(value); // DataType
750        } else if (name.equals("note")) {
751          this.getNote().add(TypeConvertor.castToAnnotation(value));
752        } else
753          return super.setProperty(name, value);
754        return value;
755      }
756
757      @Override
758      public Base makeProperty(int hash, String name) throws FHIRException {
759        switch (hash) {
760        case 3059181:  return getCode();
761        case -1106507950:  return getOutcome();
762        case -363644638:  return getContributedToDeathElement();
763        case -1886216323:  return getOnset();
764        case 105901603:  return getOnset();
765        case 3387378:  return addNote(); 
766        default: return super.makeProperty(hash, name);
767        }
768
769      }
770
771      @Override
772      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
773        switch (hash) {
774        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
775        case -1106507950: /*outcome*/ return new String[] {"CodeableConcept"};
776        case -363644638: /*contributedToDeath*/ return new String[] {"boolean"};
777        case 105901603: /*onset*/ return new String[] {"Age", "Range", "Period", "string"};
778        case 3387378: /*note*/ return new String[] {"Annotation"};
779        default: return super.getTypesForProperty(hash, name);
780        }
781
782      }
783
784      @Override
785      public Base addChild(String name) throws FHIRException {
786        if (name.equals("code")) {
787          this.code = new CodeableConcept();
788          return this.code;
789        }
790        else if (name.equals("outcome")) {
791          this.outcome = new CodeableConcept();
792          return this.outcome;
793        }
794        else if (name.equals("contributedToDeath")) {
795          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.condition.contributedToDeath");
796        }
797        else if (name.equals("onsetAge")) {
798          this.onset = new Age();
799          return this.onset;
800        }
801        else if (name.equals("onsetRange")) {
802          this.onset = new Range();
803          return this.onset;
804        }
805        else if (name.equals("onsetPeriod")) {
806          this.onset = new Period();
807          return this.onset;
808        }
809        else if (name.equals("onsetString")) {
810          this.onset = new StringType();
811          return this.onset;
812        }
813        else if (name.equals("note")) {
814          return addNote();
815        }
816        else
817          return super.addChild(name);
818      }
819
820      public FamilyMemberHistoryConditionComponent copy() {
821        FamilyMemberHistoryConditionComponent dst = new FamilyMemberHistoryConditionComponent();
822        copyValues(dst);
823        return dst;
824      }
825
826      public void copyValues(FamilyMemberHistoryConditionComponent dst) {
827        super.copyValues(dst);
828        dst.code = code == null ? null : code.copy();
829        dst.outcome = outcome == null ? null : outcome.copy();
830        dst.contributedToDeath = contributedToDeath == null ? null : contributedToDeath.copy();
831        dst.onset = onset == null ? null : onset.copy();
832        if (note != null) {
833          dst.note = new ArrayList<Annotation>();
834          for (Annotation i : note)
835            dst.note.add(i.copy());
836        };
837      }
838
839      @Override
840      public boolean equalsDeep(Base other_) {
841        if (!super.equalsDeep(other_))
842          return false;
843        if (!(other_ instanceof FamilyMemberHistoryConditionComponent))
844          return false;
845        FamilyMemberHistoryConditionComponent o = (FamilyMemberHistoryConditionComponent) other_;
846        return compareDeep(code, o.code, true) && compareDeep(outcome, o.outcome, true) && compareDeep(contributedToDeath, o.contributedToDeath, true)
847           && compareDeep(onset, o.onset, true) && compareDeep(note, o.note, true);
848      }
849
850      @Override
851      public boolean equalsShallow(Base other_) {
852        if (!super.equalsShallow(other_))
853          return false;
854        if (!(other_ instanceof FamilyMemberHistoryConditionComponent))
855          return false;
856        FamilyMemberHistoryConditionComponent o = (FamilyMemberHistoryConditionComponent) other_;
857        return compareValues(contributedToDeath, o.contributedToDeath, true);
858      }
859
860      public boolean isEmpty() {
861        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, outcome, contributedToDeath
862          , onset, note);
863      }
864
865  public String fhirType() {
866    return "FamilyMemberHistory.condition";
867
868  }
869
870  }
871
872    @Block()
873    public static class FamilyMemberHistoryProcedureComponent extends BackboneElement implements IBaseBackboneElement {
874        /**
875         * The actual procedure specified. Could be a coded procedure or a less specific string depending on how much is known about the procedure and the capabilities of the creating system.
876         */
877        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
878        @Description(shortDefinition="Procedures performed on the related person", formalDefinition="The actual procedure specified. Could be a coded procedure or a less specific string depending on how much is known about the procedure and the capabilities of the creating system." )
879        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-code")
880        protected CodeableConcept code;
881
882        /**
883         * Indicates what happened following the procedure. If the procedure resulted in death, deceased date is captured on the relation.
884         */
885        @Child(name = "outcome", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
886        @Description(shortDefinition="What happened following the procedure", formalDefinition="Indicates what happened following the procedure. If the procedure resulted in death, deceased date is captured on the relation." )
887        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings")
888        protected CodeableConcept outcome;
889
890        /**
891         * This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.
892         */
893        @Child(name = "contributedToDeath", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
894        @Description(shortDefinition="Whether the procedure contributed to the cause of death", formalDefinition="This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown." )
895        protected BooleanType contributedToDeath;
896
897        /**
898         * Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.
899         */
900        @Child(name = "performed", type = {Age.class, Range.class, Period.class, StringType.class, DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=false)
901        @Description(shortDefinition="When the procedure was performed", formalDefinition="Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured." )
902        protected DataType performed;
903
904        /**
905         * An area where general notes can be placed about this specific procedure.
906         */
907        @Child(name = "note", type = {Annotation.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
908        @Description(shortDefinition="Extra information about the procedure", formalDefinition="An area where general notes can be placed about this specific procedure." )
909        protected List<Annotation> note;
910
911        private static final long serialVersionUID = 281271062L;
912
913    /**
914     * Constructor
915     */
916      public FamilyMemberHistoryProcedureComponent() {
917        super();
918      }
919
920    /**
921     * Constructor
922     */
923      public FamilyMemberHistoryProcedureComponent(CodeableConcept code) {
924        super();
925        this.setCode(code);
926      }
927
928        /**
929         * @return {@link #code} (The actual procedure specified. Could be a coded procedure or a less specific string depending on how much is known about the procedure and the capabilities of the creating system.)
930         */
931        public CodeableConcept getCode() { 
932          if (this.code == null)
933            if (Configuration.errorOnAutoCreate())
934              throw new Error("Attempt to auto-create FamilyMemberHistoryProcedureComponent.code");
935            else if (Configuration.doAutoCreate())
936              this.code = new CodeableConcept(); // cc
937          return this.code;
938        }
939
940        public boolean hasCode() { 
941          return this.code != null && !this.code.isEmpty();
942        }
943
944        /**
945         * @param value {@link #code} (The actual procedure specified. Could be a coded procedure or a less specific string depending on how much is known about the procedure and the capabilities of the creating system.)
946         */
947        public FamilyMemberHistoryProcedureComponent setCode(CodeableConcept value) { 
948          this.code = value;
949          return this;
950        }
951
952        /**
953         * @return {@link #outcome} (Indicates what happened following the procedure. If the procedure resulted in death, deceased date is captured on the relation.)
954         */
955        public CodeableConcept getOutcome() { 
956          if (this.outcome == null)
957            if (Configuration.errorOnAutoCreate())
958              throw new Error("Attempt to auto-create FamilyMemberHistoryProcedureComponent.outcome");
959            else if (Configuration.doAutoCreate())
960              this.outcome = new CodeableConcept(); // cc
961          return this.outcome;
962        }
963
964        public boolean hasOutcome() { 
965          return this.outcome != null && !this.outcome.isEmpty();
966        }
967
968        /**
969         * @param value {@link #outcome} (Indicates what happened following the procedure. If the procedure resulted in death, deceased date is captured on the relation.)
970         */
971        public FamilyMemberHistoryProcedureComponent setOutcome(CodeableConcept value) { 
972          this.outcome = value;
973          return this;
974        }
975
976        /**
977         * @return {@link #contributedToDeath} (This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.). This is the underlying object with id, value and extensions. The accessor "getContributedToDeath" gives direct access to the value
978         */
979        public BooleanType getContributedToDeathElement() { 
980          if (this.contributedToDeath == null)
981            if (Configuration.errorOnAutoCreate())
982              throw new Error("Attempt to auto-create FamilyMemberHistoryProcedureComponent.contributedToDeath");
983            else if (Configuration.doAutoCreate())
984              this.contributedToDeath = new BooleanType(); // bb
985          return this.contributedToDeath;
986        }
987
988        public boolean hasContributedToDeathElement() { 
989          return this.contributedToDeath != null && !this.contributedToDeath.isEmpty();
990        }
991
992        public boolean hasContributedToDeath() { 
993          return this.contributedToDeath != null && !this.contributedToDeath.isEmpty();
994        }
995
996        /**
997         * @param value {@link #contributedToDeath} (This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.). This is the underlying object with id, value and extensions. The accessor "getContributedToDeath" gives direct access to the value
998         */
999        public FamilyMemberHistoryProcedureComponent setContributedToDeathElement(BooleanType value) { 
1000          this.contributedToDeath = value;
1001          return this;
1002        }
1003
1004        /**
1005         * @return This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.
1006         */
1007        public boolean getContributedToDeath() { 
1008          return this.contributedToDeath == null || this.contributedToDeath.isEmpty() ? false : this.contributedToDeath.getValue();
1009        }
1010
1011        /**
1012         * @param value This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.
1013         */
1014        public FamilyMemberHistoryProcedureComponent setContributedToDeath(boolean value) { 
1015            if (this.contributedToDeath == null)
1016              this.contributedToDeath = new BooleanType();
1017            this.contributedToDeath.setValue(value);
1018          return this;
1019        }
1020
1021        /**
1022         * @return {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1023         */
1024        public DataType getPerformed() { 
1025          return this.performed;
1026        }
1027
1028        /**
1029         * @return {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1030         */
1031        public Age getPerformedAge() throws FHIRException { 
1032          if (this.performed == null)
1033            this.performed = new Age();
1034          if (!(this.performed instanceof Age))
1035            throw new FHIRException("Type mismatch: the type Age was expected, but "+this.performed.getClass().getName()+" was encountered");
1036          return (Age) this.performed;
1037        }
1038
1039        public boolean hasPerformedAge() { 
1040          return this != null && this.performed instanceof Age;
1041        }
1042
1043        /**
1044         * @return {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1045         */
1046        public Range getPerformedRange() throws FHIRException { 
1047          if (this.performed == null)
1048            this.performed = new Range();
1049          if (!(this.performed instanceof Range))
1050            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.performed.getClass().getName()+" was encountered");
1051          return (Range) this.performed;
1052        }
1053
1054        public boolean hasPerformedRange() { 
1055          return this != null && this.performed instanceof Range;
1056        }
1057
1058        /**
1059         * @return {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1060         */
1061        public Period getPerformedPeriod() throws FHIRException { 
1062          if (this.performed == null)
1063            this.performed = new Period();
1064          if (!(this.performed instanceof Period))
1065            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.performed.getClass().getName()+" was encountered");
1066          return (Period) this.performed;
1067        }
1068
1069        public boolean hasPerformedPeriod() { 
1070          return this != null && this.performed instanceof Period;
1071        }
1072
1073        /**
1074         * @return {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1075         */
1076        public StringType getPerformedStringType() throws FHIRException { 
1077          if (this.performed == null)
1078            this.performed = new StringType();
1079          if (!(this.performed instanceof StringType))
1080            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.performed.getClass().getName()+" was encountered");
1081          return (StringType) this.performed;
1082        }
1083
1084        public boolean hasPerformedStringType() { 
1085          return this != null && this.performed instanceof StringType;
1086        }
1087
1088        /**
1089         * @return {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1090         */
1091        public DateTimeType getPerformedDateTimeType() throws FHIRException { 
1092          if (this.performed == null)
1093            this.performed = new DateTimeType();
1094          if (!(this.performed instanceof DateTimeType))
1095            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.performed.getClass().getName()+" was encountered");
1096          return (DateTimeType) this.performed;
1097        }
1098
1099        public boolean hasPerformedDateTimeType() { 
1100          return this != null && this.performed instanceof DateTimeType;
1101        }
1102
1103        public boolean hasPerformed() { 
1104          return this.performed != null && !this.performed.isEmpty();
1105        }
1106
1107        /**
1108         * @param value {@link #performed} (Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1109         */
1110        public FamilyMemberHistoryProcedureComponent setPerformed(DataType value) { 
1111          if (value != null && !(value instanceof Age || value instanceof Range || value instanceof Period || value instanceof StringType || value instanceof DateTimeType))
1112            throw new FHIRException("Not the right type for FamilyMemberHistory.procedure.performed[x]: "+value.fhirType());
1113          this.performed = value;
1114          return this;
1115        }
1116
1117        /**
1118         * @return {@link #note} (An area where general notes can be placed about this specific procedure.)
1119         */
1120        public List<Annotation> getNote() { 
1121          if (this.note == null)
1122            this.note = new ArrayList<Annotation>();
1123          return this.note;
1124        }
1125
1126        /**
1127         * @return Returns a reference to <code>this</code> for easy method chaining
1128         */
1129        public FamilyMemberHistoryProcedureComponent setNote(List<Annotation> theNote) { 
1130          this.note = theNote;
1131          return this;
1132        }
1133
1134        public boolean hasNote() { 
1135          if (this.note == null)
1136            return false;
1137          for (Annotation item : this.note)
1138            if (!item.isEmpty())
1139              return true;
1140          return false;
1141        }
1142
1143        public Annotation addNote() { //3
1144          Annotation t = new Annotation();
1145          if (this.note == null)
1146            this.note = new ArrayList<Annotation>();
1147          this.note.add(t);
1148          return t;
1149        }
1150
1151        public FamilyMemberHistoryProcedureComponent addNote(Annotation t) { //3
1152          if (t == null)
1153            return this;
1154          if (this.note == null)
1155            this.note = new ArrayList<Annotation>();
1156          this.note.add(t);
1157          return this;
1158        }
1159
1160        /**
1161         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1162         */
1163        public Annotation getNoteFirstRep() { 
1164          if (getNote().isEmpty()) {
1165            addNote();
1166          }
1167          return getNote().get(0);
1168        }
1169
1170        protected void listChildren(List<Property> children) {
1171          super.listChildren(children);
1172          children.add(new Property("code", "CodeableConcept", "The actual procedure specified. Could be a coded procedure or a less specific string depending on how much is known about the procedure and the capabilities of the creating system.", 0, 1, code));
1173          children.add(new Property("outcome", "CodeableConcept", "Indicates what happened following the procedure. If the procedure resulted in death, deceased date is captured on the relation.", 0, 1, outcome));
1174          children.add(new Property("contributedToDeath", "boolean", "This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.", 0, 1, contributedToDeath));
1175          children.add(new Property("performed[x]", "Age|Range|Period|string|dateTime", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed));
1176          children.add(new Property("note", "Annotation", "An area where general notes can be placed about this specific procedure.", 0, java.lang.Integer.MAX_VALUE, note));
1177        }
1178
1179        @Override
1180        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1181          switch (_hash) {
1182          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The actual procedure specified. Could be a coded procedure or a less specific string depending on how much is known about the procedure and the capabilities of the creating system.", 0, 1, code);
1183          case -1106507950: /*outcome*/  return new Property("outcome", "CodeableConcept", "Indicates what happened following the procedure. If the procedure resulted in death, deceased date is captured on the relation.", 0, 1, outcome);
1184          case -363644638: /*contributedToDeath*/  return new Property("contributedToDeath", "boolean", "This procedure contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown.", 0, 1, contributedToDeath);
1185          case 1355984064: /*performed[x]*/  return new Property("performed[x]", "Age|Range|Period|string|dateTime", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1186          case 481140672: /*performed*/  return new Property("performed[x]", "Age|Range|Period|string|dateTime", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1187          case 1355958559: /*performedAge*/  return new Property("performed[x]", "Age", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1188          case 1716617565: /*performedRange*/  return new Property("performed[x]", "Range", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1189          case 1622094241: /*performedPeriod*/  return new Property("performed[x]", "Period", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1190          case 1721834481: /*performedString*/  return new Property("performed[x]", "string", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1191          case 1118270331: /*performedDateTime*/  return new Property("performed[x]", "dateTime", "Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, performed);
1192          case 3387378: /*note*/  return new Property("note", "Annotation", "An area where general notes can be placed about this specific procedure.", 0, java.lang.Integer.MAX_VALUE, note);
1193          default: return super.getNamedProperty(_hash, _name, _checkValid);
1194          }
1195
1196        }
1197
1198      @Override
1199      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1200        switch (hash) {
1201        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1202        case -1106507950: /*outcome*/ return this.outcome == null ? new Base[0] : new Base[] {this.outcome}; // CodeableConcept
1203        case -363644638: /*contributedToDeath*/ return this.contributedToDeath == null ? new Base[0] : new Base[] {this.contributedToDeath}; // BooleanType
1204        case 481140672: /*performed*/ return this.performed == null ? new Base[0] : new Base[] {this.performed}; // DataType
1205        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1206        default: return super.getProperty(hash, name, checkValid);
1207        }
1208
1209      }
1210
1211      @Override
1212      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1213        switch (hash) {
1214        case 3059181: // code
1215          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1216          return value;
1217        case -1106507950: // outcome
1218          this.outcome = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1219          return value;
1220        case -363644638: // contributedToDeath
1221          this.contributedToDeath = TypeConvertor.castToBoolean(value); // BooleanType
1222          return value;
1223        case 481140672: // performed
1224          this.performed = TypeConvertor.castToType(value); // DataType
1225          return value;
1226        case 3387378: // note
1227          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1228          return value;
1229        default: return super.setProperty(hash, name, value);
1230        }
1231
1232      }
1233
1234      @Override
1235      public Base setProperty(String name, Base value) throws FHIRException {
1236        if (name.equals("code")) {
1237          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1238        } else if (name.equals("outcome")) {
1239          this.outcome = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1240        } else if (name.equals("contributedToDeath")) {
1241          this.contributedToDeath = TypeConvertor.castToBoolean(value); // BooleanType
1242        } else if (name.equals("performed[x]")) {
1243          this.performed = TypeConvertor.castToType(value); // DataType
1244        } else if (name.equals("note")) {
1245          this.getNote().add(TypeConvertor.castToAnnotation(value));
1246        } else
1247          return super.setProperty(name, value);
1248        return value;
1249      }
1250
1251      @Override
1252      public Base makeProperty(int hash, String name) throws FHIRException {
1253        switch (hash) {
1254        case 3059181:  return getCode();
1255        case -1106507950:  return getOutcome();
1256        case -363644638:  return getContributedToDeathElement();
1257        case 1355984064:  return getPerformed();
1258        case 481140672:  return getPerformed();
1259        case 3387378:  return addNote(); 
1260        default: return super.makeProperty(hash, name);
1261        }
1262
1263      }
1264
1265      @Override
1266      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1267        switch (hash) {
1268        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1269        case -1106507950: /*outcome*/ return new String[] {"CodeableConcept"};
1270        case -363644638: /*contributedToDeath*/ return new String[] {"boolean"};
1271        case 481140672: /*performed*/ return new String[] {"Age", "Range", "Period", "string", "dateTime"};
1272        case 3387378: /*note*/ return new String[] {"Annotation"};
1273        default: return super.getTypesForProperty(hash, name);
1274        }
1275
1276      }
1277
1278      @Override
1279      public Base addChild(String name) throws FHIRException {
1280        if (name.equals("code")) {
1281          this.code = new CodeableConcept();
1282          return this.code;
1283        }
1284        else if (name.equals("outcome")) {
1285          this.outcome = new CodeableConcept();
1286          return this.outcome;
1287        }
1288        else if (name.equals("contributedToDeath")) {
1289          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.procedure.contributedToDeath");
1290        }
1291        else if (name.equals("performedAge")) {
1292          this.performed = new Age();
1293          return this.performed;
1294        }
1295        else if (name.equals("performedRange")) {
1296          this.performed = new Range();
1297          return this.performed;
1298        }
1299        else if (name.equals("performedPeriod")) {
1300          this.performed = new Period();
1301          return this.performed;
1302        }
1303        else if (name.equals("performedString")) {
1304          this.performed = new StringType();
1305          return this.performed;
1306        }
1307        else if (name.equals("performedDateTime")) {
1308          this.performed = new DateTimeType();
1309          return this.performed;
1310        }
1311        else if (name.equals("note")) {
1312          return addNote();
1313        }
1314        else
1315          return super.addChild(name);
1316      }
1317
1318      public FamilyMemberHistoryProcedureComponent copy() {
1319        FamilyMemberHistoryProcedureComponent dst = new FamilyMemberHistoryProcedureComponent();
1320        copyValues(dst);
1321        return dst;
1322      }
1323
1324      public void copyValues(FamilyMemberHistoryProcedureComponent dst) {
1325        super.copyValues(dst);
1326        dst.code = code == null ? null : code.copy();
1327        dst.outcome = outcome == null ? null : outcome.copy();
1328        dst.contributedToDeath = contributedToDeath == null ? null : contributedToDeath.copy();
1329        dst.performed = performed == null ? null : performed.copy();
1330        if (note != null) {
1331          dst.note = new ArrayList<Annotation>();
1332          for (Annotation i : note)
1333            dst.note.add(i.copy());
1334        };
1335      }
1336
1337      @Override
1338      public boolean equalsDeep(Base other_) {
1339        if (!super.equalsDeep(other_))
1340          return false;
1341        if (!(other_ instanceof FamilyMemberHistoryProcedureComponent))
1342          return false;
1343        FamilyMemberHistoryProcedureComponent o = (FamilyMemberHistoryProcedureComponent) other_;
1344        return compareDeep(code, o.code, true) && compareDeep(outcome, o.outcome, true) && compareDeep(contributedToDeath, o.contributedToDeath, true)
1345           && compareDeep(performed, o.performed, true) && compareDeep(note, o.note, true);
1346      }
1347
1348      @Override
1349      public boolean equalsShallow(Base other_) {
1350        if (!super.equalsShallow(other_))
1351          return false;
1352        if (!(other_ instanceof FamilyMemberHistoryProcedureComponent))
1353          return false;
1354        FamilyMemberHistoryProcedureComponent o = (FamilyMemberHistoryProcedureComponent) other_;
1355        return compareValues(contributedToDeath, o.contributedToDeath, true);
1356      }
1357
1358      public boolean isEmpty() {
1359        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, outcome, contributedToDeath
1360          , performed, note);
1361      }
1362
1363  public String fhirType() {
1364    return "FamilyMemberHistory.procedure";
1365
1366  }
1367
1368  }
1369
1370    /**
1371     * Business identifiers assigned to this family member history by the performer or other systems which remain constant as the resource is updated and propagates from server to server.
1372     */
1373    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1374    @Description(shortDefinition="External Id(s) for this record", formalDefinition="Business identifiers assigned to this family member history by the performer or other systems which remain constant as the resource is updated and propagates from server to server." )
1375    protected List<Identifier> identifier;
1376
1377    /**
1378     * The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.
1379     */
1380    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1381    @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory." )
1382    protected List<CanonicalType> instantiatesCanonical;
1383
1384    /**
1385     * The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.
1386     */
1387    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1388    @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory." )
1389    protected List<UriType> instantiatesUri;
1390
1391    /**
1392     * A code specifying the status of the record of the family history of a specific family member.
1393     */
1394    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=true)
1395    @Description(shortDefinition="partial | completed | entered-in-error | health-unknown", formalDefinition="A code specifying the status of the record of the family history of a specific family member." )
1396    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/history-status")
1397    protected Enumeration<FamilyHistoryStatus> status;
1398
1399    /**
1400     * Describes why the family member's history is not available.
1401     */
1402    @Child(name = "dataAbsentReason", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
1403    @Description(shortDefinition="subject-unknown | withheld | unable-to-obtain | deferred", formalDefinition="Describes why the family member's history is not available." )
1404    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/history-absent-reason")
1405    protected CodeableConcept dataAbsentReason;
1406
1407    /**
1408     * The person who this history concerns.
1409     */
1410    @Child(name = "patient", type = {Patient.class}, order=5, min=1, max=1, modifier=false, summary=true)
1411    @Description(shortDefinition="Patient history is about", formalDefinition="The person who this history concerns." )
1412    protected Reference patient;
1413
1414    /**
1415     * The date (and possibly time) when the family member history was recorded or last updated.
1416     */
1417    @Child(name = "date", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
1418    @Description(shortDefinition="When history was recorded or last updated", formalDefinition="The date (and possibly time) when the family member history was recorded or last updated." )
1419    protected DateTimeType date;
1420
1421    /**
1422     * Indicates who or what participated in the activities related to the family member history and how they were involved.
1423     */
1424    @Child(name = "participant", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1425    @Description(shortDefinition="Who or what participated in the activities related to the family member history and how they were involved", formalDefinition="Indicates who or what participated in the activities related to the family member history and how they were involved." )
1426    protected List<FamilyMemberHistoryParticipantComponent> participant;
1427
1428    /**
1429     * This will either be a name or a description; e.g. "Aunt Susan", "my cousin with the red hair".
1430     */
1431    @Child(name = "name", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
1432    @Description(shortDefinition="The family member described", formalDefinition="This will either be a name or a description; e.g. \"Aunt Susan\", \"my cousin with the red hair\"." )
1433    protected StringType name;
1434
1435    /**
1436     * The type of relationship this person has to the patient (father, mother, brother etc.).
1437     */
1438    @Child(name = "relationship", type = {CodeableConcept.class}, order=9, min=1, max=1, modifier=false, summary=true)
1439    @Description(shortDefinition="Relationship to the subject", formalDefinition="The type of relationship this person has to the patient (father, mother, brother etc.)." )
1440    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-FamilyMember")
1441    protected CodeableConcept relationship;
1442
1443    /**
1444     * The birth sex of the family member.
1445     */
1446    @Child(name = "sex", type = {CodeableConcept.class}, order=10, min=0, max=1, modifier=false, summary=true)
1447    @Description(shortDefinition="male | female | other | unknown", formalDefinition="The birth sex of the family member." )
1448    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administrative-gender")
1449    protected CodeableConcept sex;
1450
1451    /**
1452     * The actual or approximate date of birth of the relative.
1453     */
1454    @Child(name = "born", type = {Period.class, DateType.class, StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
1455    @Description(shortDefinition="(approximate) date of birth", formalDefinition="The actual or approximate date of birth of the relative." )
1456    protected DataType born;
1457
1458    /**
1459     * The age of the relative at the time the family member history is recorded.
1460     */
1461    @Child(name = "age", type = {Age.class, Range.class, StringType.class}, order=12, min=0, max=1, modifier=false, summary=true)
1462    @Description(shortDefinition="(approximate) age", formalDefinition="The age of the relative at the time the family member history is recorded." )
1463    protected DataType age;
1464
1465    /**
1466     * If true, indicates that the age value specified is an estimated value.
1467     */
1468    @Child(name = "estimatedAge", type = {BooleanType.class}, order=13, min=0, max=1, modifier=false, summary=true)
1469    @Description(shortDefinition="Age is estimated?", formalDefinition="If true, indicates that the age value specified is an estimated value." )
1470    protected BooleanType estimatedAge;
1471
1472    /**
1473     * Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.
1474     */
1475    @Child(name = "deceased", type = {BooleanType.class, Age.class, Range.class, DateType.class, StringType.class}, order=14, min=0, max=1, modifier=false, summary=true)
1476    @Description(shortDefinition="Dead? How old/when?", formalDefinition="Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record." )
1477    protected DataType deceased;
1478
1479    /**
1480     * Describes why the family member history occurred in coded or textual form, or Indicates a Condition, Observation, AllergyIntolerance, or QuestionnaireResponse that justifies this family member history event.
1481     */
1482    @Child(name = "reason", type = {CodeableReference.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1483    @Description(shortDefinition="Why was family member history performed?", formalDefinition="Describes why the family member history occurred in coded or textual form, or Indicates a Condition, Observation, AllergyIntolerance, or QuestionnaireResponse that justifies this family member history event." )
1484    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings")
1485    protected List<CodeableReference> reason;
1486
1487    /**
1488     * This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible.
1489     */
1490    @Child(name = "note", type = {Annotation.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1491    @Description(shortDefinition="General note about related person", formalDefinition="This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible." )
1492    protected List<Annotation> note;
1493
1494    /**
1495     * The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition.
1496     */
1497    @Child(name = "condition", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1498    @Description(shortDefinition="Condition that the related person had", formalDefinition="The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition." )
1499    protected List<FamilyMemberHistoryConditionComponent> condition;
1500
1501    /**
1502     * The significant Procedures (or procedure) that the family member had. This is a repeating section to allow a system to represent more than one procedure per resource, though there is nothing stopping multiple resources - one per procedure.
1503     */
1504    @Child(name = "procedure", type = {}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1505    @Description(shortDefinition="Procedures that the related person had", formalDefinition="The significant Procedures (or procedure) that the family member had. This is a repeating section to allow a system to represent more than one procedure per resource, though there is nothing stopping multiple resources - one per procedure." )
1506    protected List<FamilyMemberHistoryProcedureComponent> procedure;
1507
1508    private static final long serialVersionUID = -1025621277L;
1509
1510  /**
1511   * Constructor
1512   */
1513    public FamilyMemberHistory() {
1514      super();
1515    }
1516
1517  /**
1518   * Constructor
1519   */
1520    public FamilyMemberHistory(FamilyHistoryStatus status, Reference patient, CodeableConcept relationship) {
1521      super();
1522      this.setStatus(status);
1523      this.setPatient(patient);
1524      this.setRelationship(relationship);
1525    }
1526
1527    /**
1528     * @return {@link #identifier} (Business identifiers assigned to this family member history by the performer or other systems which remain constant as the resource is updated and propagates from server to server.)
1529     */
1530    public List<Identifier> getIdentifier() { 
1531      if (this.identifier == null)
1532        this.identifier = new ArrayList<Identifier>();
1533      return this.identifier;
1534    }
1535
1536    /**
1537     * @return Returns a reference to <code>this</code> for easy method chaining
1538     */
1539    public FamilyMemberHistory setIdentifier(List<Identifier> theIdentifier) { 
1540      this.identifier = theIdentifier;
1541      return this;
1542    }
1543
1544    public boolean hasIdentifier() { 
1545      if (this.identifier == null)
1546        return false;
1547      for (Identifier item : this.identifier)
1548        if (!item.isEmpty())
1549          return true;
1550      return false;
1551    }
1552
1553    public Identifier addIdentifier() { //3
1554      Identifier t = new Identifier();
1555      if (this.identifier == null)
1556        this.identifier = new ArrayList<Identifier>();
1557      this.identifier.add(t);
1558      return t;
1559    }
1560
1561    public FamilyMemberHistory addIdentifier(Identifier t) { //3
1562      if (t == null)
1563        return this;
1564      if (this.identifier == null)
1565        this.identifier = new ArrayList<Identifier>();
1566      this.identifier.add(t);
1567      return this;
1568    }
1569
1570    /**
1571     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1572     */
1573    public Identifier getIdentifierFirstRep() { 
1574      if (getIdentifier().isEmpty()) {
1575        addIdentifier();
1576      }
1577      return getIdentifier().get(0);
1578    }
1579
1580    /**
1581     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1582     */
1583    public List<CanonicalType> getInstantiatesCanonical() { 
1584      if (this.instantiatesCanonical == null)
1585        this.instantiatesCanonical = new ArrayList<CanonicalType>();
1586      return this.instantiatesCanonical;
1587    }
1588
1589    /**
1590     * @return Returns a reference to <code>this</code> for easy method chaining
1591     */
1592    public FamilyMemberHistory setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
1593      this.instantiatesCanonical = theInstantiatesCanonical;
1594      return this;
1595    }
1596
1597    public boolean hasInstantiatesCanonical() { 
1598      if (this.instantiatesCanonical == null)
1599        return false;
1600      for (CanonicalType item : this.instantiatesCanonical)
1601        if (!item.isEmpty())
1602          return true;
1603      return false;
1604    }
1605
1606    /**
1607     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1608     */
1609    public CanonicalType addInstantiatesCanonicalElement() {//2 
1610      CanonicalType t = new CanonicalType();
1611      if (this.instantiatesCanonical == null)
1612        this.instantiatesCanonical = new ArrayList<CanonicalType>();
1613      this.instantiatesCanonical.add(t);
1614      return t;
1615    }
1616
1617    /**
1618     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1619     */
1620    public FamilyMemberHistory addInstantiatesCanonical(String value) { //1
1621      CanonicalType t = new CanonicalType();
1622      t.setValue(value);
1623      if (this.instantiatesCanonical == null)
1624        this.instantiatesCanonical = new ArrayList<CanonicalType>();
1625      this.instantiatesCanonical.add(t);
1626      return this;
1627    }
1628
1629    /**
1630     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1631     */
1632    public boolean hasInstantiatesCanonical(String value) { 
1633      if (this.instantiatesCanonical == null)
1634        return false;
1635      for (CanonicalType v : this.instantiatesCanonical)
1636        if (v.getValue().equals(value)) // canonical
1637          return true;
1638      return false;
1639    }
1640
1641    /**
1642     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1643     */
1644    public List<UriType> getInstantiatesUri() { 
1645      if (this.instantiatesUri == null)
1646        this.instantiatesUri = new ArrayList<UriType>();
1647      return this.instantiatesUri;
1648    }
1649
1650    /**
1651     * @return Returns a reference to <code>this</code> for easy method chaining
1652     */
1653    public FamilyMemberHistory setInstantiatesUri(List<UriType> theInstantiatesUri) { 
1654      this.instantiatesUri = theInstantiatesUri;
1655      return this;
1656    }
1657
1658    public boolean hasInstantiatesUri() { 
1659      if (this.instantiatesUri == null)
1660        return false;
1661      for (UriType item : this.instantiatesUri)
1662        if (!item.isEmpty())
1663          return true;
1664      return false;
1665    }
1666
1667    /**
1668     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1669     */
1670    public UriType addInstantiatesUriElement() {//2 
1671      UriType t = new UriType();
1672      if (this.instantiatesUri == null)
1673        this.instantiatesUri = new ArrayList<UriType>();
1674      this.instantiatesUri.add(t);
1675      return t;
1676    }
1677
1678    /**
1679     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1680     */
1681    public FamilyMemberHistory addInstantiatesUri(String value) { //1
1682      UriType t = new UriType();
1683      t.setValue(value);
1684      if (this.instantiatesUri == null)
1685        this.instantiatesUri = new ArrayList<UriType>();
1686      this.instantiatesUri.add(t);
1687      return this;
1688    }
1689
1690    /**
1691     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.)
1692     */
1693    public boolean hasInstantiatesUri(String value) { 
1694      if (this.instantiatesUri == null)
1695        return false;
1696      for (UriType v : this.instantiatesUri)
1697        if (v.getValue().equals(value)) // uri
1698          return true;
1699      return false;
1700    }
1701
1702    /**
1703     * @return {@link #status} (A code specifying the status of the record of the family history of a specific family member.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1704     */
1705    public Enumeration<FamilyHistoryStatus> getStatusElement() { 
1706      if (this.status == null)
1707        if (Configuration.errorOnAutoCreate())
1708          throw new Error("Attempt to auto-create FamilyMemberHistory.status");
1709        else if (Configuration.doAutoCreate())
1710          this.status = new Enumeration<FamilyHistoryStatus>(new FamilyHistoryStatusEnumFactory()); // bb
1711      return this.status;
1712    }
1713
1714    public boolean hasStatusElement() { 
1715      return this.status != null && !this.status.isEmpty();
1716    }
1717
1718    public boolean hasStatus() { 
1719      return this.status != null && !this.status.isEmpty();
1720    }
1721
1722    /**
1723     * @param value {@link #status} (A code specifying the status of the record of the family history of a specific family member.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1724     */
1725    public FamilyMemberHistory setStatusElement(Enumeration<FamilyHistoryStatus> value) { 
1726      this.status = value;
1727      return this;
1728    }
1729
1730    /**
1731     * @return A code specifying the status of the record of the family history of a specific family member.
1732     */
1733    public FamilyHistoryStatus getStatus() { 
1734      return this.status == null ? null : this.status.getValue();
1735    }
1736
1737    /**
1738     * @param value A code specifying the status of the record of the family history of a specific family member.
1739     */
1740    public FamilyMemberHistory setStatus(FamilyHistoryStatus value) { 
1741        if (this.status == null)
1742          this.status = new Enumeration<FamilyHistoryStatus>(new FamilyHistoryStatusEnumFactory());
1743        this.status.setValue(value);
1744      return this;
1745    }
1746
1747    /**
1748     * @return {@link #dataAbsentReason} (Describes why the family member's history is not available.)
1749     */
1750    public CodeableConcept getDataAbsentReason() { 
1751      if (this.dataAbsentReason == null)
1752        if (Configuration.errorOnAutoCreate())
1753          throw new Error("Attempt to auto-create FamilyMemberHistory.dataAbsentReason");
1754        else if (Configuration.doAutoCreate())
1755          this.dataAbsentReason = new CodeableConcept(); // cc
1756      return this.dataAbsentReason;
1757    }
1758
1759    public boolean hasDataAbsentReason() { 
1760      return this.dataAbsentReason != null && !this.dataAbsentReason.isEmpty();
1761    }
1762
1763    /**
1764     * @param value {@link #dataAbsentReason} (Describes why the family member's history is not available.)
1765     */
1766    public FamilyMemberHistory setDataAbsentReason(CodeableConcept value) { 
1767      this.dataAbsentReason = value;
1768      return this;
1769    }
1770
1771    /**
1772     * @return {@link #patient} (The person who this history concerns.)
1773     */
1774    public Reference getPatient() { 
1775      if (this.patient == null)
1776        if (Configuration.errorOnAutoCreate())
1777          throw new Error("Attempt to auto-create FamilyMemberHistory.patient");
1778        else if (Configuration.doAutoCreate())
1779          this.patient = new Reference(); // cc
1780      return this.patient;
1781    }
1782
1783    public boolean hasPatient() { 
1784      return this.patient != null && !this.patient.isEmpty();
1785    }
1786
1787    /**
1788     * @param value {@link #patient} (The person who this history concerns.)
1789     */
1790    public FamilyMemberHistory setPatient(Reference value) { 
1791      this.patient = value;
1792      return this;
1793    }
1794
1795    /**
1796     * @return {@link #date} (The date (and possibly time) when the family member history was recorded or last updated.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1797     */
1798    public DateTimeType getDateElement() { 
1799      if (this.date == null)
1800        if (Configuration.errorOnAutoCreate())
1801          throw new Error("Attempt to auto-create FamilyMemberHistory.date");
1802        else if (Configuration.doAutoCreate())
1803          this.date = new DateTimeType(); // bb
1804      return this.date;
1805    }
1806
1807    public boolean hasDateElement() { 
1808      return this.date != null && !this.date.isEmpty();
1809    }
1810
1811    public boolean hasDate() { 
1812      return this.date != null && !this.date.isEmpty();
1813    }
1814
1815    /**
1816     * @param value {@link #date} (The date (and possibly time) when the family member history was recorded or last updated.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1817     */
1818    public FamilyMemberHistory setDateElement(DateTimeType value) { 
1819      this.date = value;
1820      return this;
1821    }
1822
1823    /**
1824     * @return The date (and possibly time) when the family member history was recorded or last updated.
1825     */
1826    public Date getDate() { 
1827      return this.date == null ? null : this.date.getValue();
1828    }
1829
1830    /**
1831     * @param value The date (and possibly time) when the family member history was recorded or last updated.
1832     */
1833    public FamilyMemberHistory setDate(Date value) { 
1834      if (value == null)
1835        this.date = null;
1836      else {
1837        if (this.date == null)
1838          this.date = new DateTimeType();
1839        this.date.setValue(value);
1840      }
1841      return this;
1842    }
1843
1844    /**
1845     * @return {@link #participant} (Indicates who or what participated in the activities related to the family member history and how they were involved.)
1846     */
1847    public List<FamilyMemberHistoryParticipantComponent> getParticipant() { 
1848      if (this.participant == null)
1849        this.participant = new ArrayList<FamilyMemberHistoryParticipantComponent>();
1850      return this.participant;
1851    }
1852
1853    /**
1854     * @return Returns a reference to <code>this</code> for easy method chaining
1855     */
1856    public FamilyMemberHistory setParticipant(List<FamilyMemberHistoryParticipantComponent> theParticipant) { 
1857      this.participant = theParticipant;
1858      return this;
1859    }
1860
1861    public boolean hasParticipant() { 
1862      if (this.participant == null)
1863        return false;
1864      for (FamilyMemberHistoryParticipantComponent item : this.participant)
1865        if (!item.isEmpty())
1866          return true;
1867      return false;
1868    }
1869
1870    public FamilyMemberHistoryParticipantComponent addParticipant() { //3
1871      FamilyMemberHistoryParticipantComponent t = new FamilyMemberHistoryParticipantComponent();
1872      if (this.participant == null)
1873        this.participant = new ArrayList<FamilyMemberHistoryParticipantComponent>();
1874      this.participant.add(t);
1875      return t;
1876    }
1877
1878    public FamilyMemberHistory addParticipant(FamilyMemberHistoryParticipantComponent t) { //3
1879      if (t == null)
1880        return this;
1881      if (this.participant == null)
1882        this.participant = new ArrayList<FamilyMemberHistoryParticipantComponent>();
1883      this.participant.add(t);
1884      return this;
1885    }
1886
1887    /**
1888     * @return The first repetition of repeating field {@link #participant}, creating it if it does not already exist {3}
1889     */
1890    public FamilyMemberHistoryParticipantComponent getParticipantFirstRep() { 
1891      if (getParticipant().isEmpty()) {
1892        addParticipant();
1893      }
1894      return getParticipant().get(0);
1895    }
1896
1897    /**
1898     * @return {@link #name} (This will either be a name or a description; e.g. "Aunt Susan", "my cousin with the red hair".). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1899     */
1900    public StringType getNameElement() { 
1901      if (this.name == null)
1902        if (Configuration.errorOnAutoCreate())
1903          throw new Error("Attempt to auto-create FamilyMemberHistory.name");
1904        else if (Configuration.doAutoCreate())
1905          this.name = new StringType(); // bb
1906      return this.name;
1907    }
1908
1909    public boolean hasNameElement() { 
1910      return this.name != null && !this.name.isEmpty();
1911    }
1912
1913    public boolean hasName() { 
1914      return this.name != null && !this.name.isEmpty();
1915    }
1916
1917    /**
1918     * @param value {@link #name} (This will either be a name or a description; e.g. "Aunt Susan", "my cousin with the red hair".). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1919     */
1920    public FamilyMemberHistory setNameElement(StringType value) { 
1921      this.name = value;
1922      return this;
1923    }
1924
1925    /**
1926     * @return This will either be a name or a description; e.g. "Aunt Susan", "my cousin with the red hair".
1927     */
1928    public String getName() { 
1929      return this.name == null ? null : this.name.getValue();
1930    }
1931
1932    /**
1933     * @param value This will either be a name or a description; e.g. "Aunt Susan", "my cousin with the red hair".
1934     */
1935    public FamilyMemberHistory setName(String value) { 
1936      if (Utilities.noString(value))
1937        this.name = null;
1938      else {
1939        if (this.name == null)
1940          this.name = new StringType();
1941        this.name.setValue(value);
1942      }
1943      return this;
1944    }
1945
1946    /**
1947     * @return {@link #relationship} (The type of relationship this person has to the patient (father, mother, brother etc.).)
1948     */
1949    public CodeableConcept getRelationship() { 
1950      if (this.relationship == null)
1951        if (Configuration.errorOnAutoCreate())
1952          throw new Error("Attempt to auto-create FamilyMemberHistory.relationship");
1953        else if (Configuration.doAutoCreate())
1954          this.relationship = new CodeableConcept(); // cc
1955      return this.relationship;
1956    }
1957
1958    public boolean hasRelationship() { 
1959      return this.relationship != null && !this.relationship.isEmpty();
1960    }
1961
1962    /**
1963     * @param value {@link #relationship} (The type of relationship this person has to the patient (father, mother, brother etc.).)
1964     */
1965    public FamilyMemberHistory setRelationship(CodeableConcept value) { 
1966      this.relationship = value;
1967      return this;
1968    }
1969
1970    /**
1971     * @return {@link #sex} (The birth sex of the family member.)
1972     */
1973    public CodeableConcept getSex() { 
1974      if (this.sex == null)
1975        if (Configuration.errorOnAutoCreate())
1976          throw new Error("Attempt to auto-create FamilyMemberHistory.sex");
1977        else if (Configuration.doAutoCreate())
1978          this.sex = new CodeableConcept(); // cc
1979      return this.sex;
1980    }
1981
1982    public boolean hasSex() { 
1983      return this.sex != null && !this.sex.isEmpty();
1984    }
1985
1986    /**
1987     * @param value {@link #sex} (The birth sex of the family member.)
1988     */
1989    public FamilyMemberHistory setSex(CodeableConcept value) { 
1990      this.sex = value;
1991      return this;
1992    }
1993
1994    /**
1995     * @return {@link #born} (The actual or approximate date of birth of the relative.)
1996     */
1997    public DataType getBorn() { 
1998      return this.born;
1999    }
2000
2001    /**
2002     * @return {@link #born} (The actual or approximate date of birth of the relative.)
2003     */
2004    public Period getBornPeriod() throws FHIRException { 
2005      if (this.born == null)
2006        this.born = new Period();
2007      if (!(this.born instanceof Period))
2008        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.born.getClass().getName()+" was encountered");
2009      return (Period) this.born;
2010    }
2011
2012    public boolean hasBornPeriod() { 
2013      return this != null && this.born instanceof Period;
2014    }
2015
2016    /**
2017     * @return {@link #born} (The actual or approximate date of birth of the relative.)
2018     */
2019    public DateType getBornDateType() throws FHIRException { 
2020      if (this.born == null)
2021        this.born = new DateType();
2022      if (!(this.born instanceof DateType))
2023        throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.born.getClass().getName()+" was encountered");
2024      return (DateType) this.born;
2025    }
2026
2027    public boolean hasBornDateType() { 
2028      return this != null && this.born instanceof DateType;
2029    }
2030
2031    /**
2032     * @return {@link #born} (The actual or approximate date of birth of the relative.)
2033     */
2034    public StringType getBornStringType() throws FHIRException { 
2035      if (this.born == null)
2036        this.born = new StringType();
2037      if (!(this.born instanceof StringType))
2038        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.born.getClass().getName()+" was encountered");
2039      return (StringType) this.born;
2040    }
2041
2042    public boolean hasBornStringType() { 
2043      return this != null && this.born instanceof StringType;
2044    }
2045
2046    public boolean hasBorn() { 
2047      return this.born != null && !this.born.isEmpty();
2048    }
2049
2050    /**
2051     * @param value {@link #born} (The actual or approximate date of birth of the relative.)
2052     */
2053    public FamilyMemberHistory setBorn(DataType value) { 
2054      if (value != null && !(value instanceof Period || value instanceof DateType || value instanceof StringType))
2055        throw new FHIRException("Not the right type for FamilyMemberHistory.born[x]: "+value.fhirType());
2056      this.born = value;
2057      return this;
2058    }
2059
2060    /**
2061     * @return {@link #age} (The age of the relative at the time the family member history is recorded.)
2062     */
2063    public DataType getAge() { 
2064      return this.age;
2065    }
2066
2067    /**
2068     * @return {@link #age} (The age of the relative at the time the family member history is recorded.)
2069     */
2070    public Age getAgeAge() throws FHIRException { 
2071      if (this.age == null)
2072        this.age = new Age();
2073      if (!(this.age instanceof Age))
2074        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.age.getClass().getName()+" was encountered");
2075      return (Age) this.age;
2076    }
2077
2078    public boolean hasAgeAge() { 
2079      return this != null && this.age instanceof Age;
2080    }
2081
2082    /**
2083     * @return {@link #age} (The age of the relative at the time the family member history is recorded.)
2084     */
2085    public Range getAgeRange() throws FHIRException { 
2086      if (this.age == null)
2087        this.age = new Range();
2088      if (!(this.age instanceof Range))
2089        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.age.getClass().getName()+" was encountered");
2090      return (Range) this.age;
2091    }
2092
2093    public boolean hasAgeRange() { 
2094      return this != null && this.age instanceof Range;
2095    }
2096
2097    /**
2098     * @return {@link #age} (The age of the relative at the time the family member history is recorded.)
2099     */
2100    public StringType getAgeStringType() throws FHIRException { 
2101      if (this.age == null)
2102        this.age = new StringType();
2103      if (!(this.age instanceof StringType))
2104        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.age.getClass().getName()+" was encountered");
2105      return (StringType) this.age;
2106    }
2107
2108    public boolean hasAgeStringType() { 
2109      return this != null && this.age instanceof StringType;
2110    }
2111
2112    public boolean hasAge() { 
2113      return this.age != null && !this.age.isEmpty();
2114    }
2115
2116    /**
2117     * @param value {@link #age} (The age of the relative at the time the family member history is recorded.)
2118     */
2119    public FamilyMemberHistory setAge(DataType value) { 
2120      if (value != null && !(value instanceof Age || value instanceof Range || value instanceof StringType))
2121        throw new FHIRException("Not the right type for FamilyMemberHistory.age[x]: "+value.fhirType());
2122      this.age = value;
2123      return this;
2124    }
2125
2126    /**
2127     * @return {@link #estimatedAge} (If true, indicates that the age value specified is an estimated value.). This is the underlying object with id, value and extensions. The accessor "getEstimatedAge" gives direct access to the value
2128     */
2129    public BooleanType getEstimatedAgeElement() { 
2130      if (this.estimatedAge == null)
2131        if (Configuration.errorOnAutoCreate())
2132          throw new Error("Attempt to auto-create FamilyMemberHistory.estimatedAge");
2133        else if (Configuration.doAutoCreate())
2134          this.estimatedAge = new BooleanType(); // bb
2135      return this.estimatedAge;
2136    }
2137
2138    public boolean hasEstimatedAgeElement() { 
2139      return this.estimatedAge != null && !this.estimatedAge.isEmpty();
2140    }
2141
2142    public boolean hasEstimatedAge() { 
2143      return this.estimatedAge != null && !this.estimatedAge.isEmpty();
2144    }
2145
2146    /**
2147     * @param value {@link #estimatedAge} (If true, indicates that the age value specified is an estimated value.). This is the underlying object with id, value and extensions. The accessor "getEstimatedAge" gives direct access to the value
2148     */
2149    public FamilyMemberHistory setEstimatedAgeElement(BooleanType value) { 
2150      this.estimatedAge = value;
2151      return this;
2152    }
2153
2154    /**
2155     * @return If true, indicates that the age value specified is an estimated value.
2156     */
2157    public boolean getEstimatedAge() { 
2158      return this.estimatedAge == null || this.estimatedAge.isEmpty() ? false : this.estimatedAge.getValue();
2159    }
2160
2161    /**
2162     * @param value If true, indicates that the age value specified is an estimated value.
2163     */
2164    public FamilyMemberHistory setEstimatedAge(boolean value) { 
2165        if (this.estimatedAge == null)
2166          this.estimatedAge = new BooleanType();
2167        this.estimatedAge.setValue(value);
2168      return this;
2169    }
2170
2171    /**
2172     * @return {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2173     */
2174    public DataType getDeceased() { 
2175      return this.deceased;
2176    }
2177
2178    /**
2179     * @return {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2180     */
2181    public BooleanType getDeceasedBooleanType() throws FHIRException { 
2182      if (this.deceased == null)
2183        this.deceased = new BooleanType();
2184      if (!(this.deceased instanceof BooleanType))
2185        throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.deceased.getClass().getName()+" was encountered");
2186      return (BooleanType) this.deceased;
2187    }
2188
2189    public boolean hasDeceasedBooleanType() { 
2190      return this != null && this.deceased instanceof BooleanType;
2191    }
2192
2193    /**
2194     * @return {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2195     */
2196    public Age getDeceasedAge() throws FHIRException { 
2197      if (this.deceased == null)
2198        this.deceased = new Age();
2199      if (!(this.deceased instanceof Age))
2200        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.deceased.getClass().getName()+" was encountered");
2201      return (Age) this.deceased;
2202    }
2203
2204    public boolean hasDeceasedAge() { 
2205      return this != null && this.deceased instanceof Age;
2206    }
2207
2208    /**
2209     * @return {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2210     */
2211    public Range getDeceasedRange() throws FHIRException { 
2212      if (this.deceased == null)
2213        this.deceased = new Range();
2214      if (!(this.deceased instanceof Range))
2215        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.deceased.getClass().getName()+" was encountered");
2216      return (Range) this.deceased;
2217    }
2218
2219    public boolean hasDeceasedRange() { 
2220      return this != null && this.deceased instanceof Range;
2221    }
2222
2223    /**
2224     * @return {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2225     */
2226    public DateType getDeceasedDateType() throws FHIRException { 
2227      if (this.deceased == null)
2228        this.deceased = new DateType();
2229      if (!(this.deceased instanceof DateType))
2230        throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.deceased.getClass().getName()+" was encountered");
2231      return (DateType) this.deceased;
2232    }
2233
2234    public boolean hasDeceasedDateType() { 
2235      return this != null && this.deceased instanceof DateType;
2236    }
2237
2238    /**
2239     * @return {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2240     */
2241    public StringType getDeceasedStringType() throws FHIRException { 
2242      if (this.deceased == null)
2243        this.deceased = new StringType();
2244      if (!(this.deceased instanceof StringType))
2245        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.deceased.getClass().getName()+" was encountered");
2246      return (StringType) this.deceased;
2247    }
2248
2249    public boolean hasDeceasedStringType() { 
2250      return this != null && this.deceased instanceof StringType;
2251    }
2252
2253    public boolean hasDeceased() { 
2254      return this.deceased != null && !this.deceased.isEmpty();
2255    }
2256
2257    /**
2258     * @param value {@link #deceased} (Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.)
2259     */
2260    public FamilyMemberHistory setDeceased(DataType value) { 
2261      if (value != null && !(value instanceof BooleanType || value instanceof Age || value instanceof Range || value instanceof DateType || value instanceof StringType))
2262        throw new FHIRException("Not the right type for FamilyMemberHistory.deceased[x]: "+value.fhirType());
2263      this.deceased = value;
2264      return this;
2265    }
2266
2267    /**
2268     * @return {@link #reason} (Describes why the family member history occurred in coded or textual form, or Indicates a Condition, Observation, AllergyIntolerance, or QuestionnaireResponse that justifies this family member history event.)
2269     */
2270    public List<CodeableReference> getReason() { 
2271      if (this.reason == null)
2272        this.reason = new ArrayList<CodeableReference>();
2273      return this.reason;
2274    }
2275
2276    /**
2277     * @return Returns a reference to <code>this</code> for easy method chaining
2278     */
2279    public FamilyMemberHistory setReason(List<CodeableReference> theReason) { 
2280      this.reason = theReason;
2281      return this;
2282    }
2283
2284    public boolean hasReason() { 
2285      if (this.reason == null)
2286        return false;
2287      for (CodeableReference item : this.reason)
2288        if (!item.isEmpty())
2289          return true;
2290      return false;
2291    }
2292
2293    public CodeableReference addReason() { //3
2294      CodeableReference t = new CodeableReference();
2295      if (this.reason == null)
2296        this.reason = new ArrayList<CodeableReference>();
2297      this.reason.add(t);
2298      return t;
2299    }
2300
2301    public FamilyMemberHistory addReason(CodeableReference t) { //3
2302      if (t == null)
2303        return this;
2304      if (this.reason == null)
2305        this.reason = new ArrayList<CodeableReference>();
2306      this.reason.add(t);
2307      return this;
2308    }
2309
2310    /**
2311     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
2312     */
2313    public CodeableReference getReasonFirstRep() { 
2314      if (getReason().isEmpty()) {
2315        addReason();
2316      }
2317      return getReason().get(0);
2318    }
2319
2320    /**
2321     * @return {@link #note} (This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible.)
2322     */
2323    public List<Annotation> getNote() { 
2324      if (this.note == null)
2325        this.note = new ArrayList<Annotation>();
2326      return this.note;
2327    }
2328
2329    /**
2330     * @return Returns a reference to <code>this</code> for easy method chaining
2331     */
2332    public FamilyMemberHistory setNote(List<Annotation> theNote) { 
2333      this.note = theNote;
2334      return this;
2335    }
2336
2337    public boolean hasNote() { 
2338      if (this.note == null)
2339        return false;
2340      for (Annotation item : this.note)
2341        if (!item.isEmpty())
2342          return true;
2343      return false;
2344    }
2345
2346    public Annotation addNote() { //3
2347      Annotation t = new Annotation();
2348      if (this.note == null)
2349        this.note = new ArrayList<Annotation>();
2350      this.note.add(t);
2351      return t;
2352    }
2353
2354    public FamilyMemberHistory addNote(Annotation t) { //3
2355      if (t == null)
2356        return this;
2357      if (this.note == null)
2358        this.note = new ArrayList<Annotation>();
2359      this.note.add(t);
2360      return this;
2361    }
2362
2363    /**
2364     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2365     */
2366    public Annotation getNoteFirstRep() { 
2367      if (getNote().isEmpty()) {
2368        addNote();
2369      }
2370      return getNote().get(0);
2371    }
2372
2373    /**
2374     * @return {@link #condition} (The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition.)
2375     */
2376    public List<FamilyMemberHistoryConditionComponent> getCondition() { 
2377      if (this.condition == null)
2378        this.condition = new ArrayList<FamilyMemberHistoryConditionComponent>();
2379      return this.condition;
2380    }
2381
2382    /**
2383     * @return Returns a reference to <code>this</code> for easy method chaining
2384     */
2385    public FamilyMemberHistory setCondition(List<FamilyMemberHistoryConditionComponent> theCondition) { 
2386      this.condition = theCondition;
2387      return this;
2388    }
2389
2390    public boolean hasCondition() { 
2391      if (this.condition == null)
2392        return false;
2393      for (FamilyMemberHistoryConditionComponent item : this.condition)
2394        if (!item.isEmpty())
2395          return true;
2396      return false;
2397    }
2398
2399    public FamilyMemberHistoryConditionComponent addCondition() { //3
2400      FamilyMemberHistoryConditionComponent t = new FamilyMemberHistoryConditionComponent();
2401      if (this.condition == null)
2402        this.condition = new ArrayList<FamilyMemberHistoryConditionComponent>();
2403      this.condition.add(t);
2404      return t;
2405    }
2406
2407    public FamilyMemberHistory addCondition(FamilyMemberHistoryConditionComponent t) { //3
2408      if (t == null)
2409        return this;
2410      if (this.condition == null)
2411        this.condition = new ArrayList<FamilyMemberHistoryConditionComponent>();
2412      this.condition.add(t);
2413      return this;
2414    }
2415
2416    /**
2417     * @return The first repetition of repeating field {@link #condition}, creating it if it does not already exist {3}
2418     */
2419    public FamilyMemberHistoryConditionComponent getConditionFirstRep() { 
2420      if (getCondition().isEmpty()) {
2421        addCondition();
2422      }
2423      return getCondition().get(0);
2424    }
2425
2426    /**
2427     * @return {@link #procedure} (The significant Procedures (or procedure) that the family member had. This is a repeating section to allow a system to represent more than one procedure per resource, though there is nothing stopping multiple resources - one per procedure.)
2428     */
2429    public List<FamilyMemberHistoryProcedureComponent> getProcedure() { 
2430      if (this.procedure == null)
2431        this.procedure = new ArrayList<FamilyMemberHistoryProcedureComponent>();
2432      return this.procedure;
2433    }
2434
2435    /**
2436     * @return Returns a reference to <code>this</code> for easy method chaining
2437     */
2438    public FamilyMemberHistory setProcedure(List<FamilyMemberHistoryProcedureComponent> theProcedure) { 
2439      this.procedure = theProcedure;
2440      return this;
2441    }
2442
2443    public boolean hasProcedure() { 
2444      if (this.procedure == null)
2445        return false;
2446      for (FamilyMemberHistoryProcedureComponent item : this.procedure)
2447        if (!item.isEmpty())
2448          return true;
2449      return false;
2450    }
2451
2452    public FamilyMemberHistoryProcedureComponent addProcedure() { //3
2453      FamilyMemberHistoryProcedureComponent t = new FamilyMemberHistoryProcedureComponent();
2454      if (this.procedure == null)
2455        this.procedure = new ArrayList<FamilyMemberHistoryProcedureComponent>();
2456      this.procedure.add(t);
2457      return t;
2458    }
2459
2460    public FamilyMemberHistory addProcedure(FamilyMemberHistoryProcedureComponent t) { //3
2461      if (t == null)
2462        return this;
2463      if (this.procedure == null)
2464        this.procedure = new ArrayList<FamilyMemberHistoryProcedureComponent>();
2465      this.procedure.add(t);
2466      return this;
2467    }
2468
2469    /**
2470     * @return The first repetition of repeating field {@link #procedure}, creating it if it does not already exist {3}
2471     */
2472    public FamilyMemberHistoryProcedureComponent getProcedureFirstRep() { 
2473      if (getProcedure().isEmpty()) {
2474        addProcedure();
2475      }
2476      return getProcedure().get(0);
2477    }
2478
2479      protected void listChildren(List<Property> children) {
2480        super.listChildren(children);
2481        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this family member history by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
2482        children.add(new Property("instantiatesCanonical", "canonical(PlanDefinition|Questionnaire|ActivityDefinition|Measure|OperationDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
2483        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
2484        children.add(new Property("status", "code", "A code specifying the status of the record of the family history of a specific family member.", 0, 1, status));
2485        children.add(new Property("dataAbsentReason", "CodeableConcept", "Describes why the family member's history is not available.", 0, 1, dataAbsentReason));
2486        children.add(new Property("patient", "Reference(Patient)", "The person who this history concerns.", 0, 1, patient));
2487        children.add(new Property("date", "dateTime", "The date (and possibly time) when the family member history was recorded or last updated.", 0, 1, date));
2488        children.add(new Property("participant", "", "Indicates who or what participated in the activities related to the family member history and how they were involved.", 0, java.lang.Integer.MAX_VALUE, participant));
2489        children.add(new Property("name", "string", "This will either be a name or a description; e.g. \"Aunt Susan\", \"my cousin with the red hair\".", 0, 1, name));
2490        children.add(new Property("relationship", "CodeableConcept", "The type of relationship this person has to the patient (father, mother, brother etc.).", 0, 1, relationship));
2491        children.add(new Property("sex", "CodeableConcept", "The birth sex of the family member.", 0, 1, sex));
2492        children.add(new Property("born[x]", "Period|date|string", "The actual or approximate date of birth of the relative.", 0, 1, born));
2493        children.add(new Property("age[x]", "Age|Range|string", "The age of the relative at the time the family member history is recorded.", 0, 1, age));
2494        children.add(new Property("estimatedAge", "boolean", "If true, indicates that the age value specified is an estimated value.", 0, 1, estimatedAge));
2495        children.add(new Property("deceased[x]", "boolean|Age|Range|date|string", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased));
2496        children.add(new Property("reason", "CodeableReference(Condition|Observation|AllergyIntolerance|QuestionnaireResponse|DiagnosticReport|DocumentReference)", "Describes why the family member history occurred in coded or textual form, or Indicates a Condition, Observation, AllergyIntolerance, or QuestionnaireResponse that justifies this family member history event.", 0, java.lang.Integer.MAX_VALUE, reason));
2497        children.add(new Property("note", "Annotation", "This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible.", 0, java.lang.Integer.MAX_VALUE, note));
2498        children.add(new Property("condition", "", "The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition.", 0, java.lang.Integer.MAX_VALUE, condition));
2499        children.add(new Property("procedure", "", "The significant Procedures (or procedure) that the family member had. This is a repeating section to allow a system to represent more than one procedure per resource, though there is nothing stopping multiple resources - one per procedure.", 0, java.lang.Integer.MAX_VALUE, procedure));
2500      }
2501
2502      @Override
2503      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2504        switch (_hash) {
2505        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this family member history by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
2506        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(PlanDefinition|Questionnaire|ActivityDefinition|Measure|OperationDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
2507        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
2508        case -892481550: /*status*/  return new Property("status", "code", "A code specifying the status of the record of the family history of a specific family member.", 0, 1, status);
2509        case 1034315687: /*dataAbsentReason*/  return new Property("dataAbsentReason", "CodeableConcept", "Describes why the family member's history is not available.", 0, 1, dataAbsentReason);
2510        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "The person who this history concerns.", 0, 1, patient);
2511        case 3076014: /*date*/  return new Property("date", "dateTime", "The date (and possibly time) when the family member history was recorded or last updated.", 0, 1, date);
2512        case 767422259: /*participant*/  return new Property("participant", "", "Indicates who or what participated in the activities related to the family member history and how they were involved.", 0, java.lang.Integer.MAX_VALUE, participant);
2513        case 3373707: /*name*/  return new Property("name", "string", "This will either be a name or a description; e.g. \"Aunt Susan\", \"my cousin with the red hair\".", 0, 1, name);
2514        case -261851592: /*relationship*/  return new Property("relationship", "CodeableConcept", "The type of relationship this person has to the patient (father, mother, brother etc.).", 0, 1, relationship);
2515        case 113766: /*sex*/  return new Property("sex", "CodeableConcept", "The birth sex of the family member.", 0, 1, sex);
2516        case 67532951: /*born[x]*/  return new Property("born[x]", "Period|date|string", "The actual or approximate date of birth of the relative.", 0, 1, born);
2517        case 3029833: /*born*/  return new Property("born[x]", "Period|date|string", "The actual or approximate date of birth of the relative.", 0, 1, born);
2518        case 1497711210: /*bornPeriod*/  return new Property("born[x]", "Period", "The actual or approximate date of birth of the relative.", 0, 1, born);
2519        case 2092814999: /*bornDate*/  return new Property("born[x]", "date", "The actual or approximate date of birth of the relative.", 0, 1, born);
2520        case 1597451450: /*bornString*/  return new Property("born[x]", "string", "The actual or approximate date of birth of the relative.", 0, 1, born);
2521        case -1419716831: /*age[x]*/  return new Property("age[x]", "Age|Range|string", "The age of the relative at the time the family member history is recorded.", 0, 1, age);
2522        case 96511: /*age*/  return new Property("age[x]", "Age|Range|string", "The age of the relative at the time the family member history is recorded.", 0, 1, age);
2523        case -1419742336: /*ageAge*/  return new Property("age[x]", "Age", "The age of the relative at the time the family member history is recorded.", 0, 1, age);
2524        case 1442748286: /*ageRange*/  return new Property("age[x]", "Range", "The age of the relative at the time the family member history is recorded.", 0, 1, age);
2525        case 1821821424: /*ageString*/  return new Property("age[x]", "string", "The age of the relative at the time the family member history is recorded.", 0, 1, age);
2526        case 2130167587: /*estimatedAge*/  return new Property("estimatedAge", "boolean", "If true, indicates that the age value specified is an estimated value.", 0, 1, estimatedAge);
2527        case -1311442804: /*deceased[x]*/  return new Property("deceased[x]", "boolean|Age|Range|date|string", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2528        case 561497972: /*deceased*/  return new Property("deceased[x]", "boolean|Age|Range|date|string", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2529        case 497463828: /*deceasedBoolean*/  return new Property("deceased[x]", "boolean", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2530        case -1311468309: /*deceasedAge*/  return new Property("deceased[x]", "Age", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2531        case -1880094167: /*deceasedRange*/  return new Property("deceased[x]", "Range", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2532        case -2000727742: /*deceasedDate*/  return new Property("deceased[x]", "date", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2533        case 1892920485: /*deceasedString*/  return new Property("deceased[x]", "string", "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record.", 0, 1, deceased);
2534        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|AllergyIntolerance|QuestionnaireResponse|DiagnosticReport|DocumentReference)", "Describes why the family member history occurred in coded or textual form, or Indicates a Condition, Observation, AllergyIntolerance, or QuestionnaireResponse that justifies this family member history event.", 0, java.lang.Integer.MAX_VALUE, reason);
2535        case 3387378: /*note*/  return new Property("note", "Annotation", "This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible.", 0, java.lang.Integer.MAX_VALUE, note);
2536        case -861311717: /*condition*/  return new Property("condition", "", "The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition.", 0, java.lang.Integer.MAX_VALUE, condition);
2537        case -1095204141: /*procedure*/  return new Property("procedure", "", "The significant Procedures (or procedure) that the family member had. This is a repeating section to allow a system to represent more than one procedure per resource, though there is nothing stopping multiple resources - one per procedure.", 0, java.lang.Integer.MAX_VALUE, procedure);
2538        default: return super.getNamedProperty(_hash, _name, _checkValid);
2539        }
2540
2541      }
2542
2543      @Override
2544      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2545        switch (hash) {
2546        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2547        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
2548        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
2549        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<FamilyHistoryStatus>
2550        case 1034315687: /*dataAbsentReason*/ return this.dataAbsentReason == null ? new Base[0] : new Base[] {this.dataAbsentReason}; // CodeableConcept
2551        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
2552        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2553        case 767422259: /*participant*/ return this.participant == null ? new Base[0] : this.participant.toArray(new Base[this.participant.size()]); // FamilyMemberHistoryParticipantComponent
2554        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2555        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : new Base[] {this.relationship}; // CodeableConcept
2556        case 113766: /*sex*/ return this.sex == null ? new Base[0] : new Base[] {this.sex}; // CodeableConcept
2557        case 3029833: /*born*/ return this.born == null ? new Base[0] : new Base[] {this.born}; // DataType
2558        case 96511: /*age*/ return this.age == null ? new Base[0] : new Base[] {this.age}; // DataType
2559        case 2130167587: /*estimatedAge*/ return this.estimatedAge == null ? new Base[0] : new Base[] {this.estimatedAge}; // BooleanType
2560        case 561497972: /*deceased*/ return this.deceased == null ? new Base[0] : new Base[] {this.deceased}; // DataType
2561        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
2562        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2563        case -861311717: /*condition*/ return this.condition == null ? new Base[0] : this.condition.toArray(new Base[this.condition.size()]); // FamilyMemberHistoryConditionComponent
2564        case -1095204141: /*procedure*/ return this.procedure == null ? new Base[0] : this.procedure.toArray(new Base[this.procedure.size()]); // FamilyMemberHistoryProcedureComponent
2565        default: return super.getProperty(hash, name, checkValid);
2566        }
2567
2568      }
2569
2570      @Override
2571      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2572        switch (hash) {
2573        case -1618432855: // identifier
2574          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2575          return value;
2576        case 8911915: // instantiatesCanonical
2577          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2578          return value;
2579        case -1926393373: // instantiatesUri
2580          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
2581          return value;
2582        case -892481550: // status
2583          value = new FamilyHistoryStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2584          this.status = (Enumeration) value; // Enumeration<FamilyHistoryStatus>
2585          return value;
2586        case 1034315687: // dataAbsentReason
2587          this.dataAbsentReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2588          return value;
2589        case -791418107: // patient
2590          this.patient = TypeConvertor.castToReference(value); // Reference
2591          return value;
2592        case 3076014: // date
2593          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2594          return value;
2595        case 767422259: // participant
2596          this.getParticipant().add((FamilyMemberHistoryParticipantComponent) value); // FamilyMemberHistoryParticipantComponent
2597          return value;
2598        case 3373707: // name
2599          this.name = TypeConvertor.castToString(value); // StringType
2600          return value;
2601        case -261851592: // relationship
2602          this.relationship = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2603          return value;
2604        case 113766: // sex
2605          this.sex = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2606          return value;
2607        case 3029833: // born
2608          this.born = TypeConvertor.castToType(value); // DataType
2609          return value;
2610        case 96511: // age
2611          this.age = TypeConvertor.castToType(value); // DataType
2612          return value;
2613        case 2130167587: // estimatedAge
2614          this.estimatedAge = TypeConvertor.castToBoolean(value); // BooleanType
2615          return value;
2616        case 561497972: // deceased
2617          this.deceased = TypeConvertor.castToType(value); // DataType
2618          return value;
2619        case -934964668: // reason
2620          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2621          return value;
2622        case 3387378: // note
2623          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2624          return value;
2625        case -861311717: // condition
2626          this.getCondition().add((FamilyMemberHistoryConditionComponent) value); // FamilyMemberHistoryConditionComponent
2627          return value;
2628        case -1095204141: // procedure
2629          this.getProcedure().add((FamilyMemberHistoryProcedureComponent) value); // FamilyMemberHistoryProcedureComponent
2630          return value;
2631        default: return super.setProperty(hash, name, value);
2632        }
2633
2634      }
2635
2636      @Override
2637      public Base setProperty(String name, Base value) throws FHIRException {
2638        if (name.equals("identifier")) {
2639          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2640        } else if (name.equals("instantiatesCanonical")) {
2641          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
2642        } else if (name.equals("instantiatesUri")) {
2643          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
2644        } else if (name.equals("status")) {
2645          value = new FamilyHistoryStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2646          this.status = (Enumeration) value; // Enumeration<FamilyHistoryStatus>
2647        } else if (name.equals("dataAbsentReason")) {
2648          this.dataAbsentReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2649        } else if (name.equals("patient")) {
2650          this.patient = TypeConvertor.castToReference(value); // Reference
2651        } else if (name.equals("date")) {
2652          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2653        } else if (name.equals("participant")) {
2654          this.getParticipant().add((FamilyMemberHistoryParticipantComponent) value);
2655        } else if (name.equals("name")) {
2656          this.name = TypeConvertor.castToString(value); // StringType
2657        } else if (name.equals("relationship")) {
2658          this.relationship = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2659        } else if (name.equals("sex")) {
2660          this.sex = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2661        } else if (name.equals("born[x]")) {
2662          this.born = TypeConvertor.castToType(value); // DataType
2663        } else if (name.equals("age[x]")) {
2664          this.age = TypeConvertor.castToType(value); // DataType
2665        } else if (name.equals("estimatedAge")) {
2666          this.estimatedAge = TypeConvertor.castToBoolean(value); // BooleanType
2667        } else if (name.equals("deceased[x]")) {
2668          this.deceased = TypeConvertor.castToType(value); // DataType
2669        } else if (name.equals("reason")) {
2670          this.getReason().add(TypeConvertor.castToCodeableReference(value));
2671        } else if (name.equals("note")) {
2672          this.getNote().add(TypeConvertor.castToAnnotation(value));
2673        } else if (name.equals("condition")) {
2674          this.getCondition().add((FamilyMemberHistoryConditionComponent) value);
2675        } else if (name.equals("procedure")) {
2676          this.getProcedure().add((FamilyMemberHistoryProcedureComponent) value);
2677        } else
2678          return super.setProperty(name, value);
2679        return value;
2680      }
2681
2682      @Override
2683      public Base makeProperty(int hash, String name) throws FHIRException {
2684        switch (hash) {
2685        case -1618432855:  return addIdentifier(); 
2686        case 8911915:  return addInstantiatesCanonicalElement();
2687        case -1926393373:  return addInstantiatesUriElement();
2688        case -892481550:  return getStatusElement();
2689        case 1034315687:  return getDataAbsentReason();
2690        case -791418107:  return getPatient();
2691        case 3076014:  return getDateElement();
2692        case 767422259:  return addParticipant(); 
2693        case 3373707:  return getNameElement();
2694        case -261851592:  return getRelationship();
2695        case 113766:  return getSex();
2696        case 67532951:  return getBorn();
2697        case 3029833:  return getBorn();
2698        case -1419716831:  return getAge();
2699        case 96511:  return getAge();
2700        case 2130167587:  return getEstimatedAgeElement();
2701        case -1311442804:  return getDeceased();
2702        case 561497972:  return getDeceased();
2703        case -934964668:  return addReason(); 
2704        case 3387378:  return addNote(); 
2705        case -861311717:  return addCondition(); 
2706        case -1095204141:  return addProcedure(); 
2707        default: return super.makeProperty(hash, name);
2708        }
2709
2710      }
2711
2712      @Override
2713      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2714        switch (hash) {
2715        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2716        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
2717        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
2718        case -892481550: /*status*/ return new String[] {"code"};
2719        case 1034315687: /*dataAbsentReason*/ return new String[] {"CodeableConcept"};
2720        case -791418107: /*patient*/ return new String[] {"Reference"};
2721        case 3076014: /*date*/ return new String[] {"dateTime"};
2722        case 767422259: /*participant*/ return new String[] {};
2723        case 3373707: /*name*/ return new String[] {"string"};
2724        case -261851592: /*relationship*/ return new String[] {"CodeableConcept"};
2725        case 113766: /*sex*/ return new String[] {"CodeableConcept"};
2726        case 3029833: /*born*/ return new String[] {"Period", "date", "string"};
2727        case 96511: /*age*/ return new String[] {"Age", "Range", "string"};
2728        case 2130167587: /*estimatedAge*/ return new String[] {"boolean"};
2729        case 561497972: /*deceased*/ return new String[] {"boolean", "Age", "Range", "date", "string"};
2730        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
2731        case 3387378: /*note*/ return new String[] {"Annotation"};
2732        case -861311717: /*condition*/ return new String[] {};
2733        case -1095204141: /*procedure*/ return new String[] {};
2734        default: return super.getTypesForProperty(hash, name);
2735        }
2736
2737      }
2738
2739      @Override
2740      public Base addChild(String name) throws FHIRException {
2741        if (name.equals("identifier")) {
2742          return addIdentifier();
2743        }
2744        else if (name.equals("instantiatesCanonical")) {
2745          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.instantiatesCanonical");
2746        }
2747        else if (name.equals("instantiatesUri")) {
2748          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.instantiatesUri");
2749        }
2750        else if (name.equals("status")) {
2751          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.status");
2752        }
2753        else if (name.equals("dataAbsentReason")) {
2754          this.dataAbsentReason = new CodeableConcept();
2755          return this.dataAbsentReason;
2756        }
2757        else if (name.equals("patient")) {
2758          this.patient = new Reference();
2759          return this.patient;
2760        }
2761        else if (name.equals("date")) {
2762          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.date");
2763        }
2764        else if (name.equals("participant")) {
2765          return addParticipant();
2766        }
2767        else if (name.equals("name")) {
2768          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.name");
2769        }
2770        else if (name.equals("relationship")) {
2771          this.relationship = new CodeableConcept();
2772          return this.relationship;
2773        }
2774        else if (name.equals("sex")) {
2775          this.sex = new CodeableConcept();
2776          return this.sex;
2777        }
2778        else if (name.equals("bornPeriod")) {
2779          this.born = new Period();
2780          return this.born;
2781        }
2782        else if (name.equals("bornDate")) {
2783          this.born = new DateType();
2784          return this.born;
2785        }
2786        else if (name.equals("bornString")) {
2787          this.born = new StringType();
2788          return this.born;
2789        }
2790        else if (name.equals("ageAge")) {
2791          this.age = new Age();
2792          return this.age;
2793        }
2794        else if (name.equals("ageRange")) {
2795          this.age = new Range();
2796          return this.age;
2797        }
2798        else if (name.equals("ageString")) {
2799          this.age = new StringType();
2800          return this.age;
2801        }
2802        else if (name.equals("estimatedAge")) {
2803          throw new FHIRException("Cannot call addChild on a singleton property FamilyMemberHistory.estimatedAge");
2804        }
2805        else if (name.equals("deceasedBoolean")) {
2806          this.deceased = new BooleanType();
2807          return this.deceased;
2808        }
2809        else if (name.equals("deceasedAge")) {
2810          this.deceased = new Age();
2811          return this.deceased;
2812        }
2813        else if (name.equals("deceasedRange")) {
2814          this.deceased = new Range();
2815          return this.deceased;
2816        }
2817        else if (name.equals("deceasedDate")) {
2818          this.deceased = new DateType();
2819          return this.deceased;
2820        }
2821        else if (name.equals("deceasedString")) {
2822          this.deceased = new StringType();
2823          return this.deceased;
2824        }
2825        else if (name.equals("reason")) {
2826          return addReason();
2827        }
2828        else if (name.equals("note")) {
2829          return addNote();
2830        }
2831        else if (name.equals("condition")) {
2832          return addCondition();
2833        }
2834        else if (name.equals("procedure")) {
2835          return addProcedure();
2836        }
2837        else
2838          return super.addChild(name);
2839      }
2840
2841  public String fhirType() {
2842    return "FamilyMemberHistory";
2843
2844  }
2845
2846      public FamilyMemberHistory copy() {
2847        FamilyMemberHistory dst = new FamilyMemberHistory();
2848        copyValues(dst);
2849        return dst;
2850      }
2851
2852      public void copyValues(FamilyMemberHistory dst) {
2853        super.copyValues(dst);
2854        if (identifier != null) {
2855          dst.identifier = new ArrayList<Identifier>();
2856          for (Identifier i : identifier)
2857            dst.identifier.add(i.copy());
2858        };
2859        if (instantiatesCanonical != null) {
2860          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
2861          for (CanonicalType i : instantiatesCanonical)
2862            dst.instantiatesCanonical.add(i.copy());
2863        };
2864        if (instantiatesUri != null) {
2865          dst.instantiatesUri = new ArrayList<UriType>();
2866          for (UriType i : instantiatesUri)
2867            dst.instantiatesUri.add(i.copy());
2868        };
2869        dst.status = status == null ? null : status.copy();
2870        dst.dataAbsentReason = dataAbsentReason == null ? null : dataAbsentReason.copy();
2871        dst.patient = patient == null ? null : patient.copy();
2872        dst.date = date == null ? null : date.copy();
2873        if (participant != null) {
2874          dst.participant = new ArrayList<FamilyMemberHistoryParticipantComponent>();
2875          for (FamilyMemberHistoryParticipantComponent i : participant)
2876            dst.participant.add(i.copy());
2877        };
2878        dst.name = name == null ? null : name.copy();
2879        dst.relationship = relationship == null ? null : relationship.copy();
2880        dst.sex = sex == null ? null : sex.copy();
2881        dst.born = born == null ? null : born.copy();
2882        dst.age = age == null ? null : age.copy();
2883        dst.estimatedAge = estimatedAge == null ? null : estimatedAge.copy();
2884        dst.deceased = deceased == null ? null : deceased.copy();
2885        if (reason != null) {
2886          dst.reason = new ArrayList<CodeableReference>();
2887          for (CodeableReference i : reason)
2888            dst.reason.add(i.copy());
2889        };
2890        if (note != null) {
2891          dst.note = new ArrayList<Annotation>();
2892          for (Annotation i : note)
2893            dst.note.add(i.copy());
2894        };
2895        if (condition != null) {
2896          dst.condition = new ArrayList<FamilyMemberHistoryConditionComponent>();
2897          for (FamilyMemberHistoryConditionComponent i : condition)
2898            dst.condition.add(i.copy());
2899        };
2900        if (procedure != null) {
2901          dst.procedure = new ArrayList<FamilyMemberHistoryProcedureComponent>();
2902          for (FamilyMemberHistoryProcedureComponent i : procedure)
2903            dst.procedure.add(i.copy());
2904        };
2905      }
2906
2907      protected FamilyMemberHistory typedCopy() {
2908        return copy();
2909      }
2910
2911      @Override
2912      public boolean equalsDeep(Base other_) {
2913        if (!super.equalsDeep(other_))
2914          return false;
2915        if (!(other_ instanceof FamilyMemberHistory))
2916          return false;
2917        FamilyMemberHistory o = (FamilyMemberHistory) other_;
2918        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
2919           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(status, o.status, true)
2920           && compareDeep(dataAbsentReason, o.dataAbsentReason, true) && compareDeep(patient, o.patient, true)
2921           && compareDeep(date, o.date, true) && compareDeep(participant, o.participant, true) && compareDeep(name, o.name, true)
2922           && compareDeep(relationship, o.relationship, true) && compareDeep(sex, o.sex, true) && compareDeep(born, o.born, true)
2923           && compareDeep(age, o.age, true) && compareDeep(estimatedAge, o.estimatedAge, true) && compareDeep(deceased, o.deceased, true)
2924           && compareDeep(reason, o.reason, true) && compareDeep(note, o.note, true) && compareDeep(condition, o.condition, true)
2925           && compareDeep(procedure, o.procedure, true);
2926      }
2927
2928      @Override
2929      public boolean equalsShallow(Base other_) {
2930        if (!super.equalsShallow(other_))
2931          return false;
2932        if (!(other_ instanceof FamilyMemberHistory))
2933          return false;
2934        FamilyMemberHistory o = (FamilyMemberHistory) other_;
2935        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
2936           && compareValues(status, o.status, true) && compareValues(date, o.date, true) && compareValues(name, o.name, true)
2937           && compareValues(estimatedAge, o.estimatedAge, true);
2938      }
2939
2940      public boolean isEmpty() {
2941        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
2942          , instantiatesUri, status, dataAbsentReason, patient, date, participant, name
2943          , relationship, sex, born, age, estimatedAge, deceased, reason, note, condition
2944          , procedure);
2945      }
2946
2947  @Override
2948  public ResourceType getResourceType() {
2949    return ResourceType.FamilyMemberHistory;
2950   }
2951
2952 /**
2953   * Search parameter: <b>instantiates-canonical</b>
2954   * <p>
2955   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2956   * Type: <b>reference</b><br>
2957   * Path: <b>FamilyMemberHistory.instantiatesCanonical</b><br>
2958   * </p>
2959   */
2960  @SearchParamDefinition(name="instantiates-canonical", path="FamilyMemberHistory.instantiatesCanonical", description="Instantiates FHIR protocol or definition", type="reference", target={ActivityDefinition.class, Measure.class, OperationDefinition.class, PlanDefinition.class, Questionnaire.class } )
2961  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
2962 /**
2963   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
2964   * <p>
2965   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2966   * Type: <b>reference</b><br>
2967   * Path: <b>FamilyMemberHistory.instantiatesCanonical</b><br>
2968   * </p>
2969   */
2970  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
2971
2972/**
2973   * Constant for fluent queries to be used to add include statements. Specifies
2974   * the path value of "<b>FamilyMemberHistory:instantiates-canonical</b>".
2975   */
2976  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("FamilyMemberHistory:instantiates-canonical").toLocked();
2977
2978 /**
2979   * Search parameter: <b>instantiates-uri</b>
2980   * <p>
2981   * Description: <b>Instantiates external protocol or definition</b><br>
2982   * Type: <b>uri</b><br>
2983   * Path: <b>FamilyMemberHistory.instantiatesUri</b><br>
2984   * </p>
2985   */
2986  @SearchParamDefinition(name="instantiates-uri", path="FamilyMemberHistory.instantiatesUri", description="Instantiates external protocol or definition", type="uri" )
2987  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
2988 /**
2989   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
2990   * <p>
2991   * Description: <b>Instantiates external protocol or definition</b><br>
2992   * Type: <b>uri</b><br>
2993   * Path: <b>FamilyMemberHistory.instantiatesUri</b><br>
2994   * </p>
2995   */
2996  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
2997
2998 /**
2999   * Search parameter: <b>relationship</b>
3000   * <p>
3001   * Description: <b>A search by a relationship type</b><br>
3002   * Type: <b>token</b><br>
3003   * Path: <b>FamilyMemberHistory.relationship</b><br>
3004   * </p>
3005   */
3006  @SearchParamDefinition(name="relationship", path="FamilyMemberHistory.relationship", description="A search by a relationship type", type="token" )
3007  public static final String SP_RELATIONSHIP = "relationship";
3008 /**
3009   * <b>Fluent Client</b> search parameter constant for <b>relationship</b>
3010   * <p>
3011   * Description: <b>A search by a relationship type</b><br>
3012   * Type: <b>token</b><br>
3013   * Path: <b>FamilyMemberHistory.relationship</b><br>
3014   * </p>
3015   */
3016  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RELATIONSHIP = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_RELATIONSHIP);
3017
3018 /**
3019   * Search parameter: <b>sex</b>
3020   * <p>
3021   * Description: <b>A search by a sex code of a family member</b><br>
3022   * Type: <b>token</b><br>
3023   * Path: <b>FamilyMemberHistory.sex</b><br>
3024   * </p>
3025   */
3026  @SearchParamDefinition(name="sex", path="FamilyMemberHistory.sex", description="A search by a sex code of a family member", type="token" )
3027  public static final String SP_SEX = "sex";
3028 /**
3029   * <b>Fluent Client</b> search parameter constant for <b>sex</b>
3030   * <p>
3031   * Description: <b>A search by a sex code of a family member</b><br>
3032   * Type: <b>token</b><br>
3033   * Path: <b>FamilyMemberHistory.sex</b><br>
3034   * </p>
3035   */
3036  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SEX = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SEX);
3037
3038 /**
3039   * Search parameter: <b>status</b>
3040   * <p>
3041   * Description: <b>partial | completed | entered-in-error | health-unknown</b><br>
3042   * Type: <b>token</b><br>
3043   * Path: <b>FamilyMemberHistory.status</b><br>
3044   * </p>
3045   */
3046  @SearchParamDefinition(name="status", path="FamilyMemberHistory.status", description="partial | completed | entered-in-error | health-unknown", type="token" )
3047  public static final String SP_STATUS = "status";
3048 /**
3049   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3050   * <p>
3051   * Description: <b>partial | completed | entered-in-error | health-unknown</b><br>
3052   * Type: <b>token</b><br>
3053   * Path: <b>FamilyMemberHistory.status</b><br>
3054   * </p>
3055   */
3056  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3057
3058 /**
3059   * Search parameter: <b>code</b>
3060   * <p>
3061   * Description: <b>Multiple Resources: 
3062
3063* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
3064* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
3065* [AuditEvent](auditevent.html): More specific code for the event
3066* [Basic](basic.html): Kind of Resource
3067* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
3068* [Condition](condition.html): Code for the condition
3069* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
3070* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
3071* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
3072* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
3073* [ImagingSelection](imagingselection.html): The imaging selection status
3074* [List](list.html): What the purpose of this list is
3075* [Medication](medication.html): Returns medications for a specific code
3076* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
3077* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
3078* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
3079* [MedicationStatement](medicationstatement.html): Return statements of this medication code
3080* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
3081* [Observation](observation.html): The code of the observation type
3082* [Procedure](procedure.html): A code to identify a  procedure
3083* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
3084* [Task](task.html): Search by task code
3085</b><br>
3086   * Type: <b>token</b><br>
3087   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
3088   * </p>
3089   */
3090  @SearchParamDefinition(name="code", path="AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [AuditEvent](auditevent.html): More specific code for the event\r\n* [Basic](basic.html): Kind of Resource\r\n* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code\r\n* [Condition](condition.html): Code for the condition\r\n* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.\r\n* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered\r\n* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code\r\n* [ImagingSelection](imagingselection.html): The imaging selection status\r\n* [List](list.html): What the purpose of this list is\r\n* [Medication](medication.html): Returns medications for a specific code\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication code\r\n* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake\r\n* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [RequestOrchestration](requestorchestration.html): The code of the request orchestration\r\n* [Task](task.html): Search by task code\r\n", type="token" )
3091  public static final String SP_CODE = "code";
3092 /**
3093   * <b>Fluent Client</b> search parameter constant for <b>code</b>
3094   * <p>
3095   * Description: <b>Multiple Resources: 
3096
3097* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
3098* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
3099* [AuditEvent](auditevent.html): More specific code for the event
3100* [Basic](basic.html): Kind of Resource
3101* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
3102* [Condition](condition.html): Code for the condition
3103* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
3104* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
3105* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
3106* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
3107* [ImagingSelection](imagingselection.html): The imaging selection status
3108* [List](list.html): What the purpose of this list is
3109* [Medication](medication.html): Returns medications for a specific code
3110* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
3111* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
3112* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
3113* [MedicationStatement](medicationstatement.html): Return statements of this medication code
3114* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
3115* [Observation](observation.html): The code of the observation type
3116* [Procedure](procedure.html): A code to identify a  procedure
3117* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
3118* [Task](task.html): Search by task code
3119</b><br>
3120   * Type: <b>token</b><br>
3121   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
3122   * </p>
3123   */
3124  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
3125
3126 /**
3127   * Search parameter: <b>date</b>
3128   * <p>
3129   * Description: <b>Multiple Resources: 
3130
3131* [AdverseEvent](adverseevent.html): When the event occurred
3132* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3133* [Appointment](appointment.html): Appointment date/time.
3134* [AuditEvent](auditevent.html): Time when the event was recorded
3135* [CarePlan](careplan.html): Time period plan covers
3136* [CareTeam](careteam.html): A date within the coverage time period.
3137* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3138* [Composition](composition.html): Composition editing time
3139* [Consent](consent.html): When consent was agreed to
3140* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3141* [DocumentReference](documentreference.html): When this document reference was created
3142* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3143* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3144* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3145* [Flag](flag.html): Time period when flag is active
3146* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3147* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3148* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3149* [Invoice](invoice.html): Invoice date / posting date
3150* [List](list.html): When the list was prepared
3151* [MeasureReport](measurereport.html): The date of the measure report
3152* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3153* [Observation](observation.html): Clinically relevant time/time-period for observation
3154* [Procedure](procedure.html): When the procedure occurred or is occurring
3155* [ResearchSubject](researchsubject.html): Start and end of participation
3156* [RiskAssessment](riskassessment.html): When was assessment made?
3157* [SupplyRequest](supplyrequest.html): When the request was made
3158</b><br>
3159   * Type: <b>date</b><br>
3160   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
3161   * </p>
3162   */
3163  @SearchParamDefinition(name="date", path="AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): When the event occurred\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [Appointment](appointment.html): Appointment date/time.\r\n* [AuditEvent](auditevent.html): Time when the event was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [DocumentReference](documentreference.html): When this document reference was created\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created\r\n* [Invoice](invoice.html): Invoice date / posting date\r\n* [List](list.html): When the list was prepared\r\n* [MeasureReport](measurereport.html): The date of the measure report\r\n* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication\r\n* [Observation](observation.html): Clinically relevant time/time-period for observation\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [ResearchSubject](researchsubject.html): Start and end of participation\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
3164  public static final String SP_DATE = "date";
3165 /**
3166   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3167   * <p>
3168   * Description: <b>Multiple Resources: 
3169
3170* [AdverseEvent](adverseevent.html): When the event occurred
3171* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3172* [Appointment](appointment.html): Appointment date/time.
3173* [AuditEvent](auditevent.html): Time when the event was recorded
3174* [CarePlan](careplan.html): Time period plan covers
3175* [CareTeam](careteam.html): A date within the coverage time period.
3176* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3177* [Composition](composition.html): Composition editing time
3178* [Consent](consent.html): When consent was agreed to
3179* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3180* [DocumentReference](documentreference.html): When this document reference was created
3181* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3182* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3183* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3184* [Flag](flag.html): Time period when flag is active
3185* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3186* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3187* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3188* [Invoice](invoice.html): Invoice date / posting date
3189* [List](list.html): When the list was prepared
3190* [MeasureReport](measurereport.html): The date of the measure report
3191* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3192* [Observation](observation.html): Clinically relevant time/time-period for observation
3193* [Procedure](procedure.html): When the procedure occurred or is occurring
3194* [ResearchSubject](researchsubject.html): Start and end of participation
3195* [RiskAssessment](riskassessment.html): When was assessment made?
3196* [SupplyRequest](supplyrequest.html): When the request was made
3197</b><br>
3198   * Type: <b>date</b><br>
3199   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
3200   * </p>
3201   */
3202  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3203
3204 /**
3205   * Search parameter: <b>identifier</b>
3206   * <p>
3207   * Description: <b>Multiple Resources: 
3208
3209* [Account](account.html): Account number
3210* [AdverseEvent](adverseevent.html): Business identifier for the event
3211* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3212* [Appointment](appointment.html): An Identifier of the Appointment
3213* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3214* [Basic](basic.html): Business identifier
3215* [BodyStructure](bodystructure.html): Bodystructure identifier
3216* [CarePlan](careplan.html): External Ids for this plan
3217* [CareTeam](careteam.html): External Ids for this team
3218* [ChargeItem](chargeitem.html): Business Identifier for item
3219* [Claim](claim.html): The primary identifier of the financial resource
3220* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3221* [ClinicalImpression](clinicalimpression.html): Business identifier
3222* [Communication](communication.html): Unique identifier
3223* [CommunicationRequest](communicationrequest.html): Unique identifier
3224* [Composition](composition.html): Version-independent identifier for the Composition
3225* [Condition](condition.html): A unique identifier of the condition record
3226* [Consent](consent.html): Identifier for this record (external references)
3227* [Contract](contract.html): The identity of the contract
3228* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3229* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3230* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3231* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3232* [DeviceRequest](devicerequest.html): Business identifier for request/order
3233* [DeviceUsage](deviceusage.html): Search by identifier
3234* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3235* [DocumentReference](documentreference.html): Identifier of the attachment binary
3236* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3237* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3238* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3239* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3240* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3241* [Flag](flag.html): Business identifier
3242* [Goal](goal.html): External Ids for this goal
3243* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3244* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3245* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3246* [Immunization](immunization.html): Business identifier
3247* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3248* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3249* [Invoice](invoice.html): Business Identifier for item
3250* [List](list.html): Business identifier
3251* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3252* [Medication](medication.html): Returns medications with this external identifier
3253* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3254* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3255* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3256* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3257* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3258* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3259* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3260* [Observation](observation.html): The unique id for a particular observation
3261* [Person](person.html): A person Identifier
3262* [Procedure](procedure.html): A unique identifier for a procedure
3263* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3264* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3265* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3266* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3267* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3268* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3269* [Specimen](specimen.html): The unique identifier associated with the specimen
3270* [SupplyDelivery](supplydelivery.html): External identifier
3271* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3272* [Task](task.html): Search for a task instance by its business identifier
3273* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3274</b><br>
3275   * Type: <b>token</b><br>
3276   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
3277   * </p>
3278   */
3279  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
3280  public static final String SP_IDENTIFIER = "identifier";
3281 /**
3282   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3283   * <p>
3284   * Description: <b>Multiple Resources: 
3285
3286* [Account](account.html): Account number
3287* [AdverseEvent](adverseevent.html): Business identifier for the event
3288* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3289* [Appointment](appointment.html): An Identifier of the Appointment
3290* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3291* [Basic](basic.html): Business identifier
3292* [BodyStructure](bodystructure.html): Bodystructure identifier
3293* [CarePlan](careplan.html): External Ids for this plan
3294* [CareTeam](careteam.html): External Ids for this team
3295* [ChargeItem](chargeitem.html): Business Identifier for item
3296* [Claim](claim.html): The primary identifier of the financial resource
3297* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3298* [ClinicalImpression](clinicalimpression.html): Business identifier
3299* [Communication](communication.html): Unique identifier
3300* [CommunicationRequest](communicationrequest.html): Unique identifier
3301* [Composition](composition.html): Version-independent identifier for the Composition
3302* [Condition](condition.html): A unique identifier of the condition record
3303* [Consent](consent.html): Identifier for this record (external references)
3304* [Contract](contract.html): The identity of the contract
3305* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3306* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3307* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3308* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3309* [DeviceRequest](devicerequest.html): Business identifier for request/order
3310* [DeviceUsage](deviceusage.html): Search by identifier
3311* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3312* [DocumentReference](documentreference.html): Identifier of the attachment binary
3313* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3314* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3315* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3316* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3317* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3318* [Flag](flag.html): Business identifier
3319* [Goal](goal.html): External Ids for this goal
3320* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3321* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3322* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3323* [Immunization](immunization.html): Business identifier
3324* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3325* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3326* [Invoice](invoice.html): Business Identifier for item
3327* [List](list.html): Business identifier
3328* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3329* [Medication](medication.html): Returns medications with this external identifier
3330* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3331* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3332* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3333* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3334* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3335* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3336* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3337* [Observation](observation.html): The unique id for a particular observation
3338* [Person](person.html): A person Identifier
3339* [Procedure](procedure.html): A unique identifier for a procedure
3340* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3341* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3342* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3343* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3344* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3345* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3346* [Specimen](specimen.html): The unique identifier associated with the specimen
3347* [SupplyDelivery](supplydelivery.html): External identifier
3348* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3349* [Task](task.html): Search for a task instance by its business identifier
3350* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3351</b><br>
3352   * Type: <b>token</b><br>
3353   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
3354   * </p>
3355   */
3356  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3357
3358 /**
3359   * Search parameter: <b>patient</b>
3360   * <p>
3361   * Description: <b>Multiple Resources: 
3362
3363* [Account](account.html): The entity that caused the expenses
3364* [AdverseEvent](adverseevent.html): Subject impacted by event
3365* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3366* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3367* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3368* [AuditEvent](auditevent.html): Where the activity involved patient data
3369* [Basic](basic.html): Identifies the focus of this resource
3370* [BodyStructure](bodystructure.html): Who this is about
3371* [CarePlan](careplan.html): Who the care plan is for
3372* [CareTeam](careteam.html): Who care team is for
3373* [ChargeItem](chargeitem.html): Individual service was done for/to
3374* [Claim](claim.html): Patient receiving the products or services
3375* [ClaimResponse](claimresponse.html): The subject of care
3376* [ClinicalImpression](clinicalimpression.html): Patient assessed
3377* [Communication](communication.html): Focus of message
3378* [CommunicationRequest](communicationrequest.html): Focus of message
3379* [Composition](composition.html): Who and/or what the composition is about
3380* [Condition](condition.html): Who has the condition?
3381* [Consent](consent.html): Who the consent applies to
3382* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3383* [Coverage](coverage.html): Retrieve coverages for a patient
3384* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3385* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3386* [DetectedIssue](detectedissue.html): Associated patient
3387* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3388* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3389* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3390* [DocumentReference](documentreference.html): Who/what is the subject of the document
3391* [Encounter](encounter.html): The patient present at the encounter
3392* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3393* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3394* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3395* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3396* [Flag](flag.html): The identity of a subject to list flags for
3397* [Goal](goal.html): Who this goal is intended for
3398* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3399* [ImagingSelection](imagingselection.html): Who the study is about
3400* [ImagingStudy](imagingstudy.html): Who the study is about
3401* [Immunization](immunization.html): The patient for the vaccination record
3402* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3403* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3404* [Invoice](invoice.html): Recipient(s) of goods and services
3405* [List](list.html): If all resources have the same subject
3406* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3407* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3408* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3409* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3410* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3411* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3412* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3413* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3414* [Observation](observation.html): The subject that the observation is about (if patient)
3415* [Person](person.html): The Person links to this Patient
3416* [Procedure](procedure.html): Search by subject - a patient
3417* [Provenance](provenance.html): Where the activity involved patient data
3418* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3419* [RelatedPerson](relatedperson.html): The patient this related person is related to
3420* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3421* [ResearchSubject](researchsubject.html): Who or what is part of study
3422* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3423* [ServiceRequest](servicerequest.html): Search by subject - a patient
3424* [Specimen](specimen.html): The patient the specimen comes from
3425* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3426* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3427* [Task](task.html): Search by patient
3428* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3429</b><br>
3430   * Type: <b>reference</b><br>
3431   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
3432   * </p>
3433   */
3434  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
3435  public static final String SP_PATIENT = "patient";
3436 /**
3437   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3438   * <p>
3439   * Description: <b>Multiple Resources: 
3440
3441* [Account](account.html): The entity that caused the expenses
3442* [AdverseEvent](adverseevent.html): Subject impacted by event
3443* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3444* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3445* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3446* [AuditEvent](auditevent.html): Where the activity involved patient data
3447* [Basic](basic.html): Identifies the focus of this resource
3448* [BodyStructure](bodystructure.html): Who this is about
3449* [CarePlan](careplan.html): Who the care plan is for
3450* [CareTeam](careteam.html): Who care team is for
3451* [ChargeItem](chargeitem.html): Individual service was done for/to
3452* [Claim](claim.html): Patient receiving the products or services
3453* [ClaimResponse](claimresponse.html): The subject of care
3454* [ClinicalImpression](clinicalimpression.html): Patient assessed
3455* [Communication](communication.html): Focus of message
3456* [CommunicationRequest](communicationrequest.html): Focus of message
3457* [Composition](composition.html): Who and/or what the composition is about
3458* [Condition](condition.html): Who has the condition?
3459* [Consent](consent.html): Who the consent applies to
3460* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3461* [Coverage](coverage.html): Retrieve coverages for a patient
3462* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3463* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3464* [DetectedIssue](detectedissue.html): Associated patient
3465* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3466* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3467* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3468* [DocumentReference](documentreference.html): Who/what is the subject of the document
3469* [Encounter](encounter.html): The patient present at the encounter
3470* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3471* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3472* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3473* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3474* [Flag](flag.html): The identity of a subject to list flags for
3475* [Goal](goal.html): Who this goal is intended for
3476* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3477* [ImagingSelection](imagingselection.html): Who the study is about
3478* [ImagingStudy](imagingstudy.html): Who the study is about
3479* [Immunization](immunization.html): The patient for the vaccination record
3480* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3481* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3482* [Invoice](invoice.html): Recipient(s) of goods and services
3483* [List](list.html): If all resources have the same subject
3484* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3485* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3486* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3487* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3488* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3489* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3490* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3491* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3492* [Observation](observation.html): The subject that the observation is about (if patient)
3493* [Person](person.html): The Person links to this Patient
3494* [Procedure](procedure.html): Search by subject - a patient
3495* [Provenance](provenance.html): Where the activity involved patient data
3496* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3497* [RelatedPerson](relatedperson.html): The patient this related person is related to
3498* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3499* [ResearchSubject](researchsubject.html): Who or what is part of study
3500* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3501* [ServiceRequest](servicerequest.html): Search by subject - a patient
3502* [Specimen](specimen.html): The patient the specimen comes from
3503* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3504* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3505* [Task](task.html): Search by patient
3506* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3507</b><br>
3508   * Type: <b>reference</b><br>
3509   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
3510   * </p>
3511   */
3512  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3513
3514/**
3515   * Constant for fluent queries to be used to add include statements. Specifies
3516   * the path value of "<b>FamilyMemberHistory:patient</b>".
3517   */
3518  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("FamilyMemberHistory:patient").toLocked();
3519
3520
3521}
3522