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 * An interaction between healthcare provider(s), and/or patient(s) for the purpose of providing healthcare service(s) or assessing the health status of patient(s).
052 */
053@ResourceDef(name="Encounter", profile="http://hl7.org/fhir/StructureDefinition/Encounter")
054public class Encounter extends DomainResource {
055
056    public enum EncounterLocationStatus {
057        /**
058         * The patient is planned to be moved to this location at some point in the future.
059         */
060        PLANNED, 
061        /**
062         * The patient is currently at this location, or was between the period specified.\r\rA system may update these records when the patient leaves the location to either reserved, or completed.
063         */
064        ACTIVE, 
065        /**
066         * This location is held empty for this patient.
067         */
068        RESERVED, 
069        /**
070         * The patient was at this location during the period specified.\r\rNot to be used when the patient is currently at the location.
071         */
072        COMPLETED, 
073        /**
074         * added to help the parsers with the generic types
075         */
076        NULL;
077        public static EncounterLocationStatus fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("planned".equals(codeString))
081          return PLANNED;
082        if ("active".equals(codeString))
083          return ACTIVE;
084        if ("reserved".equals(codeString))
085          return RESERVED;
086        if ("completed".equals(codeString))
087          return COMPLETED;
088        if (Configuration.isAcceptInvalidEnums())
089          return null;
090        else
091          throw new FHIRException("Unknown EncounterLocationStatus code '"+codeString+"'");
092        }
093        public String toCode() {
094          switch (this) {
095            case PLANNED: return "planned";
096            case ACTIVE: return "active";
097            case RESERVED: return "reserved";
098            case COMPLETED: return "completed";
099            case NULL: return null;
100            default: return "?";
101          }
102        }
103        public String getSystem() {
104          switch (this) {
105            case PLANNED: return "http://hl7.org/fhir/encounter-location-status";
106            case ACTIVE: return "http://hl7.org/fhir/encounter-location-status";
107            case RESERVED: return "http://hl7.org/fhir/encounter-location-status";
108            case COMPLETED: return "http://hl7.org/fhir/encounter-location-status";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113        public String getDefinition() {
114          switch (this) {
115            case PLANNED: return "The patient is planned to be moved to this location at some point in the future.";
116            case ACTIVE: return "The patient is currently at this location, or was between the period specified.\r\rA system may update these records when the patient leaves the location to either reserved, or completed.";
117            case RESERVED: return "This location is held empty for this patient.";
118            case COMPLETED: return "The patient was at this location during the period specified.\r\rNot to be used when the patient is currently at the location.";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123        public String getDisplay() {
124          switch (this) {
125            case PLANNED: return "Planned";
126            case ACTIVE: return "Active";
127            case RESERVED: return "Reserved";
128            case COMPLETED: return "Completed";
129            case NULL: return null;
130            default: return "?";
131          }
132        }
133    }
134
135  public static class EncounterLocationStatusEnumFactory implements EnumFactory<EncounterLocationStatus> {
136    public EncounterLocationStatus fromCode(String codeString) throws IllegalArgumentException {
137      if (codeString == null || "".equals(codeString))
138            if (codeString == null || "".equals(codeString))
139                return null;
140        if ("planned".equals(codeString))
141          return EncounterLocationStatus.PLANNED;
142        if ("active".equals(codeString))
143          return EncounterLocationStatus.ACTIVE;
144        if ("reserved".equals(codeString))
145          return EncounterLocationStatus.RESERVED;
146        if ("completed".equals(codeString))
147          return EncounterLocationStatus.COMPLETED;
148        throw new IllegalArgumentException("Unknown EncounterLocationStatus code '"+codeString+"'");
149        }
150        public Enumeration<EncounterLocationStatus> fromType(PrimitiveType<?> code) throws FHIRException {
151          if (code == null)
152            return null;
153          if (code.isEmpty())
154            return new Enumeration<EncounterLocationStatus>(this, EncounterLocationStatus.NULL, code);
155          String codeString = ((PrimitiveType) code).asStringValue();
156          if (codeString == null || "".equals(codeString))
157            return new Enumeration<EncounterLocationStatus>(this, EncounterLocationStatus.NULL, code);
158        if ("planned".equals(codeString))
159          return new Enumeration<EncounterLocationStatus>(this, EncounterLocationStatus.PLANNED, code);
160        if ("active".equals(codeString))
161          return new Enumeration<EncounterLocationStatus>(this, EncounterLocationStatus.ACTIVE, code);
162        if ("reserved".equals(codeString))
163          return new Enumeration<EncounterLocationStatus>(this, EncounterLocationStatus.RESERVED, code);
164        if ("completed".equals(codeString))
165          return new Enumeration<EncounterLocationStatus>(this, EncounterLocationStatus.COMPLETED, code);
166        throw new FHIRException("Unknown EncounterLocationStatus code '"+codeString+"'");
167        }
168    public String toCode(EncounterLocationStatus code) {
169       if (code == EncounterLocationStatus.NULL)
170           return null;
171       if (code == EncounterLocationStatus.PLANNED)
172        return "planned";
173      if (code == EncounterLocationStatus.ACTIVE)
174        return "active";
175      if (code == EncounterLocationStatus.RESERVED)
176        return "reserved";
177      if (code == EncounterLocationStatus.COMPLETED)
178        return "completed";
179      return "?";
180   }
181    public String toSystem(EncounterLocationStatus code) {
182      return code.getSystem();
183      }
184    }
185
186    @Block()
187    public static class EncounterParticipantComponent extends BackboneElement implements IBaseBackboneElement {
188        /**
189         * Role of participant in encounter.
190         */
191        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
192        @Description(shortDefinition="Role of participant in encounter", formalDefinition="Role of participant in encounter." )
193        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-participant-type")
194        protected List<CodeableConcept> type;
195
196        /**
197         * The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period.
198         */
199        @Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=false)
200        @Description(shortDefinition="Period of time during the encounter that the participant participated", formalDefinition="The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period." )
201        protected Period period;
202
203        /**
204         * Person involved in the encounter, the patient/group is also included here to indicate that the patient was actually participating in the encounter. Not including the patient here covers use cases such as a case meeting between practitioners about a patient - non contact times.
205         */
206        @Child(name = "actor", type = {Patient.class, Group.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Device.class, HealthcareService.class}, order=3, min=0, max=1, modifier=false, summary=true)
207        @Description(shortDefinition="The individual, device, or service participating in the encounter", formalDefinition="Person involved in the encounter, the patient/group is also included here to indicate that the patient was actually participating in the encounter. Not including the patient here covers use cases such as a case meeting between practitioners about a patient - non contact times." )
208        protected Reference actor;
209
210        private static final long serialVersionUID = 1982623707L;
211
212    /**
213     * Constructor
214     */
215      public EncounterParticipantComponent() {
216        super();
217      }
218
219        /**
220         * @return {@link #type} (Role of participant in encounter.)
221         */
222        public List<CodeableConcept> getType() { 
223          if (this.type == null)
224            this.type = new ArrayList<CodeableConcept>();
225          return this.type;
226        }
227
228        /**
229         * @return Returns a reference to <code>this</code> for easy method chaining
230         */
231        public EncounterParticipantComponent setType(List<CodeableConcept> theType) { 
232          this.type = theType;
233          return this;
234        }
235
236        public boolean hasType() { 
237          if (this.type == null)
238            return false;
239          for (CodeableConcept item : this.type)
240            if (!item.isEmpty())
241              return true;
242          return false;
243        }
244
245        public CodeableConcept addType() { //3
246          CodeableConcept t = new CodeableConcept();
247          if (this.type == null)
248            this.type = new ArrayList<CodeableConcept>();
249          this.type.add(t);
250          return t;
251        }
252
253        public EncounterParticipantComponent addType(CodeableConcept t) { //3
254          if (t == null)
255            return this;
256          if (this.type == null)
257            this.type = new ArrayList<CodeableConcept>();
258          this.type.add(t);
259          return this;
260        }
261
262        /**
263         * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3}
264         */
265        public CodeableConcept getTypeFirstRep() { 
266          if (getType().isEmpty()) {
267            addType();
268          }
269          return getType().get(0);
270        }
271
272        /**
273         * @return {@link #period} (The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period.)
274         */
275        public Period getPeriod() { 
276          if (this.period == null)
277            if (Configuration.errorOnAutoCreate())
278              throw new Error("Attempt to auto-create EncounterParticipantComponent.period");
279            else if (Configuration.doAutoCreate())
280              this.period = new Period(); // cc
281          return this.period;
282        }
283
284        public boolean hasPeriod() { 
285          return this.period != null && !this.period.isEmpty();
286        }
287
288        /**
289         * @param value {@link #period} (The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period.)
290         */
291        public EncounterParticipantComponent setPeriod(Period value) { 
292          this.period = value;
293          return this;
294        }
295
296        /**
297         * @return {@link #actor} (Person involved in the encounter, the patient/group is also included here to indicate that the patient was actually participating in the encounter. Not including the patient here covers use cases such as a case meeting between practitioners about a patient - non contact times.)
298         */
299        public Reference getActor() { 
300          if (this.actor == null)
301            if (Configuration.errorOnAutoCreate())
302              throw new Error("Attempt to auto-create EncounterParticipantComponent.actor");
303            else if (Configuration.doAutoCreate())
304              this.actor = new Reference(); // cc
305          return this.actor;
306        }
307
308        public boolean hasActor() { 
309          return this.actor != null && !this.actor.isEmpty();
310        }
311
312        /**
313         * @param value {@link #actor} (Person involved in the encounter, the patient/group is also included here to indicate that the patient was actually participating in the encounter. Not including the patient here covers use cases such as a case meeting between practitioners about a patient - non contact times.)
314         */
315        public EncounterParticipantComponent setActor(Reference value) { 
316          this.actor = value;
317          return this;
318        }
319
320        protected void listChildren(List<Property> children) {
321          super.listChildren(children);
322          children.add(new Property("type", "CodeableConcept", "Role of participant in encounter.", 0, java.lang.Integer.MAX_VALUE, type));
323          children.add(new Property("period", "Period", "The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period.", 0, 1, period));
324          children.add(new Property("actor", "Reference(Patient|Group|RelatedPerson|Practitioner|PractitionerRole|Device|HealthcareService)", "Person involved in the encounter, the patient/group is also included here to indicate that the patient was actually participating in the encounter. Not including the patient here covers use cases such as a case meeting between practitioners about a patient - non contact times.", 0, 1, actor));
325        }
326
327        @Override
328        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
329          switch (_hash) {
330          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Role of participant in encounter.", 0, java.lang.Integer.MAX_VALUE, type);
331          case -991726143: /*period*/  return new Property("period", "Period", "The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period.", 0, 1, period);
332          case 92645877: /*actor*/  return new Property("actor", "Reference(Patient|Group|RelatedPerson|Practitioner|PractitionerRole|Device|HealthcareService)", "Person involved in the encounter, the patient/group is also included here to indicate that the patient was actually participating in the encounter. Not including the patient here covers use cases such as a case meeting between practitioners about a patient - non contact times.", 0, 1, actor);
333          default: return super.getNamedProperty(_hash, _name, _checkValid);
334          }
335
336        }
337
338      @Override
339      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
340        switch (hash) {
341        case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept
342        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
343        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
344        default: return super.getProperty(hash, name, checkValid);
345        }
346
347      }
348
349      @Override
350      public Base setProperty(int hash, String name, Base value) throws FHIRException {
351        switch (hash) {
352        case 3575610: // type
353          this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
354          return value;
355        case -991726143: // period
356          this.period = TypeConvertor.castToPeriod(value); // Period
357          return value;
358        case 92645877: // actor
359          this.actor = TypeConvertor.castToReference(value); // Reference
360          return value;
361        default: return super.setProperty(hash, name, value);
362        }
363
364      }
365
366      @Override
367      public Base setProperty(String name, Base value) throws FHIRException {
368        if (name.equals("type")) {
369          this.getType().add(TypeConvertor.castToCodeableConcept(value));
370        } else if (name.equals("period")) {
371          this.period = TypeConvertor.castToPeriod(value); // Period
372        } else if (name.equals("actor")) {
373          this.actor = TypeConvertor.castToReference(value); // Reference
374        } else
375          return super.setProperty(name, value);
376        return value;
377      }
378
379  @Override
380  public void removeChild(String name, Base value) throws FHIRException {
381        if (name.equals("type")) {
382          this.getType().remove(value);
383        } else if (name.equals("period")) {
384          this.period = null;
385        } else if (name.equals("actor")) {
386          this.actor = null;
387        } else
388          super.removeChild(name, value);
389        
390      }
391
392      @Override
393      public Base makeProperty(int hash, String name) throws FHIRException {
394        switch (hash) {
395        case 3575610:  return addType(); 
396        case -991726143:  return getPeriod();
397        case 92645877:  return getActor();
398        default: return super.makeProperty(hash, name);
399        }
400
401      }
402
403      @Override
404      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
405        switch (hash) {
406        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
407        case -991726143: /*period*/ return new String[] {"Period"};
408        case 92645877: /*actor*/ return new String[] {"Reference"};
409        default: return super.getTypesForProperty(hash, name);
410        }
411
412      }
413
414      @Override
415      public Base addChild(String name) throws FHIRException {
416        if (name.equals("type")) {
417          return addType();
418        }
419        else if (name.equals("period")) {
420          this.period = new Period();
421          return this.period;
422        }
423        else if (name.equals("actor")) {
424          this.actor = new Reference();
425          return this.actor;
426        }
427        else
428          return super.addChild(name);
429      }
430
431      public EncounterParticipantComponent copy() {
432        EncounterParticipantComponent dst = new EncounterParticipantComponent();
433        copyValues(dst);
434        return dst;
435      }
436
437      public void copyValues(EncounterParticipantComponent dst) {
438        super.copyValues(dst);
439        if (type != null) {
440          dst.type = new ArrayList<CodeableConcept>();
441          for (CodeableConcept i : type)
442            dst.type.add(i.copy());
443        };
444        dst.period = period == null ? null : period.copy();
445        dst.actor = actor == null ? null : actor.copy();
446      }
447
448      @Override
449      public boolean equalsDeep(Base other_) {
450        if (!super.equalsDeep(other_))
451          return false;
452        if (!(other_ instanceof EncounterParticipantComponent))
453          return false;
454        EncounterParticipantComponent o = (EncounterParticipantComponent) other_;
455        return compareDeep(type, o.type, true) && compareDeep(period, o.period, true) && compareDeep(actor, o.actor, true)
456          ;
457      }
458
459      @Override
460      public boolean equalsShallow(Base other_) {
461        if (!super.equalsShallow(other_))
462          return false;
463        if (!(other_ instanceof EncounterParticipantComponent))
464          return false;
465        EncounterParticipantComponent o = (EncounterParticipantComponent) other_;
466        return true;
467      }
468
469      public boolean isEmpty() {
470        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, period, actor);
471      }
472
473  public String fhirType() {
474    return "Encounter.participant";
475
476  }
477
478  }
479
480    @Block()
481    public static class ReasonComponent extends BackboneElement implements IBaseBackboneElement {
482        /**
483         * What the reason value should be used as e.g. Chief Complaint, Health Concern, Health Maintenance (including screening).
484         */
485        @Child(name = "use", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
486        @Description(shortDefinition="What the reason value should be used for/as", formalDefinition="What the reason value should be used as e.g. Chief Complaint, Health Concern, Health Maintenance (including screening)." )
487        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-reason-use")
488        protected List<CodeableConcept> use;
489
490        /**
491         * Reason the encounter takes place, expressed as a code or a reference to another resource. For admissions, this can be used for a coded admission diagnosis.
492         */
493        @Child(name = "value", type = {CodeableReference.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
494        @Description(shortDefinition="Reason the encounter takes place (core or reference)", formalDefinition="Reason the encounter takes place, expressed as a code or a reference to another resource. For admissions, this can be used for a coded admission diagnosis." )
495        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-reason")
496        protected List<CodeableReference> value;
497
498        private static final long serialVersionUID = 1305979913L;
499
500    /**
501     * Constructor
502     */
503      public ReasonComponent() {
504        super();
505      }
506
507        /**
508         * @return {@link #use} (What the reason value should be used as e.g. Chief Complaint, Health Concern, Health Maintenance (including screening).)
509         */
510        public List<CodeableConcept> getUse() { 
511          if (this.use == null)
512            this.use = new ArrayList<CodeableConcept>();
513          return this.use;
514        }
515
516        /**
517         * @return Returns a reference to <code>this</code> for easy method chaining
518         */
519        public ReasonComponent setUse(List<CodeableConcept> theUse) { 
520          this.use = theUse;
521          return this;
522        }
523
524        public boolean hasUse() { 
525          if (this.use == null)
526            return false;
527          for (CodeableConcept item : this.use)
528            if (!item.isEmpty())
529              return true;
530          return false;
531        }
532
533        public CodeableConcept addUse() { //3
534          CodeableConcept t = new CodeableConcept();
535          if (this.use == null)
536            this.use = new ArrayList<CodeableConcept>();
537          this.use.add(t);
538          return t;
539        }
540
541        public ReasonComponent addUse(CodeableConcept t) { //3
542          if (t == null)
543            return this;
544          if (this.use == null)
545            this.use = new ArrayList<CodeableConcept>();
546          this.use.add(t);
547          return this;
548        }
549
550        /**
551         * @return The first repetition of repeating field {@link #use}, creating it if it does not already exist {3}
552         */
553        public CodeableConcept getUseFirstRep() { 
554          if (getUse().isEmpty()) {
555            addUse();
556          }
557          return getUse().get(0);
558        }
559
560        /**
561         * @return {@link #value} (Reason the encounter takes place, expressed as a code or a reference to another resource. For admissions, this can be used for a coded admission diagnosis.)
562         */
563        public List<CodeableReference> getValue() { 
564          if (this.value == null)
565            this.value = new ArrayList<CodeableReference>();
566          return this.value;
567        }
568
569        /**
570         * @return Returns a reference to <code>this</code> for easy method chaining
571         */
572        public ReasonComponent setValue(List<CodeableReference> theValue) { 
573          this.value = theValue;
574          return this;
575        }
576
577        public boolean hasValue() { 
578          if (this.value == null)
579            return false;
580          for (CodeableReference item : this.value)
581            if (!item.isEmpty())
582              return true;
583          return false;
584        }
585
586        public CodeableReference addValue() { //3
587          CodeableReference t = new CodeableReference();
588          if (this.value == null)
589            this.value = new ArrayList<CodeableReference>();
590          this.value.add(t);
591          return t;
592        }
593
594        public ReasonComponent addValue(CodeableReference t) { //3
595          if (t == null)
596            return this;
597          if (this.value == null)
598            this.value = new ArrayList<CodeableReference>();
599          this.value.add(t);
600          return this;
601        }
602
603        /**
604         * @return The first repetition of repeating field {@link #value}, creating it if it does not already exist {3}
605         */
606        public CodeableReference getValueFirstRep() { 
607          if (getValue().isEmpty()) {
608            addValue();
609          }
610          return getValue().get(0);
611        }
612
613        protected void listChildren(List<Property> children) {
614          super.listChildren(children);
615          children.add(new Property("use", "CodeableConcept", "What the reason value should be used as e.g. Chief Complaint, Health Concern, Health Maintenance (including screening).", 0, java.lang.Integer.MAX_VALUE, use));
616          children.add(new Property("value", "CodeableReference(Condition|DiagnosticReport|Observation|ImmunizationRecommendation|Procedure)", "Reason the encounter takes place, expressed as a code or a reference to another resource. For admissions, this can be used for a coded admission diagnosis.", 0, java.lang.Integer.MAX_VALUE, value));
617        }
618
619        @Override
620        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
621          switch (_hash) {
622          case 116103: /*use*/  return new Property("use", "CodeableConcept", "What the reason value should be used as e.g. Chief Complaint, Health Concern, Health Maintenance (including screening).", 0, java.lang.Integer.MAX_VALUE, use);
623          case 111972721: /*value*/  return new Property("value", "CodeableReference(Condition|DiagnosticReport|Observation|ImmunizationRecommendation|Procedure)", "Reason the encounter takes place, expressed as a code or a reference to another resource. For admissions, this can be used for a coded admission diagnosis.", 0, java.lang.Integer.MAX_VALUE, value);
624          default: return super.getNamedProperty(_hash, _name, _checkValid);
625          }
626
627        }
628
629      @Override
630      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
631        switch (hash) {
632        case 116103: /*use*/ return this.use == null ? new Base[0] : this.use.toArray(new Base[this.use.size()]); // CodeableConcept
633        case 111972721: /*value*/ return this.value == null ? new Base[0] : this.value.toArray(new Base[this.value.size()]); // CodeableReference
634        default: return super.getProperty(hash, name, checkValid);
635        }
636
637      }
638
639      @Override
640      public Base setProperty(int hash, String name, Base value) throws FHIRException {
641        switch (hash) {
642        case 116103: // use
643          this.getUse().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
644          return value;
645        case 111972721: // value
646          this.getValue().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
647          return value;
648        default: return super.setProperty(hash, name, value);
649        }
650
651      }
652
653      @Override
654      public Base setProperty(String name, Base value) throws FHIRException {
655        if (name.equals("use")) {
656          this.getUse().add(TypeConvertor.castToCodeableConcept(value));
657        } else if (name.equals("value")) {
658          this.getValue().add(TypeConvertor.castToCodeableReference(value));
659        } else
660          return super.setProperty(name, value);
661        return value;
662      }
663
664  @Override
665  public void removeChild(String name, Base value) throws FHIRException {
666        if (name.equals("use")) {
667          this.getUse().remove(value);
668        } else if (name.equals("value")) {
669          this.getValue().remove(value);
670        } else
671          super.removeChild(name, value);
672        
673      }
674
675      @Override
676      public Base makeProperty(int hash, String name) throws FHIRException {
677        switch (hash) {
678        case 116103:  return addUse(); 
679        case 111972721:  return addValue(); 
680        default: return super.makeProperty(hash, name);
681        }
682
683      }
684
685      @Override
686      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
687        switch (hash) {
688        case 116103: /*use*/ return new String[] {"CodeableConcept"};
689        case 111972721: /*value*/ return new String[] {"CodeableReference"};
690        default: return super.getTypesForProperty(hash, name);
691        }
692
693      }
694
695      @Override
696      public Base addChild(String name) throws FHIRException {
697        if (name.equals("use")) {
698          return addUse();
699        }
700        else if (name.equals("value")) {
701          return addValue();
702        }
703        else
704          return super.addChild(name);
705      }
706
707      public ReasonComponent copy() {
708        ReasonComponent dst = new ReasonComponent();
709        copyValues(dst);
710        return dst;
711      }
712
713      public void copyValues(ReasonComponent dst) {
714        super.copyValues(dst);
715        if (use != null) {
716          dst.use = new ArrayList<CodeableConcept>();
717          for (CodeableConcept i : use)
718            dst.use.add(i.copy());
719        };
720        if (value != null) {
721          dst.value = new ArrayList<CodeableReference>();
722          for (CodeableReference i : value)
723            dst.value.add(i.copy());
724        };
725      }
726
727      @Override
728      public boolean equalsDeep(Base other_) {
729        if (!super.equalsDeep(other_))
730          return false;
731        if (!(other_ instanceof ReasonComponent))
732          return false;
733        ReasonComponent o = (ReasonComponent) other_;
734        return compareDeep(use, o.use, true) && compareDeep(value, o.value, true);
735      }
736
737      @Override
738      public boolean equalsShallow(Base other_) {
739        if (!super.equalsShallow(other_))
740          return false;
741        if (!(other_ instanceof ReasonComponent))
742          return false;
743        ReasonComponent o = (ReasonComponent) other_;
744        return true;
745      }
746
747      public boolean isEmpty() {
748        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(use, value);
749      }
750
751  public String fhirType() {
752    return "Encounter.reason";
753
754  }
755
756  }
757
758    @Block()
759    public static class DiagnosisComponent extends BackboneElement implements IBaseBackboneElement {
760        /**
761         * The coded diagnosis or a reference to a Condition (with other resources referenced in the evidence.detail), the use property will indicate the purpose of this specific diagnosis.
762         */
763        @Child(name = "condition", type = {CodeableReference.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
764        @Description(shortDefinition="The diagnosis relevant to the encounter", formalDefinition="The coded diagnosis or a reference to a Condition (with other resources referenced in the evidence.detail), the use property will indicate the purpose of this specific diagnosis." )
765        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
766        protected List<CodeableReference> condition;
767
768        /**
769         * Role that this diagnosis has within the encounter (e.g. admission, billing, discharge ?).
770         */
771        @Child(name = "use", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
772        @Description(shortDefinition="Role that this diagnosis has within the encounter (e.g. admission, billing, discharge ?)", formalDefinition="Role that this diagnosis has within the encounter (e.g. admission, billing, discharge ?)." )
773        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-diagnosis-use")
774        protected List<CodeableConcept> use;
775
776        private static final long serialVersionUID = 1029565663L;
777
778    /**
779     * Constructor
780     */
781      public DiagnosisComponent() {
782        super();
783      }
784
785        /**
786         * @return {@link #condition} (The coded diagnosis or a reference to a Condition (with other resources referenced in the evidence.detail), the use property will indicate the purpose of this specific diagnosis.)
787         */
788        public List<CodeableReference> getCondition() { 
789          if (this.condition == null)
790            this.condition = new ArrayList<CodeableReference>();
791          return this.condition;
792        }
793
794        /**
795         * @return Returns a reference to <code>this</code> for easy method chaining
796         */
797        public DiagnosisComponent setCondition(List<CodeableReference> theCondition) { 
798          this.condition = theCondition;
799          return this;
800        }
801
802        public boolean hasCondition() { 
803          if (this.condition == null)
804            return false;
805          for (CodeableReference item : this.condition)
806            if (!item.isEmpty())
807              return true;
808          return false;
809        }
810
811        public CodeableReference addCondition() { //3
812          CodeableReference t = new CodeableReference();
813          if (this.condition == null)
814            this.condition = new ArrayList<CodeableReference>();
815          this.condition.add(t);
816          return t;
817        }
818
819        public DiagnosisComponent addCondition(CodeableReference t) { //3
820          if (t == null)
821            return this;
822          if (this.condition == null)
823            this.condition = new ArrayList<CodeableReference>();
824          this.condition.add(t);
825          return this;
826        }
827
828        /**
829         * @return The first repetition of repeating field {@link #condition}, creating it if it does not already exist {3}
830         */
831        public CodeableReference getConditionFirstRep() { 
832          if (getCondition().isEmpty()) {
833            addCondition();
834          }
835          return getCondition().get(0);
836        }
837
838        /**
839         * @return {@link #use} (Role that this diagnosis has within the encounter (e.g. admission, billing, discharge ?).)
840         */
841        public List<CodeableConcept> getUse() { 
842          if (this.use == null)
843            this.use = new ArrayList<CodeableConcept>();
844          return this.use;
845        }
846
847        /**
848         * @return Returns a reference to <code>this</code> for easy method chaining
849         */
850        public DiagnosisComponent setUse(List<CodeableConcept> theUse) { 
851          this.use = theUse;
852          return this;
853        }
854
855        public boolean hasUse() { 
856          if (this.use == null)
857            return false;
858          for (CodeableConcept item : this.use)
859            if (!item.isEmpty())
860              return true;
861          return false;
862        }
863
864        public CodeableConcept addUse() { //3
865          CodeableConcept t = new CodeableConcept();
866          if (this.use == null)
867            this.use = new ArrayList<CodeableConcept>();
868          this.use.add(t);
869          return t;
870        }
871
872        public DiagnosisComponent addUse(CodeableConcept t) { //3
873          if (t == null)
874            return this;
875          if (this.use == null)
876            this.use = new ArrayList<CodeableConcept>();
877          this.use.add(t);
878          return this;
879        }
880
881        /**
882         * @return The first repetition of repeating field {@link #use}, creating it if it does not already exist {3}
883         */
884        public CodeableConcept getUseFirstRep() { 
885          if (getUse().isEmpty()) {
886            addUse();
887          }
888          return getUse().get(0);
889        }
890
891        protected void listChildren(List<Property> children) {
892          super.listChildren(children);
893          children.add(new Property("condition", "CodeableReference(Condition)", "The coded diagnosis or a reference to a Condition (with other resources referenced in the evidence.detail), the use property will indicate the purpose of this specific diagnosis.", 0, java.lang.Integer.MAX_VALUE, condition));
894          children.add(new Property("use", "CodeableConcept", "Role that this diagnosis has within the encounter (e.g. admission, billing, discharge ?).", 0, java.lang.Integer.MAX_VALUE, use));
895        }
896
897        @Override
898        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
899          switch (_hash) {
900          case -861311717: /*condition*/  return new Property("condition", "CodeableReference(Condition)", "The coded diagnosis or a reference to a Condition (with other resources referenced in the evidence.detail), the use property will indicate the purpose of this specific diagnosis.", 0, java.lang.Integer.MAX_VALUE, condition);
901          case 116103: /*use*/  return new Property("use", "CodeableConcept", "Role that this diagnosis has within the encounter (e.g. admission, billing, discharge ?).", 0, java.lang.Integer.MAX_VALUE, use);
902          default: return super.getNamedProperty(_hash, _name, _checkValid);
903          }
904
905        }
906
907      @Override
908      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
909        switch (hash) {
910        case -861311717: /*condition*/ return this.condition == null ? new Base[0] : this.condition.toArray(new Base[this.condition.size()]); // CodeableReference
911        case 116103: /*use*/ return this.use == null ? new Base[0] : this.use.toArray(new Base[this.use.size()]); // CodeableConcept
912        default: return super.getProperty(hash, name, checkValid);
913        }
914
915      }
916
917      @Override
918      public Base setProperty(int hash, String name, Base value) throws FHIRException {
919        switch (hash) {
920        case -861311717: // condition
921          this.getCondition().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
922          return value;
923        case 116103: // use
924          this.getUse().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
925          return value;
926        default: return super.setProperty(hash, name, value);
927        }
928
929      }
930
931      @Override
932      public Base setProperty(String name, Base value) throws FHIRException {
933        if (name.equals("condition")) {
934          this.getCondition().add(TypeConvertor.castToCodeableReference(value));
935        } else if (name.equals("use")) {
936          this.getUse().add(TypeConvertor.castToCodeableConcept(value));
937        } else
938          return super.setProperty(name, value);
939        return value;
940      }
941
942  @Override
943  public void removeChild(String name, Base value) throws FHIRException {
944        if (name.equals("condition")) {
945          this.getCondition().remove(value);
946        } else if (name.equals("use")) {
947          this.getUse().remove(value);
948        } else
949          super.removeChild(name, value);
950        
951      }
952
953      @Override
954      public Base makeProperty(int hash, String name) throws FHIRException {
955        switch (hash) {
956        case -861311717:  return addCondition(); 
957        case 116103:  return addUse(); 
958        default: return super.makeProperty(hash, name);
959        }
960
961      }
962
963      @Override
964      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
965        switch (hash) {
966        case -861311717: /*condition*/ return new String[] {"CodeableReference"};
967        case 116103: /*use*/ return new String[] {"CodeableConcept"};
968        default: return super.getTypesForProperty(hash, name);
969        }
970
971      }
972
973      @Override
974      public Base addChild(String name) throws FHIRException {
975        if (name.equals("condition")) {
976          return addCondition();
977        }
978        else if (name.equals("use")) {
979          return addUse();
980        }
981        else
982          return super.addChild(name);
983      }
984
985      public DiagnosisComponent copy() {
986        DiagnosisComponent dst = new DiagnosisComponent();
987        copyValues(dst);
988        return dst;
989      }
990
991      public void copyValues(DiagnosisComponent dst) {
992        super.copyValues(dst);
993        if (condition != null) {
994          dst.condition = new ArrayList<CodeableReference>();
995          for (CodeableReference i : condition)
996            dst.condition.add(i.copy());
997        };
998        if (use != null) {
999          dst.use = new ArrayList<CodeableConcept>();
1000          for (CodeableConcept i : use)
1001            dst.use.add(i.copy());
1002        };
1003      }
1004
1005      @Override
1006      public boolean equalsDeep(Base other_) {
1007        if (!super.equalsDeep(other_))
1008          return false;
1009        if (!(other_ instanceof DiagnosisComponent))
1010          return false;
1011        DiagnosisComponent o = (DiagnosisComponent) other_;
1012        return compareDeep(condition, o.condition, true) && compareDeep(use, o.use, true);
1013      }
1014
1015      @Override
1016      public boolean equalsShallow(Base other_) {
1017        if (!super.equalsShallow(other_))
1018          return false;
1019        if (!(other_ instanceof DiagnosisComponent))
1020          return false;
1021        DiagnosisComponent o = (DiagnosisComponent) other_;
1022        return true;
1023      }
1024
1025      public boolean isEmpty() {
1026        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(condition, use);
1027      }
1028
1029  public String fhirType() {
1030    return "Encounter.diagnosis";
1031
1032  }
1033
1034  }
1035
1036    @Block()
1037    public static class EncounterAdmissionComponent extends BackboneElement implements IBaseBackboneElement {
1038        /**
1039         * Pre-admission identifier.
1040         */
1041        @Child(name = "preAdmissionIdentifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=false)
1042        @Description(shortDefinition="Pre-admission identifier", formalDefinition="Pre-admission identifier." )
1043        protected Identifier preAdmissionIdentifier;
1044
1045        /**
1046         * The location/organization from which the patient came before admission.
1047         */
1048        @Child(name = "origin", type = {Location.class, Organization.class}, order=2, min=0, max=1, modifier=false, summary=false)
1049        @Description(shortDefinition="The location/organization from which the patient came before admission", formalDefinition="The location/organization from which the patient came before admission." )
1050        protected Reference origin;
1051
1052        /**
1053         * From where patient was admitted (physician referral, transfer).
1054         */
1055        @Child(name = "admitSource", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1056        @Description(shortDefinition="From where patient was admitted (physician referral, transfer)", formalDefinition="From where patient was admitted (physician referral, transfer)." )
1057        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-admit-source")
1058        protected CodeableConcept admitSource;
1059
1060        /**
1061         * Indicates that this encounter is directly related to a prior admission, often because the conditions addressed in the prior admission were not fully addressed.
1062         */
1063        @Child(name = "reAdmission", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
1064        @Description(shortDefinition="Indicates that the patient is being re-admitted", formalDefinition="Indicates that this encounter is directly related to a prior admission, often because the conditions addressed in the prior admission were not fully addressed." )
1065        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v2-0092")
1066        protected CodeableConcept reAdmission;
1067
1068        /**
1069         * Location/organization to which the patient is discharged.
1070         */
1071        @Child(name = "destination", type = {Location.class, Organization.class}, order=5, min=0, max=1, modifier=false, summary=false)
1072        @Description(shortDefinition="Location/organization to which the patient is discharged", formalDefinition="Location/organization to which the patient is discharged." )
1073        protected Reference destination;
1074
1075        /**
1076         * Category or kind of location after discharge.
1077         */
1078        @Child(name = "dischargeDisposition", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=false)
1079        @Description(shortDefinition="Category or kind of location after discharge", formalDefinition="Category or kind of location after discharge." )
1080        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-discharge-disposition")
1081        protected CodeableConcept dischargeDisposition;
1082
1083        private static final long serialVersionUID = -1702856594L;
1084
1085    /**
1086     * Constructor
1087     */
1088      public EncounterAdmissionComponent() {
1089        super();
1090      }
1091
1092        /**
1093         * @return {@link #preAdmissionIdentifier} (Pre-admission identifier.)
1094         */
1095        public Identifier getPreAdmissionIdentifier() { 
1096          if (this.preAdmissionIdentifier == null)
1097            if (Configuration.errorOnAutoCreate())
1098              throw new Error("Attempt to auto-create EncounterAdmissionComponent.preAdmissionIdentifier");
1099            else if (Configuration.doAutoCreate())
1100              this.preAdmissionIdentifier = new Identifier(); // cc
1101          return this.preAdmissionIdentifier;
1102        }
1103
1104        public boolean hasPreAdmissionIdentifier() { 
1105          return this.preAdmissionIdentifier != null && !this.preAdmissionIdentifier.isEmpty();
1106        }
1107
1108        /**
1109         * @param value {@link #preAdmissionIdentifier} (Pre-admission identifier.)
1110         */
1111        public EncounterAdmissionComponent setPreAdmissionIdentifier(Identifier value) { 
1112          this.preAdmissionIdentifier = value;
1113          return this;
1114        }
1115
1116        /**
1117         * @return {@link #origin} (The location/organization from which the patient came before admission.)
1118         */
1119        public Reference getOrigin() { 
1120          if (this.origin == null)
1121            if (Configuration.errorOnAutoCreate())
1122              throw new Error("Attempt to auto-create EncounterAdmissionComponent.origin");
1123            else if (Configuration.doAutoCreate())
1124              this.origin = new Reference(); // cc
1125          return this.origin;
1126        }
1127
1128        public boolean hasOrigin() { 
1129          return this.origin != null && !this.origin.isEmpty();
1130        }
1131
1132        /**
1133         * @param value {@link #origin} (The location/organization from which the patient came before admission.)
1134         */
1135        public EncounterAdmissionComponent setOrigin(Reference value) { 
1136          this.origin = value;
1137          return this;
1138        }
1139
1140        /**
1141         * @return {@link #admitSource} (From where patient was admitted (physician referral, transfer).)
1142         */
1143        public CodeableConcept getAdmitSource() { 
1144          if (this.admitSource == null)
1145            if (Configuration.errorOnAutoCreate())
1146              throw new Error("Attempt to auto-create EncounterAdmissionComponent.admitSource");
1147            else if (Configuration.doAutoCreate())
1148              this.admitSource = new CodeableConcept(); // cc
1149          return this.admitSource;
1150        }
1151
1152        public boolean hasAdmitSource() { 
1153          return this.admitSource != null && !this.admitSource.isEmpty();
1154        }
1155
1156        /**
1157         * @param value {@link #admitSource} (From where patient was admitted (physician referral, transfer).)
1158         */
1159        public EncounterAdmissionComponent setAdmitSource(CodeableConcept value) { 
1160          this.admitSource = value;
1161          return this;
1162        }
1163
1164        /**
1165         * @return {@link #reAdmission} (Indicates that this encounter is directly related to a prior admission, often because the conditions addressed in the prior admission were not fully addressed.)
1166         */
1167        public CodeableConcept getReAdmission() { 
1168          if (this.reAdmission == null)
1169            if (Configuration.errorOnAutoCreate())
1170              throw new Error("Attempt to auto-create EncounterAdmissionComponent.reAdmission");
1171            else if (Configuration.doAutoCreate())
1172              this.reAdmission = new CodeableConcept(); // cc
1173          return this.reAdmission;
1174        }
1175
1176        public boolean hasReAdmission() { 
1177          return this.reAdmission != null && !this.reAdmission.isEmpty();
1178        }
1179
1180        /**
1181         * @param value {@link #reAdmission} (Indicates that this encounter is directly related to a prior admission, often because the conditions addressed in the prior admission were not fully addressed.)
1182         */
1183        public EncounterAdmissionComponent setReAdmission(CodeableConcept value) { 
1184          this.reAdmission = value;
1185          return this;
1186        }
1187
1188        /**
1189         * @return {@link #destination} (Location/organization to which the patient is discharged.)
1190         */
1191        public Reference getDestination() { 
1192          if (this.destination == null)
1193            if (Configuration.errorOnAutoCreate())
1194              throw new Error("Attempt to auto-create EncounterAdmissionComponent.destination");
1195            else if (Configuration.doAutoCreate())
1196              this.destination = new Reference(); // cc
1197          return this.destination;
1198        }
1199
1200        public boolean hasDestination() { 
1201          return this.destination != null && !this.destination.isEmpty();
1202        }
1203
1204        /**
1205         * @param value {@link #destination} (Location/organization to which the patient is discharged.)
1206         */
1207        public EncounterAdmissionComponent setDestination(Reference value) { 
1208          this.destination = value;
1209          return this;
1210        }
1211
1212        /**
1213         * @return {@link #dischargeDisposition} (Category or kind of location after discharge.)
1214         */
1215        public CodeableConcept getDischargeDisposition() { 
1216          if (this.dischargeDisposition == null)
1217            if (Configuration.errorOnAutoCreate())
1218              throw new Error("Attempt to auto-create EncounterAdmissionComponent.dischargeDisposition");
1219            else if (Configuration.doAutoCreate())
1220              this.dischargeDisposition = new CodeableConcept(); // cc
1221          return this.dischargeDisposition;
1222        }
1223
1224        public boolean hasDischargeDisposition() { 
1225          return this.dischargeDisposition != null && !this.dischargeDisposition.isEmpty();
1226        }
1227
1228        /**
1229         * @param value {@link #dischargeDisposition} (Category or kind of location after discharge.)
1230         */
1231        public EncounterAdmissionComponent setDischargeDisposition(CodeableConcept value) { 
1232          this.dischargeDisposition = value;
1233          return this;
1234        }
1235
1236        protected void listChildren(List<Property> children) {
1237          super.listChildren(children);
1238          children.add(new Property("preAdmissionIdentifier", "Identifier", "Pre-admission identifier.", 0, 1, preAdmissionIdentifier));
1239          children.add(new Property("origin", "Reference(Location|Organization)", "The location/organization from which the patient came before admission.", 0, 1, origin));
1240          children.add(new Property("admitSource", "CodeableConcept", "From where patient was admitted (physician referral, transfer).", 0, 1, admitSource));
1241          children.add(new Property("reAdmission", "CodeableConcept", "Indicates that this encounter is directly related to a prior admission, often because the conditions addressed in the prior admission were not fully addressed.", 0, 1, reAdmission));
1242          children.add(new Property("destination", "Reference(Location|Organization)", "Location/organization to which the patient is discharged.", 0, 1, destination));
1243          children.add(new Property("dischargeDisposition", "CodeableConcept", "Category or kind of location after discharge.", 0, 1, dischargeDisposition));
1244        }
1245
1246        @Override
1247        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1248          switch (_hash) {
1249          case -965394961: /*preAdmissionIdentifier*/  return new Property("preAdmissionIdentifier", "Identifier", "Pre-admission identifier.", 0, 1, preAdmissionIdentifier);
1250          case -1008619738: /*origin*/  return new Property("origin", "Reference(Location|Organization)", "The location/organization from which the patient came before admission.", 0, 1, origin);
1251          case 538887120: /*admitSource*/  return new Property("admitSource", "CodeableConcept", "From where patient was admitted (physician referral, transfer).", 0, 1, admitSource);
1252          case 669348630: /*reAdmission*/  return new Property("reAdmission", "CodeableConcept", "Indicates that this encounter is directly related to a prior admission, often because the conditions addressed in the prior admission were not fully addressed.", 0, 1, reAdmission);
1253          case -1429847026: /*destination*/  return new Property("destination", "Reference(Location|Organization)", "Location/organization to which the patient is discharged.", 0, 1, destination);
1254          case 528065941: /*dischargeDisposition*/  return new Property("dischargeDisposition", "CodeableConcept", "Category or kind of location after discharge.", 0, 1, dischargeDisposition);
1255          default: return super.getNamedProperty(_hash, _name, _checkValid);
1256          }
1257
1258        }
1259
1260      @Override
1261      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1262        switch (hash) {
1263        case -965394961: /*preAdmissionIdentifier*/ return this.preAdmissionIdentifier == null ? new Base[0] : new Base[] {this.preAdmissionIdentifier}; // Identifier
1264        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : new Base[] {this.origin}; // Reference
1265        case 538887120: /*admitSource*/ return this.admitSource == null ? new Base[0] : new Base[] {this.admitSource}; // CodeableConcept
1266        case 669348630: /*reAdmission*/ return this.reAdmission == null ? new Base[0] : new Base[] {this.reAdmission}; // CodeableConcept
1267        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : new Base[] {this.destination}; // Reference
1268        case 528065941: /*dischargeDisposition*/ return this.dischargeDisposition == null ? new Base[0] : new Base[] {this.dischargeDisposition}; // CodeableConcept
1269        default: return super.getProperty(hash, name, checkValid);
1270        }
1271
1272      }
1273
1274      @Override
1275      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1276        switch (hash) {
1277        case -965394961: // preAdmissionIdentifier
1278          this.preAdmissionIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1279          return value;
1280        case -1008619738: // origin
1281          this.origin = TypeConvertor.castToReference(value); // Reference
1282          return value;
1283        case 538887120: // admitSource
1284          this.admitSource = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1285          return value;
1286        case 669348630: // reAdmission
1287          this.reAdmission = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1288          return value;
1289        case -1429847026: // destination
1290          this.destination = TypeConvertor.castToReference(value); // Reference
1291          return value;
1292        case 528065941: // dischargeDisposition
1293          this.dischargeDisposition = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1294          return value;
1295        default: return super.setProperty(hash, name, value);
1296        }
1297
1298      }
1299
1300      @Override
1301      public Base setProperty(String name, Base value) throws FHIRException {
1302        if (name.equals("preAdmissionIdentifier")) {
1303          this.preAdmissionIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1304        } else if (name.equals("origin")) {
1305          this.origin = TypeConvertor.castToReference(value); // Reference
1306        } else if (name.equals("admitSource")) {
1307          this.admitSource = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1308        } else if (name.equals("reAdmission")) {
1309          this.reAdmission = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1310        } else if (name.equals("destination")) {
1311          this.destination = TypeConvertor.castToReference(value); // Reference
1312        } else if (name.equals("dischargeDisposition")) {
1313          this.dischargeDisposition = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1314        } else
1315          return super.setProperty(name, value);
1316        return value;
1317      }
1318
1319  @Override
1320  public void removeChild(String name, Base value) throws FHIRException {
1321        if (name.equals("preAdmissionIdentifier")) {
1322          this.preAdmissionIdentifier = null;
1323        } else if (name.equals("origin")) {
1324          this.origin = null;
1325        } else if (name.equals("admitSource")) {
1326          this.admitSource = null;
1327        } else if (name.equals("reAdmission")) {
1328          this.reAdmission = null;
1329        } else if (name.equals("destination")) {
1330          this.destination = null;
1331        } else if (name.equals("dischargeDisposition")) {
1332          this.dischargeDisposition = null;
1333        } else
1334          super.removeChild(name, value);
1335        
1336      }
1337
1338      @Override
1339      public Base makeProperty(int hash, String name) throws FHIRException {
1340        switch (hash) {
1341        case -965394961:  return getPreAdmissionIdentifier();
1342        case -1008619738:  return getOrigin();
1343        case 538887120:  return getAdmitSource();
1344        case 669348630:  return getReAdmission();
1345        case -1429847026:  return getDestination();
1346        case 528065941:  return getDischargeDisposition();
1347        default: return super.makeProperty(hash, name);
1348        }
1349
1350      }
1351
1352      @Override
1353      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1354        switch (hash) {
1355        case -965394961: /*preAdmissionIdentifier*/ return new String[] {"Identifier"};
1356        case -1008619738: /*origin*/ return new String[] {"Reference"};
1357        case 538887120: /*admitSource*/ return new String[] {"CodeableConcept"};
1358        case 669348630: /*reAdmission*/ return new String[] {"CodeableConcept"};
1359        case -1429847026: /*destination*/ return new String[] {"Reference"};
1360        case 528065941: /*dischargeDisposition*/ return new String[] {"CodeableConcept"};
1361        default: return super.getTypesForProperty(hash, name);
1362        }
1363
1364      }
1365
1366      @Override
1367      public Base addChild(String name) throws FHIRException {
1368        if (name.equals("preAdmissionIdentifier")) {
1369          this.preAdmissionIdentifier = new Identifier();
1370          return this.preAdmissionIdentifier;
1371        }
1372        else if (name.equals("origin")) {
1373          this.origin = new Reference();
1374          return this.origin;
1375        }
1376        else if (name.equals("admitSource")) {
1377          this.admitSource = new CodeableConcept();
1378          return this.admitSource;
1379        }
1380        else if (name.equals("reAdmission")) {
1381          this.reAdmission = new CodeableConcept();
1382          return this.reAdmission;
1383        }
1384        else if (name.equals("destination")) {
1385          this.destination = new Reference();
1386          return this.destination;
1387        }
1388        else if (name.equals("dischargeDisposition")) {
1389          this.dischargeDisposition = new CodeableConcept();
1390          return this.dischargeDisposition;
1391        }
1392        else
1393          return super.addChild(name);
1394      }
1395
1396      public EncounterAdmissionComponent copy() {
1397        EncounterAdmissionComponent dst = new EncounterAdmissionComponent();
1398        copyValues(dst);
1399        return dst;
1400      }
1401
1402      public void copyValues(EncounterAdmissionComponent dst) {
1403        super.copyValues(dst);
1404        dst.preAdmissionIdentifier = preAdmissionIdentifier == null ? null : preAdmissionIdentifier.copy();
1405        dst.origin = origin == null ? null : origin.copy();
1406        dst.admitSource = admitSource == null ? null : admitSource.copy();
1407        dst.reAdmission = reAdmission == null ? null : reAdmission.copy();
1408        dst.destination = destination == null ? null : destination.copy();
1409        dst.dischargeDisposition = dischargeDisposition == null ? null : dischargeDisposition.copy();
1410      }
1411
1412      @Override
1413      public boolean equalsDeep(Base other_) {
1414        if (!super.equalsDeep(other_))
1415          return false;
1416        if (!(other_ instanceof EncounterAdmissionComponent))
1417          return false;
1418        EncounterAdmissionComponent o = (EncounterAdmissionComponent) other_;
1419        return compareDeep(preAdmissionIdentifier, o.preAdmissionIdentifier, true) && compareDeep(origin, o.origin, true)
1420           && compareDeep(admitSource, o.admitSource, true) && compareDeep(reAdmission, o.reAdmission, true)
1421           && compareDeep(destination, o.destination, true) && compareDeep(dischargeDisposition, o.dischargeDisposition, true)
1422          ;
1423      }
1424
1425      @Override
1426      public boolean equalsShallow(Base other_) {
1427        if (!super.equalsShallow(other_))
1428          return false;
1429        if (!(other_ instanceof EncounterAdmissionComponent))
1430          return false;
1431        EncounterAdmissionComponent o = (EncounterAdmissionComponent) other_;
1432        return true;
1433      }
1434
1435      public boolean isEmpty() {
1436        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(preAdmissionIdentifier, origin
1437          , admitSource, reAdmission, destination, dischargeDisposition);
1438      }
1439
1440  public String fhirType() {
1441    return "Encounter.admission";
1442
1443  }
1444
1445  }
1446
1447    @Block()
1448    public static class EncounterLocationComponent extends BackboneElement implements IBaseBackboneElement {
1449        /**
1450         * The location where the encounter takes place.
1451         */
1452        @Child(name = "location", type = {Location.class}, order=1, min=1, max=1, modifier=false, summary=false)
1453        @Description(shortDefinition="Location the encounter takes place", formalDefinition="The location where the encounter takes place." )
1454        protected Reference location;
1455
1456        /**
1457         * The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.
1458         */
1459        @Child(name = "status", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1460        @Description(shortDefinition="planned | active | reserved | completed", formalDefinition="The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time." )
1461        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-location-status")
1462        protected Enumeration<EncounterLocationStatus> status;
1463
1464        /**
1465         * This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query.
1466         */
1467        @Child(name = "form", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1468        @Description(shortDefinition="The physical type of the location (usually the level in the location hierarchy - bed, room, ward, virtual etc.)", formalDefinition="This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query." )
1469        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/location-form")
1470        protected CodeableConcept form;
1471
1472        /**
1473         * Time period during which the patient was present at the location.
1474         */
1475        @Child(name = "period", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=false)
1476        @Description(shortDefinition="Time period during which the patient was present at the location", formalDefinition="Time period during which the patient was present at the location." )
1477        protected Period period;
1478
1479        private static final long serialVersionUID = -1665957440L;
1480
1481    /**
1482     * Constructor
1483     */
1484      public EncounterLocationComponent() {
1485        super();
1486      }
1487
1488    /**
1489     * Constructor
1490     */
1491      public EncounterLocationComponent(Reference location) {
1492        super();
1493        this.setLocation(location);
1494      }
1495
1496        /**
1497         * @return {@link #location} (The location where the encounter takes place.)
1498         */
1499        public Reference getLocation() { 
1500          if (this.location == null)
1501            if (Configuration.errorOnAutoCreate())
1502              throw new Error("Attempt to auto-create EncounterLocationComponent.location");
1503            else if (Configuration.doAutoCreate())
1504              this.location = new Reference(); // cc
1505          return this.location;
1506        }
1507
1508        public boolean hasLocation() { 
1509          return this.location != null && !this.location.isEmpty();
1510        }
1511
1512        /**
1513         * @param value {@link #location} (The location where the encounter takes place.)
1514         */
1515        public EncounterLocationComponent setLocation(Reference value) { 
1516          this.location = value;
1517          return this;
1518        }
1519
1520        /**
1521         * @return {@link #status} (The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1522         */
1523        public Enumeration<EncounterLocationStatus> getStatusElement() { 
1524          if (this.status == null)
1525            if (Configuration.errorOnAutoCreate())
1526              throw new Error("Attempt to auto-create EncounterLocationComponent.status");
1527            else if (Configuration.doAutoCreate())
1528              this.status = new Enumeration<EncounterLocationStatus>(new EncounterLocationStatusEnumFactory()); // bb
1529          return this.status;
1530        }
1531
1532        public boolean hasStatusElement() { 
1533          return this.status != null && !this.status.isEmpty();
1534        }
1535
1536        public boolean hasStatus() { 
1537          return this.status != null && !this.status.isEmpty();
1538        }
1539
1540        /**
1541         * @param value {@link #status} (The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1542         */
1543        public EncounterLocationComponent setStatusElement(Enumeration<EncounterLocationStatus> value) { 
1544          this.status = value;
1545          return this;
1546        }
1547
1548        /**
1549         * @return The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.
1550         */
1551        public EncounterLocationStatus getStatus() { 
1552          return this.status == null ? null : this.status.getValue();
1553        }
1554
1555        /**
1556         * @param value The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.
1557         */
1558        public EncounterLocationComponent setStatus(EncounterLocationStatus value) { 
1559          if (value == null)
1560            this.status = null;
1561          else {
1562            if (this.status == null)
1563              this.status = new Enumeration<EncounterLocationStatus>(new EncounterLocationStatusEnumFactory());
1564            this.status.setValue(value);
1565          }
1566          return this;
1567        }
1568
1569        /**
1570         * @return {@link #form} (This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query.)
1571         */
1572        public CodeableConcept getForm() { 
1573          if (this.form == null)
1574            if (Configuration.errorOnAutoCreate())
1575              throw new Error("Attempt to auto-create EncounterLocationComponent.form");
1576            else if (Configuration.doAutoCreate())
1577              this.form = new CodeableConcept(); // cc
1578          return this.form;
1579        }
1580
1581        public boolean hasForm() { 
1582          return this.form != null && !this.form.isEmpty();
1583        }
1584
1585        /**
1586         * @param value {@link #form} (This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query.)
1587         */
1588        public EncounterLocationComponent setForm(CodeableConcept value) { 
1589          this.form = value;
1590          return this;
1591        }
1592
1593        /**
1594         * @return {@link #period} (Time period during which the patient was present at the location.)
1595         */
1596        public Period getPeriod() { 
1597          if (this.period == null)
1598            if (Configuration.errorOnAutoCreate())
1599              throw new Error("Attempt to auto-create EncounterLocationComponent.period");
1600            else if (Configuration.doAutoCreate())
1601              this.period = new Period(); // cc
1602          return this.period;
1603        }
1604
1605        public boolean hasPeriod() { 
1606          return this.period != null && !this.period.isEmpty();
1607        }
1608
1609        /**
1610         * @param value {@link #period} (Time period during which the patient was present at the location.)
1611         */
1612        public EncounterLocationComponent setPeriod(Period value) { 
1613          this.period = value;
1614          return this;
1615        }
1616
1617        protected void listChildren(List<Property> children) {
1618          super.listChildren(children);
1619          children.add(new Property("location", "Reference(Location)", "The location where the encounter takes place.", 0, 1, location));
1620          children.add(new Property("status", "code", "The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.", 0, 1, status));
1621          children.add(new Property("form", "CodeableConcept", "This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query.", 0, 1, form));
1622          children.add(new Property("period", "Period", "Time period during which the patient was present at the location.", 0, 1, period));
1623        }
1624
1625        @Override
1626        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1627          switch (_hash) {
1628          case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "The location where the encounter takes place.", 0, 1, location);
1629          case -892481550: /*status*/  return new Property("status", "code", "The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time.", 0, 1, status);
1630          case 3148996: /*form*/  return new Property("form", "CodeableConcept", "This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query.", 0, 1, form);
1631          case -991726143: /*period*/  return new Property("period", "Period", "Time period during which the patient was present at the location.", 0, 1, period);
1632          default: return super.getNamedProperty(_hash, _name, _checkValid);
1633          }
1634
1635        }
1636
1637      @Override
1638      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1639        switch (hash) {
1640        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
1641        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<EncounterLocationStatus>
1642        case 3148996: /*form*/ return this.form == null ? new Base[0] : new Base[] {this.form}; // CodeableConcept
1643        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
1644        default: return super.getProperty(hash, name, checkValid);
1645        }
1646
1647      }
1648
1649      @Override
1650      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1651        switch (hash) {
1652        case 1901043637: // location
1653          this.location = TypeConvertor.castToReference(value); // Reference
1654          return value;
1655        case -892481550: // status
1656          value = new EncounterLocationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1657          this.status = (Enumeration) value; // Enumeration<EncounterLocationStatus>
1658          return value;
1659        case 3148996: // form
1660          this.form = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1661          return value;
1662        case -991726143: // period
1663          this.period = TypeConvertor.castToPeriod(value); // Period
1664          return value;
1665        default: return super.setProperty(hash, name, value);
1666        }
1667
1668      }
1669
1670      @Override
1671      public Base setProperty(String name, Base value) throws FHIRException {
1672        if (name.equals("location")) {
1673          this.location = TypeConvertor.castToReference(value); // Reference
1674        } else if (name.equals("status")) {
1675          value = new EncounterLocationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1676          this.status = (Enumeration) value; // Enumeration<EncounterLocationStatus>
1677        } else if (name.equals("form")) {
1678          this.form = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1679        } else if (name.equals("period")) {
1680          this.period = TypeConvertor.castToPeriod(value); // Period
1681        } else
1682          return super.setProperty(name, value);
1683        return value;
1684      }
1685
1686  @Override
1687  public void removeChild(String name, Base value) throws FHIRException {
1688        if (name.equals("location")) {
1689          this.location = null;
1690        } else if (name.equals("status")) {
1691          value = new EncounterLocationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1692          this.status = (Enumeration) value; // Enumeration<EncounterLocationStatus>
1693        } else if (name.equals("form")) {
1694          this.form = null;
1695        } else if (name.equals("period")) {
1696          this.period = null;
1697        } else
1698          super.removeChild(name, value);
1699        
1700      }
1701
1702      @Override
1703      public Base makeProperty(int hash, String name) throws FHIRException {
1704        switch (hash) {
1705        case 1901043637:  return getLocation();
1706        case -892481550:  return getStatusElement();
1707        case 3148996:  return getForm();
1708        case -991726143:  return getPeriod();
1709        default: return super.makeProperty(hash, name);
1710        }
1711
1712      }
1713
1714      @Override
1715      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1716        switch (hash) {
1717        case 1901043637: /*location*/ return new String[] {"Reference"};
1718        case -892481550: /*status*/ return new String[] {"code"};
1719        case 3148996: /*form*/ return new String[] {"CodeableConcept"};
1720        case -991726143: /*period*/ return new String[] {"Period"};
1721        default: return super.getTypesForProperty(hash, name);
1722        }
1723
1724      }
1725
1726      @Override
1727      public Base addChild(String name) throws FHIRException {
1728        if (name.equals("location")) {
1729          this.location = new Reference();
1730          return this.location;
1731        }
1732        else if (name.equals("status")) {
1733          throw new FHIRException("Cannot call addChild on a singleton property Encounter.location.status");
1734        }
1735        else if (name.equals("form")) {
1736          this.form = new CodeableConcept();
1737          return this.form;
1738        }
1739        else if (name.equals("period")) {
1740          this.period = new Period();
1741          return this.period;
1742        }
1743        else
1744          return super.addChild(name);
1745      }
1746
1747      public EncounterLocationComponent copy() {
1748        EncounterLocationComponent dst = new EncounterLocationComponent();
1749        copyValues(dst);
1750        return dst;
1751      }
1752
1753      public void copyValues(EncounterLocationComponent dst) {
1754        super.copyValues(dst);
1755        dst.location = location == null ? null : location.copy();
1756        dst.status = status == null ? null : status.copy();
1757        dst.form = form == null ? null : form.copy();
1758        dst.period = period == null ? null : period.copy();
1759      }
1760
1761      @Override
1762      public boolean equalsDeep(Base other_) {
1763        if (!super.equalsDeep(other_))
1764          return false;
1765        if (!(other_ instanceof EncounterLocationComponent))
1766          return false;
1767        EncounterLocationComponent o = (EncounterLocationComponent) other_;
1768        return compareDeep(location, o.location, true) && compareDeep(status, o.status, true) && compareDeep(form, o.form, true)
1769           && compareDeep(period, o.period, true);
1770      }
1771
1772      @Override
1773      public boolean equalsShallow(Base other_) {
1774        if (!super.equalsShallow(other_))
1775          return false;
1776        if (!(other_ instanceof EncounterLocationComponent))
1777          return false;
1778        EncounterLocationComponent o = (EncounterLocationComponent) other_;
1779        return compareValues(status, o.status, true);
1780      }
1781
1782      public boolean isEmpty() {
1783        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(location, status, form, period
1784          );
1785      }
1786
1787  public String fhirType() {
1788    return "Encounter.location";
1789
1790  }
1791
1792  }
1793
1794    /**
1795     * Identifier(s) by which this encounter is known.
1796     */
1797    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1798    @Description(shortDefinition="Identifier(s) by which this encounter is known", formalDefinition="Identifier(s) by which this encounter is known." )
1799    protected List<Identifier> identifier;
1800
1801    /**
1802     * The current state of the encounter (not the state of the patient within the encounter - that is subjectState).
1803     */
1804    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
1805    @Description(shortDefinition="planned | in-progress | on-hold | discharged | completed | cancelled | discontinued | entered-in-error | unknown", formalDefinition="The current state of the encounter (not the state of the patient within the encounter - that is subjectState)." )
1806    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-status")
1807    protected Enumeration<EncounterStatus> status;
1808
1809    /**
1810     * Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations.
1811     */
1812    @Child(name = "class", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1813    @Description(shortDefinition="Classification of patient encounter context - e.g. Inpatient, outpatient", formalDefinition="Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations." )
1814    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/encounter-class")
1815    protected List<CodeableConcept> class_;
1816
1817    /**
1818     * Indicates the urgency of the encounter.
1819     */
1820    @Child(name = "priority", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1821    @Description(shortDefinition="Indicates the urgency of the encounter", formalDefinition="Indicates the urgency of the encounter." )
1822    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-ActPriority")
1823    protected CodeableConcept priority;
1824
1825    /**
1826     * Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation).
1827     */
1828    @Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1829    @Description(shortDefinition="Specific type of encounter (e.g. e-mail consultation, surgical day-care, ...)", formalDefinition="Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation)." )
1830    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-type")
1831    protected List<CodeableConcept> type;
1832
1833    /**
1834     * Broad categorization of the service that is to be provided (e.g. cardiology).
1835     */
1836    @Child(name = "serviceType", type = {CodeableReference.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1837    @Description(shortDefinition="Specific type of service", formalDefinition="Broad categorization of the service that is to be provided (e.g. cardiology)." )
1838    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-type")
1839    protected List<CodeableReference> serviceType;
1840
1841    /**
1842     * The patient or group related to this encounter. In some use-cases the patient MAY not be present, such as a case meeting about a patient between several practitioners or a careteam.
1843     */
1844    @Child(name = "subject", type = {Patient.class, Group.class}, order=6, min=0, max=1, modifier=false, summary=true)
1845    @Description(shortDefinition="The patient or group related to this encounter", formalDefinition="The patient or group related to this encounter. In some use-cases the patient MAY not be present, such as a case meeting about a patient between several practitioners or a careteam." )
1846    protected Reference subject;
1847
1848    /**
1849     * The subjectStatus value can be used to track the patient's status within the encounter. It details whether the patient has arrived or departed, has been triaged or is currently in a waiting status.
1850     */
1851    @Child(name = "subjectStatus", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=false)
1852    @Description(shortDefinition="The current status of the subject in relation to the Encounter", formalDefinition="The subjectStatus value can be used to track the patient's status within the encounter. It details whether the patient has arrived or departed, has been triaged or is currently in a waiting status." )
1853    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-subject-status")
1854    protected CodeableConcept subjectStatus;
1855
1856    /**
1857     * Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as government reporting, issue tracking, association via a common problem.  The association is recorded on the encounter as these are typically created after the episode of care and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years).
1858     */
1859    @Child(name = "episodeOfCare", type = {EpisodeOfCare.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1860    @Description(shortDefinition="Episode(s) of care that this encounter should be recorded against", formalDefinition="Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as government reporting, issue tracking, association via a common problem.  The association is recorded on the encounter as these are typically created after the episode of care and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years)." )
1861    protected List<Reference> episodeOfCare;
1862
1863    /**
1864     * The request this encounter satisfies (e.g. incoming referral or procedure request).
1865     */
1866    @Child(name = "basedOn", type = {CarePlan.class, DeviceRequest.class, MedicationRequest.class, ServiceRequest.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1867    @Description(shortDefinition="The request that initiated this encounter", formalDefinition="The request this encounter satisfies (e.g. incoming referral or procedure request)." )
1868    protected List<Reference> basedOn;
1869
1870    /**
1871     * The group(s) of individuals, organizations that are allocated to participate in this encounter. The participants backbone will record the actuals of when these individuals participated during the encounter.
1872     */
1873    @Child(name = "careTeam", type = {CareTeam.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1874    @Description(shortDefinition="The group(s) that are allocated to participate in this encounter", formalDefinition="The group(s) of individuals, organizations that are allocated to participate in this encounter. The participants backbone will record the actuals of when these individuals participated during the encounter." )
1875    protected List<Reference> careTeam;
1876
1877    /**
1878     * Another Encounter of which this encounter is a part of (administratively or in time).
1879     */
1880    @Child(name = "partOf", type = {Encounter.class}, order=11, min=0, max=1, modifier=false, summary=false)
1881    @Description(shortDefinition="Another Encounter this encounter is part of", formalDefinition="Another Encounter of which this encounter is a part of (administratively or in time)." )
1882    protected Reference partOf;
1883
1884    /**
1885     * The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the colonoscopy example on the Encounter examples tab.
1886     */
1887    @Child(name = "serviceProvider", type = {Organization.class}, order=12, min=0, max=1, modifier=false, summary=false)
1888    @Description(shortDefinition="The organization (facility) responsible for this encounter", formalDefinition="The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the colonoscopy example on the Encounter examples tab." )
1889    protected Reference serviceProvider;
1890
1891    /**
1892     * The list of people responsible for providing the service.
1893     */
1894    @Child(name = "participant", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1895    @Description(shortDefinition="List of participants involved in the encounter", formalDefinition="The list of people responsible for providing the service." )
1896    protected List<EncounterParticipantComponent> participant;
1897
1898    /**
1899     * The appointment that scheduled this encounter.
1900     */
1901    @Child(name = "appointment", type = {Appointment.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1902    @Description(shortDefinition="The appointment that scheduled this encounter", formalDefinition="The appointment that scheduled this encounter." )
1903    protected List<Reference> appointment;
1904
1905    /**
1906     * Connection details of a virtual service (e.g. conference call).
1907     */
1908    @Child(name = "virtualService", type = {VirtualServiceDetail.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1909    @Description(shortDefinition="Connection details of a virtual service (e.g. conference call)", formalDefinition="Connection details of a virtual service (e.g. conference call)." )
1910    protected List<VirtualServiceDetail> virtualService;
1911
1912    /**
1913     * The actual start and end time of the encounter.
1914     */
1915    @Child(name = "actualPeriod", type = {Period.class}, order=16, min=0, max=1, modifier=false, summary=false)
1916    @Description(shortDefinition="The actual start and end time of the encounter", formalDefinition="The actual start and end time of the encounter." )
1917    protected Period actualPeriod;
1918
1919    /**
1920     * The planned start date/time (or admission date) of the encounter.
1921     */
1922    @Child(name = "plannedStartDate", type = {DateTimeType.class}, order=17, min=0, max=1, modifier=false, summary=false)
1923    @Description(shortDefinition="The planned start date/time (or admission date) of the encounter", formalDefinition="The planned start date/time (or admission date) of the encounter." )
1924    protected DateTimeType plannedStartDate;
1925
1926    /**
1927     * The planned end date/time (or discharge date) of the encounter.
1928     */
1929    @Child(name = "plannedEndDate", type = {DateTimeType.class}, order=18, min=0, max=1, modifier=false, summary=false)
1930    @Description(shortDefinition="The planned end date/time (or discharge date) of the encounter", formalDefinition="The planned end date/time (or discharge date) of the encounter." )
1931    protected DateTimeType plannedEndDate;
1932
1933    /**
1934     * Actual quantity of time the encounter lasted. This excludes the time during leaves of absence.
1935
1936When missing it is the time in between the start and end values.
1937     */
1938    @Child(name = "length", type = {Duration.class}, order=19, min=0, max=1, modifier=false, summary=false)
1939    @Description(shortDefinition="Actual quantity of time the encounter lasted (less time absent)", formalDefinition="Actual quantity of time the encounter lasted. This excludes the time during leaves of absence.\r\rWhen missing it is the time in between the start and end values." )
1940    protected Duration length;
1941
1942    /**
1943     * The list of medical reasons that are expected to be addressed during the episode of care.
1944     */
1945    @Child(name = "reason", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1946    @Description(shortDefinition="The list of medical reasons that are expected to be addressed during the episode of care", formalDefinition="The list of medical reasons that are expected to be addressed during the episode of care." )
1947    protected List<ReasonComponent> reason;
1948
1949    /**
1950     * The list of diagnosis relevant to this encounter.
1951     */
1952    @Child(name = "diagnosis", type = {}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1953    @Description(shortDefinition="The list of diagnosis relevant to this encounter", formalDefinition="The list of diagnosis relevant to this encounter." )
1954    protected List<DiagnosisComponent> diagnosis;
1955
1956    /**
1957     * The set of accounts that may be used for billing for this Encounter.
1958     */
1959    @Child(name = "account", type = {Account.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1960    @Description(shortDefinition="The set of accounts that may be used for billing for this Encounter", formalDefinition="The set of accounts that may be used for billing for this Encounter." )
1961    protected List<Reference> account;
1962
1963    /**
1964     * Diet preferences reported by the patient.
1965     */
1966    @Child(name = "dietPreference", type = {CodeableConcept.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1967    @Description(shortDefinition="Diet preferences reported by the patient", formalDefinition="Diet preferences reported by the patient." )
1968    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-diet")
1969    protected List<CodeableConcept> dietPreference;
1970
1971    /**
1972     * Any special requests that have been made for this encounter, such as the provision of specific equipment or other things.
1973     */
1974    @Child(name = "specialArrangement", type = {CodeableConcept.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1975    @Description(shortDefinition="Wheelchair, translator, stretcher, etc", formalDefinition="Any special requests that have been made for this encounter, such as the provision of specific equipment or other things." )
1976    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-special-arrangements")
1977    protected List<CodeableConcept> specialArrangement;
1978
1979    /**
1980     * Special courtesies that may be provided to the patient during the encounter (VIP, board member, professional courtesy).
1981     */
1982    @Child(name = "specialCourtesy", type = {CodeableConcept.class}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1983    @Description(shortDefinition="Special courtesies (VIP, board member)", formalDefinition="Special courtesies that may be provided to the patient during the encounter (VIP, board member, professional courtesy)." )
1984    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-special-courtesy")
1985    protected List<CodeableConcept> specialCourtesy;
1986
1987    /**
1988     * Details about the stay during which a healthcare service is provided.
1989
1990This does not describe the event of admitting the patient, but rather any information that is relevant from the time of admittance until the time of discharge.
1991     */
1992    @Child(name = "admission", type = {}, order=26, min=0, max=1, modifier=false, summary=false)
1993    @Description(shortDefinition="Details about the admission to a healthcare service", formalDefinition="Details about the stay during which a healthcare service is provided.\r\rThis does not describe the event of admitting the patient, but rather any information that is relevant from the time of admittance until the time of discharge." )
1994    protected EncounterAdmissionComponent admission;
1995
1996    /**
1997     * List of locations where  the patient has been during this encounter.
1998     */
1999    @Child(name = "location", type = {}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2000    @Description(shortDefinition="List of locations where the patient has been", formalDefinition="List of locations where  the patient has been during this encounter." )
2001    protected List<EncounterLocationComponent> location;
2002
2003    private static final long serialVersionUID = -1336316477L;
2004
2005  /**
2006   * Constructor
2007   */
2008    public Encounter() {
2009      super();
2010    }
2011
2012  /**
2013   * Constructor
2014   */
2015    public Encounter(EncounterStatus status) {
2016      super();
2017      this.setStatus(status);
2018    }
2019
2020    /**
2021     * @return {@link #identifier} (Identifier(s) by which this encounter is known.)
2022     */
2023    public List<Identifier> getIdentifier() { 
2024      if (this.identifier == null)
2025        this.identifier = new ArrayList<Identifier>();
2026      return this.identifier;
2027    }
2028
2029    /**
2030     * @return Returns a reference to <code>this</code> for easy method chaining
2031     */
2032    public Encounter setIdentifier(List<Identifier> theIdentifier) { 
2033      this.identifier = theIdentifier;
2034      return this;
2035    }
2036
2037    public boolean hasIdentifier() { 
2038      if (this.identifier == null)
2039        return false;
2040      for (Identifier item : this.identifier)
2041        if (!item.isEmpty())
2042          return true;
2043      return false;
2044    }
2045
2046    public Identifier addIdentifier() { //3
2047      Identifier t = new Identifier();
2048      if (this.identifier == null)
2049        this.identifier = new ArrayList<Identifier>();
2050      this.identifier.add(t);
2051      return t;
2052    }
2053
2054    public Encounter addIdentifier(Identifier t) { //3
2055      if (t == null)
2056        return this;
2057      if (this.identifier == null)
2058        this.identifier = new ArrayList<Identifier>();
2059      this.identifier.add(t);
2060      return this;
2061    }
2062
2063    /**
2064     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2065     */
2066    public Identifier getIdentifierFirstRep() { 
2067      if (getIdentifier().isEmpty()) {
2068        addIdentifier();
2069      }
2070      return getIdentifier().get(0);
2071    }
2072
2073    /**
2074     * @return {@link #status} (The current state of the encounter (not the state of the patient within the encounter - that is subjectState).). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2075     */
2076    public Enumeration<EncounterStatus> getStatusElement() { 
2077      if (this.status == null)
2078        if (Configuration.errorOnAutoCreate())
2079          throw new Error("Attempt to auto-create Encounter.status");
2080        else if (Configuration.doAutoCreate())
2081          this.status = new Enumeration<EncounterStatus>(new EncounterStatusEnumFactory()); // bb
2082      return this.status;
2083    }
2084
2085    public boolean hasStatusElement() { 
2086      return this.status != null && !this.status.isEmpty();
2087    }
2088
2089    public boolean hasStatus() { 
2090      return this.status != null && !this.status.isEmpty();
2091    }
2092
2093    /**
2094     * @param value {@link #status} (The current state of the encounter (not the state of the patient within the encounter - that is subjectState).). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2095     */
2096    public Encounter setStatusElement(Enumeration<EncounterStatus> value) { 
2097      this.status = value;
2098      return this;
2099    }
2100
2101    /**
2102     * @return The current state of the encounter (not the state of the patient within the encounter - that is subjectState).
2103     */
2104    public EncounterStatus getStatus() { 
2105      return this.status == null ? null : this.status.getValue();
2106    }
2107
2108    /**
2109     * @param value The current state of the encounter (not the state of the patient within the encounter - that is subjectState).
2110     */
2111    public Encounter setStatus(EncounterStatus value) { 
2112        if (this.status == null)
2113          this.status = new Enumeration<EncounterStatus>(new EncounterStatusEnumFactory());
2114        this.status.setValue(value);
2115      return this;
2116    }
2117
2118    /**
2119     * @return {@link #class_} (Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations.)
2120     */
2121    public List<CodeableConcept> getClass_() { 
2122      if (this.class_ == null)
2123        this.class_ = new ArrayList<CodeableConcept>();
2124      return this.class_;
2125    }
2126
2127    /**
2128     * @return Returns a reference to <code>this</code> for easy method chaining
2129     */
2130    public Encounter setClass_(List<CodeableConcept> theClass_) { 
2131      this.class_ = theClass_;
2132      return this;
2133    }
2134
2135    public boolean hasClass_() { 
2136      if (this.class_ == null)
2137        return false;
2138      for (CodeableConcept item : this.class_)
2139        if (!item.isEmpty())
2140          return true;
2141      return false;
2142    }
2143
2144    public CodeableConcept addClass_() { //3
2145      CodeableConcept t = new CodeableConcept();
2146      if (this.class_ == null)
2147        this.class_ = new ArrayList<CodeableConcept>();
2148      this.class_.add(t);
2149      return t;
2150    }
2151
2152    public Encounter addClass_(CodeableConcept t) { //3
2153      if (t == null)
2154        return this;
2155      if (this.class_ == null)
2156        this.class_ = new ArrayList<CodeableConcept>();
2157      this.class_.add(t);
2158      return this;
2159    }
2160
2161    /**
2162     * @return The first repetition of repeating field {@link #class_}, creating it if it does not already exist {3}
2163     */
2164    public CodeableConcept getClass_FirstRep() { 
2165      if (getClass_().isEmpty()) {
2166        addClass_();
2167      }
2168      return getClass_().get(0);
2169    }
2170
2171    /**
2172     * @return {@link #priority} (Indicates the urgency of the encounter.)
2173     */
2174    public CodeableConcept getPriority() { 
2175      if (this.priority == null)
2176        if (Configuration.errorOnAutoCreate())
2177          throw new Error("Attempt to auto-create Encounter.priority");
2178        else if (Configuration.doAutoCreate())
2179          this.priority = new CodeableConcept(); // cc
2180      return this.priority;
2181    }
2182
2183    public boolean hasPriority() { 
2184      return this.priority != null && !this.priority.isEmpty();
2185    }
2186
2187    /**
2188     * @param value {@link #priority} (Indicates the urgency of the encounter.)
2189     */
2190    public Encounter setPriority(CodeableConcept value) { 
2191      this.priority = value;
2192      return this;
2193    }
2194
2195    /**
2196     * @return {@link #type} (Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation).)
2197     */
2198    public List<CodeableConcept> getType() { 
2199      if (this.type == null)
2200        this.type = new ArrayList<CodeableConcept>();
2201      return this.type;
2202    }
2203
2204    /**
2205     * @return Returns a reference to <code>this</code> for easy method chaining
2206     */
2207    public Encounter setType(List<CodeableConcept> theType) { 
2208      this.type = theType;
2209      return this;
2210    }
2211
2212    public boolean hasType() { 
2213      if (this.type == null)
2214        return false;
2215      for (CodeableConcept item : this.type)
2216        if (!item.isEmpty())
2217          return true;
2218      return false;
2219    }
2220
2221    public CodeableConcept addType() { //3
2222      CodeableConcept t = new CodeableConcept();
2223      if (this.type == null)
2224        this.type = new ArrayList<CodeableConcept>();
2225      this.type.add(t);
2226      return t;
2227    }
2228
2229    public Encounter addType(CodeableConcept t) { //3
2230      if (t == null)
2231        return this;
2232      if (this.type == null)
2233        this.type = new ArrayList<CodeableConcept>();
2234      this.type.add(t);
2235      return this;
2236    }
2237
2238    /**
2239     * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3}
2240     */
2241    public CodeableConcept getTypeFirstRep() { 
2242      if (getType().isEmpty()) {
2243        addType();
2244      }
2245      return getType().get(0);
2246    }
2247
2248    /**
2249     * @return {@link #serviceType} (Broad categorization of the service that is to be provided (e.g. cardiology).)
2250     */
2251    public List<CodeableReference> getServiceType() { 
2252      if (this.serviceType == null)
2253        this.serviceType = new ArrayList<CodeableReference>();
2254      return this.serviceType;
2255    }
2256
2257    /**
2258     * @return Returns a reference to <code>this</code> for easy method chaining
2259     */
2260    public Encounter setServiceType(List<CodeableReference> theServiceType) { 
2261      this.serviceType = theServiceType;
2262      return this;
2263    }
2264
2265    public boolean hasServiceType() { 
2266      if (this.serviceType == null)
2267        return false;
2268      for (CodeableReference item : this.serviceType)
2269        if (!item.isEmpty())
2270          return true;
2271      return false;
2272    }
2273
2274    public CodeableReference addServiceType() { //3
2275      CodeableReference t = new CodeableReference();
2276      if (this.serviceType == null)
2277        this.serviceType = new ArrayList<CodeableReference>();
2278      this.serviceType.add(t);
2279      return t;
2280    }
2281
2282    public Encounter addServiceType(CodeableReference t) { //3
2283      if (t == null)
2284        return this;
2285      if (this.serviceType == null)
2286        this.serviceType = new ArrayList<CodeableReference>();
2287      this.serviceType.add(t);
2288      return this;
2289    }
2290
2291    /**
2292     * @return The first repetition of repeating field {@link #serviceType}, creating it if it does not already exist {3}
2293     */
2294    public CodeableReference getServiceTypeFirstRep() { 
2295      if (getServiceType().isEmpty()) {
2296        addServiceType();
2297      }
2298      return getServiceType().get(0);
2299    }
2300
2301    /**
2302     * @return {@link #subject} (The patient or group related to this encounter. In some use-cases the patient MAY not be present, such as a case meeting about a patient between several practitioners or a careteam.)
2303     */
2304    public Reference getSubject() { 
2305      if (this.subject == null)
2306        if (Configuration.errorOnAutoCreate())
2307          throw new Error("Attempt to auto-create Encounter.subject");
2308        else if (Configuration.doAutoCreate())
2309          this.subject = new Reference(); // cc
2310      return this.subject;
2311    }
2312
2313    public boolean hasSubject() { 
2314      return this.subject != null && !this.subject.isEmpty();
2315    }
2316
2317    /**
2318     * @param value {@link #subject} (The patient or group related to this encounter. In some use-cases the patient MAY not be present, such as a case meeting about a patient between several practitioners or a careteam.)
2319     */
2320    public Encounter setSubject(Reference value) { 
2321      this.subject = value;
2322      return this;
2323    }
2324
2325    /**
2326     * @return {@link #subjectStatus} (The subjectStatus value can be used to track the patient's status within the encounter. It details whether the patient has arrived or departed, has been triaged or is currently in a waiting status.)
2327     */
2328    public CodeableConcept getSubjectStatus() { 
2329      if (this.subjectStatus == null)
2330        if (Configuration.errorOnAutoCreate())
2331          throw new Error("Attempt to auto-create Encounter.subjectStatus");
2332        else if (Configuration.doAutoCreate())
2333          this.subjectStatus = new CodeableConcept(); // cc
2334      return this.subjectStatus;
2335    }
2336
2337    public boolean hasSubjectStatus() { 
2338      return this.subjectStatus != null && !this.subjectStatus.isEmpty();
2339    }
2340
2341    /**
2342     * @param value {@link #subjectStatus} (The subjectStatus value can be used to track the patient's status within the encounter. It details whether the patient has arrived or departed, has been triaged or is currently in a waiting status.)
2343     */
2344    public Encounter setSubjectStatus(CodeableConcept value) { 
2345      this.subjectStatus = value;
2346      return this;
2347    }
2348
2349    /**
2350     * @return {@link #episodeOfCare} (Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as government reporting, issue tracking, association via a common problem.  The association is recorded on the encounter as these are typically created after the episode of care and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years).)
2351     */
2352    public List<Reference> getEpisodeOfCare() { 
2353      if (this.episodeOfCare == null)
2354        this.episodeOfCare = new ArrayList<Reference>();
2355      return this.episodeOfCare;
2356    }
2357
2358    /**
2359     * @return Returns a reference to <code>this</code> for easy method chaining
2360     */
2361    public Encounter setEpisodeOfCare(List<Reference> theEpisodeOfCare) { 
2362      this.episodeOfCare = theEpisodeOfCare;
2363      return this;
2364    }
2365
2366    public boolean hasEpisodeOfCare() { 
2367      if (this.episodeOfCare == null)
2368        return false;
2369      for (Reference item : this.episodeOfCare)
2370        if (!item.isEmpty())
2371          return true;
2372      return false;
2373    }
2374
2375    public Reference addEpisodeOfCare() { //3
2376      Reference t = new Reference();
2377      if (this.episodeOfCare == null)
2378        this.episodeOfCare = new ArrayList<Reference>();
2379      this.episodeOfCare.add(t);
2380      return t;
2381    }
2382
2383    public Encounter addEpisodeOfCare(Reference t) { //3
2384      if (t == null)
2385        return this;
2386      if (this.episodeOfCare == null)
2387        this.episodeOfCare = new ArrayList<Reference>();
2388      this.episodeOfCare.add(t);
2389      return this;
2390    }
2391
2392    /**
2393     * @return The first repetition of repeating field {@link #episodeOfCare}, creating it if it does not already exist {3}
2394     */
2395    public Reference getEpisodeOfCareFirstRep() { 
2396      if (getEpisodeOfCare().isEmpty()) {
2397        addEpisodeOfCare();
2398      }
2399      return getEpisodeOfCare().get(0);
2400    }
2401
2402    /**
2403     * @return {@link #basedOn} (The request this encounter satisfies (e.g. incoming referral or procedure request).)
2404     */
2405    public List<Reference> getBasedOn() { 
2406      if (this.basedOn == null)
2407        this.basedOn = new ArrayList<Reference>();
2408      return this.basedOn;
2409    }
2410
2411    /**
2412     * @return Returns a reference to <code>this</code> for easy method chaining
2413     */
2414    public Encounter setBasedOn(List<Reference> theBasedOn) { 
2415      this.basedOn = theBasedOn;
2416      return this;
2417    }
2418
2419    public boolean hasBasedOn() { 
2420      if (this.basedOn == null)
2421        return false;
2422      for (Reference item : this.basedOn)
2423        if (!item.isEmpty())
2424          return true;
2425      return false;
2426    }
2427
2428    public Reference addBasedOn() { //3
2429      Reference t = new Reference();
2430      if (this.basedOn == null)
2431        this.basedOn = new ArrayList<Reference>();
2432      this.basedOn.add(t);
2433      return t;
2434    }
2435
2436    public Encounter addBasedOn(Reference t) { //3
2437      if (t == null)
2438        return this;
2439      if (this.basedOn == null)
2440        this.basedOn = new ArrayList<Reference>();
2441      this.basedOn.add(t);
2442      return this;
2443    }
2444
2445    /**
2446     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
2447     */
2448    public Reference getBasedOnFirstRep() { 
2449      if (getBasedOn().isEmpty()) {
2450        addBasedOn();
2451      }
2452      return getBasedOn().get(0);
2453    }
2454
2455    /**
2456     * @return {@link #careTeam} (The group(s) of individuals, organizations that are allocated to participate in this encounter. The participants backbone will record the actuals of when these individuals participated during the encounter.)
2457     */
2458    public List<Reference> getCareTeam() { 
2459      if (this.careTeam == null)
2460        this.careTeam = new ArrayList<Reference>();
2461      return this.careTeam;
2462    }
2463
2464    /**
2465     * @return Returns a reference to <code>this</code> for easy method chaining
2466     */
2467    public Encounter setCareTeam(List<Reference> theCareTeam) { 
2468      this.careTeam = theCareTeam;
2469      return this;
2470    }
2471
2472    public boolean hasCareTeam() { 
2473      if (this.careTeam == null)
2474        return false;
2475      for (Reference item : this.careTeam)
2476        if (!item.isEmpty())
2477          return true;
2478      return false;
2479    }
2480
2481    public Reference addCareTeam() { //3
2482      Reference t = new Reference();
2483      if (this.careTeam == null)
2484        this.careTeam = new ArrayList<Reference>();
2485      this.careTeam.add(t);
2486      return t;
2487    }
2488
2489    public Encounter addCareTeam(Reference t) { //3
2490      if (t == null)
2491        return this;
2492      if (this.careTeam == null)
2493        this.careTeam = new ArrayList<Reference>();
2494      this.careTeam.add(t);
2495      return this;
2496    }
2497
2498    /**
2499     * @return The first repetition of repeating field {@link #careTeam}, creating it if it does not already exist {3}
2500     */
2501    public Reference getCareTeamFirstRep() { 
2502      if (getCareTeam().isEmpty()) {
2503        addCareTeam();
2504      }
2505      return getCareTeam().get(0);
2506    }
2507
2508    /**
2509     * @return {@link #partOf} (Another Encounter of which this encounter is a part of (administratively or in time).)
2510     */
2511    public Reference getPartOf() { 
2512      if (this.partOf == null)
2513        if (Configuration.errorOnAutoCreate())
2514          throw new Error("Attempt to auto-create Encounter.partOf");
2515        else if (Configuration.doAutoCreate())
2516          this.partOf = new Reference(); // cc
2517      return this.partOf;
2518    }
2519
2520    public boolean hasPartOf() { 
2521      return this.partOf != null && !this.partOf.isEmpty();
2522    }
2523
2524    /**
2525     * @param value {@link #partOf} (Another Encounter of which this encounter is a part of (administratively or in time).)
2526     */
2527    public Encounter setPartOf(Reference value) { 
2528      this.partOf = value;
2529      return this;
2530    }
2531
2532    /**
2533     * @return {@link #serviceProvider} (The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the colonoscopy example on the Encounter examples tab.)
2534     */
2535    public Reference getServiceProvider() { 
2536      if (this.serviceProvider == null)
2537        if (Configuration.errorOnAutoCreate())
2538          throw new Error("Attempt to auto-create Encounter.serviceProvider");
2539        else if (Configuration.doAutoCreate())
2540          this.serviceProvider = new Reference(); // cc
2541      return this.serviceProvider;
2542    }
2543
2544    public boolean hasServiceProvider() { 
2545      return this.serviceProvider != null && !this.serviceProvider.isEmpty();
2546    }
2547
2548    /**
2549     * @param value {@link #serviceProvider} (The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the colonoscopy example on the Encounter examples tab.)
2550     */
2551    public Encounter setServiceProvider(Reference value) { 
2552      this.serviceProvider = value;
2553      return this;
2554    }
2555
2556    /**
2557     * @return {@link #participant} (The list of people responsible for providing the service.)
2558     */
2559    public List<EncounterParticipantComponent> getParticipant() { 
2560      if (this.participant == null)
2561        this.participant = new ArrayList<EncounterParticipantComponent>();
2562      return this.participant;
2563    }
2564
2565    /**
2566     * @return Returns a reference to <code>this</code> for easy method chaining
2567     */
2568    public Encounter setParticipant(List<EncounterParticipantComponent> theParticipant) { 
2569      this.participant = theParticipant;
2570      return this;
2571    }
2572
2573    public boolean hasParticipant() { 
2574      if (this.participant == null)
2575        return false;
2576      for (EncounterParticipantComponent item : this.participant)
2577        if (!item.isEmpty())
2578          return true;
2579      return false;
2580    }
2581
2582    public EncounterParticipantComponent addParticipant() { //3
2583      EncounterParticipantComponent t = new EncounterParticipantComponent();
2584      if (this.participant == null)
2585        this.participant = new ArrayList<EncounterParticipantComponent>();
2586      this.participant.add(t);
2587      return t;
2588    }
2589
2590    public Encounter addParticipant(EncounterParticipantComponent t) { //3
2591      if (t == null)
2592        return this;
2593      if (this.participant == null)
2594        this.participant = new ArrayList<EncounterParticipantComponent>();
2595      this.participant.add(t);
2596      return this;
2597    }
2598
2599    /**
2600     * @return The first repetition of repeating field {@link #participant}, creating it if it does not already exist {3}
2601     */
2602    public EncounterParticipantComponent getParticipantFirstRep() { 
2603      if (getParticipant().isEmpty()) {
2604        addParticipant();
2605      }
2606      return getParticipant().get(0);
2607    }
2608
2609    /**
2610     * @return {@link #appointment} (The appointment that scheduled this encounter.)
2611     */
2612    public List<Reference> getAppointment() { 
2613      if (this.appointment == null)
2614        this.appointment = new ArrayList<Reference>();
2615      return this.appointment;
2616    }
2617
2618    /**
2619     * @return Returns a reference to <code>this</code> for easy method chaining
2620     */
2621    public Encounter setAppointment(List<Reference> theAppointment) { 
2622      this.appointment = theAppointment;
2623      return this;
2624    }
2625
2626    public boolean hasAppointment() { 
2627      if (this.appointment == null)
2628        return false;
2629      for (Reference item : this.appointment)
2630        if (!item.isEmpty())
2631          return true;
2632      return false;
2633    }
2634
2635    public Reference addAppointment() { //3
2636      Reference t = new Reference();
2637      if (this.appointment == null)
2638        this.appointment = new ArrayList<Reference>();
2639      this.appointment.add(t);
2640      return t;
2641    }
2642
2643    public Encounter addAppointment(Reference t) { //3
2644      if (t == null)
2645        return this;
2646      if (this.appointment == null)
2647        this.appointment = new ArrayList<Reference>();
2648      this.appointment.add(t);
2649      return this;
2650    }
2651
2652    /**
2653     * @return The first repetition of repeating field {@link #appointment}, creating it if it does not already exist {3}
2654     */
2655    public Reference getAppointmentFirstRep() { 
2656      if (getAppointment().isEmpty()) {
2657        addAppointment();
2658      }
2659      return getAppointment().get(0);
2660    }
2661
2662    /**
2663     * @return {@link #virtualService} (Connection details of a virtual service (e.g. conference call).)
2664     */
2665    public List<VirtualServiceDetail> getVirtualService() { 
2666      if (this.virtualService == null)
2667        this.virtualService = new ArrayList<VirtualServiceDetail>();
2668      return this.virtualService;
2669    }
2670
2671    /**
2672     * @return Returns a reference to <code>this</code> for easy method chaining
2673     */
2674    public Encounter setVirtualService(List<VirtualServiceDetail> theVirtualService) { 
2675      this.virtualService = theVirtualService;
2676      return this;
2677    }
2678
2679    public boolean hasVirtualService() { 
2680      if (this.virtualService == null)
2681        return false;
2682      for (VirtualServiceDetail item : this.virtualService)
2683        if (!item.isEmpty())
2684          return true;
2685      return false;
2686    }
2687
2688    public VirtualServiceDetail addVirtualService() { //3
2689      VirtualServiceDetail t = new VirtualServiceDetail();
2690      if (this.virtualService == null)
2691        this.virtualService = new ArrayList<VirtualServiceDetail>();
2692      this.virtualService.add(t);
2693      return t;
2694    }
2695
2696    public Encounter addVirtualService(VirtualServiceDetail t) { //3
2697      if (t == null)
2698        return this;
2699      if (this.virtualService == null)
2700        this.virtualService = new ArrayList<VirtualServiceDetail>();
2701      this.virtualService.add(t);
2702      return this;
2703    }
2704
2705    /**
2706     * @return The first repetition of repeating field {@link #virtualService}, creating it if it does not already exist {3}
2707     */
2708    public VirtualServiceDetail getVirtualServiceFirstRep() { 
2709      if (getVirtualService().isEmpty()) {
2710        addVirtualService();
2711      }
2712      return getVirtualService().get(0);
2713    }
2714
2715    /**
2716     * @return {@link #actualPeriod} (The actual start and end time of the encounter.)
2717     */
2718    public Period getActualPeriod() { 
2719      if (this.actualPeriod == null)
2720        if (Configuration.errorOnAutoCreate())
2721          throw new Error("Attempt to auto-create Encounter.actualPeriod");
2722        else if (Configuration.doAutoCreate())
2723          this.actualPeriod = new Period(); // cc
2724      return this.actualPeriod;
2725    }
2726
2727    public boolean hasActualPeriod() { 
2728      return this.actualPeriod != null && !this.actualPeriod.isEmpty();
2729    }
2730
2731    /**
2732     * @param value {@link #actualPeriod} (The actual start and end time of the encounter.)
2733     */
2734    public Encounter setActualPeriod(Period value) { 
2735      this.actualPeriod = value;
2736      return this;
2737    }
2738
2739    /**
2740     * @return {@link #plannedStartDate} (The planned start date/time (or admission date) of the encounter.). This is the underlying object with id, value and extensions. The accessor "getPlannedStartDate" gives direct access to the value
2741     */
2742    public DateTimeType getPlannedStartDateElement() { 
2743      if (this.plannedStartDate == null)
2744        if (Configuration.errorOnAutoCreate())
2745          throw new Error("Attempt to auto-create Encounter.plannedStartDate");
2746        else if (Configuration.doAutoCreate())
2747          this.plannedStartDate = new DateTimeType(); // bb
2748      return this.plannedStartDate;
2749    }
2750
2751    public boolean hasPlannedStartDateElement() { 
2752      return this.plannedStartDate != null && !this.plannedStartDate.isEmpty();
2753    }
2754
2755    public boolean hasPlannedStartDate() { 
2756      return this.plannedStartDate != null && !this.plannedStartDate.isEmpty();
2757    }
2758
2759    /**
2760     * @param value {@link #plannedStartDate} (The planned start date/time (or admission date) of the encounter.). This is the underlying object with id, value and extensions. The accessor "getPlannedStartDate" gives direct access to the value
2761     */
2762    public Encounter setPlannedStartDateElement(DateTimeType value) { 
2763      this.plannedStartDate = value;
2764      return this;
2765    }
2766
2767    /**
2768     * @return The planned start date/time (or admission date) of the encounter.
2769     */
2770    public Date getPlannedStartDate() { 
2771      return this.plannedStartDate == null ? null : this.plannedStartDate.getValue();
2772    }
2773
2774    /**
2775     * @param value The planned start date/time (or admission date) of the encounter.
2776     */
2777    public Encounter setPlannedStartDate(Date value) { 
2778      if (value == null)
2779        this.plannedStartDate = null;
2780      else {
2781        if (this.plannedStartDate == null)
2782          this.plannedStartDate = new DateTimeType();
2783        this.plannedStartDate.setValue(value);
2784      }
2785      return this;
2786    }
2787
2788    /**
2789     * @return {@link #plannedEndDate} (The planned end date/time (or discharge date) of the encounter.). This is the underlying object with id, value and extensions. The accessor "getPlannedEndDate" gives direct access to the value
2790     */
2791    public DateTimeType getPlannedEndDateElement() { 
2792      if (this.plannedEndDate == null)
2793        if (Configuration.errorOnAutoCreate())
2794          throw new Error("Attempt to auto-create Encounter.plannedEndDate");
2795        else if (Configuration.doAutoCreate())
2796          this.plannedEndDate = new DateTimeType(); // bb
2797      return this.plannedEndDate;
2798    }
2799
2800    public boolean hasPlannedEndDateElement() { 
2801      return this.plannedEndDate != null && !this.plannedEndDate.isEmpty();
2802    }
2803
2804    public boolean hasPlannedEndDate() { 
2805      return this.plannedEndDate != null && !this.plannedEndDate.isEmpty();
2806    }
2807
2808    /**
2809     * @param value {@link #plannedEndDate} (The planned end date/time (or discharge date) of the encounter.). This is the underlying object with id, value and extensions. The accessor "getPlannedEndDate" gives direct access to the value
2810     */
2811    public Encounter setPlannedEndDateElement(DateTimeType value) { 
2812      this.plannedEndDate = value;
2813      return this;
2814    }
2815
2816    /**
2817     * @return The planned end date/time (or discharge date) of the encounter.
2818     */
2819    public Date getPlannedEndDate() { 
2820      return this.plannedEndDate == null ? null : this.plannedEndDate.getValue();
2821    }
2822
2823    /**
2824     * @param value The planned end date/time (or discharge date) of the encounter.
2825     */
2826    public Encounter setPlannedEndDate(Date value) { 
2827      if (value == null)
2828        this.plannedEndDate = null;
2829      else {
2830        if (this.plannedEndDate == null)
2831          this.plannedEndDate = new DateTimeType();
2832        this.plannedEndDate.setValue(value);
2833      }
2834      return this;
2835    }
2836
2837    /**
2838     * @return {@link #length} (Actual quantity of time the encounter lasted. This excludes the time during leaves of absence.
2839
2840When missing it is the time in between the start and end values.)
2841     */
2842    public Duration getLength() { 
2843      if (this.length == null)
2844        if (Configuration.errorOnAutoCreate())
2845          throw new Error("Attempt to auto-create Encounter.length");
2846        else if (Configuration.doAutoCreate())
2847          this.length = new Duration(); // cc
2848      return this.length;
2849    }
2850
2851    public boolean hasLength() { 
2852      return this.length != null && !this.length.isEmpty();
2853    }
2854
2855    /**
2856     * @param value {@link #length} (Actual quantity of time the encounter lasted. This excludes the time during leaves of absence.
2857
2858When missing it is the time in between the start and end values.)
2859     */
2860    public Encounter setLength(Duration value) { 
2861      this.length = value;
2862      return this;
2863    }
2864
2865    /**
2866     * @return {@link #reason} (The list of medical reasons that are expected to be addressed during the episode of care.)
2867     */
2868    public List<ReasonComponent> getReason() { 
2869      if (this.reason == null)
2870        this.reason = new ArrayList<ReasonComponent>();
2871      return this.reason;
2872    }
2873
2874    /**
2875     * @return Returns a reference to <code>this</code> for easy method chaining
2876     */
2877    public Encounter setReason(List<ReasonComponent> theReason) { 
2878      this.reason = theReason;
2879      return this;
2880    }
2881
2882    public boolean hasReason() { 
2883      if (this.reason == null)
2884        return false;
2885      for (ReasonComponent item : this.reason)
2886        if (!item.isEmpty())
2887          return true;
2888      return false;
2889    }
2890
2891    public ReasonComponent addReason() { //3
2892      ReasonComponent t = new ReasonComponent();
2893      if (this.reason == null)
2894        this.reason = new ArrayList<ReasonComponent>();
2895      this.reason.add(t);
2896      return t;
2897    }
2898
2899    public Encounter addReason(ReasonComponent t) { //3
2900      if (t == null)
2901        return this;
2902      if (this.reason == null)
2903        this.reason = new ArrayList<ReasonComponent>();
2904      this.reason.add(t);
2905      return this;
2906    }
2907
2908    /**
2909     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
2910     */
2911    public ReasonComponent getReasonFirstRep() { 
2912      if (getReason().isEmpty()) {
2913        addReason();
2914      }
2915      return getReason().get(0);
2916    }
2917
2918    /**
2919     * @return {@link #diagnosis} (The list of diagnosis relevant to this encounter.)
2920     */
2921    public List<DiagnosisComponent> getDiagnosis() { 
2922      if (this.diagnosis == null)
2923        this.diagnosis = new ArrayList<DiagnosisComponent>();
2924      return this.diagnosis;
2925    }
2926
2927    /**
2928     * @return Returns a reference to <code>this</code> for easy method chaining
2929     */
2930    public Encounter setDiagnosis(List<DiagnosisComponent> theDiagnosis) { 
2931      this.diagnosis = theDiagnosis;
2932      return this;
2933    }
2934
2935    public boolean hasDiagnosis() { 
2936      if (this.diagnosis == null)
2937        return false;
2938      for (DiagnosisComponent item : this.diagnosis)
2939        if (!item.isEmpty())
2940          return true;
2941      return false;
2942    }
2943
2944    public DiagnosisComponent addDiagnosis() { //3
2945      DiagnosisComponent t = new DiagnosisComponent();
2946      if (this.diagnosis == null)
2947        this.diagnosis = new ArrayList<DiagnosisComponent>();
2948      this.diagnosis.add(t);
2949      return t;
2950    }
2951
2952    public Encounter addDiagnosis(DiagnosisComponent t) { //3
2953      if (t == null)
2954        return this;
2955      if (this.diagnosis == null)
2956        this.diagnosis = new ArrayList<DiagnosisComponent>();
2957      this.diagnosis.add(t);
2958      return this;
2959    }
2960
2961    /**
2962     * @return The first repetition of repeating field {@link #diagnosis}, creating it if it does not already exist {3}
2963     */
2964    public DiagnosisComponent getDiagnosisFirstRep() { 
2965      if (getDiagnosis().isEmpty()) {
2966        addDiagnosis();
2967      }
2968      return getDiagnosis().get(0);
2969    }
2970
2971    /**
2972     * @return {@link #account} (The set of accounts that may be used for billing for this Encounter.)
2973     */
2974    public List<Reference> getAccount() { 
2975      if (this.account == null)
2976        this.account = new ArrayList<Reference>();
2977      return this.account;
2978    }
2979
2980    /**
2981     * @return Returns a reference to <code>this</code> for easy method chaining
2982     */
2983    public Encounter setAccount(List<Reference> theAccount) { 
2984      this.account = theAccount;
2985      return this;
2986    }
2987
2988    public boolean hasAccount() { 
2989      if (this.account == null)
2990        return false;
2991      for (Reference item : this.account)
2992        if (!item.isEmpty())
2993          return true;
2994      return false;
2995    }
2996
2997    public Reference addAccount() { //3
2998      Reference t = new Reference();
2999      if (this.account == null)
3000        this.account = new ArrayList<Reference>();
3001      this.account.add(t);
3002      return t;
3003    }
3004
3005    public Encounter addAccount(Reference t) { //3
3006      if (t == null)
3007        return this;
3008      if (this.account == null)
3009        this.account = new ArrayList<Reference>();
3010      this.account.add(t);
3011      return this;
3012    }
3013
3014    /**
3015     * @return The first repetition of repeating field {@link #account}, creating it if it does not already exist {3}
3016     */
3017    public Reference getAccountFirstRep() { 
3018      if (getAccount().isEmpty()) {
3019        addAccount();
3020      }
3021      return getAccount().get(0);
3022    }
3023
3024    /**
3025     * @return {@link #dietPreference} (Diet preferences reported by the patient.)
3026     */
3027    public List<CodeableConcept> getDietPreference() { 
3028      if (this.dietPreference == null)
3029        this.dietPreference = new ArrayList<CodeableConcept>();
3030      return this.dietPreference;
3031    }
3032
3033    /**
3034     * @return Returns a reference to <code>this</code> for easy method chaining
3035     */
3036    public Encounter setDietPreference(List<CodeableConcept> theDietPreference) { 
3037      this.dietPreference = theDietPreference;
3038      return this;
3039    }
3040
3041    public boolean hasDietPreference() { 
3042      if (this.dietPreference == null)
3043        return false;
3044      for (CodeableConcept item : this.dietPreference)
3045        if (!item.isEmpty())
3046          return true;
3047      return false;
3048    }
3049
3050    public CodeableConcept addDietPreference() { //3
3051      CodeableConcept t = new CodeableConcept();
3052      if (this.dietPreference == null)
3053        this.dietPreference = new ArrayList<CodeableConcept>();
3054      this.dietPreference.add(t);
3055      return t;
3056    }
3057
3058    public Encounter addDietPreference(CodeableConcept t) { //3
3059      if (t == null)
3060        return this;
3061      if (this.dietPreference == null)
3062        this.dietPreference = new ArrayList<CodeableConcept>();
3063      this.dietPreference.add(t);
3064      return this;
3065    }
3066
3067    /**
3068     * @return The first repetition of repeating field {@link #dietPreference}, creating it if it does not already exist {3}
3069     */
3070    public CodeableConcept getDietPreferenceFirstRep() { 
3071      if (getDietPreference().isEmpty()) {
3072        addDietPreference();
3073      }
3074      return getDietPreference().get(0);
3075    }
3076
3077    /**
3078     * @return {@link #specialArrangement} (Any special requests that have been made for this encounter, such as the provision of specific equipment or other things.)
3079     */
3080    public List<CodeableConcept> getSpecialArrangement() { 
3081      if (this.specialArrangement == null)
3082        this.specialArrangement = new ArrayList<CodeableConcept>();
3083      return this.specialArrangement;
3084    }
3085
3086    /**
3087     * @return Returns a reference to <code>this</code> for easy method chaining
3088     */
3089    public Encounter setSpecialArrangement(List<CodeableConcept> theSpecialArrangement) { 
3090      this.specialArrangement = theSpecialArrangement;
3091      return this;
3092    }
3093
3094    public boolean hasSpecialArrangement() { 
3095      if (this.specialArrangement == null)
3096        return false;
3097      for (CodeableConcept item : this.specialArrangement)
3098        if (!item.isEmpty())
3099          return true;
3100      return false;
3101    }
3102
3103    public CodeableConcept addSpecialArrangement() { //3
3104      CodeableConcept t = new CodeableConcept();
3105      if (this.specialArrangement == null)
3106        this.specialArrangement = new ArrayList<CodeableConcept>();
3107      this.specialArrangement.add(t);
3108      return t;
3109    }
3110
3111    public Encounter addSpecialArrangement(CodeableConcept t) { //3
3112      if (t == null)
3113        return this;
3114      if (this.specialArrangement == null)
3115        this.specialArrangement = new ArrayList<CodeableConcept>();
3116      this.specialArrangement.add(t);
3117      return this;
3118    }
3119
3120    /**
3121     * @return The first repetition of repeating field {@link #specialArrangement}, creating it if it does not already exist {3}
3122     */
3123    public CodeableConcept getSpecialArrangementFirstRep() { 
3124      if (getSpecialArrangement().isEmpty()) {
3125        addSpecialArrangement();
3126      }
3127      return getSpecialArrangement().get(0);
3128    }
3129
3130    /**
3131     * @return {@link #specialCourtesy} (Special courtesies that may be provided to the patient during the encounter (VIP, board member, professional courtesy).)
3132     */
3133    public List<CodeableConcept> getSpecialCourtesy() { 
3134      if (this.specialCourtesy == null)
3135        this.specialCourtesy = new ArrayList<CodeableConcept>();
3136      return this.specialCourtesy;
3137    }
3138
3139    /**
3140     * @return Returns a reference to <code>this</code> for easy method chaining
3141     */
3142    public Encounter setSpecialCourtesy(List<CodeableConcept> theSpecialCourtesy) { 
3143      this.specialCourtesy = theSpecialCourtesy;
3144      return this;
3145    }
3146
3147    public boolean hasSpecialCourtesy() { 
3148      if (this.specialCourtesy == null)
3149        return false;
3150      for (CodeableConcept item : this.specialCourtesy)
3151        if (!item.isEmpty())
3152          return true;
3153      return false;
3154    }
3155
3156    public CodeableConcept addSpecialCourtesy() { //3
3157      CodeableConcept t = new CodeableConcept();
3158      if (this.specialCourtesy == null)
3159        this.specialCourtesy = new ArrayList<CodeableConcept>();
3160      this.specialCourtesy.add(t);
3161      return t;
3162    }
3163
3164    public Encounter addSpecialCourtesy(CodeableConcept t) { //3
3165      if (t == null)
3166        return this;
3167      if (this.specialCourtesy == null)
3168        this.specialCourtesy = new ArrayList<CodeableConcept>();
3169      this.specialCourtesy.add(t);
3170      return this;
3171    }
3172
3173    /**
3174     * @return The first repetition of repeating field {@link #specialCourtesy}, creating it if it does not already exist {3}
3175     */
3176    public CodeableConcept getSpecialCourtesyFirstRep() { 
3177      if (getSpecialCourtesy().isEmpty()) {
3178        addSpecialCourtesy();
3179      }
3180      return getSpecialCourtesy().get(0);
3181    }
3182
3183    /**
3184     * @return {@link #admission} (Details about the stay during which a healthcare service is provided.
3185
3186This does not describe the event of admitting the patient, but rather any information that is relevant from the time of admittance until the time of discharge.)
3187     */
3188    public EncounterAdmissionComponent getAdmission() { 
3189      if (this.admission == null)
3190        if (Configuration.errorOnAutoCreate())
3191          throw new Error("Attempt to auto-create Encounter.admission");
3192        else if (Configuration.doAutoCreate())
3193          this.admission = new EncounterAdmissionComponent(); // cc
3194      return this.admission;
3195    }
3196
3197    public boolean hasAdmission() { 
3198      return this.admission != null && !this.admission.isEmpty();
3199    }
3200
3201    /**
3202     * @param value {@link #admission} (Details about the stay during which a healthcare service is provided.
3203
3204This does not describe the event of admitting the patient, but rather any information that is relevant from the time of admittance until the time of discharge.)
3205     */
3206    public Encounter setAdmission(EncounterAdmissionComponent value) { 
3207      this.admission = value;
3208      return this;
3209    }
3210
3211    /**
3212     * @return {@link #location} (List of locations where  the patient has been during this encounter.)
3213     */
3214    public List<EncounterLocationComponent> getLocation() { 
3215      if (this.location == null)
3216        this.location = new ArrayList<EncounterLocationComponent>();
3217      return this.location;
3218    }
3219
3220    /**
3221     * @return Returns a reference to <code>this</code> for easy method chaining
3222     */
3223    public Encounter setLocation(List<EncounterLocationComponent> theLocation) { 
3224      this.location = theLocation;
3225      return this;
3226    }
3227
3228    public boolean hasLocation() { 
3229      if (this.location == null)
3230        return false;
3231      for (EncounterLocationComponent item : this.location)
3232        if (!item.isEmpty())
3233          return true;
3234      return false;
3235    }
3236
3237    public EncounterLocationComponent addLocation() { //3
3238      EncounterLocationComponent t = new EncounterLocationComponent();
3239      if (this.location == null)
3240        this.location = new ArrayList<EncounterLocationComponent>();
3241      this.location.add(t);
3242      return t;
3243    }
3244
3245    public Encounter addLocation(EncounterLocationComponent t) { //3
3246      if (t == null)
3247        return this;
3248      if (this.location == null)
3249        this.location = new ArrayList<EncounterLocationComponent>();
3250      this.location.add(t);
3251      return this;
3252    }
3253
3254    /**
3255     * @return The first repetition of repeating field {@link #location}, creating it if it does not already exist {3}
3256     */
3257    public EncounterLocationComponent getLocationFirstRep() { 
3258      if (getLocation().isEmpty()) {
3259        addLocation();
3260      }
3261      return getLocation().get(0);
3262    }
3263
3264      protected void listChildren(List<Property> children) {
3265        super.listChildren(children);
3266        children.add(new Property("identifier", "Identifier", "Identifier(s) by which this encounter is known.", 0, java.lang.Integer.MAX_VALUE, identifier));
3267        children.add(new Property("status", "code", "The current state of the encounter (not the state of the patient within the encounter - that is subjectState).", 0, 1, status));
3268        children.add(new Property("class", "CodeableConcept", "Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations.", 0, java.lang.Integer.MAX_VALUE, class_));
3269        children.add(new Property("priority", "CodeableConcept", "Indicates the urgency of the encounter.", 0, 1, priority));
3270        children.add(new Property("type", "CodeableConcept", "Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation).", 0, java.lang.Integer.MAX_VALUE, type));
3271        children.add(new Property("serviceType", "CodeableReference(HealthcareService)", "Broad categorization of the service that is to be provided (e.g. cardiology).", 0, java.lang.Integer.MAX_VALUE, serviceType));
3272        children.add(new Property("subject", "Reference(Patient|Group)", "The patient or group related to this encounter. In some use-cases the patient MAY not be present, such as a case meeting about a patient between several practitioners or a careteam.", 0, 1, subject));
3273        children.add(new Property("subjectStatus", "CodeableConcept", "The subjectStatus value can be used to track the patient's status within the encounter. It details whether the patient has arrived or departed, has been triaged or is currently in a waiting status.", 0, 1, subjectStatus));
3274        children.add(new Property("episodeOfCare", "Reference(EpisodeOfCare)", "Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as government reporting, issue tracking, association via a common problem.  The association is recorded on the encounter as these are typically created after the episode of care and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years).", 0, java.lang.Integer.MAX_VALUE, episodeOfCare));
3275        children.add(new Property("basedOn", "Reference(CarePlan|DeviceRequest|MedicationRequest|ServiceRequest)", "The request this encounter satisfies (e.g. incoming referral or procedure request).", 0, java.lang.Integer.MAX_VALUE, basedOn));
3276        children.add(new Property("careTeam", "Reference(CareTeam)", "The group(s) of individuals, organizations that are allocated to participate in this encounter. The participants backbone will record the actuals of when these individuals participated during the encounter.", 0, java.lang.Integer.MAX_VALUE, careTeam));
3277        children.add(new Property("partOf", "Reference(Encounter)", "Another Encounter of which this encounter is a part of (administratively or in time).", 0, 1, partOf));
3278        children.add(new Property("serviceProvider", "Reference(Organization)", "The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the colonoscopy example on the Encounter examples tab.", 0, 1, serviceProvider));
3279        children.add(new Property("participant", "", "The list of people responsible for providing the service.", 0, java.lang.Integer.MAX_VALUE, participant));
3280        children.add(new Property("appointment", "Reference(Appointment)", "The appointment that scheduled this encounter.", 0, java.lang.Integer.MAX_VALUE, appointment));
3281        children.add(new Property("virtualService", "VirtualServiceDetail", "Connection details of a virtual service (e.g. conference call).", 0, java.lang.Integer.MAX_VALUE, virtualService));
3282        children.add(new Property("actualPeriod", "Period", "The actual start and end time of the encounter.", 0, 1, actualPeriod));
3283        children.add(new Property("plannedStartDate", "dateTime", "The planned start date/time (or admission date) of the encounter.", 0, 1, plannedStartDate));
3284        children.add(new Property("plannedEndDate", "dateTime", "The planned end date/time (or discharge date) of the encounter.", 0, 1, plannedEndDate));
3285        children.add(new Property("length", "Duration", "Actual quantity of time the encounter lasted. This excludes the time during leaves of absence.\r\rWhen missing it is the time in between the start and end values.", 0, 1, length));
3286        children.add(new Property("reason", "", "The list of medical reasons that are expected to be addressed during the episode of care.", 0, java.lang.Integer.MAX_VALUE, reason));
3287        children.add(new Property("diagnosis", "", "The list of diagnosis relevant to this encounter.", 0, java.lang.Integer.MAX_VALUE, diagnosis));
3288        children.add(new Property("account", "Reference(Account)", "The set of accounts that may be used for billing for this Encounter.", 0, java.lang.Integer.MAX_VALUE, account));
3289        children.add(new Property("dietPreference", "CodeableConcept", "Diet preferences reported by the patient.", 0, java.lang.Integer.MAX_VALUE, dietPreference));
3290        children.add(new Property("specialArrangement", "CodeableConcept", "Any special requests that have been made for this encounter, such as the provision of specific equipment or other things.", 0, java.lang.Integer.MAX_VALUE, specialArrangement));
3291        children.add(new Property("specialCourtesy", "CodeableConcept", "Special courtesies that may be provided to the patient during the encounter (VIP, board member, professional courtesy).", 0, java.lang.Integer.MAX_VALUE, specialCourtesy));
3292        children.add(new Property("admission", "", "Details about the stay during which a healthcare service is provided.\r\rThis does not describe the event of admitting the patient, but rather any information that is relevant from the time of admittance until the time of discharge.", 0, 1, admission));
3293        children.add(new Property("location", "", "List of locations where  the patient has been during this encounter.", 0, java.lang.Integer.MAX_VALUE, location));
3294      }
3295
3296      @Override
3297      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3298        switch (_hash) {
3299        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifier(s) by which this encounter is known.", 0, java.lang.Integer.MAX_VALUE, identifier);
3300        case -892481550: /*status*/  return new Property("status", "code", "The current state of the encounter (not the state of the patient within the encounter - that is subjectState).", 0, 1, status);
3301        case 94742904: /*class*/  return new Property("class", "CodeableConcept", "Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations.", 0, java.lang.Integer.MAX_VALUE, class_);
3302        case -1165461084: /*priority*/  return new Property("priority", "CodeableConcept", "Indicates the urgency of the encounter.", 0, 1, priority);
3303        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation).", 0, java.lang.Integer.MAX_VALUE, type);
3304        case -1928370289: /*serviceType*/  return new Property("serviceType", "CodeableReference(HealthcareService)", "Broad categorization of the service that is to be provided (e.g. cardiology).", 0, java.lang.Integer.MAX_VALUE, serviceType);
3305        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The patient or group related to this encounter. In some use-cases the patient MAY not be present, such as a case meeting about a patient between several practitioners or a careteam.", 0, 1, subject);
3306        case 110854206: /*subjectStatus*/  return new Property("subjectStatus", "CodeableConcept", "The subjectStatus value can be used to track the patient's status within the encounter. It details whether the patient has arrived or departed, has been triaged or is currently in a waiting status.", 0, 1, subjectStatus);
3307        case -1892140189: /*episodeOfCare*/  return new Property("episodeOfCare", "Reference(EpisodeOfCare)", "Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as government reporting, issue tracking, association via a common problem.  The association is recorded on the encounter as these are typically created after the episode of care and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years).", 0, java.lang.Integer.MAX_VALUE, episodeOfCare);
3308        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|DeviceRequest|MedicationRequest|ServiceRequest)", "The request this encounter satisfies (e.g. incoming referral or procedure request).", 0, java.lang.Integer.MAX_VALUE, basedOn);
3309        case -7323378: /*careTeam*/  return new Property("careTeam", "Reference(CareTeam)", "The group(s) of individuals, organizations that are allocated to participate in this encounter. The participants backbone will record the actuals of when these individuals participated during the encounter.", 0, java.lang.Integer.MAX_VALUE, careTeam);
3310        case -995410646: /*partOf*/  return new Property("partOf", "Reference(Encounter)", "Another Encounter of which this encounter is a part of (administratively or in time).", 0, 1, partOf);
3311        case 243182534: /*serviceProvider*/  return new Property("serviceProvider", "Reference(Organization)", "The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the colonoscopy example on the Encounter examples tab.", 0, 1, serviceProvider);
3312        case 767422259: /*participant*/  return new Property("participant", "", "The list of people responsible for providing the service.", 0, java.lang.Integer.MAX_VALUE, participant);
3313        case -1474995297: /*appointment*/  return new Property("appointment", "Reference(Appointment)", "The appointment that scheduled this encounter.", 0, java.lang.Integer.MAX_VALUE, appointment);
3314        case 1420774698: /*virtualService*/  return new Property("virtualService", "VirtualServiceDetail", "Connection details of a virtual service (e.g. conference call).", 0, java.lang.Integer.MAX_VALUE, virtualService);
3315        case 789194991: /*actualPeriod*/  return new Property("actualPeriod", "Period", "The actual start and end time of the encounter.", 0, 1, actualPeriod);
3316        case 460857804: /*plannedStartDate*/  return new Property("plannedStartDate", "dateTime", "The planned start date/time (or admission date) of the encounter.", 0, 1, plannedStartDate);
3317        case 1657534661: /*plannedEndDate*/  return new Property("plannedEndDate", "dateTime", "The planned end date/time (or discharge date) of the encounter.", 0, 1, plannedEndDate);
3318        case -1106363674: /*length*/  return new Property("length", "Duration", "Actual quantity of time the encounter lasted. This excludes the time during leaves of absence.\r\rWhen missing it is the time in between the start and end values.", 0, 1, length);
3319        case -934964668: /*reason*/  return new Property("reason", "", "The list of medical reasons that are expected to be addressed during the episode of care.", 0, java.lang.Integer.MAX_VALUE, reason);
3320        case 1196993265: /*diagnosis*/  return new Property("diagnosis", "", "The list of diagnosis relevant to this encounter.", 0, java.lang.Integer.MAX_VALUE, diagnosis);
3321        case -1177318867: /*account*/  return new Property("account", "Reference(Account)", "The set of accounts that may be used for billing for this Encounter.", 0, java.lang.Integer.MAX_VALUE, account);
3322        case -1360641041: /*dietPreference*/  return new Property("dietPreference", "CodeableConcept", "Diet preferences reported by the patient.", 0, java.lang.Integer.MAX_VALUE, dietPreference);
3323        case 47410321: /*specialArrangement*/  return new Property("specialArrangement", "CodeableConcept", "Any special requests that have been made for this encounter, such as the provision of specific equipment or other things.", 0, java.lang.Integer.MAX_VALUE, specialArrangement);
3324        case 1583588345: /*specialCourtesy*/  return new Property("specialCourtesy", "CodeableConcept", "Special courtesies that may be provided to the patient during the encounter (VIP, board member, professional courtesy).", 0, java.lang.Integer.MAX_VALUE, specialCourtesy);
3325        case 27400201: /*admission*/  return new Property("admission", "", "Details about the stay during which a healthcare service is provided.\r\rThis does not describe the event of admitting the patient, but rather any information that is relevant from the time of admittance until the time of discharge.", 0, 1, admission);
3326        case 1901043637: /*location*/  return new Property("location", "", "List of locations where  the patient has been during this encounter.", 0, java.lang.Integer.MAX_VALUE, location);
3327        default: return super.getNamedProperty(_hash, _name, _checkValid);
3328        }
3329
3330      }
3331
3332      @Override
3333      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3334        switch (hash) {
3335        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3336        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<EncounterStatus>
3337        case 94742904: /*class*/ return this.class_ == null ? new Base[0] : this.class_.toArray(new Base[this.class_.size()]); // CodeableConcept
3338        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // CodeableConcept
3339        case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept
3340        case -1928370289: /*serviceType*/ return this.serviceType == null ? new Base[0] : this.serviceType.toArray(new Base[this.serviceType.size()]); // CodeableReference
3341        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
3342        case 110854206: /*subjectStatus*/ return this.subjectStatus == null ? new Base[0] : new Base[] {this.subjectStatus}; // CodeableConcept
3343        case -1892140189: /*episodeOfCare*/ return this.episodeOfCare == null ? new Base[0] : this.episodeOfCare.toArray(new Base[this.episodeOfCare.size()]); // Reference
3344        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
3345        case -7323378: /*careTeam*/ return this.careTeam == null ? new Base[0] : this.careTeam.toArray(new Base[this.careTeam.size()]); // Reference
3346        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : new Base[] {this.partOf}; // Reference
3347        case 243182534: /*serviceProvider*/ return this.serviceProvider == null ? new Base[0] : new Base[] {this.serviceProvider}; // Reference
3348        case 767422259: /*participant*/ return this.participant == null ? new Base[0] : this.participant.toArray(new Base[this.participant.size()]); // EncounterParticipantComponent
3349        case -1474995297: /*appointment*/ return this.appointment == null ? new Base[0] : this.appointment.toArray(new Base[this.appointment.size()]); // Reference
3350        case 1420774698: /*virtualService*/ return this.virtualService == null ? new Base[0] : this.virtualService.toArray(new Base[this.virtualService.size()]); // VirtualServiceDetail
3351        case 789194991: /*actualPeriod*/ return this.actualPeriod == null ? new Base[0] : new Base[] {this.actualPeriod}; // Period
3352        case 460857804: /*plannedStartDate*/ return this.plannedStartDate == null ? new Base[0] : new Base[] {this.plannedStartDate}; // DateTimeType
3353        case 1657534661: /*plannedEndDate*/ return this.plannedEndDate == null ? new Base[0] : new Base[] {this.plannedEndDate}; // DateTimeType
3354        case -1106363674: /*length*/ return this.length == null ? new Base[0] : new Base[] {this.length}; // Duration
3355        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // ReasonComponent
3356        case 1196993265: /*diagnosis*/ return this.diagnosis == null ? new Base[0] : this.diagnosis.toArray(new Base[this.diagnosis.size()]); // DiagnosisComponent
3357        case -1177318867: /*account*/ return this.account == null ? new Base[0] : this.account.toArray(new Base[this.account.size()]); // Reference
3358        case -1360641041: /*dietPreference*/ return this.dietPreference == null ? new Base[0] : this.dietPreference.toArray(new Base[this.dietPreference.size()]); // CodeableConcept
3359        case 47410321: /*specialArrangement*/ return this.specialArrangement == null ? new Base[0] : this.specialArrangement.toArray(new Base[this.specialArrangement.size()]); // CodeableConcept
3360        case 1583588345: /*specialCourtesy*/ return this.specialCourtesy == null ? new Base[0] : this.specialCourtesy.toArray(new Base[this.specialCourtesy.size()]); // CodeableConcept
3361        case 27400201: /*admission*/ return this.admission == null ? new Base[0] : new Base[] {this.admission}; // EncounterAdmissionComponent
3362        case 1901043637: /*location*/ return this.location == null ? new Base[0] : this.location.toArray(new Base[this.location.size()]); // EncounterLocationComponent
3363        default: return super.getProperty(hash, name, checkValid);
3364        }
3365
3366      }
3367
3368      @Override
3369      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3370        switch (hash) {
3371        case -1618432855: // identifier
3372          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3373          return value;
3374        case -892481550: // status
3375          value = new EncounterStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3376          this.status = (Enumeration) value; // Enumeration<EncounterStatus>
3377          return value;
3378        case 94742904: // class
3379          this.getClass_().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3380          return value;
3381        case -1165461084: // priority
3382          this.priority = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3383          return value;
3384        case 3575610: // type
3385          this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3386          return value;
3387        case -1928370289: // serviceType
3388          this.getServiceType().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
3389          return value;
3390        case -1867885268: // subject
3391          this.subject = TypeConvertor.castToReference(value); // Reference
3392          return value;
3393        case 110854206: // subjectStatus
3394          this.subjectStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3395          return value;
3396        case -1892140189: // episodeOfCare
3397          this.getEpisodeOfCare().add(TypeConvertor.castToReference(value)); // Reference
3398          return value;
3399        case -332612366: // basedOn
3400          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
3401          return value;
3402        case -7323378: // careTeam
3403          this.getCareTeam().add(TypeConvertor.castToReference(value)); // Reference
3404          return value;
3405        case -995410646: // partOf
3406          this.partOf = TypeConvertor.castToReference(value); // Reference
3407          return value;
3408        case 243182534: // serviceProvider
3409          this.serviceProvider = TypeConvertor.castToReference(value); // Reference
3410          return value;
3411        case 767422259: // participant
3412          this.getParticipant().add((EncounterParticipantComponent) value); // EncounterParticipantComponent
3413          return value;
3414        case -1474995297: // appointment
3415          this.getAppointment().add(TypeConvertor.castToReference(value)); // Reference
3416          return value;
3417        case 1420774698: // virtualService
3418          this.getVirtualService().add(TypeConvertor.castToVirtualServiceDetail(value)); // VirtualServiceDetail
3419          return value;
3420        case 789194991: // actualPeriod
3421          this.actualPeriod = TypeConvertor.castToPeriod(value); // Period
3422          return value;
3423        case 460857804: // plannedStartDate
3424          this.plannedStartDate = TypeConvertor.castToDateTime(value); // DateTimeType
3425          return value;
3426        case 1657534661: // plannedEndDate
3427          this.plannedEndDate = TypeConvertor.castToDateTime(value); // DateTimeType
3428          return value;
3429        case -1106363674: // length
3430          this.length = TypeConvertor.castToDuration(value); // Duration
3431          return value;
3432        case -934964668: // reason
3433          this.getReason().add((ReasonComponent) value); // ReasonComponent
3434          return value;
3435        case 1196993265: // diagnosis
3436          this.getDiagnosis().add((DiagnosisComponent) value); // DiagnosisComponent
3437          return value;
3438        case -1177318867: // account
3439          this.getAccount().add(TypeConvertor.castToReference(value)); // Reference
3440          return value;
3441        case -1360641041: // dietPreference
3442          this.getDietPreference().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3443          return value;
3444        case 47410321: // specialArrangement
3445          this.getSpecialArrangement().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3446          return value;
3447        case 1583588345: // specialCourtesy
3448          this.getSpecialCourtesy().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3449          return value;
3450        case 27400201: // admission
3451          this.admission = (EncounterAdmissionComponent) value; // EncounterAdmissionComponent
3452          return value;
3453        case 1901043637: // location
3454          this.getLocation().add((EncounterLocationComponent) value); // EncounterLocationComponent
3455          return value;
3456        default: return super.setProperty(hash, name, value);
3457        }
3458
3459      }
3460
3461      @Override
3462      public Base setProperty(String name, Base value) throws FHIRException {
3463        if (name.equals("identifier")) {
3464          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3465        } else if (name.equals("status")) {
3466          value = new EncounterStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3467          this.status = (Enumeration) value; // Enumeration<EncounterStatus>
3468        } else if (name.equals("class")) {
3469          this.getClass_().add(TypeConvertor.castToCodeableConcept(value));
3470        } else if (name.equals("priority")) {
3471          this.priority = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3472        } else if (name.equals("type")) {
3473          this.getType().add(TypeConvertor.castToCodeableConcept(value));
3474        } else if (name.equals("serviceType")) {
3475          this.getServiceType().add(TypeConvertor.castToCodeableReference(value));
3476        } else if (name.equals("subject")) {
3477          this.subject = TypeConvertor.castToReference(value); // Reference
3478        } else if (name.equals("subjectStatus")) {
3479          this.subjectStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3480        } else if (name.equals("episodeOfCare")) {
3481          this.getEpisodeOfCare().add(TypeConvertor.castToReference(value));
3482        } else if (name.equals("basedOn")) {
3483          this.getBasedOn().add(TypeConvertor.castToReference(value));
3484        } else if (name.equals("careTeam")) {
3485          this.getCareTeam().add(TypeConvertor.castToReference(value));
3486        } else if (name.equals("partOf")) {
3487          this.partOf = TypeConvertor.castToReference(value); // Reference
3488        } else if (name.equals("serviceProvider")) {
3489          this.serviceProvider = TypeConvertor.castToReference(value); // Reference
3490        } else if (name.equals("participant")) {
3491          this.getParticipant().add((EncounterParticipantComponent) value);
3492        } else if (name.equals("appointment")) {
3493          this.getAppointment().add(TypeConvertor.castToReference(value));
3494        } else if (name.equals("virtualService")) {
3495          this.getVirtualService().add(TypeConvertor.castToVirtualServiceDetail(value));
3496        } else if (name.equals("actualPeriod")) {
3497          this.actualPeriod = TypeConvertor.castToPeriod(value); // Period
3498        } else if (name.equals("plannedStartDate")) {
3499          this.plannedStartDate = TypeConvertor.castToDateTime(value); // DateTimeType
3500        } else if (name.equals("plannedEndDate")) {
3501          this.plannedEndDate = TypeConvertor.castToDateTime(value); // DateTimeType
3502        } else if (name.equals("length")) {
3503          this.length = TypeConvertor.castToDuration(value); // Duration
3504        } else if (name.equals("reason")) {
3505          this.getReason().add((ReasonComponent) value);
3506        } else if (name.equals("diagnosis")) {
3507          this.getDiagnosis().add((DiagnosisComponent) value);
3508        } else if (name.equals("account")) {
3509          this.getAccount().add(TypeConvertor.castToReference(value));
3510        } else if (name.equals("dietPreference")) {
3511          this.getDietPreference().add(TypeConvertor.castToCodeableConcept(value));
3512        } else if (name.equals("specialArrangement")) {
3513          this.getSpecialArrangement().add(TypeConvertor.castToCodeableConcept(value));
3514        } else if (name.equals("specialCourtesy")) {
3515          this.getSpecialCourtesy().add(TypeConvertor.castToCodeableConcept(value));
3516        } else if (name.equals("admission")) {
3517          this.admission = (EncounterAdmissionComponent) value; // EncounterAdmissionComponent
3518        } else if (name.equals("location")) {
3519          this.getLocation().add((EncounterLocationComponent) value);
3520        } else
3521          return super.setProperty(name, value);
3522        return value;
3523      }
3524
3525  @Override
3526  public void removeChild(String name, Base value) throws FHIRException {
3527        if (name.equals("identifier")) {
3528          this.getIdentifier().remove(value);
3529        } else if (name.equals("status")) {
3530          value = new EncounterStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3531          this.status = (Enumeration) value; // Enumeration<EncounterStatus>
3532        } else if (name.equals("class")) {
3533          this.getClass_().remove(value);
3534        } else if (name.equals("priority")) {
3535          this.priority = null;
3536        } else if (name.equals("type")) {
3537          this.getType().remove(value);
3538        } else if (name.equals("serviceType")) {
3539          this.getServiceType().remove(value);
3540        } else if (name.equals("subject")) {
3541          this.subject = null;
3542        } else if (name.equals("subjectStatus")) {
3543          this.subjectStatus = null;
3544        } else if (name.equals("episodeOfCare")) {
3545          this.getEpisodeOfCare().remove(value);
3546        } else if (name.equals("basedOn")) {
3547          this.getBasedOn().remove(value);
3548        } else if (name.equals("careTeam")) {
3549          this.getCareTeam().remove(value);
3550        } else if (name.equals("partOf")) {
3551          this.partOf = null;
3552        } else if (name.equals("serviceProvider")) {
3553          this.serviceProvider = null;
3554        } else if (name.equals("participant")) {
3555          this.getParticipant().remove((EncounterParticipantComponent) value);
3556        } else if (name.equals("appointment")) {
3557          this.getAppointment().remove(value);
3558        } else if (name.equals("virtualService")) {
3559          this.getVirtualService().remove(value);
3560        } else if (name.equals("actualPeriod")) {
3561          this.actualPeriod = null;
3562        } else if (name.equals("plannedStartDate")) {
3563          this.plannedStartDate = null;
3564        } else if (name.equals("plannedEndDate")) {
3565          this.plannedEndDate = null;
3566        } else if (name.equals("length")) {
3567          this.length = null;
3568        } else if (name.equals("reason")) {
3569          this.getReason().remove((ReasonComponent) value);
3570        } else if (name.equals("diagnosis")) {
3571          this.getDiagnosis().remove((DiagnosisComponent) value);
3572        } else if (name.equals("account")) {
3573          this.getAccount().remove(value);
3574        } else if (name.equals("dietPreference")) {
3575          this.getDietPreference().remove(value);
3576        } else if (name.equals("specialArrangement")) {
3577          this.getSpecialArrangement().remove(value);
3578        } else if (name.equals("specialCourtesy")) {
3579          this.getSpecialCourtesy().remove(value);
3580        } else if (name.equals("admission")) {
3581          this.admission = (EncounterAdmissionComponent) value; // EncounterAdmissionComponent
3582        } else if (name.equals("location")) {
3583          this.getLocation().remove((EncounterLocationComponent) value);
3584        } else
3585          super.removeChild(name, value);
3586        
3587      }
3588
3589      @Override
3590      public Base makeProperty(int hash, String name) throws FHIRException {
3591        switch (hash) {
3592        case -1618432855:  return addIdentifier(); 
3593        case -892481550:  return getStatusElement();
3594        case 94742904:  return addClass_(); 
3595        case -1165461084:  return getPriority();
3596        case 3575610:  return addType(); 
3597        case -1928370289:  return addServiceType(); 
3598        case -1867885268:  return getSubject();
3599        case 110854206:  return getSubjectStatus();
3600        case -1892140189:  return addEpisodeOfCare(); 
3601        case -332612366:  return addBasedOn(); 
3602        case -7323378:  return addCareTeam(); 
3603        case -995410646:  return getPartOf();
3604        case 243182534:  return getServiceProvider();
3605        case 767422259:  return addParticipant(); 
3606        case -1474995297:  return addAppointment(); 
3607        case 1420774698:  return addVirtualService(); 
3608        case 789194991:  return getActualPeriod();
3609        case 460857804:  return getPlannedStartDateElement();
3610        case 1657534661:  return getPlannedEndDateElement();
3611        case -1106363674:  return getLength();
3612        case -934964668:  return addReason(); 
3613        case 1196993265:  return addDiagnosis(); 
3614        case -1177318867:  return addAccount(); 
3615        case -1360641041:  return addDietPreference(); 
3616        case 47410321:  return addSpecialArrangement(); 
3617        case 1583588345:  return addSpecialCourtesy(); 
3618        case 27400201:  return getAdmission();
3619        case 1901043637:  return addLocation(); 
3620        default: return super.makeProperty(hash, name);
3621        }
3622
3623      }
3624
3625      @Override
3626      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3627        switch (hash) {
3628        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3629        case -892481550: /*status*/ return new String[] {"code"};
3630        case 94742904: /*class*/ return new String[] {"CodeableConcept"};
3631        case -1165461084: /*priority*/ return new String[] {"CodeableConcept"};
3632        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
3633        case -1928370289: /*serviceType*/ return new String[] {"CodeableReference"};
3634        case -1867885268: /*subject*/ return new String[] {"Reference"};
3635        case 110854206: /*subjectStatus*/ return new String[] {"CodeableConcept"};
3636        case -1892140189: /*episodeOfCare*/ return new String[] {"Reference"};
3637        case -332612366: /*basedOn*/ return new String[] {"Reference"};
3638        case -7323378: /*careTeam*/ return new String[] {"Reference"};
3639        case -995410646: /*partOf*/ return new String[] {"Reference"};
3640        case 243182534: /*serviceProvider*/ return new String[] {"Reference"};
3641        case 767422259: /*participant*/ return new String[] {};
3642        case -1474995297: /*appointment*/ return new String[] {"Reference"};
3643        case 1420774698: /*virtualService*/ return new String[] {"VirtualServiceDetail"};
3644        case 789194991: /*actualPeriod*/ return new String[] {"Period"};
3645        case 460857804: /*plannedStartDate*/ return new String[] {"dateTime"};
3646        case 1657534661: /*plannedEndDate*/ return new String[] {"dateTime"};
3647        case -1106363674: /*length*/ return new String[] {"Duration"};
3648        case -934964668: /*reason*/ return new String[] {};
3649        case 1196993265: /*diagnosis*/ return new String[] {};
3650        case -1177318867: /*account*/ return new String[] {"Reference"};
3651        case -1360641041: /*dietPreference*/ return new String[] {"CodeableConcept"};
3652        case 47410321: /*specialArrangement*/ return new String[] {"CodeableConcept"};
3653        case 1583588345: /*specialCourtesy*/ return new String[] {"CodeableConcept"};
3654        case 27400201: /*admission*/ return new String[] {};
3655        case 1901043637: /*location*/ return new String[] {};
3656        default: return super.getTypesForProperty(hash, name);
3657        }
3658
3659      }
3660
3661      @Override
3662      public Base addChild(String name) throws FHIRException {
3663        if (name.equals("identifier")) {
3664          return addIdentifier();
3665        }
3666        else if (name.equals("status")) {
3667          throw new FHIRException("Cannot call addChild on a singleton property Encounter.status");
3668        }
3669        else if (name.equals("class")) {
3670          return addClass_();
3671        }
3672        else if (name.equals("priority")) {
3673          this.priority = new CodeableConcept();
3674          return this.priority;
3675        }
3676        else if (name.equals("type")) {
3677          return addType();
3678        }
3679        else if (name.equals("serviceType")) {
3680          return addServiceType();
3681        }
3682        else if (name.equals("subject")) {
3683          this.subject = new Reference();
3684          return this.subject;
3685        }
3686        else if (name.equals("subjectStatus")) {
3687          this.subjectStatus = new CodeableConcept();
3688          return this.subjectStatus;
3689        }
3690        else if (name.equals("episodeOfCare")) {
3691          return addEpisodeOfCare();
3692        }
3693        else if (name.equals("basedOn")) {
3694          return addBasedOn();
3695        }
3696        else if (name.equals("careTeam")) {
3697          return addCareTeam();
3698        }
3699        else if (name.equals("partOf")) {
3700          this.partOf = new Reference();
3701          return this.partOf;
3702        }
3703        else if (name.equals("serviceProvider")) {
3704          this.serviceProvider = new Reference();
3705          return this.serviceProvider;
3706        }
3707        else if (name.equals("participant")) {
3708          return addParticipant();
3709        }
3710        else if (name.equals("appointment")) {
3711          return addAppointment();
3712        }
3713        else if (name.equals("virtualService")) {
3714          return addVirtualService();
3715        }
3716        else if (name.equals("actualPeriod")) {
3717          this.actualPeriod = new Period();
3718          return this.actualPeriod;
3719        }
3720        else if (name.equals("plannedStartDate")) {
3721          throw new FHIRException("Cannot call addChild on a singleton property Encounter.plannedStartDate");
3722        }
3723        else if (name.equals("plannedEndDate")) {
3724          throw new FHIRException("Cannot call addChild on a singleton property Encounter.plannedEndDate");
3725        }
3726        else if (name.equals("length")) {
3727          this.length = new Duration();
3728          return this.length;
3729        }
3730        else if (name.equals("reason")) {
3731          return addReason();
3732        }
3733        else if (name.equals("diagnosis")) {
3734          return addDiagnosis();
3735        }
3736        else if (name.equals("account")) {
3737          return addAccount();
3738        }
3739        else if (name.equals("dietPreference")) {
3740          return addDietPreference();
3741        }
3742        else if (name.equals("specialArrangement")) {
3743          return addSpecialArrangement();
3744        }
3745        else if (name.equals("specialCourtesy")) {
3746          return addSpecialCourtesy();
3747        }
3748        else if (name.equals("admission")) {
3749          this.admission = new EncounterAdmissionComponent();
3750          return this.admission;
3751        }
3752        else if (name.equals("location")) {
3753          return addLocation();
3754        }
3755        else
3756          return super.addChild(name);
3757      }
3758
3759  public String fhirType() {
3760    return "Encounter";
3761
3762  }
3763
3764      public Encounter copy() {
3765        Encounter dst = new Encounter();
3766        copyValues(dst);
3767        return dst;
3768      }
3769
3770      public void copyValues(Encounter dst) {
3771        super.copyValues(dst);
3772        if (identifier != null) {
3773          dst.identifier = new ArrayList<Identifier>();
3774          for (Identifier i : identifier)
3775            dst.identifier.add(i.copy());
3776        };
3777        dst.status = status == null ? null : status.copy();
3778        if (class_ != null) {
3779          dst.class_ = new ArrayList<CodeableConcept>();
3780          for (CodeableConcept i : class_)
3781            dst.class_.add(i.copy());
3782        };
3783        dst.priority = priority == null ? null : priority.copy();
3784        if (type != null) {
3785          dst.type = new ArrayList<CodeableConcept>();
3786          for (CodeableConcept i : type)
3787            dst.type.add(i.copy());
3788        };
3789        if (serviceType != null) {
3790          dst.serviceType = new ArrayList<CodeableReference>();
3791          for (CodeableReference i : serviceType)
3792            dst.serviceType.add(i.copy());
3793        };
3794        dst.subject = subject == null ? null : subject.copy();
3795        dst.subjectStatus = subjectStatus == null ? null : subjectStatus.copy();
3796        if (episodeOfCare != null) {
3797          dst.episodeOfCare = new ArrayList<Reference>();
3798          for (Reference i : episodeOfCare)
3799            dst.episodeOfCare.add(i.copy());
3800        };
3801        if (basedOn != null) {
3802          dst.basedOn = new ArrayList<Reference>();
3803          for (Reference i : basedOn)
3804            dst.basedOn.add(i.copy());
3805        };
3806        if (careTeam != null) {
3807          dst.careTeam = new ArrayList<Reference>();
3808          for (Reference i : careTeam)
3809            dst.careTeam.add(i.copy());
3810        };
3811        dst.partOf = partOf == null ? null : partOf.copy();
3812        dst.serviceProvider = serviceProvider == null ? null : serviceProvider.copy();
3813        if (participant != null) {
3814          dst.participant = new ArrayList<EncounterParticipantComponent>();
3815          for (EncounterParticipantComponent i : participant)
3816            dst.participant.add(i.copy());
3817        };
3818        if (appointment != null) {
3819          dst.appointment = new ArrayList<Reference>();
3820          for (Reference i : appointment)
3821            dst.appointment.add(i.copy());
3822        };
3823        if (virtualService != null) {
3824          dst.virtualService = new ArrayList<VirtualServiceDetail>();
3825          for (VirtualServiceDetail i : virtualService)
3826            dst.virtualService.add(i.copy());
3827        };
3828        dst.actualPeriod = actualPeriod == null ? null : actualPeriod.copy();
3829        dst.plannedStartDate = plannedStartDate == null ? null : plannedStartDate.copy();
3830        dst.plannedEndDate = plannedEndDate == null ? null : plannedEndDate.copy();
3831        dst.length = length == null ? null : length.copy();
3832        if (reason != null) {
3833          dst.reason = new ArrayList<ReasonComponent>();
3834          for (ReasonComponent i : reason)
3835            dst.reason.add(i.copy());
3836        };
3837        if (diagnosis != null) {
3838          dst.diagnosis = new ArrayList<DiagnosisComponent>();
3839          for (DiagnosisComponent i : diagnosis)
3840            dst.diagnosis.add(i.copy());
3841        };
3842        if (account != null) {
3843          dst.account = new ArrayList<Reference>();
3844          for (Reference i : account)
3845            dst.account.add(i.copy());
3846        };
3847        if (dietPreference != null) {
3848          dst.dietPreference = new ArrayList<CodeableConcept>();
3849          for (CodeableConcept i : dietPreference)
3850            dst.dietPreference.add(i.copy());
3851        };
3852        if (specialArrangement != null) {
3853          dst.specialArrangement = new ArrayList<CodeableConcept>();
3854          for (CodeableConcept i : specialArrangement)
3855            dst.specialArrangement.add(i.copy());
3856        };
3857        if (specialCourtesy != null) {
3858          dst.specialCourtesy = new ArrayList<CodeableConcept>();
3859          for (CodeableConcept i : specialCourtesy)
3860            dst.specialCourtesy.add(i.copy());
3861        };
3862        dst.admission = admission == null ? null : admission.copy();
3863        if (location != null) {
3864          dst.location = new ArrayList<EncounterLocationComponent>();
3865          for (EncounterLocationComponent i : location)
3866            dst.location.add(i.copy());
3867        };
3868      }
3869
3870      protected Encounter typedCopy() {
3871        return copy();
3872      }
3873
3874      @Override
3875      public boolean equalsDeep(Base other_) {
3876        if (!super.equalsDeep(other_))
3877          return false;
3878        if (!(other_ instanceof Encounter))
3879          return false;
3880        Encounter o = (Encounter) other_;
3881        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(class_, o.class_, true)
3882           && compareDeep(priority, o.priority, true) && compareDeep(type, o.type, true) && compareDeep(serviceType, o.serviceType, true)
3883           && compareDeep(subject, o.subject, true) && compareDeep(subjectStatus, o.subjectStatus, true) && compareDeep(episodeOfCare, o.episodeOfCare, true)
3884           && compareDeep(basedOn, o.basedOn, true) && compareDeep(careTeam, o.careTeam, true) && compareDeep(partOf, o.partOf, true)
3885           && compareDeep(serviceProvider, o.serviceProvider, true) && compareDeep(participant, o.participant, true)
3886           && compareDeep(appointment, o.appointment, true) && compareDeep(virtualService, o.virtualService, true)
3887           && compareDeep(actualPeriod, o.actualPeriod, true) && compareDeep(plannedStartDate, o.plannedStartDate, true)
3888           && compareDeep(plannedEndDate, o.plannedEndDate, true) && compareDeep(length, o.length, true) && compareDeep(reason, o.reason, true)
3889           && compareDeep(diagnosis, o.diagnosis, true) && compareDeep(account, o.account, true) && compareDeep(dietPreference, o.dietPreference, true)
3890           && compareDeep(specialArrangement, o.specialArrangement, true) && compareDeep(specialCourtesy, o.specialCourtesy, true)
3891           && compareDeep(admission, o.admission, true) && compareDeep(location, o.location, true);
3892      }
3893
3894      @Override
3895      public boolean equalsShallow(Base other_) {
3896        if (!super.equalsShallow(other_))
3897          return false;
3898        if (!(other_ instanceof Encounter))
3899          return false;
3900        Encounter o = (Encounter) other_;
3901        return compareValues(status, o.status, true) && compareValues(plannedStartDate, o.plannedStartDate, true)
3902           && compareValues(plannedEndDate, o.plannedEndDate, true);
3903      }
3904
3905      public boolean isEmpty() {
3906        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, class_
3907          , priority, type, serviceType, subject, subjectStatus, episodeOfCare, basedOn
3908          , careTeam, partOf, serviceProvider, participant, appointment, virtualService, actualPeriod
3909          , plannedStartDate, plannedEndDate, length, reason, diagnosis, account, dietPreference
3910          , specialArrangement, specialCourtesy, admission, location);
3911      }
3912
3913  @Override
3914  public ResourceType getResourceType() {
3915    return ResourceType.Encounter;
3916   }
3917
3918 /**
3919   * Search parameter: <b>account</b>
3920   * <p>
3921   * Description: <b>The set of accounts that may be used for billing for this Encounter</b><br>
3922   * Type: <b>reference</b><br>
3923   * Path: <b>Encounter.account</b><br>
3924   * </p>
3925   */
3926  @SearchParamDefinition(name="account", path="Encounter.account", description="The set of accounts that may be used for billing for this Encounter", type="reference", target={Account.class } )
3927  public static final String SP_ACCOUNT = "account";
3928 /**
3929   * <b>Fluent Client</b> search parameter constant for <b>account</b>
3930   * <p>
3931   * Description: <b>The set of accounts that may be used for billing for this Encounter</b><br>
3932   * Type: <b>reference</b><br>
3933   * Path: <b>Encounter.account</b><br>
3934   * </p>
3935   */
3936  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ACCOUNT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ACCOUNT);
3937
3938/**
3939   * Constant for fluent queries to be used to add include statements. Specifies
3940   * the path value of "<b>Encounter:account</b>".
3941   */
3942  public static final ca.uhn.fhir.model.api.Include INCLUDE_ACCOUNT = new ca.uhn.fhir.model.api.Include("Encounter:account").toLocked();
3943
3944 /**
3945   * Search parameter: <b>appointment</b>
3946   * <p>
3947   * Description: <b>The appointment that scheduled this encounter</b><br>
3948   * Type: <b>reference</b><br>
3949   * Path: <b>Encounter.appointment</b><br>
3950   * </p>
3951   */
3952  @SearchParamDefinition(name="appointment", path="Encounter.appointment", description="The appointment that scheduled this encounter", type="reference", target={Appointment.class } )
3953  public static final String SP_APPOINTMENT = "appointment";
3954 /**
3955   * <b>Fluent Client</b> search parameter constant for <b>appointment</b>
3956   * <p>
3957   * Description: <b>The appointment that scheduled this encounter</b><br>
3958   * Type: <b>reference</b><br>
3959   * Path: <b>Encounter.appointment</b><br>
3960   * </p>
3961   */
3962  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam APPOINTMENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_APPOINTMENT);
3963
3964/**
3965   * Constant for fluent queries to be used to add include statements. Specifies
3966   * the path value of "<b>Encounter:appointment</b>".
3967   */
3968  public static final ca.uhn.fhir.model.api.Include INCLUDE_APPOINTMENT = new ca.uhn.fhir.model.api.Include("Encounter:appointment").toLocked();
3969
3970 /**
3971   * Search parameter: <b>based-on</b>
3972   * <p>
3973   * Description: <b>The ServiceRequest that initiated this encounter</b><br>
3974   * Type: <b>reference</b><br>
3975   * Path: <b>Encounter.basedOn</b><br>
3976   * </p>
3977   */
3978  @SearchParamDefinition(name="based-on", path="Encounter.basedOn", description="The ServiceRequest that initiated this encounter", type="reference", target={CarePlan.class, DeviceRequest.class, MedicationRequest.class, ServiceRequest.class } )
3979  public static final String SP_BASED_ON = "based-on";
3980 /**
3981   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
3982   * <p>
3983   * Description: <b>The ServiceRequest that initiated this encounter</b><br>
3984   * Type: <b>reference</b><br>
3985   * Path: <b>Encounter.basedOn</b><br>
3986   * </p>
3987   */
3988  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
3989
3990/**
3991   * Constant for fluent queries to be used to add include statements. Specifies
3992   * the path value of "<b>Encounter:based-on</b>".
3993   */
3994  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("Encounter:based-on").toLocked();
3995
3996 /**
3997   * Search parameter: <b>careteam</b>
3998   * <p>
3999   * Description: <b>Careteam allocated to participate in the encounter</b><br>
4000   * Type: <b>reference</b><br>
4001   * Path: <b>Encounter.careTeam</b><br>
4002   * </p>
4003   */
4004  @SearchParamDefinition(name="careteam", path="Encounter.careTeam", description="Careteam allocated to participate in the encounter", type="reference", target={CareTeam.class } )
4005  public static final String SP_CARETEAM = "careteam";
4006 /**
4007   * <b>Fluent Client</b> search parameter constant for <b>careteam</b>
4008   * <p>
4009   * Description: <b>Careteam allocated to participate in the encounter</b><br>
4010   * Type: <b>reference</b><br>
4011   * Path: <b>Encounter.careTeam</b><br>
4012   * </p>
4013   */
4014  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CARETEAM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CARETEAM);
4015
4016/**
4017   * Constant for fluent queries to be used to add include statements. Specifies
4018   * the path value of "<b>Encounter:careteam</b>".
4019   */
4020  public static final ca.uhn.fhir.model.api.Include INCLUDE_CARETEAM = new ca.uhn.fhir.model.api.Include("Encounter:careteam").toLocked();
4021
4022 /**
4023   * Search parameter: <b>class</b>
4024   * <p>
4025   * Description: <b>Classification of patient encounter</b><br>
4026   * Type: <b>token</b><br>
4027   * Path: <b>Encounter.class</b><br>
4028   * </p>
4029   */
4030  @SearchParamDefinition(name="class", path="Encounter.class", description="Classification of patient encounter", type="token" )
4031  public static final String SP_CLASS = "class";
4032 /**
4033   * <b>Fluent Client</b> search parameter constant for <b>class</b>
4034   * <p>
4035   * Description: <b>Classification of patient encounter</b><br>
4036   * Type: <b>token</b><br>
4037   * Path: <b>Encounter.class</b><br>
4038   * </p>
4039   */
4040  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CLASS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CLASS);
4041
4042 /**
4043   * Search parameter: <b>date-start</b>
4044   * <p>
4045   * Description: <b>The actual start date of the Encounter</b><br>
4046   * Type: <b>date</b><br>
4047   * Path: <b>Encounter.actualPeriod.start</b><br>
4048   * </p>
4049   */
4050  @SearchParamDefinition(name="date-start", path="Encounter.actualPeriod.start", description="The actual start date of the Encounter", type="date" )
4051  public static final String SP_DATE_START = "date-start";
4052 /**
4053   * <b>Fluent Client</b> search parameter constant for <b>date-start</b>
4054   * <p>
4055   * Description: <b>The actual start date of the Encounter</b><br>
4056   * Type: <b>date</b><br>
4057   * Path: <b>Encounter.actualPeriod.start</b><br>
4058   * </p>
4059   */
4060  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE_START = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE_START);
4061
4062 /**
4063   * Search parameter: <b>diagnosis-code</b>
4064   * <p>
4065   * Description: <b>The diagnosis or procedure relevant to the encounter (coded)</b><br>
4066   * Type: <b>token</b><br>
4067   * Path: <b>Encounter.diagnosis.condition.concept</b><br>
4068   * </p>
4069   */
4070  @SearchParamDefinition(name="diagnosis-code", path="Encounter.diagnosis.condition.concept", description="The diagnosis or procedure relevant to the encounter (coded)", type="token" )
4071  public static final String SP_DIAGNOSIS_CODE = "diagnosis-code";
4072 /**
4073   * <b>Fluent Client</b> search parameter constant for <b>diagnosis-code</b>
4074   * <p>
4075   * Description: <b>The diagnosis or procedure relevant to the encounter (coded)</b><br>
4076   * Type: <b>token</b><br>
4077   * Path: <b>Encounter.diagnosis.condition.concept</b><br>
4078   * </p>
4079   */
4080  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DIAGNOSIS_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DIAGNOSIS_CODE);
4081
4082 /**
4083   * Search parameter: <b>diagnosis-reference</b>
4084   * <p>
4085   * Description: <b>The diagnosis or procedure relevant to the encounter (resource reference)</b><br>
4086   * Type: <b>reference</b><br>
4087   * Path: <b>Encounter.diagnosis.condition.reference</b><br>
4088   * </p>
4089   */
4090  @SearchParamDefinition(name="diagnosis-reference", path="Encounter.diagnosis.condition.reference", description="The diagnosis or procedure relevant to the encounter (resource reference)", type="reference", target={Condition.class } )
4091  public static final String SP_DIAGNOSIS_REFERENCE = "diagnosis-reference";
4092 /**
4093   * <b>Fluent Client</b> search parameter constant for <b>diagnosis-reference</b>
4094   * <p>
4095   * Description: <b>The diagnosis or procedure relevant to the encounter (resource reference)</b><br>
4096   * Type: <b>reference</b><br>
4097   * Path: <b>Encounter.diagnosis.condition.reference</b><br>
4098   * </p>
4099   */
4100  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DIAGNOSIS_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DIAGNOSIS_REFERENCE);
4101
4102/**
4103   * Constant for fluent queries to be used to add include statements. Specifies
4104   * the path value of "<b>Encounter:diagnosis-reference</b>".
4105   */
4106  public static final ca.uhn.fhir.model.api.Include INCLUDE_DIAGNOSIS_REFERENCE = new ca.uhn.fhir.model.api.Include("Encounter:diagnosis-reference").toLocked();
4107
4108 /**
4109   * Search parameter: <b>end-date</b>
4110   * <p>
4111   * Description: <b>The actual end date of the Encounter</b><br>
4112   * Type: <b>date</b><br>
4113   * Path: <b>Encounter.actualPeriod.end</b><br>
4114   * </p>
4115   */
4116  @SearchParamDefinition(name="end-date", path="Encounter.actualPeriod.end", description="The actual end date of the Encounter", type="date" )
4117  public static final String SP_END_DATE = "end-date";
4118 /**
4119   * <b>Fluent Client</b> search parameter constant for <b>end-date</b>
4120   * <p>
4121   * Description: <b>The actual end date of the Encounter</b><br>
4122   * Type: <b>date</b><br>
4123   * Path: <b>Encounter.actualPeriod.end</b><br>
4124   * </p>
4125   */
4126  public static final ca.uhn.fhir.rest.gclient.DateClientParam END_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_END_DATE);
4127
4128 /**
4129   * Search parameter: <b>episode-of-care</b>
4130   * <p>
4131   * Description: <b>Episode(s) of care that this encounter should be recorded against</b><br>
4132   * Type: <b>reference</b><br>
4133   * Path: <b>Encounter.episodeOfCare</b><br>
4134   * </p>
4135   */
4136  @SearchParamDefinition(name="episode-of-care", path="Encounter.episodeOfCare", description="Episode(s) of care that this encounter should be recorded against", type="reference", target={EpisodeOfCare.class } )
4137  public static final String SP_EPISODE_OF_CARE = "episode-of-care";
4138 /**
4139   * <b>Fluent Client</b> search parameter constant for <b>episode-of-care</b>
4140   * <p>
4141   * Description: <b>Episode(s) of care that this encounter should be recorded against</b><br>
4142   * Type: <b>reference</b><br>
4143   * Path: <b>Encounter.episodeOfCare</b><br>
4144   * </p>
4145   */
4146  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam EPISODE_OF_CARE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_EPISODE_OF_CARE);
4147
4148/**
4149   * Constant for fluent queries to be used to add include statements. Specifies
4150   * the path value of "<b>Encounter:episode-of-care</b>".
4151   */
4152  public static final ca.uhn.fhir.model.api.Include INCLUDE_EPISODE_OF_CARE = new ca.uhn.fhir.model.api.Include("Encounter:episode-of-care").toLocked();
4153
4154 /**
4155   * Search parameter: <b>length</b>
4156   * <p>
4157   * Description: <b>Length of encounter in days</b><br>
4158   * Type: <b>quantity</b><br>
4159   * Path: <b>Encounter.length</b><br>
4160   * </p>
4161   */
4162  @SearchParamDefinition(name="length", path="Encounter.length", description="Length of encounter in days", type="quantity" )
4163  public static final String SP_LENGTH = "length";
4164 /**
4165   * <b>Fluent Client</b> search parameter constant for <b>length</b>
4166   * <p>
4167   * Description: <b>Length of encounter in days</b><br>
4168   * Type: <b>quantity</b><br>
4169   * Path: <b>Encounter.length</b><br>
4170   * </p>
4171   */
4172  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam LENGTH = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_LENGTH);
4173
4174 /**
4175   * Search parameter: <b>location</b>
4176   * <p>
4177   * Description: <b>Location the encounter takes place</b><br>
4178   * Type: <b>reference</b><br>
4179   * Path: <b>Encounter.location.location</b><br>
4180   * </p>
4181   */
4182  @SearchParamDefinition(name="location", path="Encounter.location.location", description="Location the encounter takes place", type="reference", target={Location.class } )
4183  public static final String SP_LOCATION = "location";
4184 /**
4185   * <b>Fluent Client</b> search parameter constant for <b>location</b>
4186   * <p>
4187   * Description: <b>Location the encounter takes place</b><br>
4188   * Type: <b>reference</b><br>
4189   * Path: <b>Encounter.location.location</b><br>
4190   * </p>
4191   */
4192  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_LOCATION);
4193
4194/**
4195   * Constant for fluent queries to be used to add include statements. Specifies
4196   * the path value of "<b>Encounter:location</b>".
4197   */
4198  public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include("Encounter:location").toLocked();
4199
4200 /**
4201   * Search parameter: <b>part-of</b>
4202   * <p>
4203   * Description: <b>Another Encounter this encounter is part of</b><br>
4204   * Type: <b>reference</b><br>
4205   * Path: <b>Encounter.partOf</b><br>
4206   * </p>
4207   */
4208  @SearchParamDefinition(name="part-of", path="Encounter.partOf", description="Another Encounter this encounter is part of", type="reference", target={Encounter.class } )
4209  public static final String SP_PART_OF = "part-of";
4210 /**
4211   * <b>Fluent Client</b> search parameter constant for <b>part-of</b>
4212   * <p>
4213   * Description: <b>Another Encounter this encounter is part of</b><br>
4214   * Type: <b>reference</b><br>
4215   * Path: <b>Encounter.partOf</b><br>
4216   * </p>
4217   */
4218  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PART_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PART_OF);
4219
4220/**
4221   * Constant for fluent queries to be used to add include statements. Specifies
4222   * the path value of "<b>Encounter:part-of</b>".
4223   */
4224  public static final ca.uhn.fhir.model.api.Include INCLUDE_PART_OF = new ca.uhn.fhir.model.api.Include("Encounter:part-of").toLocked();
4225
4226 /**
4227   * Search parameter: <b>participant-type</b>
4228   * <p>
4229   * Description: <b>Role of participant in encounter</b><br>
4230   * Type: <b>token</b><br>
4231   * Path: <b>Encounter.participant.type</b><br>
4232   * </p>
4233   */
4234  @SearchParamDefinition(name="participant-type", path="Encounter.participant.type", description="Role of participant in encounter", type="token" )
4235  public static final String SP_PARTICIPANT_TYPE = "participant-type";
4236 /**
4237   * <b>Fluent Client</b> search parameter constant for <b>participant-type</b>
4238   * <p>
4239   * Description: <b>Role of participant in encounter</b><br>
4240   * Type: <b>token</b><br>
4241   * Path: <b>Encounter.participant.type</b><br>
4242   * </p>
4243   */
4244  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PARTICIPANT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PARTICIPANT_TYPE);
4245
4246 /**
4247   * Search parameter: <b>participant</b>
4248   * <p>
4249   * Description: <b>Persons involved in the encounter other than the patient</b><br>
4250   * Type: <b>reference</b><br>
4251   * Path: <b>Encounter.participant.actor</b><br>
4252   * </p>
4253   */
4254  @SearchParamDefinition(name="participant", path="Encounter.participant.actor", description="Persons involved in the encounter other than the patient", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={Device.class, Group.class, HealthcareService.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
4255  public static final String SP_PARTICIPANT = "participant";
4256 /**
4257   * <b>Fluent Client</b> search parameter constant for <b>participant</b>
4258   * <p>
4259   * Description: <b>Persons involved in the encounter other than the patient</b><br>
4260   * Type: <b>reference</b><br>
4261   * Path: <b>Encounter.participant.actor</b><br>
4262   * </p>
4263   */
4264  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTICIPANT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARTICIPANT);
4265
4266/**
4267   * Constant for fluent queries to be used to add include statements. Specifies
4268   * the path value of "<b>Encounter:participant</b>".
4269   */
4270  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTICIPANT = new ca.uhn.fhir.model.api.Include("Encounter:participant").toLocked();
4271
4272 /**
4273   * Search parameter: <b>practitioner</b>
4274   * <p>
4275   * Description: <b>Persons involved in the encounter other than the patient</b><br>
4276   * Type: <b>reference</b><br>
4277   * Path: <b>Encounter.participant.actor.where(resolve() is Practitioner)</b><br>
4278   * </p>
4279   */
4280  @SearchParamDefinition(name="practitioner", path="Encounter.participant.actor.where(resolve() is Practitioner)", description="Persons involved in the encounter other than the patient", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Practitioner.class } )
4281  public static final String SP_PRACTITIONER = "practitioner";
4282 /**
4283   * <b>Fluent Client</b> search parameter constant for <b>practitioner</b>
4284   * <p>
4285   * Description: <b>Persons involved in the encounter other than the patient</b><br>
4286   * Type: <b>reference</b><br>
4287   * Path: <b>Encounter.participant.actor.where(resolve() is Practitioner)</b><br>
4288   * </p>
4289   */
4290  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRACTITIONER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRACTITIONER);
4291
4292/**
4293   * Constant for fluent queries to be used to add include statements. Specifies
4294   * the path value of "<b>Encounter:practitioner</b>".
4295   */
4296  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRACTITIONER = new ca.uhn.fhir.model.api.Include("Encounter:practitioner").toLocked();
4297
4298 /**
4299   * Search parameter: <b>reason-code</b>
4300   * <p>
4301   * Description: <b>Reference to a concept (coded)</b><br>
4302   * Type: <b>token</b><br>
4303   * Path: <b>Encounter.reason.value.concept</b><br>
4304   * </p>
4305   */
4306  @SearchParamDefinition(name="reason-code", path="Encounter.reason.value.concept", description="Reference to a concept (coded)", type="token" )
4307  public static final String SP_REASON_CODE = "reason-code";
4308 /**
4309   * <b>Fluent Client</b> search parameter constant for <b>reason-code</b>
4310   * <p>
4311   * Description: <b>Reference to a concept (coded)</b><br>
4312   * Type: <b>token</b><br>
4313   * Path: <b>Encounter.reason.value.concept</b><br>
4314   * </p>
4315   */
4316  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REASON_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REASON_CODE);
4317
4318 /**
4319   * Search parameter: <b>reason-reference</b>
4320   * <p>
4321   * Description: <b>Reference to a resource (resource reference)</b><br>
4322   * Type: <b>reference</b><br>
4323   * Path: <b>Encounter.reason.value.reference</b><br>
4324   * </p>
4325   */
4326  @SearchParamDefinition(name="reason-reference", path="Encounter.reason.value.reference", description="Reference to a resource (resource reference)", type="reference", target={Condition.class, DiagnosticReport.class, ImmunizationRecommendation.class, Observation.class, Procedure.class } )
4327  public static final String SP_REASON_REFERENCE = "reason-reference";
4328 /**
4329   * <b>Fluent Client</b> search parameter constant for <b>reason-reference</b>
4330   * <p>
4331   * Description: <b>Reference to a resource (resource reference)</b><br>
4332   * Type: <b>reference</b><br>
4333   * Path: <b>Encounter.reason.value.reference</b><br>
4334   * </p>
4335   */
4336  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REASON_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REASON_REFERENCE);
4337
4338/**
4339   * Constant for fluent queries to be used to add include statements. Specifies
4340   * the path value of "<b>Encounter:reason-reference</b>".
4341   */
4342  public static final ca.uhn.fhir.model.api.Include INCLUDE_REASON_REFERENCE = new ca.uhn.fhir.model.api.Include("Encounter:reason-reference").toLocked();
4343
4344 /**
4345   * Search parameter: <b>service-provider</b>
4346   * <p>
4347   * Description: <b>The organization (facility) responsible for this encounter</b><br>
4348   * Type: <b>reference</b><br>
4349   * Path: <b>Encounter.serviceProvider</b><br>
4350   * </p>
4351   */
4352  @SearchParamDefinition(name="service-provider", path="Encounter.serviceProvider", description="The organization (facility) responsible for this encounter", type="reference", target={Organization.class } )
4353  public static final String SP_SERVICE_PROVIDER = "service-provider";
4354 /**
4355   * <b>Fluent Client</b> search parameter constant for <b>service-provider</b>
4356   * <p>
4357   * Description: <b>The organization (facility) responsible for this encounter</b><br>
4358   * Type: <b>reference</b><br>
4359   * Path: <b>Encounter.serviceProvider</b><br>
4360   * </p>
4361   */
4362  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SERVICE_PROVIDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SERVICE_PROVIDER);
4363
4364/**
4365   * Constant for fluent queries to be used to add include statements. Specifies
4366   * the path value of "<b>Encounter:service-provider</b>".
4367   */
4368  public static final ca.uhn.fhir.model.api.Include INCLUDE_SERVICE_PROVIDER = new ca.uhn.fhir.model.api.Include("Encounter:service-provider").toLocked();
4369
4370 /**
4371   * Search parameter: <b>special-arrangement</b>
4372   * <p>
4373   * Description: <b>Wheelchair, translator, stretcher, etc.</b><br>
4374   * Type: <b>token</b><br>
4375   * Path: <b>Encounter.specialArrangement</b><br>
4376   * </p>
4377   */
4378  @SearchParamDefinition(name="special-arrangement", path="Encounter.specialArrangement", description="Wheelchair, translator, stretcher, etc.", type="token" )
4379  public static final String SP_SPECIAL_ARRANGEMENT = "special-arrangement";
4380 /**
4381   * <b>Fluent Client</b> search parameter constant for <b>special-arrangement</b>
4382   * <p>
4383   * Description: <b>Wheelchair, translator, stretcher, etc.</b><br>
4384   * Type: <b>token</b><br>
4385   * Path: <b>Encounter.specialArrangement</b><br>
4386   * </p>
4387   */
4388  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIAL_ARRANGEMENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SPECIAL_ARRANGEMENT);
4389
4390 /**
4391   * Search parameter: <b>status</b>
4392   * <p>
4393   * Description: <b>planned | in-progress | on-hold | completed | cancelled | entered-in-error | unknown</b><br>
4394   * Type: <b>token</b><br>
4395   * Path: <b>Encounter.status</b><br>
4396   * </p>
4397   */
4398  @SearchParamDefinition(name="status", path="Encounter.status", description="planned | in-progress | on-hold | completed | cancelled | entered-in-error | unknown", type="token" )
4399  public static final String SP_STATUS = "status";
4400 /**
4401   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4402   * <p>
4403   * Description: <b>planned | in-progress | on-hold | completed | cancelled | entered-in-error | unknown</b><br>
4404   * Type: <b>token</b><br>
4405   * Path: <b>Encounter.status</b><br>
4406   * </p>
4407   */
4408  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4409
4410 /**
4411   * Search parameter: <b>subject-status</b>
4412   * <p>
4413   * Description: <b>The current status of the subject in relation to the Encounter</b><br>
4414   * Type: <b>token</b><br>
4415   * Path: <b>Encounter.subjectStatus</b><br>
4416   * </p>
4417   */
4418  @SearchParamDefinition(name="subject-status", path="Encounter.subjectStatus", description="The current status of the subject in relation to the Encounter", type="token" )
4419  public static final String SP_SUBJECT_STATUS = "subject-status";
4420 /**
4421   * <b>Fluent Client</b> search parameter constant for <b>subject-status</b>
4422   * <p>
4423   * Description: <b>The current status of the subject in relation to the Encounter</b><br>
4424   * Type: <b>token</b><br>
4425   * Path: <b>Encounter.subjectStatus</b><br>
4426   * </p>
4427   */
4428  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SUBJECT_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SUBJECT_STATUS);
4429
4430 /**
4431   * Search parameter: <b>subject</b>
4432   * <p>
4433   * Description: <b>The patient or group present at the encounter</b><br>
4434   * Type: <b>reference</b><br>
4435   * Path: <b>Encounter.subject</b><br>
4436   * </p>
4437   */
4438  @SearchParamDefinition(name="subject", path="Encounter.subject", description="The patient or group present at the encounter", type="reference", target={Group.class, Patient.class } )
4439  public static final String SP_SUBJECT = "subject";
4440 /**
4441   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
4442   * <p>
4443   * Description: <b>The patient or group present at the encounter</b><br>
4444   * Type: <b>reference</b><br>
4445   * Path: <b>Encounter.subject</b><br>
4446   * </p>
4447   */
4448  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
4449
4450/**
4451   * Constant for fluent queries to be used to add include statements. Specifies
4452   * the path value of "<b>Encounter:subject</b>".
4453   */
4454  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Encounter:subject").toLocked();
4455
4456 /**
4457   * Search parameter: <b>date</b>
4458   * <p>
4459   * Description: <b>Multiple Resources: 
4460
4461* [AdverseEvent](adverseevent.html): When the event occurred
4462* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
4463* [Appointment](appointment.html): Appointment date/time.
4464* [AuditEvent](auditevent.html): Time when the event was recorded
4465* [CarePlan](careplan.html): Time period plan covers
4466* [CareTeam](careteam.html): A date within the coverage time period.
4467* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
4468* [Composition](composition.html): Composition editing time
4469* [Consent](consent.html): When consent was agreed to
4470* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
4471* [DocumentReference](documentreference.html): When this document reference was created
4472* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
4473* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
4474* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
4475* [Flag](flag.html): Time period when flag is active
4476* [Immunization](immunization.html): Vaccination  (non)-Administration Date
4477* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
4478* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
4479* [Invoice](invoice.html): Invoice date / posting date
4480* [List](list.html): When the list was prepared
4481* [MeasureReport](measurereport.html): The date of the measure report
4482* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
4483* [Observation](observation.html): Clinically relevant time/time-period for observation
4484* [Procedure](procedure.html): When the procedure occurred or is occurring
4485* [ResearchSubject](researchsubject.html): Start and end of participation
4486* [RiskAssessment](riskassessment.html): When was assessment made?
4487* [SupplyRequest](supplyrequest.html): When the request was made
4488</b><br>
4489   * Type: <b>date</b><br>
4490   * 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>
4491   * </p>
4492   */
4493  @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" )
4494  public static final String SP_DATE = "date";
4495 /**
4496   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4497   * <p>
4498   * Description: <b>Multiple Resources: 
4499
4500* [AdverseEvent](adverseevent.html): When the event occurred
4501* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
4502* [Appointment](appointment.html): Appointment date/time.
4503* [AuditEvent](auditevent.html): Time when the event was recorded
4504* [CarePlan](careplan.html): Time period plan covers
4505* [CareTeam](careteam.html): A date within the coverage time period.
4506* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
4507* [Composition](composition.html): Composition editing time
4508* [Consent](consent.html): When consent was agreed to
4509* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
4510* [DocumentReference](documentreference.html): When this document reference was created
4511* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
4512* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
4513* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
4514* [Flag](flag.html): Time period when flag is active
4515* [Immunization](immunization.html): Vaccination  (non)-Administration Date
4516* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
4517* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
4518* [Invoice](invoice.html): Invoice date / posting date
4519* [List](list.html): When the list was prepared
4520* [MeasureReport](measurereport.html): The date of the measure report
4521* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
4522* [Observation](observation.html): Clinically relevant time/time-period for observation
4523* [Procedure](procedure.html): When the procedure occurred or is occurring
4524* [ResearchSubject](researchsubject.html): Start and end of participation
4525* [RiskAssessment](riskassessment.html): When was assessment made?
4526* [SupplyRequest](supplyrequest.html): When the request was made
4527</b><br>
4528   * Type: <b>date</b><br>
4529   * 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>
4530   * </p>
4531   */
4532  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4533
4534 /**
4535   * Search parameter: <b>identifier</b>
4536   * <p>
4537   * Description: <b>Multiple Resources: 
4538
4539* [Account](account.html): Account number
4540* [AdverseEvent](adverseevent.html): Business identifier for the event
4541* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4542* [Appointment](appointment.html): An Identifier of the Appointment
4543* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4544* [Basic](basic.html): Business identifier
4545* [BodyStructure](bodystructure.html): Bodystructure identifier
4546* [CarePlan](careplan.html): External Ids for this plan
4547* [CareTeam](careteam.html): External Ids for this team
4548* [ChargeItem](chargeitem.html): Business Identifier for item
4549* [Claim](claim.html): The primary identifier of the financial resource
4550* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4551* [ClinicalImpression](clinicalimpression.html): Business identifier
4552* [Communication](communication.html): Unique identifier
4553* [CommunicationRequest](communicationrequest.html): Unique identifier
4554* [Composition](composition.html): Version-independent identifier for the Composition
4555* [Condition](condition.html): A unique identifier of the condition record
4556* [Consent](consent.html): Identifier for this record (external references)
4557* [Contract](contract.html): The identity of the contract
4558* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4559* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4560* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4561* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4562* [DeviceRequest](devicerequest.html): Business identifier for request/order
4563* [DeviceUsage](deviceusage.html): Search by identifier
4564* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4565* [DocumentReference](documentreference.html): Identifier of the attachment binary
4566* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4567* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4568* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4569* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4570* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4571* [Flag](flag.html): Business identifier
4572* [Goal](goal.html): External Ids for this goal
4573* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4574* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4575* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4576* [Immunization](immunization.html): Business identifier
4577* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4578* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4579* [Invoice](invoice.html): Business Identifier for item
4580* [List](list.html): Business identifier
4581* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4582* [Medication](medication.html): Returns medications with this external identifier
4583* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4584* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4585* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4586* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4587* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4588* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4589* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4590* [Observation](observation.html): The unique id for a particular observation
4591* [Person](person.html): A person Identifier
4592* [Procedure](procedure.html): A unique identifier for a procedure
4593* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4594* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4595* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4596* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4597* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4598* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4599* [Specimen](specimen.html): The unique identifier associated with the specimen
4600* [SupplyDelivery](supplydelivery.html): External identifier
4601* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4602* [Task](task.html): Search for a task instance by its business identifier
4603* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4604</b><br>
4605   * Type: <b>token</b><br>
4606   * 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>
4607   * </p>
4608   */
4609  @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" )
4610  public static final String SP_IDENTIFIER = "identifier";
4611 /**
4612   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4613   * <p>
4614   * Description: <b>Multiple Resources: 
4615
4616* [Account](account.html): Account number
4617* [AdverseEvent](adverseevent.html): Business identifier for the event
4618* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4619* [Appointment](appointment.html): An Identifier of the Appointment
4620* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4621* [Basic](basic.html): Business identifier
4622* [BodyStructure](bodystructure.html): Bodystructure identifier
4623* [CarePlan](careplan.html): External Ids for this plan
4624* [CareTeam](careteam.html): External Ids for this team
4625* [ChargeItem](chargeitem.html): Business Identifier for item
4626* [Claim](claim.html): The primary identifier of the financial resource
4627* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4628* [ClinicalImpression](clinicalimpression.html): Business identifier
4629* [Communication](communication.html): Unique identifier
4630* [CommunicationRequest](communicationrequest.html): Unique identifier
4631* [Composition](composition.html): Version-independent identifier for the Composition
4632* [Condition](condition.html): A unique identifier of the condition record
4633* [Consent](consent.html): Identifier for this record (external references)
4634* [Contract](contract.html): The identity of the contract
4635* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4636* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4637* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4638* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4639* [DeviceRequest](devicerequest.html): Business identifier for request/order
4640* [DeviceUsage](deviceusage.html): Search by identifier
4641* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4642* [DocumentReference](documentreference.html): Identifier of the attachment binary
4643* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4644* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4645* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4646* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4647* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4648* [Flag](flag.html): Business identifier
4649* [Goal](goal.html): External Ids for this goal
4650* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4651* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4652* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4653* [Immunization](immunization.html): Business identifier
4654* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4655* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4656* [Invoice](invoice.html): Business Identifier for item
4657* [List](list.html): Business identifier
4658* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4659* [Medication](medication.html): Returns medications with this external identifier
4660* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4661* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4662* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4663* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4664* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4665* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4666* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4667* [Observation](observation.html): The unique id for a particular observation
4668* [Person](person.html): A person Identifier
4669* [Procedure](procedure.html): A unique identifier for a procedure
4670* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4671* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4672* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4673* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4674* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4675* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4676* [Specimen](specimen.html): The unique identifier associated with the specimen
4677* [SupplyDelivery](supplydelivery.html): External identifier
4678* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4679* [Task](task.html): Search for a task instance by its business identifier
4680* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4681</b><br>
4682   * Type: <b>token</b><br>
4683   * 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>
4684   * </p>
4685   */
4686  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4687
4688 /**
4689   * Search parameter: <b>patient</b>
4690   * <p>
4691   * Description: <b>Multiple Resources: 
4692
4693* [Account](account.html): The entity that caused the expenses
4694* [AdverseEvent](adverseevent.html): Subject impacted by event
4695* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4696* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4697* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4698* [AuditEvent](auditevent.html): Where the activity involved patient data
4699* [Basic](basic.html): Identifies the focus of this resource
4700* [BodyStructure](bodystructure.html): Who this is about
4701* [CarePlan](careplan.html): Who the care plan is for
4702* [CareTeam](careteam.html): Who care team is for
4703* [ChargeItem](chargeitem.html): Individual service was done for/to
4704* [Claim](claim.html): Patient receiving the products or services
4705* [ClaimResponse](claimresponse.html): The subject of care
4706* [ClinicalImpression](clinicalimpression.html): Patient assessed
4707* [Communication](communication.html): Focus of message
4708* [CommunicationRequest](communicationrequest.html): Focus of message
4709* [Composition](composition.html): Who and/or what the composition is about
4710* [Condition](condition.html): Who has the condition?
4711* [Consent](consent.html): Who the consent applies to
4712* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4713* [Coverage](coverage.html): Retrieve coverages for a patient
4714* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4715* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4716* [DetectedIssue](detectedissue.html): Associated patient
4717* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4718* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4719* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4720* [DocumentReference](documentreference.html): Who/what is the subject of the document
4721* [Encounter](encounter.html): The patient present at the encounter
4722* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4723* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4724* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4725* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4726* [Flag](flag.html): The identity of a subject to list flags for
4727* [Goal](goal.html): Who this goal is intended for
4728* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4729* [ImagingSelection](imagingselection.html): Who the study is about
4730* [ImagingStudy](imagingstudy.html): Who the study is about
4731* [Immunization](immunization.html): The patient for the vaccination record
4732* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4733* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4734* [Invoice](invoice.html): Recipient(s) of goods and services
4735* [List](list.html): If all resources have the same subject
4736* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4737* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4738* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4739* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4740* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4741* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4742* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4743* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4744* [Observation](observation.html): The subject that the observation is about (if patient)
4745* [Person](person.html): The Person links to this Patient
4746* [Procedure](procedure.html): Search by subject - a patient
4747* [Provenance](provenance.html): Where the activity involved patient data
4748* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4749* [RelatedPerson](relatedperson.html): The patient this related person is related to
4750* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4751* [ResearchSubject](researchsubject.html): Who or what is part of study
4752* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4753* [ServiceRequest](servicerequest.html): Search by subject - a patient
4754* [Specimen](specimen.html): The patient the specimen comes from
4755* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4756* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4757* [Task](task.html): Search by patient
4758* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4759</b><br>
4760   * Type: <b>reference</b><br>
4761   * 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>
4762   * </p>
4763   */
4764  @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 } )
4765  public static final String SP_PATIENT = "patient";
4766 /**
4767   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
4768   * <p>
4769   * Description: <b>Multiple Resources: 
4770
4771* [Account](account.html): The entity that caused the expenses
4772* [AdverseEvent](adverseevent.html): Subject impacted by event
4773* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4774* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4775* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4776* [AuditEvent](auditevent.html): Where the activity involved patient data
4777* [Basic](basic.html): Identifies the focus of this resource
4778* [BodyStructure](bodystructure.html): Who this is about
4779* [CarePlan](careplan.html): Who the care plan is for
4780* [CareTeam](careteam.html): Who care team is for
4781* [ChargeItem](chargeitem.html): Individual service was done for/to
4782* [Claim](claim.html): Patient receiving the products or services
4783* [ClaimResponse](claimresponse.html): The subject of care
4784* [ClinicalImpression](clinicalimpression.html): Patient assessed
4785* [Communication](communication.html): Focus of message
4786* [CommunicationRequest](communicationrequest.html): Focus of message
4787* [Composition](composition.html): Who and/or what the composition is about
4788* [Condition](condition.html): Who has the condition?
4789* [Consent](consent.html): Who the consent applies to
4790* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4791* [Coverage](coverage.html): Retrieve coverages for a patient
4792* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4793* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4794* [DetectedIssue](detectedissue.html): Associated patient
4795* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4796* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4797* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4798* [DocumentReference](documentreference.html): Who/what is the subject of the document
4799* [Encounter](encounter.html): The patient present at the encounter
4800* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4801* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4802* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4803* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4804* [Flag](flag.html): The identity of a subject to list flags for
4805* [Goal](goal.html): Who this goal is intended for
4806* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4807* [ImagingSelection](imagingselection.html): Who the study is about
4808* [ImagingStudy](imagingstudy.html): Who the study is about
4809* [Immunization](immunization.html): The patient for the vaccination record
4810* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4811* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4812* [Invoice](invoice.html): Recipient(s) of goods and services
4813* [List](list.html): If all resources have the same subject
4814* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4815* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4816* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4817* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4818* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4819* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4820* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4821* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4822* [Observation](observation.html): The subject that the observation is about (if patient)
4823* [Person](person.html): The Person links to this Patient
4824* [Procedure](procedure.html): Search by subject - a patient
4825* [Provenance](provenance.html): Where the activity involved patient data
4826* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4827* [RelatedPerson](relatedperson.html): The patient this related person is related to
4828* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4829* [ResearchSubject](researchsubject.html): Who or what is part of study
4830* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4831* [ServiceRequest](servicerequest.html): Search by subject - a patient
4832* [Specimen](specimen.html): The patient the specimen comes from
4833* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4834* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4835* [Task](task.html): Search by patient
4836* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4837</b><br>
4838   * Type: <b>reference</b><br>
4839   * 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>
4840   * </p>
4841   */
4842  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
4843
4844/**
4845   * Constant for fluent queries to be used to add include statements. Specifies
4846   * the path value of "<b>Encounter:patient</b>".
4847   */
4848  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Encounter:patient").toLocked();
4849
4850 /**
4851   * Search parameter: <b>type</b>
4852   * <p>
4853   * Description: <b>Multiple Resources: 
4854
4855* [Account](account.html): E.g. patient, expense, depreciation
4856* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)
4857* [Composition](composition.html): Kind of composition (LOINC if possible)
4858* [Coverage](coverage.html): The kind of coverage (health plan, auto, Workers Compensation)
4859* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)
4860* [Encounter](encounter.html): Specific type of encounter
4861* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management
4862* [Invoice](invoice.html): Type of Invoice
4863* [MedicationDispense](medicationdispense.html): Returns dispenses of a specific type
4864* [MolecularSequence](molecularsequence.html): Amino Acid Sequence/ DNA Sequence / RNA Sequence
4865* [Specimen](specimen.html): The specimen type
4866</b><br>
4867   * Type: <b>token</b><br>
4868   * Path: <b>Account.type | AllergyIntolerance.type | Composition.type | Coverage.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type | Invoice.type | MedicationDispense.type | MolecularSequence.type | Specimen.type</b><br>
4869   * </p>
4870   */
4871  @SearchParamDefinition(name="type", path="Account.type | AllergyIntolerance.type | Composition.type | Coverage.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type | Invoice.type | MedicationDispense.type | MolecularSequence.type | Specimen.type", description="Multiple Resources: \r\n\r\n* [Account](account.html): E.g. patient, expense, depreciation\r\n* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)\r\n* [Composition](composition.html): Kind of composition (LOINC if possible)\r\n* [Coverage](coverage.html): The kind of coverage (health plan, auto, Workers Compensation)\r\n* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)\r\n* [Encounter](encounter.html): Specific type of encounter\r\n* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management\r\n* [Invoice](invoice.html): Type of Invoice\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of a specific type\r\n* [MolecularSequence](molecularsequence.html): Amino Acid Sequence/ DNA Sequence / RNA Sequence\r\n* [Specimen](specimen.html): The specimen type\r\n", type="token" )
4872  public static final String SP_TYPE = "type";
4873 /**
4874   * <b>Fluent Client</b> search parameter constant for <b>type</b>
4875   * <p>
4876   * Description: <b>Multiple Resources: 
4877
4878* [Account](account.html): E.g. patient, expense, depreciation
4879* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)
4880* [Composition](composition.html): Kind of composition (LOINC if possible)
4881* [Coverage](coverage.html): The kind of coverage (health plan, auto, Workers Compensation)
4882* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)
4883* [Encounter](encounter.html): Specific type of encounter
4884* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management
4885* [Invoice](invoice.html): Type of Invoice
4886* [MedicationDispense](medicationdispense.html): Returns dispenses of a specific type
4887* [MolecularSequence](molecularsequence.html): Amino Acid Sequence/ DNA Sequence / RNA Sequence
4888* [Specimen](specimen.html): The specimen type
4889</b><br>
4890   * Type: <b>token</b><br>
4891   * Path: <b>Account.type | AllergyIntolerance.type | Composition.type | Coverage.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type | Invoice.type | MedicationDispense.type | MolecularSequence.type | Specimen.type</b><br>
4892   * </p>
4893   */
4894  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
4895
4896
4897}
4898