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 * Describes the event of a patient being administered a vaccine or a record of an immunization as reported by a patient, a clinician or another party.
052 */
053@ResourceDef(name="Immunization", profile="http://hl7.org/fhir/StructureDefinition/Immunization")
054public class Immunization extends DomainResource {
055
056    public enum ImmunizationStatusCodes {
057        /**
058         * The event has now concluded.
059         */
060        COMPLETED, 
061        /**
062         * This electronic record should never have existed, though it is possible that real-world decisions were based on it.  (If real-world activity has occurred, the status should be \"stopped\" rather than \"entered-in-error\".).
063         */
064        ENTEREDINERROR, 
065        /**
066         * The event was terminated prior to any activity beyond preparation.  I.e. The 'main' activity has not yet begun.  The boundary between preparatory and the 'main' activity is context-specific.
067         */
068        NOTDONE, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static ImmunizationStatusCodes fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("completed".equals(codeString))
077          return COMPLETED;
078        if ("entered-in-error".equals(codeString))
079          return ENTEREDINERROR;
080        if ("not-done".equals(codeString))
081          return NOTDONE;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown ImmunizationStatusCodes code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case COMPLETED: return "completed";
090            case ENTEREDINERROR: return "entered-in-error";
091            case NOTDONE: return "not-done";
092            case NULL: return null;
093            default: return "?";
094          }
095        }
096        public String getSystem() {
097          switch (this) {
098            case COMPLETED: return "http://hl7.org/fhir/event-status";
099            case ENTEREDINERROR: return "http://hl7.org/fhir/event-status";
100            case NOTDONE: return "http://hl7.org/fhir/event-status";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDefinition() {
106          switch (this) {
107            case COMPLETED: return "The event has now concluded.";
108            case ENTEREDINERROR: return "This electronic record should never have existed, though it is possible that real-world decisions were based on it.  (If real-world activity has occurred, the status should be \"stopped\" rather than \"entered-in-error\".).";
109            case NOTDONE: return "The event was terminated prior to any activity beyond preparation.  I.e. The 'main' activity has not yet begun.  The boundary between preparatory and the 'main' activity is context-specific.";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDisplay() {
115          switch (this) {
116            case COMPLETED: return "Completed";
117            case ENTEREDINERROR: return "Entered in Error";
118            case NOTDONE: return "Not Done";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123    }
124
125  public static class ImmunizationStatusCodesEnumFactory implements EnumFactory<ImmunizationStatusCodes> {
126    public ImmunizationStatusCodes fromCode(String codeString) throws IllegalArgumentException {
127      if (codeString == null || "".equals(codeString))
128            if (codeString == null || "".equals(codeString))
129                return null;
130        if ("completed".equals(codeString))
131          return ImmunizationStatusCodes.COMPLETED;
132        if ("entered-in-error".equals(codeString))
133          return ImmunizationStatusCodes.ENTEREDINERROR;
134        if ("not-done".equals(codeString))
135          return ImmunizationStatusCodes.NOTDONE;
136        throw new IllegalArgumentException("Unknown ImmunizationStatusCodes code '"+codeString+"'");
137        }
138        public Enumeration<ImmunizationStatusCodes> fromType(PrimitiveType<?> code) throws FHIRException {
139          if (code == null)
140            return null;
141          if (code.isEmpty())
142            return new Enumeration<ImmunizationStatusCodes>(this, ImmunizationStatusCodes.NULL, code);
143          String codeString = ((PrimitiveType) code).asStringValue();
144          if (codeString == null || "".equals(codeString))
145            return new Enumeration<ImmunizationStatusCodes>(this, ImmunizationStatusCodes.NULL, code);
146        if ("completed".equals(codeString))
147          return new Enumeration<ImmunizationStatusCodes>(this, ImmunizationStatusCodes.COMPLETED, code);
148        if ("entered-in-error".equals(codeString))
149          return new Enumeration<ImmunizationStatusCodes>(this, ImmunizationStatusCodes.ENTEREDINERROR, code);
150        if ("not-done".equals(codeString))
151          return new Enumeration<ImmunizationStatusCodes>(this, ImmunizationStatusCodes.NOTDONE, code);
152        throw new FHIRException("Unknown ImmunizationStatusCodes code '"+codeString+"'");
153        }
154    public String toCode(ImmunizationStatusCodes code) {
155      if (code == ImmunizationStatusCodes.COMPLETED)
156        return "completed";
157      if (code == ImmunizationStatusCodes.ENTEREDINERROR)
158        return "entered-in-error";
159      if (code == ImmunizationStatusCodes.NOTDONE)
160        return "not-done";
161      return "?";
162      }
163    public String toSystem(ImmunizationStatusCodes code) {
164      return code.getSystem();
165      }
166    }
167
168    @Block()
169    public static class ImmunizationPerformerComponent extends BackboneElement implements IBaseBackboneElement {
170        /**
171         * Describes the type of performance (e.g. ordering provider, administering provider, etc.).
172         */
173        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
174        @Description(shortDefinition="What type of performance was done", formalDefinition="Describes the type of performance (e.g. ordering provider, administering provider, etc.)." )
175        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-function")
176        protected CodeableConcept function;
177
178        /**
179         * The practitioner or organization who performed the action.
180         */
181        @Child(name = "actor", type = {Practitioner.class, PractitionerRole.class, Organization.class, Patient.class, RelatedPerson.class}, order=2, min=1, max=1, modifier=false, summary=true)
182        @Description(shortDefinition="Individual or organization who was performing", formalDefinition="The practitioner or organization who performed the action." )
183        protected Reference actor;
184
185        private static final long serialVersionUID = -576943815L;
186
187    /**
188     * Constructor
189     */
190      public ImmunizationPerformerComponent() {
191        super();
192      }
193
194    /**
195     * Constructor
196     */
197      public ImmunizationPerformerComponent(Reference actor) {
198        super();
199        this.setActor(actor);
200      }
201
202        /**
203         * @return {@link #function} (Describes the type of performance (e.g. ordering provider, administering provider, etc.).)
204         */
205        public CodeableConcept getFunction() { 
206          if (this.function == null)
207            if (Configuration.errorOnAutoCreate())
208              throw new Error("Attempt to auto-create ImmunizationPerformerComponent.function");
209            else if (Configuration.doAutoCreate())
210              this.function = new CodeableConcept(); // cc
211          return this.function;
212        }
213
214        public boolean hasFunction() { 
215          return this.function != null && !this.function.isEmpty();
216        }
217
218        /**
219         * @param value {@link #function} (Describes the type of performance (e.g. ordering provider, administering provider, etc.).)
220         */
221        public ImmunizationPerformerComponent setFunction(CodeableConcept value) { 
222          this.function = value;
223          return this;
224        }
225
226        /**
227         * @return {@link #actor} (The practitioner or organization who performed the action.)
228         */
229        public Reference getActor() { 
230          if (this.actor == null)
231            if (Configuration.errorOnAutoCreate())
232              throw new Error("Attempt to auto-create ImmunizationPerformerComponent.actor");
233            else if (Configuration.doAutoCreate())
234              this.actor = new Reference(); // cc
235          return this.actor;
236        }
237
238        public boolean hasActor() { 
239          return this.actor != null && !this.actor.isEmpty();
240        }
241
242        /**
243         * @param value {@link #actor} (The practitioner or organization who performed the action.)
244         */
245        public ImmunizationPerformerComponent setActor(Reference value) { 
246          this.actor = value;
247          return this;
248        }
249
250        protected void listChildren(List<Property> children) {
251          super.listChildren(children);
252          children.add(new Property("function", "CodeableConcept", "Describes the type of performance (e.g. ordering provider, administering provider, etc.).", 0, 1, function));
253          children.add(new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson)", "The practitioner or organization who performed the action.", 0, 1, actor));
254        }
255
256        @Override
257        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
258          switch (_hash) {
259          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "Describes the type of performance (e.g. ordering provider, administering provider, etc.).", 0, 1, function);
260          case 92645877: /*actor*/  return new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson)", "The practitioner or organization who performed the action.", 0, 1, actor);
261          default: return super.getNamedProperty(_hash, _name, _checkValid);
262          }
263
264        }
265
266      @Override
267      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
268        switch (hash) {
269        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
270        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
271        default: return super.getProperty(hash, name, checkValid);
272        }
273
274      }
275
276      @Override
277      public Base setProperty(int hash, String name, Base value) throws FHIRException {
278        switch (hash) {
279        case 1380938712: // function
280          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
281          return value;
282        case 92645877: // actor
283          this.actor = TypeConvertor.castToReference(value); // Reference
284          return value;
285        default: return super.setProperty(hash, name, value);
286        }
287
288      }
289
290      @Override
291      public Base setProperty(String name, Base value) throws FHIRException {
292        if (name.equals("function")) {
293          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
294        } else if (name.equals("actor")) {
295          this.actor = TypeConvertor.castToReference(value); // Reference
296        } else
297          return super.setProperty(name, value);
298        return value;
299      }
300
301      @Override
302      public Base makeProperty(int hash, String name) throws FHIRException {
303        switch (hash) {
304        case 1380938712:  return getFunction();
305        case 92645877:  return getActor();
306        default: return super.makeProperty(hash, name);
307        }
308
309      }
310
311      @Override
312      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
313        switch (hash) {
314        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
315        case 92645877: /*actor*/ return new String[] {"Reference"};
316        default: return super.getTypesForProperty(hash, name);
317        }
318
319      }
320
321      @Override
322      public Base addChild(String name) throws FHIRException {
323        if (name.equals("function")) {
324          this.function = new CodeableConcept();
325          return this.function;
326        }
327        else if (name.equals("actor")) {
328          this.actor = new Reference();
329          return this.actor;
330        }
331        else
332          return super.addChild(name);
333      }
334
335      public ImmunizationPerformerComponent copy() {
336        ImmunizationPerformerComponent dst = new ImmunizationPerformerComponent();
337        copyValues(dst);
338        return dst;
339      }
340
341      public void copyValues(ImmunizationPerformerComponent dst) {
342        super.copyValues(dst);
343        dst.function = function == null ? null : function.copy();
344        dst.actor = actor == null ? null : actor.copy();
345      }
346
347      @Override
348      public boolean equalsDeep(Base other_) {
349        if (!super.equalsDeep(other_))
350          return false;
351        if (!(other_ instanceof ImmunizationPerformerComponent))
352          return false;
353        ImmunizationPerformerComponent o = (ImmunizationPerformerComponent) other_;
354        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true);
355      }
356
357      @Override
358      public boolean equalsShallow(Base other_) {
359        if (!super.equalsShallow(other_))
360          return false;
361        if (!(other_ instanceof ImmunizationPerformerComponent))
362          return false;
363        ImmunizationPerformerComponent o = (ImmunizationPerformerComponent) other_;
364        return true;
365      }
366
367      public boolean isEmpty() {
368        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor);
369      }
370
371  public String fhirType() {
372    return "Immunization.performer";
373
374  }
375
376  }
377
378    @Block()
379    public static class ImmunizationProgramEligibilityComponent extends BackboneElement implements IBaseBackboneElement {
380        /**
381         * Indicates which program the patient had their eligility evaluated for.
382         */
383        @Child(name = "program", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
384        @Description(shortDefinition="The program that eligibility is declared for", formalDefinition="Indicates which program the patient had their eligility evaluated for." )
385        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-vaccine-funding-program")
386        protected CodeableConcept program;
387
388        /**
389         * Indicates the patient's eligility status for for a specific payment program.
390         */
391        @Child(name = "programStatus", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=false)
392        @Description(shortDefinition="The patient's eligibility status for the program", formalDefinition="Indicates the patient's eligility status for for a specific payment program." )
393        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-program-eligibility")
394        protected CodeableConcept programStatus;
395
396        private static final long serialVersionUID = -442289864L;
397
398    /**
399     * Constructor
400     */
401      public ImmunizationProgramEligibilityComponent() {
402        super();
403      }
404
405    /**
406     * Constructor
407     */
408      public ImmunizationProgramEligibilityComponent(CodeableConcept program, CodeableConcept programStatus) {
409        super();
410        this.setProgram(program);
411        this.setProgramStatus(programStatus);
412      }
413
414        /**
415         * @return {@link #program} (Indicates which program the patient had their eligility evaluated for.)
416         */
417        public CodeableConcept getProgram() { 
418          if (this.program == null)
419            if (Configuration.errorOnAutoCreate())
420              throw new Error("Attempt to auto-create ImmunizationProgramEligibilityComponent.program");
421            else if (Configuration.doAutoCreate())
422              this.program = new CodeableConcept(); // cc
423          return this.program;
424        }
425
426        public boolean hasProgram() { 
427          return this.program != null && !this.program.isEmpty();
428        }
429
430        /**
431         * @param value {@link #program} (Indicates which program the patient had their eligility evaluated for.)
432         */
433        public ImmunizationProgramEligibilityComponent setProgram(CodeableConcept value) { 
434          this.program = value;
435          return this;
436        }
437
438        /**
439         * @return {@link #programStatus} (Indicates the patient's eligility status for for a specific payment program.)
440         */
441        public CodeableConcept getProgramStatus() { 
442          if (this.programStatus == null)
443            if (Configuration.errorOnAutoCreate())
444              throw new Error("Attempt to auto-create ImmunizationProgramEligibilityComponent.programStatus");
445            else if (Configuration.doAutoCreate())
446              this.programStatus = new CodeableConcept(); // cc
447          return this.programStatus;
448        }
449
450        public boolean hasProgramStatus() { 
451          return this.programStatus != null && !this.programStatus.isEmpty();
452        }
453
454        /**
455         * @param value {@link #programStatus} (Indicates the patient's eligility status for for a specific payment program.)
456         */
457        public ImmunizationProgramEligibilityComponent setProgramStatus(CodeableConcept value) { 
458          this.programStatus = value;
459          return this;
460        }
461
462        protected void listChildren(List<Property> children) {
463          super.listChildren(children);
464          children.add(new Property("program", "CodeableConcept", "Indicates which program the patient had their eligility evaluated for.", 0, 1, program));
465          children.add(new Property("programStatus", "CodeableConcept", "Indicates the patient's eligility status for for a specific payment program.", 0, 1, programStatus));
466        }
467
468        @Override
469        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
470          switch (_hash) {
471          case -309387644: /*program*/  return new Property("program", "CodeableConcept", "Indicates which program the patient had their eligility evaluated for.", 0, 1, program);
472          case 472508310: /*programStatus*/  return new Property("programStatus", "CodeableConcept", "Indicates the patient's eligility status for for a specific payment program.", 0, 1, programStatus);
473          default: return super.getNamedProperty(_hash, _name, _checkValid);
474          }
475
476        }
477
478      @Override
479      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
480        switch (hash) {
481        case -309387644: /*program*/ return this.program == null ? new Base[0] : new Base[] {this.program}; // CodeableConcept
482        case 472508310: /*programStatus*/ return this.programStatus == null ? new Base[0] : new Base[] {this.programStatus}; // CodeableConcept
483        default: return super.getProperty(hash, name, checkValid);
484        }
485
486      }
487
488      @Override
489      public Base setProperty(int hash, String name, Base value) throws FHIRException {
490        switch (hash) {
491        case -309387644: // program
492          this.program = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
493          return value;
494        case 472508310: // programStatus
495          this.programStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
496          return value;
497        default: return super.setProperty(hash, name, value);
498        }
499
500      }
501
502      @Override
503      public Base setProperty(String name, Base value) throws FHIRException {
504        if (name.equals("program")) {
505          this.program = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
506        } else if (name.equals("programStatus")) {
507          this.programStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
508        } else
509          return super.setProperty(name, value);
510        return value;
511      }
512
513      @Override
514      public Base makeProperty(int hash, String name) throws FHIRException {
515        switch (hash) {
516        case -309387644:  return getProgram();
517        case 472508310:  return getProgramStatus();
518        default: return super.makeProperty(hash, name);
519        }
520
521      }
522
523      @Override
524      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
525        switch (hash) {
526        case -309387644: /*program*/ return new String[] {"CodeableConcept"};
527        case 472508310: /*programStatus*/ return new String[] {"CodeableConcept"};
528        default: return super.getTypesForProperty(hash, name);
529        }
530
531      }
532
533      @Override
534      public Base addChild(String name) throws FHIRException {
535        if (name.equals("program")) {
536          this.program = new CodeableConcept();
537          return this.program;
538        }
539        else if (name.equals("programStatus")) {
540          this.programStatus = new CodeableConcept();
541          return this.programStatus;
542        }
543        else
544          return super.addChild(name);
545      }
546
547      public ImmunizationProgramEligibilityComponent copy() {
548        ImmunizationProgramEligibilityComponent dst = new ImmunizationProgramEligibilityComponent();
549        copyValues(dst);
550        return dst;
551      }
552
553      public void copyValues(ImmunizationProgramEligibilityComponent dst) {
554        super.copyValues(dst);
555        dst.program = program == null ? null : program.copy();
556        dst.programStatus = programStatus == null ? null : programStatus.copy();
557      }
558
559      @Override
560      public boolean equalsDeep(Base other_) {
561        if (!super.equalsDeep(other_))
562          return false;
563        if (!(other_ instanceof ImmunizationProgramEligibilityComponent))
564          return false;
565        ImmunizationProgramEligibilityComponent o = (ImmunizationProgramEligibilityComponent) other_;
566        return compareDeep(program, o.program, true) && compareDeep(programStatus, o.programStatus, true)
567          ;
568      }
569
570      @Override
571      public boolean equalsShallow(Base other_) {
572        if (!super.equalsShallow(other_))
573          return false;
574        if (!(other_ instanceof ImmunizationProgramEligibilityComponent))
575          return false;
576        ImmunizationProgramEligibilityComponent o = (ImmunizationProgramEligibilityComponent) other_;
577        return true;
578      }
579
580      public boolean isEmpty() {
581        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(program, programStatus);
582      }
583
584  public String fhirType() {
585    return "Immunization.programEligibility";
586
587  }
588
589  }
590
591    @Block()
592    public static class ImmunizationReactionComponent extends BackboneElement implements IBaseBackboneElement {
593        /**
594         * Date of reaction to the immunization.
595         */
596        @Child(name = "date", type = {DateTimeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
597        @Description(shortDefinition="When reaction started", formalDefinition="Date of reaction to the immunization." )
598        protected DateTimeType date;
599
600        /**
601         * Details of the reaction.
602         */
603        @Child(name = "manifestation", type = {CodeableReference.class}, order=2, min=0, max=1, modifier=false, summary=false)
604        @Description(shortDefinition="Additional information on reaction", formalDefinition="Details of the reaction." )
605        protected CodeableReference manifestation;
606
607        /**
608         * Self-reported indicator.
609         */
610        @Child(name = "reported", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
611        @Description(shortDefinition="Indicates self-reported reaction", formalDefinition="Self-reported indicator." )
612        protected BooleanType reported;
613
614        private static final long serialVersionUID = 1181151012L;
615
616    /**
617     * Constructor
618     */
619      public ImmunizationReactionComponent() {
620        super();
621      }
622
623        /**
624         * @return {@link #date} (Date of reaction to the immunization.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
625         */
626        public DateTimeType getDateElement() { 
627          if (this.date == null)
628            if (Configuration.errorOnAutoCreate())
629              throw new Error("Attempt to auto-create ImmunizationReactionComponent.date");
630            else if (Configuration.doAutoCreate())
631              this.date = new DateTimeType(); // bb
632          return this.date;
633        }
634
635        public boolean hasDateElement() { 
636          return this.date != null && !this.date.isEmpty();
637        }
638
639        public boolean hasDate() { 
640          return this.date != null && !this.date.isEmpty();
641        }
642
643        /**
644         * @param value {@link #date} (Date of reaction to the immunization.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
645         */
646        public ImmunizationReactionComponent setDateElement(DateTimeType value) { 
647          this.date = value;
648          return this;
649        }
650
651        /**
652         * @return Date of reaction to the immunization.
653         */
654        public Date getDate() { 
655          return this.date == null ? null : this.date.getValue();
656        }
657
658        /**
659         * @param value Date of reaction to the immunization.
660         */
661        public ImmunizationReactionComponent setDate(Date value) { 
662          if (value == null)
663            this.date = null;
664          else {
665            if (this.date == null)
666              this.date = new DateTimeType();
667            this.date.setValue(value);
668          }
669          return this;
670        }
671
672        /**
673         * @return {@link #manifestation} (Details of the reaction.)
674         */
675        public CodeableReference getManifestation() { 
676          if (this.manifestation == null)
677            if (Configuration.errorOnAutoCreate())
678              throw new Error("Attempt to auto-create ImmunizationReactionComponent.manifestation");
679            else if (Configuration.doAutoCreate())
680              this.manifestation = new CodeableReference(); // cc
681          return this.manifestation;
682        }
683
684        public boolean hasManifestation() { 
685          return this.manifestation != null && !this.manifestation.isEmpty();
686        }
687
688        /**
689         * @param value {@link #manifestation} (Details of the reaction.)
690         */
691        public ImmunizationReactionComponent setManifestation(CodeableReference value) { 
692          this.manifestation = value;
693          return this;
694        }
695
696        /**
697         * @return {@link #reported} (Self-reported indicator.). This is the underlying object with id, value and extensions. The accessor "getReported" gives direct access to the value
698         */
699        public BooleanType getReportedElement() { 
700          if (this.reported == null)
701            if (Configuration.errorOnAutoCreate())
702              throw new Error("Attempt to auto-create ImmunizationReactionComponent.reported");
703            else if (Configuration.doAutoCreate())
704              this.reported = new BooleanType(); // bb
705          return this.reported;
706        }
707
708        public boolean hasReportedElement() { 
709          return this.reported != null && !this.reported.isEmpty();
710        }
711
712        public boolean hasReported() { 
713          return this.reported != null && !this.reported.isEmpty();
714        }
715
716        /**
717         * @param value {@link #reported} (Self-reported indicator.). This is the underlying object with id, value and extensions. The accessor "getReported" gives direct access to the value
718         */
719        public ImmunizationReactionComponent setReportedElement(BooleanType value) { 
720          this.reported = value;
721          return this;
722        }
723
724        /**
725         * @return Self-reported indicator.
726         */
727        public boolean getReported() { 
728          return this.reported == null || this.reported.isEmpty() ? false : this.reported.getValue();
729        }
730
731        /**
732         * @param value Self-reported indicator.
733         */
734        public ImmunizationReactionComponent setReported(boolean value) { 
735            if (this.reported == null)
736              this.reported = new BooleanType();
737            this.reported.setValue(value);
738          return this;
739        }
740
741        protected void listChildren(List<Property> children) {
742          super.listChildren(children);
743          children.add(new Property("date", "dateTime", "Date of reaction to the immunization.", 0, 1, date));
744          children.add(new Property("manifestation", "CodeableReference(Observation)", "Details of the reaction.", 0, 1, manifestation));
745          children.add(new Property("reported", "boolean", "Self-reported indicator.", 0, 1, reported));
746        }
747
748        @Override
749        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
750          switch (_hash) {
751          case 3076014: /*date*/  return new Property("date", "dateTime", "Date of reaction to the immunization.", 0, 1, date);
752          case 1115984422: /*manifestation*/  return new Property("manifestation", "CodeableReference(Observation)", "Details of the reaction.", 0, 1, manifestation);
753          case -427039533: /*reported*/  return new Property("reported", "boolean", "Self-reported indicator.", 0, 1, reported);
754          default: return super.getNamedProperty(_hash, _name, _checkValid);
755          }
756
757        }
758
759      @Override
760      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
761        switch (hash) {
762        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
763        case 1115984422: /*manifestation*/ return this.manifestation == null ? new Base[0] : new Base[] {this.manifestation}; // CodeableReference
764        case -427039533: /*reported*/ return this.reported == null ? new Base[0] : new Base[] {this.reported}; // BooleanType
765        default: return super.getProperty(hash, name, checkValid);
766        }
767
768      }
769
770      @Override
771      public Base setProperty(int hash, String name, Base value) throws FHIRException {
772        switch (hash) {
773        case 3076014: // date
774          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
775          return value;
776        case 1115984422: // manifestation
777          this.manifestation = TypeConvertor.castToCodeableReference(value); // CodeableReference
778          return value;
779        case -427039533: // reported
780          this.reported = TypeConvertor.castToBoolean(value); // BooleanType
781          return value;
782        default: return super.setProperty(hash, name, value);
783        }
784
785      }
786
787      @Override
788      public Base setProperty(String name, Base value) throws FHIRException {
789        if (name.equals("date")) {
790          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
791        } else if (name.equals("manifestation")) {
792          this.manifestation = TypeConvertor.castToCodeableReference(value); // CodeableReference
793        } else if (name.equals("reported")) {
794          this.reported = TypeConvertor.castToBoolean(value); // BooleanType
795        } else
796          return super.setProperty(name, value);
797        return value;
798      }
799
800      @Override
801      public Base makeProperty(int hash, String name) throws FHIRException {
802        switch (hash) {
803        case 3076014:  return getDateElement();
804        case 1115984422:  return getManifestation();
805        case -427039533:  return getReportedElement();
806        default: return super.makeProperty(hash, name);
807        }
808
809      }
810
811      @Override
812      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
813        switch (hash) {
814        case 3076014: /*date*/ return new String[] {"dateTime"};
815        case 1115984422: /*manifestation*/ return new String[] {"CodeableReference"};
816        case -427039533: /*reported*/ return new String[] {"boolean"};
817        default: return super.getTypesForProperty(hash, name);
818        }
819
820      }
821
822      @Override
823      public Base addChild(String name) throws FHIRException {
824        if (name.equals("date")) {
825          throw new FHIRException("Cannot call addChild on a singleton property Immunization.reaction.date");
826        }
827        else if (name.equals("manifestation")) {
828          this.manifestation = new CodeableReference();
829          return this.manifestation;
830        }
831        else if (name.equals("reported")) {
832          throw new FHIRException("Cannot call addChild on a singleton property Immunization.reaction.reported");
833        }
834        else
835          return super.addChild(name);
836      }
837
838      public ImmunizationReactionComponent copy() {
839        ImmunizationReactionComponent dst = new ImmunizationReactionComponent();
840        copyValues(dst);
841        return dst;
842      }
843
844      public void copyValues(ImmunizationReactionComponent dst) {
845        super.copyValues(dst);
846        dst.date = date == null ? null : date.copy();
847        dst.manifestation = manifestation == null ? null : manifestation.copy();
848        dst.reported = reported == null ? null : reported.copy();
849      }
850
851      @Override
852      public boolean equalsDeep(Base other_) {
853        if (!super.equalsDeep(other_))
854          return false;
855        if (!(other_ instanceof ImmunizationReactionComponent))
856          return false;
857        ImmunizationReactionComponent o = (ImmunizationReactionComponent) other_;
858        return compareDeep(date, o.date, true) && compareDeep(manifestation, o.manifestation, true) && compareDeep(reported, o.reported, true)
859          ;
860      }
861
862      @Override
863      public boolean equalsShallow(Base other_) {
864        if (!super.equalsShallow(other_))
865          return false;
866        if (!(other_ instanceof ImmunizationReactionComponent))
867          return false;
868        ImmunizationReactionComponent o = (ImmunizationReactionComponent) other_;
869        return compareValues(date, o.date, true) && compareValues(reported, o.reported, true);
870      }
871
872      public boolean isEmpty() {
873        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(date, manifestation, reported
874          );
875      }
876
877  public String fhirType() {
878    return "Immunization.reaction";
879
880  }
881
882  }
883
884    @Block()
885    public static class ImmunizationProtocolAppliedComponent extends BackboneElement implements IBaseBackboneElement {
886        /**
887         * One possible path to achieve presumed immunity against a disease - within the context of an authority.
888         */
889        @Child(name = "series", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
890        @Description(shortDefinition="Name of vaccine series", formalDefinition="One possible path to achieve presumed immunity against a disease - within the context of an authority." )
891        protected StringType series;
892
893        /**
894         * Indicates the authority who published the protocol (e.g. ACIP) that is being followed.
895         */
896        @Child(name = "authority", type = {Organization.class}, order=2, min=0, max=1, modifier=false, summary=false)
897        @Description(shortDefinition="Who is responsible for publishing the recommendations", formalDefinition="Indicates the authority who published the protocol (e.g. ACIP) that is being followed." )
898        protected Reference authority;
899
900        /**
901         * The vaccine preventable disease the dose is being administered against.
902         */
903        @Child(name = "targetDisease", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
904        @Description(shortDefinition="Vaccine preventatable disease being targeted", formalDefinition="The vaccine preventable disease the dose is being administered against." )
905        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-target-disease")
906        protected List<CodeableConcept> targetDisease;
907
908        /**
909         * Nominal position in a series as intended by the practitioner administering the dose.
910         */
911        @Child(name = "doseNumber", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=false)
912        @Description(shortDefinition="Dose number within series", formalDefinition="Nominal position in a series as intended by the practitioner administering the dose." )
913        protected StringType doseNumber;
914
915        /**
916         * The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.
917         */
918        @Child(name = "seriesDoses", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
919        @Description(shortDefinition="Recommended number of doses for immunity", formalDefinition="The recommended number of doses to achieve immunity as intended by the practitioner administering the dose." )
920        protected StringType seriesDoses;
921
922        private static final long serialVersionUID = 660613103L;
923
924    /**
925     * Constructor
926     */
927      public ImmunizationProtocolAppliedComponent() {
928        super();
929      }
930
931    /**
932     * Constructor
933     */
934      public ImmunizationProtocolAppliedComponent(String doseNumber) {
935        super();
936        this.setDoseNumber(doseNumber);
937      }
938
939        /**
940         * @return {@link #series} (One possible path to achieve presumed immunity against a disease - within the context of an authority.). This is the underlying object with id, value and extensions. The accessor "getSeries" gives direct access to the value
941         */
942        public StringType getSeriesElement() { 
943          if (this.series == null)
944            if (Configuration.errorOnAutoCreate())
945              throw new Error("Attempt to auto-create ImmunizationProtocolAppliedComponent.series");
946            else if (Configuration.doAutoCreate())
947              this.series = new StringType(); // bb
948          return this.series;
949        }
950
951        public boolean hasSeriesElement() { 
952          return this.series != null && !this.series.isEmpty();
953        }
954
955        public boolean hasSeries() { 
956          return this.series != null && !this.series.isEmpty();
957        }
958
959        /**
960         * @param value {@link #series} (One possible path to achieve presumed immunity against a disease - within the context of an authority.). This is the underlying object with id, value and extensions. The accessor "getSeries" gives direct access to the value
961         */
962        public ImmunizationProtocolAppliedComponent setSeriesElement(StringType value) { 
963          this.series = value;
964          return this;
965        }
966
967        /**
968         * @return One possible path to achieve presumed immunity against a disease - within the context of an authority.
969         */
970        public String getSeries() { 
971          return this.series == null ? null : this.series.getValue();
972        }
973
974        /**
975         * @param value One possible path to achieve presumed immunity against a disease - within the context of an authority.
976         */
977        public ImmunizationProtocolAppliedComponent setSeries(String value) { 
978          if (Utilities.noString(value))
979            this.series = null;
980          else {
981            if (this.series == null)
982              this.series = new StringType();
983            this.series.setValue(value);
984          }
985          return this;
986        }
987
988        /**
989         * @return {@link #authority} (Indicates the authority who published the protocol (e.g. ACIP) that is being followed.)
990         */
991        public Reference getAuthority() { 
992          if (this.authority == null)
993            if (Configuration.errorOnAutoCreate())
994              throw new Error("Attempt to auto-create ImmunizationProtocolAppliedComponent.authority");
995            else if (Configuration.doAutoCreate())
996              this.authority = new Reference(); // cc
997          return this.authority;
998        }
999
1000        public boolean hasAuthority() { 
1001          return this.authority != null && !this.authority.isEmpty();
1002        }
1003
1004        /**
1005         * @param value {@link #authority} (Indicates the authority who published the protocol (e.g. ACIP) that is being followed.)
1006         */
1007        public ImmunizationProtocolAppliedComponent setAuthority(Reference value) { 
1008          this.authority = value;
1009          return this;
1010        }
1011
1012        /**
1013         * @return {@link #targetDisease} (The vaccine preventable disease the dose is being administered against.)
1014         */
1015        public List<CodeableConcept> getTargetDisease() { 
1016          if (this.targetDisease == null)
1017            this.targetDisease = new ArrayList<CodeableConcept>();
1018          return this.targetDisease;
1019        }
1020
1021        /**
1022         * @return Returns a reference to <code>this</code> for easy method chaining
1023         */
1024        public ImmunizationProtocolAppliedComponent setTargetDisease(List<CodeableConcept> theTargetDisease) { 
1025          this.targetDisease = theTargetDisease;
1026          return this;
1027        }
1028
1029        public boolean hasTargetDisease() { 
1030          if (this.targetDisease == null)
1031            return false;
1032          for (CodeableConcept item : this.targetDisease)
1033            if (!item.isEmpty())
1034              return true;
1035          return false;
1036        }
1037
1038        public CodeableConcept addTargetDisease() { //3
1039          CodeableConcept t = new CodeableConcept();
1040          if (this.targetDisease == null)
1041            this.targetDisease = new ArrayList<CodeableConcept>();
1042          this.targetDisease.add(t);
1043          return t;
1044        }
1045
1046        public ImmunizationProtocolAppliedComponent addTargetDisease(CodeableConcept t) { //3
1047          if (t == null)
1048            return this;
1049          if (this.targetDisease == null)
1050            this.targetDisease = new ArrayList<CodeableConcept>();
1051          this.targetDisease.add(t);
1052          return this;
1053        }
1054
1055        /**
1056         * @return The first repetition of repeating field {@link #targetDisease}, creating it if it does not already exist {3}
1057         */
1058        public CodeableConcept getTargetDiseaseFirstRep() { 
1059          if (getTargetDisease().isEmpty()) {
1060            addTargetDisease();
1061          }
1062          return getTargetDisease().get(0);
1063        }
1064
1065        /**
1066         * @return {@link #doseNumber} (Nominal position in a series as intended by the practitioner administering the dose.). This is the underlying object with id, value and extensions. The accessor "getDoseNumber" gives direct access to the value
1067         */
1068        public StringType getDoseNumberElement() { 
1069          if (this.doseNumber == null)
1070            if (Configuration.errorOnAutoCreate())
1071              throw new Error("Attempt to auto-create ImmunizationProtocolAppliedComponent.doseNumber");
1072            else if (Configuration.doAutoCreate())
1073              this.doseNumber = new StringType(); // bb
1074          return this.doseNumber;
1075        }
1076
1077        public boolean hasDoseNumberElement() { 
1078          return this.doseNumber != null && !this.doseNumber.isEmpty();
1079        }
1080
1081        public boolean hasDoseNumber() { 
1082          return this.doseNumber != null && !this.doseNumber.isEmpty();
1083        }
1084
1085        /**
1086         * @param value {@link #doseNumber} (Nominal position in a series as intended by the practitioner administering the dose.). This is the underlying object with id, value and extensions. The accessor "getDoseNumber" gives direct access to the value
1087         */
1088        public ImmunizationProtocolAppliedComponent setDoseNumberElement(StringType value) { 
1089          this.doseNumber = value;
1090          return this;
1091        }
1092
1093        /**
1094         * @return Nominal position in a series as intended by the practitioner administering the dose.
1095         */
1096        public String getDoseNumber() { 
1097          return this.doseNumber == null ? null : this.doseNumber.getValue();
1098        }
1099
1100        /**
1101         * @param value Nominal position in a series as intended by the practitioner administering the dose.
1102         */
1103        public ImmunizationProtocolAppliedComponent setDoseNumber(String value) { 
1104            if (this.doseNumber == null)
1105              this.doseNumber = new StringType();
1106            this.doseNumber.setValue(value);
1107          return this;
1108        }
1109
1110        /**
1111         * @return {@link #seriesDoses} (The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.). This is the underlying object with id, value and extensions. The accessor "getSeriesDoses" gives direct access to the value
1112         */
1113        public StringType getSeriesDosesElement() { 
1114          if (this.seriesDoses == null)
1115            if (Configuration.errorOnAutoCreate())
1116              throw new Error("Attempt to auto-create ImmunizationProtocolAppliedComponent.seriesDoses");
1117            else if (Configuration.doAutoCreate())
1118              this.seriesDoses = new StringType(); // bb
1119          return this.seriesDoses;
1120        }
1121
1122        public boolean hasSeriesDosesElement() { 
1123          return this.seriesDoses != null && !this.seriesDoses.isEmpty();
1124        }
1125
1126        public boolean hasSeriesDoses() { 
1127          return this.seriesDoses != null && !this.seriesDoses.isEmpty();
1128        }
1129
1130        /**
1131         * @param value {@link #seriesDoses} (The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.). This is the underlying object with id, value and extensions. The accessor "getSeriesDoses" gives direct access to the value
1132         */
1133        public ImmunizationProtocolAppliedComponent setSeriesDosesElement(StringType value) { 
1134          this.seriesDoses = value;
1135          return this;
1136        }
1137
1138        /**
1139         * @return The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.
1140         */
1141        public String getSeriesDoses() { 
1142          return this.seriesDoses == null ? null : this.seriesDoses.getValue();
1143        }
1144
1145        /**
1146         * @param value The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.
1147         */
1148        public ImmunizationProtocolAppliedComponent setSeriesDoses(String value) { 
1149          if (Utilities.noString(value))
1150            this.seriesDoses = null;
1151          else {
1152            if (this.seriesDoses == null)
1153              this.seriesDoses = new StringType();
1154            this.seriesDoses.setValue(value);
1155          }
1156          return this;
1157        }
1158
1159        protected void listChildren(List<Property> children) {
1160          super.listChildren(children);
1161          children.add(new Property("series", "string", "One possible path to achieve presumed immunity against a disease - within the context of an authority.", 0, 1, series));
1162          children.add(new Property("authority", "Reference(Organization)", "Indicates the authority who published the protocol (e.g. ACIP) that is being followed.", 0, 1, authority));
1163          children.add(new Property("targetDisease", "CodeableConcept", "The vaccine preventable disease the dose is being administered against.", 0, java.lang.Integer.MAX_VALUE, targetDisease));
1164          children.add(new Property("doseNumber", "string", "Nominal position in a series as intended by the practitioner administering the dose.", 0, 1, doseNumber));
1165          children.add(new Property("seriesDoses", "string", "The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.", 0, 1, seriesDoses));
1166        }
1167
1168        @Override
1169        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1170          switch (_hash) {
1171          case -905838985: /*series*/  return new Property("series", "string", "One possible path to achieve presumed immunity against a disease - within the context of an authority.", 0, 1, series);
1172          case 1475610435: /*authority*/  return new Property("authority", "Reference(Organization)", "Indicates the authority who published the protocol (e.g. ACIP) that is being followed.", 0, 1, authority);
1173          case -319593813: /*targetDisease*/  return new Property("targetDisease", "CodeableConcept", "The vaccine preventable disease the dose is being administered against.", 0, java.lang.Integer.MAX_VALUE, targetDisease);
1174          case -887709242: /*doseNumber*/  return new Property("doseNumber", "string", "Nominal position in a series as intended by the practitioner administering the dose.", 0, 1, doseNumber);
1175          case -1936727105: /*seriesDoses*/  return new Property("seriesDoses", "string", "The recommended number of doses to achieve immunity as intended by the practitioner administering the dose.", 0, 1, seriesDoses);
1176          default: return super.getNamedProperty(_hash, _name, _checkValid);
1177          }
1178
1179        }
1180
1181      @Override
1182      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1183        switch (hash) {
1184        case -905838985: /*series*/ return this.series == null ? new Base[0] : new Base[] {this.series}; // StringType
1185        case 1475610435: /*authority*/ return this.authority == null ? new Base[0] : new Base[] {this.authority}; // Reference
1186        case -319593813: /*targetDisease*/ return this.targetDisease == null ? new Base[0] : this.targetDisease.toArray(new Base[this.targetDisease.size()]); // CodeableConcept
1187        case -887709242: /*doseNumber*/ return this.doseNumber == null ? new Base[0] : new Base[] {this.doseNumber}; // StringType
1188        case -1936727105: /*seriesDoses*/ return this.seriesDoses == null ? new Base[0] : new Base[] {this.seriesDoses}; // StringType
1189        default: return super.getProperty(hash, name, checkValid);
1190        }
1191
1192      }
1193
1194      @Override
1195      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1196        switch (hash) {
1197        case -905838985: // series
1198          this.series = TypeConvertor.castToString(value); // StringType
1199          return value;
1200        case 1475610435: // authority
1201          this.authority = TypeConvertor.castToReference(value); // Reference
1202          return value;
1203        case -319593813: // targetDisease
1204          this.getTargetDisease().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1205          return value;
1206        case -887709242: // doseNumber
1207          this.doseNumber = TypeConvertor.castToString(value); // StringType
1208          return value;
1209        case -1936727105: // seriesDoses
1210          this.seriesDoses = TypeConvertor.castToString(value); // StringType
1211          return value;
1212        default: return super.setProperty(hash, name, value);
1213        }
1214
1215      }
1216
1217      @Override
1218      public Base setProperty(String name, Base value) throws FHIRException {
1219        if (name.equals("series")) {
1220          this.series = TypeConvertor.castToString(value); // StringType
1221        } else if (name.equals("authority")) {
1222          this.authority = TypeConvertor.castToReference(value); // Reference
1223        } else if (name.equals("targetDisease")) {
1224          this.getTargetDisease().add(TypeConvertor.castToCodeableConcept(value));
1225        } else if (name.equals("doseNumber")) {
1226          this.doseNumber = TypeConvertor.castToString(value); // StringType
1227        } else if (name.equals("seriesDoses")) {
1228          this.seriesDoses = TypeConvertor.castToString(value); // StringType
1229        } else
1230          return super.setProperty(name, value);
1231        return value;
1232      }
1233
1234      @Override
1235      public Base makeProperty(int hash, String name) throws FHIRException {
1236        switch (hash) {
1237        case -905838985:  return getSeriesElement();
1238        case 1475610435:  return getAuthority();
1239        case -319593813:  return addTargetDisease(); 
1240        case -887709242:  return getDoseNumberElement();
1241        case -1936727105:  return getSeriesDosesElement();
1242        default: return super.makeProperty(hash, name);
1243        }
1244
1245      }
1246
1247      @Override
1248      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1249        switch (hash) {
1250        case -905838985: /*series*/ return new String[] {"string"};
1251        case 1475610435: /*authority*/ return new String[] {"Reference"};
1252        case -319593813: /*targetDisease*/ return new String[] {"CodeableConcept"};
1253        case -887709242: /*doseNumber*/ return new String[] {"string"};
1254        case -1936727105: /*seriesDoses*/ return new String[] {"string"};
1255        default: return super.getTypesForProperty(hash, name);
1256        }
1257
1258      }
1259
1260      @Override
1261      public Base addChild(String name) throws FHIRException {
1262        if (name.equals("series")) {
1263          throw new FHIRException("Cannot call addChild on a singleton property Immunization.protocolApplied.series");
1264        }
1265        else if (name.equals("authority")) {
1266          this.authority = new Reference();
1267          return this.authority;
1268        }
1269        else if (name.equals("targetDisease")) {
1270          return addTargetDisease();
1271        }
1272        else if (name.equals("doseNumber")) {
1273          throw new FHIRException("Cannot call addChild on a singleton property Immunization.protocolApplied.doseNumber");
1274        }
1275        else if (name.equals("seriesDoses")) {
1276          throw new FHIRException("Cannot call addChild on a singleton property Immunization.protocolApplied.seriesDoses");
1277        }
1278        else
1279          return super.addChild(name);
1280      }
1281
1282      public ImmunizationProtocolAppliedComponent copy() {
1283        ImmunizationProtocolAppliedComponent dst = new ImmunizationProtocolAppliedComponent();
1284        copyValues(dst);
1285        return dst;
1286      }
1287
1288      public void copyValues(ImmunizationProtocolAppliedComponent dst) {
1289        super.copyValues(dst);
1290        dst.series = series == null ? null : series.copy();
1291        dst.authority = authority == null ? null : authority.copy();
1292        if (targetDisease != null) {
1293          dst.targetDisease = new ArrayList<CodeableConcept>();
1294          for (CodeableConcept i : targetDisease)
1295            dst.targetDisease.add(i.copy());
1296        };
1297        dst.doseNumber = doseNumber == null ? null : doseNumber.copy();
1298        dst.seriesDoses = seriesDoses == null ? null : seriesDoses.copy();
1299      }
1300
1301      @Override
1302      public boolean equalsDeep(Base other_) {
1303        if (!super.equalsDeep(other_))
1304          return false;
1305        if (!(other_ instanceof ImmunizationProtocolAppliedComponent))
1306          return false;
1307        ImmunizationProtocolAppliedComponent o = (ImmunizationProtocolAppliedComponent) other_;
1308        return compareDeep(series, o.series, true) && compareDeep(authority, o.authority, true) && compareDeep(targetDisease, o.targetDisease, true)
1309           && compareDeep(doseNumber, o.doseNumber, true) && compareDeep(seriesDoses, o.seriesDoses, true)
1310          ;
1311      }
1312
1313      @Override
1314      public boolean equalsShallow(Base other_) {
1315        if (!super.equalsShallow(other_))
1316          return false;
1317        if (!(other_ instanceof ImmunizationProtocolAppliedComponent))
1318          return false;
1319        ImmunizationProtocolAppliedComponent o = (ImmunizationProtocolAppliedComponent) other_;
1320        return compareValues(series, o.series, true) && compareValues(doseNumber, o.doseNumber, true) && compareValues(seriesDoses, o.seriesDoses, true)
1321          ;
1322      }
1323
1324      public boolean isEmpty() {
1325        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(series, authority, targetDisease
1326          , doseNumber, seriesDoses);
1327      }
1328
1329  public String fhirType() {
1330    return "Immunization.protocolApplied";
1331
1332  }
1333
1334  }
1335
1336    /**
1337     * A unique identifier assigned to this immunization record.
1338     */
1339    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1340    @Description(shortDefinition="Business identifier", formalDefinition="A unique identifier assigned to this immunization record." )
1341    protected List<Identifier> identifier;
1342
1343    /**
1344     * A plan, order or recommendation fulfilled in whole or in part by this immunization.
1345     */
1346    @Child(name = "basedOn", type = {CarePlan.class, MedicationRequest.class, ServiceRequest.class, ImmunizationRecommendation.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1347    @Description(shortDefinition="Authority that the immunization event is based on", formalDefinition="A plan, order or recommendation fulfilled in whole or in part by this immunization." )
1348    protected List<Reference> basedOn;
1349
1350    /**
1351     * Indicates the current status of the immunization event.
1352     */
1353    @Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
1354    @Description(shortDefinition="completed | entered-in-error | not-done", formalDefinition="Indicates the current status of the immunization event." )
1355    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-status")
1356    protected Enumeration<ImmunizationStatusCodes> status;
1357
1358    /**
1359     * Indicates the reason the immunization event was not performed.
1360     */
1361    @Child(name = "statusReason", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1362    @Description(shortDefinition="Reason for current status", formalDefinition="Indicates the reason the immunization event was not performed." )
1363    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-status-reason")
1364    protected CodeableConcept statusReason;
1365
1366    /**
1367     * Vaccine that was administered or was to be administered.
1368     */
1369    @Child(name = "vaccineCode", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=false, summary=true)
1370    @Description(shortDefinition="Vaccine administered", formalDefinition="Vaccine that was administered or was to be administered." )
1371    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vaccine-code")
1372    protected CodeableConcept vaccineCode;
1373
1374    /**
1375     * An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource.
1376     */
1377    @Child(name = "administeredProduct", type = {CodeableReference.class}, order=5, min=0, max=1, modifier=false, summary=false)
1378    @Description(shortDefinition="Product that was administered", formalDefinition="An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource." )
1379    protected CodeableReference administeredProduct;
1380
1381    /**
1382     * Name of vaccine manufacturer.
1383     */
1384    @Child(name = "manufacturer", type = {CodeableReference.class}, order=6, min=0, max=1, modifier=false, summary=false)
1385    @Description(shortDefinition="Vaccine manufacturer", formalDefinition="Name of vaccine manufacturer." )
1386    protected CodeableReference manufacturer;
1387
1388    /**
1389     * Lot number of the  vaccine product.
1390     */
1391    @Child(name = "lotNumber", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
1392    @Description(shortDefinition="Vaccine lot number", formalDefinition="Lot number of the  vaccine product." )
1393    protected StringType lotNumber;
1394
1395    /**
1396     * Date vaccine batch expires.
1397     */
1398    @Child(name = "expirationDate", type = {DateType.class}, order=8, min=0, max=1, modifier=false, summary=false)
1399    @Description(shortDefinition="Vaccine expiration date", formalDefinition="Date vaccine batch expires." )
1400    protected DateType expirationDate;
1401
1402    /**
1403     * The patient who either received or did not receive the immunization.
1404     */
1405    @Child(name = "patient", type = {Patient.class}, order=9, min=1, max=1, modifier=false, summary=true)
1406    @Description(shortDefinition="Who was immunized", formalDefinition="The patient who either received or did not receive the immunization." )
1407    protected Reference patient;
1408
1409    /**
1410     * The visit or admission or other contact between patient and health care provider the immunization was performed as part of.
1411     */
1412    @Child(name = "encounter", type = {Encounter.class}, order=10, min=0, max=1, modifier=false, summary=false)
1413    @Description(shortDefinition="Encounter immunization was part of", formalDefinition="The visit or admission or other contact between patient and health care provider the immunization was performed as part of." )
1414    protected Reference encounter;
1415
1416    /**
1417     * Additional information that is relevant to the immunization (e.g. for a vaccine recipient who is pregnant, the gestational age of the fetus). The reason why a vaccine was given (e.g. occupation, underlying medical condition) should be conveyed in Immunization.reason, not as supporting information. The reason why a vaccine was not given (e.g. contraindication) should be conveyed in Immunization.statusReason, not as supporting information.
1418     */
1419    @Child(name = "supportingInformation", type = {Reference.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1420    @Description(shortDefinition="Additional information in support of the immunization", formalDefinition="Additional information that is relevant to the immunization (e.g. for a vaccine recipient who is pregnant, the gestational age of the fetus). The reason why a vaccine was given (e.g. occupation, underlying medical condition) should be conveyed in Immunization.reason, not as supporting information. The reason why a vaccine was not given (e.g. contraindication) should be conveyed in Immunization.statusReason, not as supporting information." )
1421    protected List<Reference> supportingInformation;
1422
1423    /**
1424     * Date vaccine administered or was to be administered.
1425     */
1426    @Child(name = "occurrence", type = {DateTimeType.class, StringType.class}, order=12, min=1, max=1, modifier=false, summary=true)
1427    @Description(shortDefinition="Vaccine administration date", formalDefinition="Date vaccine administered or was to be administered." )
1428    protected DataType occurrence;
1429
1430    /**
1431     * Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.
1432     */
1433    @Child(name = "primarySource", type = {BooleanType.class}, order=13, min=0, max=1, modifier=false, summary=true)
1434    @Description(shortDefinition="Indicates context the data was captured in", formalDefinition="Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine." )
1435    protected BooleanType primarySource;
1436
1437    /**
1438     * Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine.
1439     */
1440    @Child(name = "informationSource", type = {CodeableReference.class}, order=14, min=0, max=1, modifier=false, summary=false)
1441    @Description(shortDefinition="Indicates the source of a  reported record", formalDefinition="Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine." )
1442    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-origin")
1443    protected CodeableReference informationSource;
1444
1445    /**
1446     * The service delivery location where the vaccine administration occurred.
1447     */
1448    @Child(name = "location", type = {Location.class}, order=15, min=0, max=1, modifier=false, summary=false)
1449    @Description(shortDefinition="Where immunization occurred", formalDefinition="The service delivery location where the vaccine administration occurred." )
1450    protected Reference location;
1451
1452    /**
1453     * Body site where vaccine was administered.
1454     */
1455    @Child(name = "site", type = {CodeableConcept.class}, order=16, min=0, max=1, modifier=false, summary=false)
1456    @Description(shortDefinition="Body site vaccine  was administered", formalDefinition="Body site where vaccine was administered." )
1457    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-site")
1458    protected CodeableConcept site;
1459
1460    /**
1461     * The path by which the vaccine product is taken into the body.
1462     */
1463    @Child(name = "route", type = {CodeableConcept.class}, order=17, min=0, max=1, modifier=false, summary=false)
1464    @Description(shortDefinition="How vaccine entered body", formalDefinition="The path by which the vaccine product is taken into the body." )
1465    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-route")
1466    protected CodeableConcept route;
1467
1468    /**
1469     * The quantity of vaccine product that was administered.
1470     */
1471    @Child(name = "doseQuantity", type = {Quantity.class}, order=18, min=0, max=1, modifier=false, summary=false)
1472    @Description(shortDefinition="Amount of vaccine administered", formalDefinition="The quantity of vaccine product that was administered." )
1473    protected Quantity doseQuantity;
1474
1475    /**
1476     * Indicates who performed the immunization event.
1477     */
1478    @Child(name = "performer", type = {}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1479    @Description(shortDefinition="Who performed event", formalDefinition="Indicates who performed the immunization event." )
1480    protected List<ImmunizationPerformerComponent> performer;
1481
1482    /**
1483     * Extra information about the immunization that is not conveyed by the other attributes.
1484     */
1485    @Child(name = "note", type = {Annotation.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1486    @Description(shortDefinition="Additional immunization notes", formalDefinition="Extra information about the immunization that is not conveyed by the other attributes." )
1487    protected List<Annotation> note;
1488
1489    /**
1490     * Describes why the immunization occurred in coded or textual form, or Indicates another resource (Condition, Observation or DiagnosticReport) whose existence justifies this immunization.
1491     */
1492    @Child(name = "reason", type = {CodeableReference.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1493    @Description(shortDefinition="Why immunization occurred", formalDefinition="Describes why the immunization occurred in coded or textual form, or Indicates another resource (Condition, Observation or DiagnosticReport) whose existence justifies this immunization." )
1494    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-reason")
1495    protected List<CodeableReference> reason;
1496
1497    /**
1498     * Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.
1499     */
1500    @Child(name = "isSubpotent", type = {BooleanType.class}, order=22, min=0, max=1, modifier=true, summary=true)
1501    @Description(shortDefinition="Dose potency", formalDefinition="Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent." )
1502    protected BooleanType isSubpotent;
1503
1504    /**
1505     * Reason why a dose is considered to be subpotent.
1506     */
1507    @Child(name = "subpotentReason", type = {CodeableConcept.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1508    @Description(shortDefinition="Reason for being subpotent", formalDefinition="Reason why a dose is considered to be subpotent." )
1509    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-subpotent-reason")
1510    protected List<CodeableConcept> subpotentReason;
1511
1512    /**
1513     * Indicates a patient's eligibility for a funding program.
1514     */
1515    @Child(name = "programEligibility", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1516    @Description(shortDefinition="Patient eligibility for a specific vaccination program", formalDefinition="Indicates a patient's eligibility for a funding program." )
1517    protected List<ImmunizationProgramEligibilityComponent> programEligibility;
1518
1519    /**
1520     * Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered).
1521     */
1522    @Child(name = "fundingSource", type = {CodeableConcept.class}, order=25, min=0, max=1, modifier=false, summary=false)
1523    @Description(shortDefinition="Funding source for the vaccine", formalDefinition="Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered)." )
1524    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-funding-source")
1525    protected CodeableConcept fundingSource;
1526
1527    /**
1528     * Categorical data indicating that an adverse event is associated in time to an immunization.
1529     */
1530    @Child(name = "reaction", type = {}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1531    @Description(shortDefinition="Details of a reaction that follows immunization", formalDefinition="Categorical data indicating that an adverse event is associated in time to an immunization." )
1532    protected List<ImmunizationReactionComponent> reaction;
1533
1534    /**
1535     * The protocol (set of recommendations) being followed by the provider who administered the dose.
1536     */
1537    @Child(name = "protocolApplied", type = {}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1538    @Description(shortDefinition="Protocol followed by the provider", formalDefinition="The protocol (set of recommendations) being followed by the provider who administered the dose." )
1539    protected List<ImmunizationProtocolAppliedComponent> protocolApplied;
1540
1541    private static final long serialVersionUID = 425193818L;
1542
1543  /**
1544   * Constructor
1545   */
1546    public Immunization() {
1547      super();
1548    }
1549
1550  /**
1551   * Constructor
1552   */
1553    public Immunization(ImmunizationStatusCodes status, CodeableConcept vaccineCode, Reference patient, DataType occurrence) {
1554      super();
1555      this.setStatus(status);
1556      this.setVaccineCode(vaccineCode);
1557      this.setPatient(patient);
1558      this.setOccurrence(occurrence);
1559    }
1560
1561    /**
1562     * @return {@link #identifier} (A unique identifier assigned to this immunization record.)
1563     */
1564    public List<Identifier> getIdentifier() { 
1565      if (this.identifier == null)
1566        this.identifier = new ArrayList<Identifier>();
1567      return this.identifier;
1568    }
1569
1570    /**
1571     * @return Returns a reference to <code>this</code> for easy method chaining
1572     */
1573    public Immunization setIdentifier(List<Identifier> theIdentifier) { 
1574      this.identifier = theIdentifier;
1575      return this;
1576    }
1577
1578    public boolean hasIdentifier() { 
1579      if (this.identifier == null)
1580        return false;
1581      for (Identifier item : this.identifier)
1582        if (!item.isEmpty())
1583          return true;
1584      return false;
1585    }
1586
1587    public Identifier addIdentifier() { //3
1588      Identifier t = new Identifier();
1589      if (this.identifier == null)
1590        this.identifier = new ArrayList<Identifier>();
1591      this.identifier.add(t);
1592      return t;
1593    }
1594
1595    public Immunization addIdentifier(Identifier t) { //3
1596      if (t == null)
1597        return this;
1598      if (this.identifier == null)
1599        this.identifier = new ArrayList<Identifier>();
1600      this.identifier.add(t);
1601      return this;
1602    }
1603
1604    /**
1605     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1606     */
1607    public Identifier getIdentifierFirstRep() { 
1608      if (getIdentifier().isEmpty()) {
1609        addIdentifier();
1610      }
1611      return getIdentifier().get(0);
1612    }
1613
1614    /**
1615     * @return {@link #basedOn} (A plan, order or recommendation fulfilled in whole or in part by this immunization.)
1616     */
1617    public List<Reference> getBasedOn() { 
1618      if (this.basedOn == null)
1619        this.basedOn = new ArrayList<Reference>();
1620      return this.basedOn;
1621    }
1622
1623    /**
1624     * @return Returns a reference to <code>this</code> for easy method chaining
1625     */
1626    public Immunization setBasedOn(List<Reference> theBasedOn) { 
1627      this.basedOn = theBasedOn;
1628      return this;
1629    }
1630
1631    public boolean hasBasedOn() { 
1632      if (this.basedOn == null)
1633        return false;
1634      for (Reference item : this.basedOn)
1635        if (!item.isEmpty())
1636          return true;
1637      return false;
1638    }
1639
1640    public Reference addBasedOn() { //3
1641      Reference t = new Reference();
1642      if (this.basedOn == null)
1643        this.basedOn = new ArrayList<Reference>();
1644      this.basedOn.add(t);
1645      return t;
1646    }
1647
1648    public Immunization addBasedOn(Reference t) { //3
1649      if (t == null)
1650        return this;
1651      if (this.basedOn == null)
1652        this.basedOn = new ArrayList<Reference>();
1653      this.basedOn.add(t);
1654      return this;
1655    }
1656
1657    /**
1658     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
1659     */
1660    public Reference getBasedOnFirstRep() { 
1661      if (getBasedOn().isEmpty()) {
1662        addBasedOn();
1663      }
1664      return getBasedOn().get(0);
1665    }
1666
1667    /**
1668     * @return {@link #status} (Indicates the current status of the immunization event.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1669     */
1670    public Enumeration<ImmunizationStatusCodes> getStatusElement() { 
1671      if (this.status == null)
1672        if (Configuration.errorOnAutoCreate())
1673          throw new Error("Attempt to auto-create Immunization.status");
1674        else if (Configuration.doAutoCreate())
1675          this.status = new Enumeration<ImmunizationStatusCodes>(new ImmunizationStatusCodesEnumFactory()); // bb
1676      return this.status;
1677    }
1678
1679    public boolean hasStatusElement() { 
1680      return this.status != null && !this.status.isEmpty();
1681    }
1682
1683    public boolean hasStatus() { 
1684      return this.status != null && !this.status.isEmpty();
1685    }
1686
1687    /**
1688     * @param value {@link #status} (Indicates the current status of the immunization event.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1689     */
1690    public Immunization setStatusElement(Enumeration<ImmunizationStatusCodes> value) { 
1691      this.status = value;
1692      return this;
1693    }
1694
1695    /**
1696     * @return Indicates the current status of the immunization event.
1697     */
1698    public ImmunizationStatusCodes getStatus() { 
1699      return this.status == null ? null : this.status.getValue();
1700    }
1701
1702    /**
1703     * @param value Indicates the current status of the immunization event.
1704     */
1705    public Immunization setStatus(ImmunizationStatusCodes value) { 
1706        if (this.status == null)
1707          this.status = new Enumeration<ImmunizationStatusCodes>(new ImmunizationStatusCodesEnumFactory());
1708        this.status.setValue(value);
1709      return this;
1710    }
1711
1712    /**
1713     * @return {@link #statusReason} (Indicates the reason the immunization event was not performed.)
1714     */
1715    public CodeableConcept getStatusReason() { 
1716      if (this.statusReason == null)
1717        if (Configuration.errorOnAutoCreate())
1718          throw new Error("Attempt to auto-create Immunization.statusReason");
1719        else if (Configuration.doAutoCreate())
1720          this.statusReason = new CodeableConcept(); // cc
1721      return this.statusReason;
1722    }
1723
1724    public boolean hasStatusReason() { 
1725      return this.statusReason != null && !this.statusReason.isEmpty();
1726    }
1727
1728    /**
1729     * @param value {@link #statusReason} (Indicates the reason the immunization event was not performed.)
1730     */
1731    public Immunization setStatusReason(CodeableConcept value) { 
1732      this.statusReason = value;
1733      return this;
1734    }
1735
1736    /**
1737     * @return {@link #vaccineCode} (Vaccine that was administered or was to be administered.)
1738     */
1739    public CodeableConcept getVaccineCode() { 
1740      if (this.vaccineCode == null)
1741        if (Configuration.errorOnAutoCreate())
1742          throw new Error("Attempt to auto-create Immunization.vaccineCode");
1743        else if (Configuration.doAutoCreate())
1744          this.vaccineCode = new CodeableConcept(); // cc
1745      return this.vaccineCode;
1746    }
1747
1748    public boolean hasVaccineCode() { 
1749      return this.vaccineCode != null && !this.vaccineCode.isEmpty();
1750    }
1751
1752    /**
1753     * @param value {@link #vaccineCode} (Vaccine that was administered or was to be administered.)
1754     */
1755    public Immunization setVaccineCode(CodeableConcept value) { 
1756      this.vaccineCode = value;
1757      return this;
1758    }
1759
1760    /**
1761     * @return {@link #administeredProduct} (An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource.)
1762     */
1763    public CodeableReference getAdministeredProduct() { 
1764      if (this.administeredProduct == null)
1765        if (Configuration.errorOnAutoCreate())
1766          throw new Error("Attempt to auto-create Immunization.administeredProduct");
1767        else if (Configuration.doAutoCreate())
1768          this.administeredProduct = new CodeableReference(); // cc
1769      return this.administeredProduct;
1770    }
1771
1772    public boolean hasAdministeredProduct() { 
1773      return this.administeredProduct != null && !this.administeredProduct.isEmpty();
1774    }
1775
1776    /**
1777     * @param value {@link #administeredProduct} (An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource.)
1778     */
1779    public Immunization setAdministeredProduct(CodeableReference value) { 
1780      this.administeredProduct = value;
1781      return this;
1782    }
1783
1784    /**
1785     * @return {@link #manufacturer} (Name of vaccine manufacturer.)
1786     */
1787    public CodeableReference getManufacturer() { 
1788      if (this.manufacturer == null)
1789        if (Configuration.errorOnAutoCreate())
1790          throw new Error("Attempt to auto-create Immunization.manufacturer");
1791        else if (Configuration.doAutoCreate())
1792          this.manufacturer = new CodeableReference(); // cc
1793      return this.manufacturer;
1794    }
1795
1796    public boolean hasManufacturer() { 
1797      return this.manufacturer != null && !this.manufacturer.isEmpty();
1798    }
1799
1800    /**
1801     * @param value {@link #manufacturer} (Name of vaccine manufacturer.)
1802     */
1803    public Immunization setManufacturer(CodeableReference value) { 
1804      this.manufacturer = value;
1805      return this;
1806    }
1807
1808    /**
1809     * @return {@link #lotNumber} (Lot number of the  vaccine product.). This is the underlying object with id, value and extensions. The accessor "getLotNumber" gives direct access to the value
1810     */
1811    public StringType getLotNumberElement() { 
1812      if (this.lotNumber == null)
1813        if (Configuration.errorOnAutoCreate())
1814          throw new Error("Attempt to auto-create Immunization.lotNumber");
1815        else if (Configuration.doAutoCreate())
1816          this.lotNumber = new StringType(); // bb
1817      return this.lotNumber;
1818    }
1819
1820    public boolean hasLotNumberElement() { 
1821      return this.lotNumber != null && !this.lotNumber.isEmpty();
1822    }
1823
1824    public boolean hasLotNumber() { 
1825      return this.lotNumber != null && !this.lotNumber.isEmpty();
1826    }
1827
1828    /**
1829     * @param value {@link #lotNumber} (Lot number of the  vaccine product.). This is the underlying object with id, value and extensions. The accessor "getLotNumber" gives direct access to the value
1830     */
1831    public Immunization setLotNumberElement(StringType value) { 
1832      this.lotNumber = value;
1833      return this;
1834    }
1835
1836    /**
1837     * @return Lot number of the  vaccine product.
1838     */
1839    public String getLotNumber() { 
1840      return this.lotNumber == null ? null : this.lotNumber.getValue();
1841    }
1842
1843    /**
1844     * @param value Lot number of the  vaccine product.
1845     */
1846    public Immunization setLotNumber(String value) { 
1847      if (Utilities.noString(value))
1848        this.lotNumber = null;
1849      else {
1850        if (this.lotNumber == null)
1851          this.lotNumber = new StringType();
1852        this.lotNumber.setValue(value);
1853      }
1854      return this;
1855    }
1856
1857    /**
1858     * @return {@link #expirationDate} (Date vaccine batch expires.). This is the underlying object with id, value and extensions. The accessor "getExpirationDate" gives direct access to the value
1859     */
1860    public DateType getExpirationDateElement() { 
1861      if (this.expirationDate == null)
1862        if (Configuration.errorOnAutoCreate())
1863          throw new Error("Attempt to auto-create Immunization.expirationDate");
1864        else if (Configuration.doAutoCreate())
1865          this.expirationDate = new DateType(); // bb
1866      return this.expirationDate;
1867    }
1868
1869    public boolean hasExpirationDateElement() { 
1870      return this.expirationDate != null && !this.expirationDate.isEmpty();
1871    }
1872
1873    public boolean hasExpirationDate() { 
1874      return this.expirationDate != null && !this.expirationDate.isEmpty();
1875    }
1876
1877    /**
1878     * @param value {@link #expirationDate} (Date vaccine batch expires.). This is the underlying object with id, value and extensions. The accessor "getExpirationDate" gives direct access to the value
1879     */
1880    public Immunization setExpirationDateElement(DateType value) { 
1881      this.expirationDate = value;
1882      return this;
1883    }
1884
1885    /**
1886     * @return Date vaccine batch expires.
1887     */
1888    public Date getExpirationDate() { 
1889      return this.expirationDate == null ? null : this.expirationDate.getValue();
1890    }
1891
1892    /**
1893     * @param value Date vaccine batch expires.
1894     */
1895    public Immunization setExpirationDate(Date value) { 
1896      if (value == null)
1897        this.expirationDate = null;
1898      else {
1899        if (this.expirationDate == null)
1900          this.expirationDate = new DateType();
1901        this.expirationDate.setValue(value);
1902      }
1903      return this;
1904    }
1905
1906    /**
1907     * @return {@link #patient} (The patient who either received or did not receive the immunization.)
1908     */
1909    public Reference getPatient() { 
1910      if (this.patient == null)
1911        if (Configuration.errorOnAutoCreate())
1912          throw new Error("Attempt to auto-create Immunization.patient");
1913        else if (Configuration.doAutoCreate())
1914          this.patient = new Reference(); // cc
1915      return this.patient;
1916    }
1917
1918    public boolean hasPatient() { 
1919      return this.patient != null && !this.patient.isEmpty();
1920    }
1921
1922    /**
1923     * @param value {@link #patient} (The patient who either received or did not receive the immunization.)
1924     */
1925    public Immunization setPatient(Reference value) { 
1926      this.patient = value;
1927      return this;
1928    }
1929
1930    /**
1931     * @return {@link #encounter} (The visit or admission or other contact between patient and health care provider the immunization was performed as part of.)
1932     */
1933    public Reference getEncounter() { 
1934      if (this.encounter == null)
1935        if (Configuration.errorOnAutoCreate())
1936          throw new Error("Attempt to auto-create Immunization.encounter");
1937        else if (Configuration.doAutoCreate())
1938          this.encounter = new Reference(); // cc
1939      return this.encounter;
1940    }
1941
1942    public boolean hasEncounter() { 
1943      return this.encounter != null && !this.encounter.isEmpty();
1944    }
1945
1946    /**
1947     * @param value {@link #encounter} (The visit or admission or other contact between patient and health care provider the immunization was performed as part of.)
1948     */
1949    public Immunization setEncounter(Reference value) { 
1950      this.encounter = value;
1951      return this;
1952    }
1953
1954    /**
1955     * @return {@link #supportingInformation} (Additional information that is relevant to the immunization (e.g. for a vaccine recipient who is pregnant, the gestational age of the fetus). The reason why a vaccine was given (e.g. occupation, underlying medical condition) should be conveyed in Immunization.reason, not as supporting information. The reason why a vaccine was not given (e.g. contraindication) should be conveyed in Immunization.statusReason, not as supporting information.)
1956     */
1957    public List<Reference> getSupportingInformation() { 
1958      if (this.supportingInformation == null)
1959        this.supportingInformation = new ArrayList<Reference>();
1960      return this.supportingInformation;
1961    }
1962
1963    /**
1964     * @return Returns a reference to <code>this</code> for easy method chaining
1965     */
1966    public Immunization setSupportingInformation(List<Reference> theSupportingInformation) { 
1967      this.supportingInformation = theSupportingInformation;
1968      return this;
1969    }
1970
1971    public boolean hasSupportingInformation() { 
1972      if (this.supportingInformation == null)
1973        return false;
1974      for (Reference item : this.supportingInformation)
1975        if (!item.isEmpty())
1976          return true;
1977      return false;
1978    }
1979
1980    public Reference addSupportingInformation() { //3
1981      Reference t = new Reference();
1982      if (this.supportingInformation == null)
1983        this.supportingInformation = new ArrayList<Reference>();
1984      this.supportingInformation.add(t);
1985      return t;
1986    }
1987
1988    public Immunization addSupportingInformation(Reference t) { //3
1989      if (t == null)
1990        return this;
1991      if (this.supportingInformation == null)
1992        this.supportingInformation = new ArrayList<Reference>();
1993      this.supportingInformation.add(t);
1994      return this;
1995    }
1996
1997    /**
1998     * @return The first repetition of repeating field {@link #supportingInformation}, creating it if it does not already exist {3}
1999     */
2000    public Reference getSupportingInformationFirstRep() { 
2001      if (getSupportingInformation().isEmpty()) {
2002        addSupportingInformation();
2003      }
2004      return getSupportingInformation().get(0);
2005    }
2006
2007    /**
2008     * @return {@link #occurrence} (Date vaccine administered or was to be administered.)
2009     */
2010    public DataType getOccurrence() { 
2011      return this.occurrence;
2012    }
2013
2014    /**
2015     * @return {@link #occurrence} (Date vaccine administered or was to be administered.)
2016     */
2017    public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
2018      if (this.occurrence == null)
2019        this.occurrence = new DateTimeType();
2020      if (!(this.occurrence instanceof DateTimeType))
2021        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
2022      return (DateTimeType) this.occurrence;
2023    }
2024
2025    public boolean hasOccurrenceDateTimeType() { 
2026      return this != null && this.occurrence instanceof DateTimeType;
2027    }
2028
2029    /**
2030     * @return {@link #occurrence} (Date vaccine administered or was to be administered.)
2031     */
2032    public StringType getOccurrenceStringType() throws FHIRException { 
2033      if (this.occurrence == null)
2034        this.occurrence = new StringType();
2035      if (!(this.occurrence instanceof StringType))
2036        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
2037      return (StringType) this.occurrence;
2038    }
2039
2040    public boolean hasOccurrenceStringType() { 
2041      return this != null && this.occurrence instanceof StringType;
2042    }
2043
2044    public boolean hasOccurrence() { 
2045      return this.occurrence != null && !this.occurrence.isEmpty();
2046    }
2047
2048    /**
2049     * @param value {@link #occurrence} (Date vaccine administered or was to be administered.)
2050     */
2051    public Immunization setOccurrence(DataType value) { 
2052      if (value != null && !(value instanceof DateTimeType || value instanceof StringType))
2053        throw new FHIRException("Not the right type for Immunization.occurrence[x]: "+value.fhirType());
2054      this.occurrence = value;
2055      return this;
2056    }
2057
2058    /**
2059     * @return {@link #primarySource} (Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.). This is the underlying object with id, value and extensions. The accessor "getPrimarySource" gives direct access to the value
2060     */
2061    public BooleanType getPrimarySourceElement() { 
2062      if (this.primarySource == null)
2063        if (Configuration.errorOnAutoCreate())
2064          throw new Error("Attempt to auto-create Immunization.primarySource");
2065        else if (Configuration.doAutoCreate())
2066          this.primarySource = new BooleanType(); // bb
2067      return this.primarySource;
2068    }
2069
2070    public boolean hasPrimarySourceElement() { 
2071      return this.primarySource != null && !this.primarySource.isEmpty();
2072    }
2073
2074    public boolean hasPrimarySource() { 
2075      return this.primarySource != null && !this.primarySource.isEmpty();
2076    }
2077
2078    /**
2079     * @param value {@link #primarySource} (Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.). This is the underlying object with id, value and extensions. The accessor "getPrimarySource" gives direct access to the value
2080     */
2081    public Immunization setPrimarySourceElement(BooleanType value) { 
2082      this.primarySource = value;
2083      return this;
2084    }
2085
2086    /**
2087     * @return Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.
2088     */
2089    public boolean getPrimarySource() { 
2090      return this.primarySource == null || this.primarySource.isEmpty() ? false : this.primarySource.getValue();
2091    }
2092
2093    /**
2094     * @param value Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.
2095     */
2096    public Immunization setPrimarySource(boolean value) { 
2097        if (this.primarySource == null)
2098          this.primarySource = new BooleanType();
2099        this.primarySource.setValue(value);
2100      return this;
2101    }
2102
2103    /**
2104     * @return {@link #informationSource} (Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine.)
2105     */
2106    public CodeableReference getInformationSource() { 
2107      if (this.informationSource == null)
2108        if (Configuration.errorOnAutoCreate())
2109          throw new Error("Attempt to auto-create Immunization.informationSource");
2110        else if (Configuration.doAutoCreate())
2111          this.informationSource = new CodeableReference(); // cc
2112      return this.informationSource;
2113    }
2114
2115    public boolean hasInformationSource() { 
2116      return this.informationSource != null && !this.informationSource.isEmpty();
2117    }
2118
2119    /**
2120     * @param value {@link #informationSource} (Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine.)
2121     */
2122    public Immunization setInformationSource(CodeableReference value) { 
2123      this.informationSource = value;
2124      return this;
2125    }
2126
2127    /**
2128     * @return {@link #location} (The service delivery location where the vaccine administration occurred.)
2129     */
2130    public Reference getLocation() { 
2131      if (this.location == null)
2132        if (Configuration.errorOnAutoCreate())
2133          throw new Error("Attempt to auto-create Immunization.location");
2134        else if (Configuration.doAutoCreate())
2135          this.location = new Reference(); // cc
2136      return this.location;
2137    }
2138
2139    public boolean hasLocation() { 
2140      return this.location != null && !this.location.isEmpty();
2141    }
2142
2143    /**
2144     * @param value {@link #location} (The service delivery location where the vaccine administration occurred.)
2145     */
2146    public Immunization setLocation(Reference value) { 
2147      this.location = value;
2148      return this;
2149    }
2150
2151    /**
2152     * @return {@link #site} (Body site where vaccine was administered.)
2153     */
2154    public CodeableConcept getSite() { 
2155      if (this.site == null)
2156        if (Configuration.errorOnAutoCreate())
2157          throw new Error("Attempt to auto-create Immunization.site");
2158        else if (Configuration.doAutoCreate())
2159          this.site = new CodeableConcept(); // cc
2160      return this.site;
2161    }
2162
2163    public boolean hasSite() { 
2164      return this.site != null && !this.site.isEmpty();
2165    }
2166
2167    /**
2168     * @param value {@link #site} (Body site where vaccine was administered.)
2169     */
2170    public Immunization setSite(CodeableConcept value) { 
2171      this.site = value;
2172      return this;
2173    }
2174
2175    /**
2176     * @return {@link #route} (The path by which the vaccine product is taken into the body.)
2177     */
2178    public CodeableConcept getRoute() { 
2179      if (this.route == null)
2180        if (Configuration.errorOnAutoCreate())
2181          throw new Error("Attempt to auto-create Immunization.route");
2182        else if (Configuration.doAutoCreate())
2183          this.route = new CodeableConcept(); // cc
2184      return this.route;
2185    }
2186
2187    public boolean hasRoute() { 
2188      return this.route != null && !this.route.isEmpty();
2189    }
2190
2191    /**
2192     * @param value {@link #route} (The path by which the vaccine product is taken into the body.)
2193     */
2194    public Immunization setRoute(CodeableConcept value) { 
2195      this.route = value;
2196      return this;
2197    }
2198
2199    /**
2200     * @return {@link #doseQuantity} (The quantity of vaccine product that was administered.)
2201     */
2202    public Quantity getDoseQuantity() { 
2203      if (this.doseQuantity == null)
2204        if (Configuration.errorOnAutoCreate())
2205          throw new Error("Attempt to auto-create Immunization.doseQuantity");
2206        else if (Configuration.doAutoCreate())
2207          this.doseQuantity = new Quantity(); // cc
2208      return this.doseQuantity;
2209    }
2210
2211    public boolean hasDoseQuantity() { 
2212      return this.doseQuantity != null && !this.doseQuantity.isEmpty();
2213    }
2214
2215    /**
2216     * @param value {@link #doseQuantity} (The quantity of vaccine product that was administered.)
2217     */
2218    public Immunization setDoseQuantity(Quantity value) { 
2219      this.doseQuantity = value;
2220      return this;
2221    }
2222
2223    /**
2224     * @return {@link #performer} (Indicates who performed the immunization event.)
2225     */
2226    public List<ImmunizationPerformerComponent> getPerformer() { 
2227      if (this.performer == null)
2228        this.performer = new ArrayList<ImmunizationPerformerComponent>();
2229      return this.performer;
2230    }
2231
2232    /**
2233     * @return Returns a reference to <code>this</code> for easy method chaining
2234     */
2235    public Immunization setPerformer(List<ImmunizationPerformerComponent> thePerformer) { 
2236      this.performer = thePerformer;
2237      return this;
2238    }
2239
2240    public boolean hasPerformer() { 
2241      if (this.performer == null)
2242        return false;
2243      for (ImmunizationPerformerComponent item : this.performer)
2244        if (!item.isEmpty())
2245          return true;
2246      return false;
2247    }
2248
2249    public ImmunizationPerformerComponent addPerformer() { //3
2250      ImmunizationPerformerComponent t = new ImmunizationPerformerComponent();
2251      if (this.performer == null)
2252        this.performer = new ArrayList<ImmunizationPerformerComponent>();
2253      this.performer.add(t);
2254      return t;
2255    }
2256
2257    public Immunization addPerformer(ImmunizationPerformerComponent t) { //3
2258      if (t == null)
2259        return this;
2260      if (this.performer == null)
2261        this.performer = new ArrayList<ImmunizationPerformerComponent>();
2262      this.performer.add(t);
2263      return this;
2264    }
2265
2266    /**
2267     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
2268     */
2269    public ImmunizationPerformerComponent getPerformerFirstRep() { 
2270      if (getPerformer().isEmpty()) {
2271        addPerformer();
2272      }
2273      return getPerformer().get(0);
2274    }
2275
2276    /**
2277     * @return {@link #note} (Extra information about the immunization that is not conveyed by the other attributes.)
2278     */
2279    public List<Annotation> getNote() { 
2280      if (this.note == null)
2281        this.note = new ArrayList<Annotation>();
2282      return this.note;
2283    }
2284
2285    /**
2286     * @return Returns a reference to <code>this</code> for easy method chaining
2287     */
2288    public Immunization setNote(List<Annotation> theNote) { 
2289      this.note = theNote;
2290      return this;
2291    }
2292
2293    public boolean hasNote() { 
2294      if (this.note == null)
2295        return false;
2296      for (Annotation item : this.note)
2297        if (!item.isEmpty())
2298          return true;
2299      return false;
2300    }
2301
2302    public Annotation addNote() { //3
2303      Annotation t = new Annotation();
2304      if (this.note == null)
2305        this.note = new ArrayList<Annotation>();
2306      this.note.add(t);
2307      return t;
2308    }
2309
2310    public Immunization addNote(Annotation t) { //3
2311      if (t == null)
2312        return this;
2313      if (this.note == null)
2314        this.note = new ArrayList<Annotation>();
2315      this.note.add(t);
2316      return this;
2317    }
2318
2319    /**
2320     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2321     */
2322    public Annotation getNoteFirstRep() { 
2323      if (getNote().isEmpty()) {
2324        addNote();
2325      }
2326      return getNote().get(0);
2327    }
2328
2329    /**
2330     * @return {@link #reason} (Describes why the immunization occurred in coded or textual form, or Indicates another resource (Condition, Observation or DiagnosticReport) whose existence justifies this immunization.)
2331     */
2332    public List<CodeableReference> getReason() { 
2333      if (this.reason == null)
2334        this.reason = new ArrayList<CodeableReference>();
2335      return this.reason;
2336    }
2337
2338    /**
2339     * @return Returns a reference to <code>this</code> for easy method chaining
2340     */
2341    public Immunization setReason(List<CodeableReference> theReason) { 
2342      this.reason = theReason;
2343      return this;
2344    }
2345
2346    public boolean hasReason() { 
2347      if (this.reason == null)
2348        return false;
2349      for (CodeableReference item : this.reason)
2350        if (!item.isEmpty())
2351          return true;
2352      return false;
2353    }
2354
2355    public CodeableReference addReason() { //3
2356      CodeableReference t = new CodeableReference();
2357      if (this.reason == null)
2358        this.reason = new ArrayList<CodeableReference>();
2359      this.reason.add(t);
2360      return t;
2361    }
2362
2363    public Immunization addReason(CodeableReference t) { //3
2364      if (t == null)
2365        return this;
2366      if (this.reason == null)
2367        this.reason = new ArrayList<CodeableReference>();
2368      this.reason.add(t);
2369      return this;
2370    }
2371
2372    /**
2373     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
2374     */
2375    public CodeableReference getReasonFirstRep() { 
2376      if (getReason().isEmpty()) {
2377        addReason();
2378      }
2379      return getReason().get(0);
2380    }
2381
2382    /**
2383     * @return {@link #isSubpotent} (Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.). This is the underlying object with id, value and extensions. The accessor "getIsSubpotent" gives direct access to the value
2384     */
2385    public BooleanType getIsSubpotentElement() { 
2386      if (this.isSubpotent == null)
2387        if (Configuration.errorOnAutoCreate())
2388          throw new Error("Attempt to auto-create Immunization.isSubpotent");
2389        else if (Configuration.doAutoCreate())
2390          this.isSubpotent = new BooleanType(); // bb
2391      return this.isSubpotent;
2392    }
2393
2394    public boolean hasIsSubpotentElement() { 
2395      return this.isSubpotent != null && !this.isSubpotent.isEmpty();
2396    }
2397
2398    public boolean hasIsSubpotent() { 
2399      return this.isSubpotent != null && !this.isSubpotent.isEmpty();
2400    }
2401
2402    /**
2403     * @param value {@link #isSubpotent} (Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.). This is the underlying object with id, value and extensions. The accessor "getIsSubpotent" gives direct access to the value
2404     */
2405    public Immunization setIsSubpotentElement(BooleanType value) { 
2406      this.isSubpotent = value;
2407      return this;
2408    }
2409
2410    /**
2411     * @return Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.
2412     */
2413    public boolean getIsSubpotent() { 
2414      return this.isSubpotent == null || this.isSubpotent.isEmpty() ? false : this.isSubpotent.getValue();
2415    }
2416
2417    /**
2418     * @param value Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.
2419     */
2420    public Immunization setIsSubpotent(boolean value) { 
2421        if (this.isSubpotent == null)
2422          this.isSubpotent = new BooleanType();
2423        this.isSubpotent.setValue(value);
2424      return this;
2425    }
2426
2427    /**
2428     * @return {@link #subpotentReason} (Reason why a dose is considered to be subpotent.)
2429     */
2430    public List<CodeableConcept> getSubpotentReason() { 
2431      if (this.subpotentReason == null)
2432        this.subpotentReason = new ArrayList<CodeableConcept>();
2433      return this.subpotentReason;
2434    }
2435
2436    /**
2437     * @return Returns a reference to <code>this</code> for easy method chaining
2438     */
2439    public Immunization setSubpotentReason(List<CodeableConcept> theSubpotentReason) { 
2440      this.subpotentReason = theSubpotentReason;
2441      return this;
2442    }
2443
2444    public boolean hasSubpotentReason() { 
2445      if (this.subpotentReason == null)
2446        return false;
2447      for (CodeableConcept item : this.subpotentReason)
2448        if (!item.isEmpty())
2449          return true;
2450      return false;
2451    }
2452
2453    public CodeableConcept addSubpotentReason() { //3
2454      CodeableConcept t = new CodeableConcept();
2455      if (this.subpotentReason == null)
2456        this.subpotentReason = new ArrayList<CodeableConcept>();
2457      this.subpotentReason.add(t);
2458      return t;
2459    }
2460
2461    public Immunization addSubpotentReason(CodeableConcept t) { //3
2462      if (t == null)
2463        return this;
2464      if (this.subpotentReason == null)
2465        this.subpotentReason = new ArrayList<CodeableConcept>();
2466      this.subpotentReason.add(t);
2467      return this;
2468    }
2469
2470    /**
2471     * @return The first repetition of repeating field {@link #subpotentReason}, creating it if it does not already exist {3}
2472     */
2473    public CodeableConcept getSubpotentReasonFirstRep() { 
2474      if (getSubpotentReason().isEmpty()) {
2475        addSubpotentReason();
2476      }
2477      return getSubpotentReason().get(0);
2478    }
2479
2480    /**
2481     * @return {@link #programEligibility} (Indicates a patient's eligibility for a funding program.)
2482     */
2483    public List<ImmunizationProgramEligibilityComponent> getProgramEligibility() { 
2484      if (this.programEligibility == null)
2485        this.programEligibility = new ArrayList<ImmunizationProgramEligibilityComponent>();
2486      return this.programEligibility;
2487    }
2488
2489    /**
2490     * @return Returns a reference to <code>this</code> for easy method chaining
2491     */
2492    public Immunization setProgramEligibility(List<ImmunizationProgramEligibilityComponent> theProgramEligibility) { 
2493      this.programEligibility = theProgramEligibility;
2494      return this;
2495    }
2496
2497    public boolean hasProgramEligibility() { 
2498      if (this.programEligibility == null)
2499        return false;
2500      for (ImmunizationProgramEligibilityComponent item : this.programEligibility)
2501        if (!item.isEmpty())
2502          return true;
2503      return false;
2504    }
2505
2506    public ImmunizationProgramEligibilityComponent addProgramEligibility() { //3
2507      ImmunizationProgramEligibilityComponent t = new ImmunizationProgramEligibilityComponent();
2508      if (this.programEligibility == null)
2509        this.programEligibility = new ArrayList<ImmunizationProgramEligibilityComponent>();
2510      this.programEligibility.add(t);
2511      return t;
2512    }
2513
2514    public Immunization addProgramEligibility(ImmunizationProgramEligibilityComponent t) { //3
2515      if (t == null)
2516        return this;
2517      if (this.programEligibility == null)
2518        this.programEligibility = new ArrayList<ImmunizationProgramEligibilityComponent>();
2519      this.programEligibility.add(t);
2520      return this;
2521    }
2522
2523    /**
2524     * @return The first repetition of repeating field {@link #programEligibility}, creating it if it does not already exist {3}
2525     */
2526    public ImmunizationProgramEligibilityComponent getProgramEligibilityFirstRep() { 
2527      if (getProgramEligibility().isEmpty()) {
2528        addProgramEligibility();
2529      }
2530      return getProgramEligibility().get(0);
2531    }
2532
2533    /**
2534     * @return {@link #fundingSource} (Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered).)
2535     */
2536    public CodeableConcept getFundingSource() { 
2537      if (this.fundingSource == null)
2538        if (Configuration.errorOnAutoCreate())
2539          throw new Error("Attempt to auto-create Immunization.fundingSource");
2540        else if (Configuration.doAutoCreate())
2541          this.fundingSource = new CodeableConcept(); // cc
2542      return this.fundingSource;
2543    }
2544
2545    public boolean hasFundingSource() { 
2546      return this.fundingSource != null && !this.fundingSource.isEmpty();
2547    }
2548
2549    /**
2550     * @param value {@link #fundingSource} (Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered).)
2551     */
2552    public Immunization setFundingSource(CodeableConcept value) { 
2553      this.fundingSource = value;
2554      return this;
2555    }
2556
2557    /**
2558     * @return {@link #reaction} (Categorical data indicating that an adverse event is associated in time to an immunization.)
2559     */
2560    public List<ImmunizationReactionComponent> getReaction() { 
2561      if (this.reaction == null)
2562        this.reaction = new ArrayList<ImmunizationReactionComponent>();
2563      return this.reaction;
2564    }
2565
2566    /**
2567     * @return Returns a reference to <code>this</code> for easy method chaining
2568     */
2569    public Immunization setReaction(List<ImmunizationReactionComponent> theReaction) { 
2570      this.reaction = theReaction;
2571      return this;
2572    }
2573
2574    public boolean hasReaction() { 
2575      if (this.reaction == null)
2576        return false;
2577      for (ImmunizationReactionComponent item : this.reaction)
2578        if (!item.isEmpty())
2579          return true;
2580      return false;
2581    }
2582
2583    public ImmunizationReactionComponent addReaction() { //3
2584      ImmunizationReactionComponent t = new ImmunizationReactionComponent();
2585      if (this.reaction == null)
2586        this.reaction = new ArrayList<ImmunizationReactionComponent>();
2587      this.reaction.add(t);
2588      return t;
2589    }
2590
2591    public Immunization addReaction(ImmunizationReactionComponent t) { //3
2592      if (t == null)
2593        return this;
2594      if (this.reaction == null)
2595        this.reaction = new ArrayList<ImmunizationReactionComponent>();
2596      this.reaction.add(t);
2597      return this;
2598    }
2599
2600    /**
2601     * @return The first repetition of repeating field {@link #reaction}, creating it if it does not already exist {3}
2602     */
2603    public ImmunizationReactionComponent getReactionFirstRep() { 
2604      if (getReaction().isEmpty()) {
2605        addReaction();
2606      }
2607      return getReaction().get(0);
2608    }
2609
2610    /**
2611     * @return {@link #protocolApplied} (The protocol (set of recommendations) being followed by the provider who administered the dose.)
2612     */
2613    public List<ImmunizationProtocolAppliedComponent> getProtocolApplied() { 
2614      if (this.protocolApplied == null)
2615        this.protocolApplied = new ArrayList<ImmunizationProtocolAppliedComponent>();
2616      return this.protocolApplied;
2617    }
2618
2619    /**
2620     * @return Returns a reference to <code>this</code> for easy method chaining
2621     */
2622    public Immunization setProtocolApplied(List<ImmunizationProtocolAppliedComponent> theProtocolApplied) { 
2623      this.protocolApplied = theProtocolApplied;
2624      return this;
2625    }
2626
2627    public boolean hasProtocolApplied() { 
2628      if (this.protocolApplied == null)
2629        return false;
2630      for (ImmunizationProtocolAppliedComponent item : this.protocolApplied)
2631        if (!item.isEmpty())
2632          return true;
2633      return false;
2634    }
2635
2636    public ImmunizationProtocolAppliedComponent addProtocolApplied() { //3
2637      ImmunizationProtocolAppliedComponent t = new ImmunizationProtocolAppliedComponent();
2638      if (this.protocolApplied == null)
2639        this.protocolApplied = new ArrayList<ImmunizationProtocolAppliedComponent>();
2640      this.protocolApplied.add(t);
2641      return t;
2642    }
2643
2644    public Immunization addProtocolApplied(ImmunizationProtocolAppliedComponent t) { //3
2645      if (t == null)
2646        return this;
2647      if (this.protocolApplied == null)
2648        this.protocolApplied = new ArrayList<ImmunizationProtocolAppliedComponent>();
2649      this.protocolApplied.add(t);
2650      return this;
2651    }
2652
2653    /**
2654     * @return The first repetition of repeating field {@link #protocolApplied}, creating it if it does not already exist {3}
2655     */
2656    public ImmunizationProtocolAppliedComponent getProtocolAppliedFirstRep() { 
2657      if (getProtocolApplied().isEmpty()) {
2658        addProtocolApplied();
2659      }
2660      return getProtocolApplied().get(0);
2661    }
2662
2663      protected void listChildren(List<Property> children) {
2664        super.listChildren(children);
2665        children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this immunization record.", 0, java.lang.Integer.MAX_VALUE, identifier));
2666        children.add(new Property("basedOn", "Reference(CarePlan|MedicationRequest|ServiceRequest|ImmunizationRecommendation)", "A plan, order or recommendation fulfilled in whole or in part by this immunization.", 0, java.lang.Integer.MAX_VALUE, basedOn));
2667        children.add(new Property("status", "code", "Indicates the current status of the immunization event.", 0, 1, status));
2668        children.add(new Property("statusReason", "CodeableConcept", "Indicates the reason the immunization event was not performed.", 0, 1, statusReason));
2669        children.add(new Property("vaccineCode", "CodeableConcept", "Vaccine that was administered or was to be administered.", 0, 1, vaccineCode));
2670        children.add(new Property("administeredProduct", "CodeableReference(Medication)", "An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource.", 0, 1, administeredProduct));
2671        children.add(new Property("manufacturer", "CodeableReference(Organization)", "Name of vaccine manufacturer.", 0, 1, manufacturer));
2672        children.add(new Property("lotNumber", "string", "Lot number of the  vaccine product.", 0, 1, lotNumber));
2673        children.add(new Property("expirationDate", "date", "Date vaccine batch expires.", 0, 1, expirationDate));
2674        children.add(new Property("patient", "Reference(Patient)", "The patient who either received or did not receive the immunization.", 0, 1, patient));
2675        children.add(new Property("encounter", "Reference(Encounter)", "The visit or admission or other contact between patient and health care provider the immunization was performed as part of.", 0, 1, encounter));
2676        children.add(new Property("supportingInformation", "Reference(Any)", "Additional information that is relevant to the immunization (e.g. for a vaccine recipient who is pregnant, the gestational age of the fetus). The reason why a vaccine was given (e.g. occupation, underlying medical condition) should be conveyed in Immunization.reason, not as supporting information. The reason why a vaccine was not given (e.g. contraindication) should be conveyed in Immunization.statusReason, not as supporting information.", 0, java.lang.Integer.MAX_VALUE, supportingInformation));
2677        children.add(new Property("occurrence[x]", "dateTime|string", "Date vaccine administered or was to be administered.", 0, 1, occurrence));
2678        children.add(new Property("primarySource", "boolean", "Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.", 0, 1, primarySource));
2679        children.add(new Property("informationSource", "CodeableReference(Patient|Practitioner|PractitionerRole|RelatedPerson|Organization)", "Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine.", 0, 1, informationSource));
2680        children.add(new Property("location", "Reference(Location)", "The service delivery location where the vaccine administration occurred.", 0, 1, location));
2681        children.add(new Property("site", "CodeableConcept", "Body site where vaccine was administered.", 0, 1, site));
2682        children.add(new Property("route", "CodeableConcept", "The path by which the vaccine product is taken into the body.", 0, 1, route));
2683        children.add(new Property("doseQuantity", "Quantity", "The quantity of vaccine product that was administered.", 0, 1, doseQuantity));
2684        children.add(new Property("performer", "", "Indicates who performed the immunization event.", 0, java.lang.Integer.MAX_VALUE, performer));
2685        children.add(new Property("note", "Annotation", "Extra information about the immunization that is not conveyed by the other attributes.", 0, java.lang.Integer.MAX_VALUE, note));
2686        children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport)", "Describes why the immunization occurred in coded or textual form, or Indicates another resource (Condition, Observation or DiagnosticReport) whose existence justifies this immunization.", 0, java.lang.Integer.MAX_VALUE, reason));
2687        children.add(new Property("isSubpotent", "boolean", "Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.", 0, 1, isSubpotent));
2688        children.add(new Property("subpotentReason", "CodeableConcept", "Reason why a dose is considered to be subpotent.", 0, java.lang.Integer.MAX_VALUE, subpotentReason));
2689        children.add(new Property("programEligibility", "", "Indicates a patient's eligibility for a funding program.", 0, java.lang.Integer.MAX_VALUE, programEligibility));
2690        children.add(new Property("fundingSource", "CodeableConcept", "Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered).", 0, 1, fundingSource));
2691        children.add(new Property("reaction", "", "Categorical data indicating that an adverse event is associated in time to an immunization.", 0, java.lang.Integer.MAX_VALUE, reaction));
2692        children.add(new Property("protocolApplied", "", "The protocol (set of recommendations) being followed by the provider who administered the dose.", 0, java.lang.Integer.MAX_VALUE, protocolApplied));
2693      }
2694
2695      @Override
2696      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2697        switch (_hash) {
2698        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A unique identifier assigned to this immunization record.", 0, java.lang.Integer.MAX_VALUE, identifier);
2699        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|MedicationRequest|ServiceRequest|ImmunizationRecommendation)", "A plan, order or recommendation fulfilled in whole or in part by this immunization.", 0, java.lang.Integer.MAX_VALUE, basedOn);
2700        case -892481550: /*status*/  return new Property("status", "code", "Indicates the current status of the immunization event.", 0, 1, status);
2701        case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableConcept", "Indicates the reason the immunization event was not performed.", 0, 1, statusReason);
2702        case 664556354: /*vaccineCode*/  return new Property("vaccineCode", "CodeableConcept", "Vaccine that was administered or was to be administered.", 0, 1, vaccineCode);
2703        case 1610069896: /*administeredProduct*/  return new Property("administeredProduct", "CodeableReference(Medication)", "An indication of which product was administered to the patient. This is typically a more detailed representation of the concept conveyed by the vaccineCode data element. If a Medication resource is referenced, it may be to a stand-alone resource or a contained resource within the Immunization resource.", 0, 1, administeredProduct);
2704        case -1969347631: /*manufacturer*/  return new Property("manufacturer", "CodeableReference(Organization)", "Name of vaccine manufacturer.", 0, 1, manufacturer);
2705        case 462547450: /*lotNumber*/  return new Property("lotNumber", "string", "Lot number of the  vaccine product.", 0, 1, lotNumber);
2706        case -668811523: /*expirationDate*/  return new Property("expirationDate", "date", "Date vaccine batch expires.", 0, 1, expirationDate);
2707        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "The patient who either received or did not receive the immunization.", 0, 1, patient);
2708        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The visit or admission or other contact between patient and health care provider the immunization was performed as part of.", 0, 1, encounter);
2709        case -1248768647: /*supportingInformation*/  return new Property("supportingInformation", "Reference(Any)", "Additional information that is relevant to the immunization (e.g. for a vaccine recipient who is pregnant, the gestational age of the fetus). The reason why a vaccine was given (e.g. occupation, underlying medical condition) should be conveyed in Immunization.reason, not as supporting information. The reason why a vaccine was not given (e.g. contraindication) should be conveyed in Immunization.statusReason, not as supporting information.", 0, java.lang.Integer.MAX_VALUE, supportingInformation);
2710        case -2022646513: /*occurrence[x]*/  return new Property("occurrence[x]", "dateTime|string", "Date vaccine administered or was to be administered.", 0, 1, occurrence);
2711        case 1687874001: /*occurrence*/  return new Property("occurrence[x]", "dateTime|string", "Date vaccine administered or was to be administered.", 0, 1, occurrence);
2712        case -298443636: /*occurrenceDateTime*/  return new Property("occurrence[x]", "dateTime", "Date vaccine administered or was to be administered.", 0, 1, occurrence);
2713        case 1496896834: /*occurrenceString*/  return new Property("occurrence[x]", "string", "Date vaccine administered or was to be administered.", 0, 1, occurrence);
2714        case -528721731: /*primarySource*/  return new Property("primarySource", "boolean", "Indicates whether the data contained in the resource was captured by the individual/organization which was responsible for the administration of the vaccine rather than as 'secondary reported' data documented by a third party. A value of 'true' means this data originated with the individual/organization which was responsible for the administration of the vaccine.", 0, 1, primarySource);
2715        case -2123220889: /*informationSource*/  return new Property("informationSource", "CodeableReference(Patient|Practitioner|PractitionerRole|RelatedPerson|Organization)", "Typically the source of the data when the report of the immunization event is not based on information from the person who administered the vaccine.", 0, 1, informationSource);
2716        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "The service delivery location where the vaccine administration occurred.", 0, 1, location);
2717        case 3530567: /*site*/  return new Property("site", "CodeableConcept", "Body site where vaccine was administered.", 0, 1, site);
2718        case 108704329: /*route*/  return new Property("route", "CodeableConcept", "The path by which the vaccine product is taken into the body.", 0, 1, route);
2719        case -2083618872: /*doseQuantity*/  return new Property("doseQuantity", "Quantity", "The quantity of vaccine product that was administered.", 0, 1, doseQuantity);
2720        case 481140686: /*performer*/  return new Property("performer", "", "Indicates who performed the immunization event.", 0, java.lang.Integer.MAX_VALUE, performer);
2721        case 3387378: /*note*/  return new Property("note", "Annotation", "Extra information about the immunization that is not conveyed by the other attributes.", 0, java.lang.Integer.MAX_VALUE, note);
2722        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport)", "Describes why the immunization occurred in coded or textual form, or Indicates another resource (Condition, Observation or DiagnosticReport) whose existence justifies this immunization.", 0, java.lang.Integer.MAX_VALUE, reason);
2723        case 1618512556: /*isSubpotent*/  return new Property("isSubpotent", "boolean", "Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent.", 0, 1, isSubpotent);
2724        case 805168794: /*subpotentReason*/  return new Property("subpotentReason", "CodeableConcept", "Reason why a dose is considered to be subpotent.", 0, java.lang.Integer.MAX_VALUE, subpotentReason);
2725        case 1207530089: /*programEligibility*/  return new Property("programEligibility", "", "Indicates a patient's eligibility for a funding program.", 0, java.lang.Integer.MAX_VALUE, programEligibility);
2726        case 1120150904: /*fundingSource*/  return new Property("fundingSource", "CodeableConcept", "Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered).", 0, 1, fundingSource);
2727        case -867509719: /*reaction*/  return new Property("reaction", "", "Categorical data indicating that an adverse event is associated in time to an immunization.", 0, java.lang.Integer.MAX_VALUE, reaction);
2728        case 607985349: /*protocolApplied*/  return new Property("protocolApplied", "", "The protocol (set of recommendations) being followed by the provider who administered the dose.", 0, java.lang.Integer.MAX_VALUE, protocolApplied);
2729        default: return super.getNamedProperty(_hash, _name, _checkValid);
2730        }
2731
2732      }
2733
2734      @Override
2735      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2736        switch (hash) {
2737        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2738        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
2739        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ImmunizationStatusCodes>
2740        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // CodeableConcept
2741        case 664556354: /*vaccineCode*/ return this.vaccineCode == null ? new Base[0] : new Base[] {this.vaccineCode}; // CodeableConcept
2742        case 1610069896: /*administeredProduct*/ return this.administeredProduct == null ? new Base[0] : new Base[] {this.administeredProduct}; // CodeableReference
2743        case -1969347631: /*manufacturer*/ return this.manufacturer == null ? new Base[0] : new Base[] {this.manufacturer}; // CodeableReference
2744        case 462547450: /*lotNumber*/ return this.lotNumber == null ? new Base[0] : new Base[] {this.lotNumber}; // StringType
2745        case -668811523: /*expirationDate*/ return this.expirationDate == null ? new Base[0] : new Base[] {this.expirationDate}; // DateType
2746        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
2747        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
2748        case -1248768647: /*supportingInformation*/ return this.supportingInformation == null ? new Base[0] : this.supportingInformation.toArray(new Base[this.supportingInformation.size()]); // Reference
2749        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // DataType
2750        case -528721731: /*primarySource*/ return this.primarySource == null ? new Base[0] : new Base[] {this.primarySource}; // BooleanType
2751        case -2123220889: /*informationSource*/ return this.informationSource == null ? new Base[0] : new Base[] {this.informationSource}; // CodeableReference
2752        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
2753        case 3530567: /*site*/ return this.site == null ? new Base[0] : new Base[] {this.site}; // CodeableConcept
2754        case 108704329: /*route*/ return this.route == null ? new Base[0] : new Base[] {this.route}; // CodeableConcept
2755        case -2083618872: /*doseQuantity*/ return this.doseQuantity == null ? new Base[0] : new Base[] {this.doseQuantity}; // Quantity
2756        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // ImmunizationPerformerComponent
2757        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2758        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
2759        case 1618512556: /*isSubpotent*/ return this.isSubpotent == null ? new Base[0] : new Base[] {this.isSubpotent}; // BooleanType
2760        case 805168794: /*subpotentReason*/ return this.subpotentReason == null ? new Base[0] : this.subpotentReason.toArray(new Base[this.subpotentReason.size()]); // CodeableConcept
2761        case 1207530089: /*programEligibility*/ return this.programEligibility == null ? new Base[0] : this.programEligibility.toArray(new Base[this.programEligibility.size()]); // ImmunizationProgramEligibilityComponent
2762        case 1120150904: /*fundingSource*/ return this.fundingSource == null ? new Base[0] : new Base[] {this.fundingSource}; // CodeableConcept
2763        case -867509719: /*reaction*/ return this.reaction == null ? new Base[0] : this.reaction.toArray(new Base[this.reaction.size()]); // ImmunizationReactionComponent
2764        case 607985349: /*protocolApplied*/ return this.protocolApplied == null ? new Base[0] : this.protocolApplied.toArray(new Base[this.protocolApplied.size()]); // ImmunizationProtocolAppliedComponent
2765        default: return super.getProperty(hash, name, checkValid);
2766        }
2767
2768      }
2769
2770      @Override
2771      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2772        switch (hash) {
2773        case -1618432855: // identifier
2774          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2775          return value;
2776        case -332612366: // basedOn
2777          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
2778          return value;
2779        case -892481550: // status
2780          value = new ImmunizationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2781          this.status = (Enumeration) value; // Enumeration<ImmunizationStatusCodes>
2782          return value;
2783        case 2051346646: // statusReason
2784          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2785          return value;
2786        case 664556354: // vaccineCode
2787          this.vaccineCode = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2788          return value;
2789        case 1610069896: // administeredProduct
2790          this.administeredProduct = TypeConvertor.castToCodeableReference(value); // CodeableReference
2791          return value;
2792        case -1969347631: // manufacturer
2793          this.manufacturer = TypeConvertor.castToCodeableReference(value); // CodeableReference
2794          return value;
2795        case 462547450: // lotNumber
2796          this.lotNumber = TypeConvertor.castToString(value); // StringType
2797          return value;
2798        case -668811523: // expirationDate
2799          this.expirationDate = TypeConvertor.castToDate(value); // DateType
2800          return value;
2801        case -791418107: // patient
2802          this.patient = TypeConvertor.castToReference(value); // Reference
2803          return value;
2804        case 1524132147: // encounter
2805          this.encounter = TypeConvertor.castToReference(value); // Reference
2806          return value;
2807        case -1248768647: // supportingInformation
2808          this.getSupportingInformation().add(TypeConvertor.castToReference(value)); // Reference
2809          return value;
2810        case 1687874001: // occurrence
2811          this.occurrence = TypeConvertor.castToType(value); // DataType
2812          return value;
2813        case -528721731: // primarySource
2814          this.primarySource = TypeConvertor.castToBoolean(value); // BooleanType
2815          return value;
2816        case -2123220889: // informationSource
2817          this.informationSource = TypeConvertor.castToCodeableReference(value); // CodeableReference
2818          return value;
2819        case 1901043637: // location
2820          this.location = TypeConvertor.castToReference(value); // Reference
2821          return value;
2822        case 3530567: // site
2823          this.site = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2824          return value;
2825        case 108704329: // route
2826          this.route = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2827          return value;
2828        case -2083618872: // doseQuantity
2829          this.doseQuantity = TypeConvertor.castToQuantity(value); // Quantity
2830          return value;
2831        case 481140686: // performer
2832          this.getPerformer().add((ImmunizationPerformerComponent) value); // ImmunizationPerformerComponent
2833          return value;
2834        case 3387378: // note
2835          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2836          return value;
2837        case -934964668: // reason
2838          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2839          return value;
2840        case 1618512556: // isSubpotent
2841          this.isSubpotent = TypeConvertor.castToBoolean(value); // BooleanType
2842          return value;
2843        case 805168794: // subpotentReason
2844          this.getSubpotentReason().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2845          return value;
2846        case 1207530089: // programEligibility
2847          this.getProgramEligibility().add((ImmunizationProgramEligibilityComponent) value); // ImmunizationProgramEligibilityComponent
2848          return value;
2849        case 1120150904: // fundingSource
2850          this.fundingSource = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2851          return value;
2852        case -867509719: // reaction
2853          this.getReaction().add((ImmunizationReactionComponent) value); // ImmunizationReactionComponent
2854          return value;
2855        case 607985349: // protocolApplied
2856          this.getProtocolApplied().add((ImmunizationProtocolAppliedComponent) value); // ImmunizationProtocolAppliedComponent
2857          return value;
2858        default: return super.setProperty(hash, name, value);
2859        }
2860
2861      }
2862
2863      @Override
2864      public Base setProperty(String name, Base value) throws FHIRException {
2865        if (name.equals("identifier")) {
2866          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2867        } else if (name.equals("basedOn")) {
2868          this.getBasedOn().add(TypeConvertor.castToReference(value));
2869        } else if (name.equals("status")) {
2870          value = new ImmunizationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2871          this.status = (Enumeration) value; // Enumeration<ImmunizationStatusCodes>
2872        } else if (name.equals("statusReason")) {
2873          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2874        } else if (name.equals("vaccineCode")) {
2875          this.vaccineCode = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2876        } else if (name.equals("administeredProduct")) {
2877          this.administeredProduct = TypeConvertor.castToCodeableReference(value); // CodeableReference
2878        } else if (name.equals("manufacturer")) {
2879          this.manufacturer = TypeConvertor.castToCodeableReference(value); // CodeableReference
2880        } else if (name.equals("lotNumber")) {
2881          this.lotNumber = TypeConvertor.castToString(value); // StringType
2882        } else if (name.equals("expirationDate")) {
2883          this.expirationDate = TypeConvertor.castToDate(value); // DateType
2884        } else if (name.equals("patient")) {
2885          this.patient = TypeConvertor.castToReference(value); // Reference
2886        } else if (name.equals("encounter")) {
2887          this.encounter = TypeConvertor.castToReference(value); // Reference
2888        } else if (name.equals("supportingInformation")) {
2889          this.getSupportingInformation().add(TypeConvertor.castToReference(value));
2890        } else if (name.equals("occurrence[x]")) {
2891          this.occurrence = TypeConvertor.castToType(value); // DataType
2892        } else if (name.equals("primarySource")) {
2893          this.primarySource = TypeConvertor.castToBoolean(value); // BooleanType
2894        } else if (name.equals("informationSource")) {
2895          this.informationSource = TypeConvertor.castToCodeableReference(value); // CodeableReference
2896        } else if (name.equals("location")) {
2897          this.location = TypeConvertor.castToReference(value); // Reference
2898        } else if (name.equals("site")) {
2899          this.site = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2900        } else if (name.equals("route")) {
2901          this.route = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2902        } else if (name.equals("doseQuantity")) {
2903          this.doseQuantity = TypeConvertor.castToQuantity(value); // Quantity
2904        } else if (name.equals("performer")) {
2905          this.getPerformer().add((ImmunizationPerformerComponent) value);
2906        } else if (name.equals("note")) {
2907          this.getNote().add(TypeConvertor.castToAnnotation(value));
2908        } else if (name.equals("reason")) {
2909          this.getReason().add(TypeConvertor.castToCodeableReference(value));
2910        } else if (name.equals("isSubpotent")) {
2911          this.isSubpotent = TypeConvertor.castToBoolean(value); // BooleanType
2912        } else if (name.equals("subpotentReason")) {
2913          this.getSubpotentReason().add(TypeConvertor.castToCodeableConcept(value));
2914        } else if (name.equals("programEligibility")) {
2915          this.getProgramEligibility().add((ImmunizationProgramEligibilityComponent) value);
2916        } else if (name.equals("fundingSource")) {
2917          this.fundingSource = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2918        } else if (name.equals("reaction")) {
2919          this.getReaction().add((ImmunizationReactionComponent) value);
2920        } else if (name.equals("protocolApplied")) {
2921          this.getProtocolApplied().add((ImmunizationProtocolAppliedComponent) value);
2922        } else
2923          return super.setProperty(name, value);
2924        return value;
2925      }
2926
2927      @Override
2928      public Base makeProperty(int hash, String name) throws FHIRException {
2929        switch (hash) {
2930        case -1618432855:  return addIdentifier(); 
2931        case -332612366:  return addBasedOn(); 
2932        case -892481550:  return getStatusElement();
2933        case 2051346646:  return getStatusReason();
2934        case 664556354:  return getVaccineCode();
2935        case 1610069896:  return getAdministeredProduct();
2936        case -1969347631:  return getManufacturer();
2937        case 462547450:  return getLotNumberElement();
2938        case -668811523:  return getExpirationDateElement();
2939        case -791418107:  return getPatient();
2940        case 1524132147:  return getEncounter();
2941        case -1248768647:  return addSupportingInformation(); 
2942        case -2022646513:  return getOccurrence();
2943        case 1687874001:  return getOccurrence();
2944        case -528721731:  return getPrimarySourceElement();
2945        case -2123220889:  return getInformationSource();
2946        case 1901043637:  return getLocation();
2947        case 3530567:  return getSite();
2948        case 108704329:  return getRoute();
2949        case -2083618872:  return getDoseQuantity();
2950        case 481140686:  return addPerformer(); 
2951        case 3387378:  return addNote(); 
2952        case -934964668:  return addReason(); 
2953        case 1618512556:  return getIsSubpotentElement();
2954        case 805168794:  return addSubpotentReason(); 
2955        case 1207530089:  return addProgramEligibility(); 
2956        case 1120150904:  return getFundingSource();
2957        case -867509719:  return addReaction(); 
2958        case 607985349:  return addProtocolApplied(); 
2959        default: return super.makeProperty(hash, name);
2960        }
2961
2962      }
2963
2964      @Override
2965      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2966        switch (hash) {
2967        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2968        case -332612366: /*basedOn*/ return new String[] {"Reference"};
2969        case -892481550: /*status*/ return new String[] {"code"};
2970        case 2051346646: /*statusReason*/ return new String[] {"CodeableConcept"};
2971        case 664556354: /*vaccineCode*/ return new String[] {"CodeableConcept"};
2972        case 1610069896: /*administeredProduct*/ return new String[] {"CodeableReference"};
2973        case -1969347631: /*manufacturer*/ return new String[] {"CodeableReference"};
2974        case 462547450: /*lotNumber*/ return new String[] {"string"};
2975        case -668811523: /*expirationDate*/ return new String[] {"date"};
2976        case -791418107: /*patient*/ return new String[] {"Reference"};
2977        case 1524132147: /*encounter*/ return new String[] {"Reference"};
2978        case -1248768647: /*supportingInformation*/ return new String[] {"Reference"};
2979        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "string"};
2980        case -528721731: /*primarySource*/ return new String[] {"boolean"};
2981        case -2123220889: /*informationSource*/ return new String[] {"CodeableReference"};
2982        case 1901043637: /*location*/ return new String[] {"Reference"};
2983        case 3530567: /*site*/ return new String[] {"CodeableConcept"};
2984        case 108704329: /*route*/ return new String[] {"CodeableConcept"};
2985        case -2083618872: /*doseQuantity*/ return new String[] {"Quantity"};
2986        case 481140686: /*performer*/ return new String[] {};
2987        case 3387378: /*note*/ return new String[] {"Annotation"};
2988        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
2989        case 1618512556: /*isSubpotent*/ return new String[] {"boolean"};
2990        case 805168794: /*subpotentReason*/ return new String[] {"CodeableConcept"};
2991        case 1207530089: /*programEligibility*/ return new String[] {};
2992        case 1120150904: /*fundingSource*/ return new String[] {"CodeableConcept"};
2993        case -867509719: /*reaction*/ return new String[] {};
2994        case 607985349: /*protocolApplied*/ return new String[] {};
2995        default: return super.getTypesForProperty(hash, name);
2996        }
2997
2998      }
2999
3000      @Override
3001      public Base addChild(String name) throws FHIRException {
3002        if (name.equals("identifier")) {
3003          return addIdentifier();
3004        }
3005        else if (name.equals("basedOn")) {
3006          return addBasedOn();
3007        }
3008        else if (name.equals("status")) {
3009          throw new FHIRException("Cannot call addChild on a singleton property Immunization.status");
3010        }
3011        else if (name.equals("statusReason")) {
3012          this.statusReason = new CodeableConcept();
3013          return this.statusReason;
3014        }
3015        else if (name.equals("vaccineCode")) {
3016          this.vaccineCode = new CodeableConcept();
3017          return this.vaccineCode;
3018        }
3019        else if (name.equals("administeredProduct")) {
3020          this.administeredProduct = new CodeableReference();
3021          return this.administeredProduct;
3022        }
3023        else if (name.equals("manufacturer")) {
3024          this.manufacturer = new CodeableReference();
3025          return this.manufacturer;
3026        }
3027        else if (name.equals("lotNumber")) {
3028          throw new FHIRException("Cannot call addChild on a singleton property Immunization.lotNumber");
3029        }
3030        else if (name.equals("expirationDate")) {
3031          throw new FHIRException("Cannot call addChild on a singleton property Immunization.expirationDate");
3032        }
3033        else if (name.equals("patient")) {
3034          this.patient = new Reference();
3035          return this.patient;
3036        }
3037        else if (name.equals("encounter")) {
3038          this.encounter = new Reference();
3039          return this.encounter;
3040        }
3041        else if (name.equals("supportingInformation")) {
3042          return addSupportingInformation();
3043        }
3044        else if (name.equals("occurrenceDateTime")) {
3045          this.occurrence = new DateTimeType();
3046          return this.occurrence;
3047        }
3048        else if (name.equals("occurrenceString")) {
3049          this.occurrence = new StringType();
3050          return this.occurrence;
3051        }
3052        else if (name.equals("primarySource")) {
3053          throw new FHIRException("Cannot call addChild on a singleton property Immunization.primarySource");
3054        }
3055        else if (name.equals("informationSource")) {
3056          this.informationSource = new CodeableReference();
3057          return this.informationSource;
3058        }
3059        else if (name.equals("location")) {
3060          this.location = new Reference();
3061          return this.location;
3062        }
3063        else if (name.equals("site")) {
3064          this.site = new CodeableConcept();
3065          return this.site;
3066        }
3067        else if (name.equals("route")) {
3068          this.route = new CodeableConcept();
3069          return this.route;
3070        }
3071        else if (name.equals("doseQuantity")) {
3072          this.doseQuantity = new Quantity();
3073          return this.doseQuantity;
3074        }
3075        else if (name.equals("performer")) {
3076          return addPerformer();
3077        }
3078        else if (name.equals("note")) {
3079          return addNote();
3080        }
3081        else if (name.equals("reason")) {
3082          return addReason();
3083        }
3084        else if (name.equals("isSubpotent")) {
3085          throw new FHIRException("Cannot call addChild on a singleton property Immunization.isSubpotent");
3086        }
3087        else if (name.equals("subpotentReason")) {
3088          return addSubpotentReason();
3089        }
3090        else if (name.equals("programEligibility")) {
3091          return addProgramEligibility();
3092        }
3093        else if (name.equals("fundingSource")) {
3094          this.fundingSource = new CodeableConcept();
3095          return this.fundingSource;
3096        }
3097        else if (name.equals("reaction")) {
3098          return addReaction();
3099        }
3100        else if (name.equals("protocolApplied")) {
3101          return addProtocolApplied();
3102        }
3103        else
3104          return super.addChild(name);
3105      }
3106
3107  public String fhirType() {
3108    return "Immunization";
3109
3110  }
3111
3112      public Immunization copy() {
3113        Immunization dst = new Immunization();
3114        copyValues(dst);
3115        return dst;
3116      }
3117
3118      public void copyValues(Immunization dst) {
3119        super.copyValues(dst);
3120        if (identifier != null) {
3121          dst.identifier = new ArrayList<Identifier>();
3122          for (Identifier i : identifier)
3123            dst.identifier.add(i.copy());
3124        };
3125        if (basedOn != null) {
3126          dst.basedOn = new ArrayList<Reference>();
3127          for (Reference i : basedOn)
3128            dst.basedOn.add(i.copy());
3129        };
3130        dst.status = status == null ? null : status.copy();
3131        dst.statusReason = statusReason == null ? null : statusReason.copy();
3132        dst.vaccineCode = vaccineCode == null ? null : vaccineCode.copy();
3133        dst.administeredProduct = administeredProduct == null ? null : administeredProduct.copy();
3134        dst.manufacturer = manufacturer == null ? null : manufacturer.copy();
3135        dst.lotNumber = lotNumber == null ? null : lotNumber.copy();
3136        dst.expirationDate = expirationDate == null ? null : expirationDate.copy();
3137        dst.patient = patient == null ? null : patient.copy();
3138        dst.encounter = encounter == null ? null : encounter.copy();
3139        if (supportingInformation != null) {
3140          dst.supportingInformation = new ArrayList<Reference>();
3141          for (Reference i : supportingInformation)
3142            dst.supportingInformation.add(i.copy());
3143        };
3144        dst.occurrence = occurrence == null ? null : occurrence.copy();
3145        dst.primarySource = primarySource == null ? null : primarySource.copy();
3146        dst.informationSource = informationSource == null ? null : informationSource.copy();
3147        dst.location = location == null ? null : location.copy();
3148        dst.site = site == null ? null : site.copy();
3149        dst.route = route == null ? null : route.copy();
3150        dst.doseQuantity = doseQuantity == null ? null : doseQuantity.copy();
3151        if (performer != null) {
3152          dst.performer = new ArrayList<ImmunizationPerformerComponent>();
3153          for (ImmunizationPerformerComponent i : performer)
3154            dst.performer.add(i.copy());
3155        };
3156        if (note != null) {
3157          dst.note = new ArrayList<Annotation>();
3158          for (Annotation i : note)
3159            dst.note.add(i.copy());
3160        };
3161        if (reason != null) {
3162          dst.reason = new ArrayList<CodeableReference>();
3163          for (CodeableReference i : reason)
3164            dst.reason.add(i.copy());
3165        };
3166        dst.isSubpotent = isSubpotent == null ? null : isSubpotent.copy();
3167        if (subpotentReason != null) {
3168          dst.subpotentReason = new ArrayList<CodeableConcept>();
3169          for (CodeableConcept i : subpotentReason)
3170            dst.subpotentReason.add(i.copy());
3171        };
3172        if (programEligibility != null) {
3173          dst.programEligibility = new ArrayList<ImmunizationProgramEligibilityComponent>();
3174          for (ImmunizationProgramEligibilityComponent i : programEligibility)
3175            dst.programEligibility.add(i.copy());
3176        };
3177        dst.fundingSource = fundingSource == null ? null : fundingSource.copy();
3178        if (reaction != null) {
3179          dst.reaction = new ArrayList<ImmunizationReactionComponent>();
3180          for (ImmunizationReactionComponent i : reaction)
3181            dst.reaction.add(i.copy());
3182        };
3183        if (protocolApplied != null) {
3184          dst.protocolApplied = new ArrayList<ImmunizationProtocolAppliedComponent>();
3185          for (ImmunizationProtocolAppliedComponent i : protocolApplied)
3186            dst.protocolApplied.add(i.copy());
3187        };
3188      }
3189
3190      protected Immunization typedCopy() {
3191        return copy();
3192      }
3193
3194      @Override
3195      public boolean equalsDeep(Base other_) {
3196        if (!super.equalsDeep(other_))
3197          return false;
3198        if (!(other_ instanceof Immunization))
3199          return false;
3200        Immunization o = (Immunization) other_;
3201        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(status, o.status, true)
3202           && compareDeep(statusReason, o.statusReason, true) && compareDeep(vaccineCode, o.vaccineCode, true)
3203           && compareDeep(administeredProduct, o.administeredProduct, true) && compareDeep(manufacturer, o.manufacturer, true)
3204           && compareDeep(lotNumber, o.lotNumber, true) && compareDeep(expirationDate, o.expirationDate, true)
3205           && compareDeep(patient, o.patient, true) && compareDeep(encounter, o.encounter, true) && compareDeep(supportingInformation, o.supportingInformation, true)
3206           && compareDeep(occurrence, o.occurrence, true) && compareDeep(primarySource, o.primarySource, true)
3207           && compareDeep(informationSource, o.informationSource, true) && compareDeep(location, o.location, true)
3208           && compareDeep(site, o.site, true) && compareDeep(route, o.route, true) && compareDeep(doseQuantity, o.doseQuantity, true)
3209           && compareDeep(performer, o.performer, true) && compareDeep(note, o.note, true) && compareDeep(reason, o.reason, true)
3210           && compareDeep(isSubpotent, o.isSubpotent, true) && compareDeep(subpotentReason, o.subpotentReason, true)
3211           && compareDeep(programEligibility, o.programEligibility, true) && compareDeep(fundingSource, o.fundingSource, true)
3212           && compareDeep(reaction, o.reaction, true) && compareDeep(protocolApplied, o.protocolApplied, true)
3213          ;
3214      }
3215
3216      @Override
3217      public boolean equalsShallow(Base other_) {
3218        if (!super.equalsShallow(other_))
3219          return false;
3220        if (!(other_ instanceof Immunization))
3221          return false;
3222        Immunization o = (Immunization) other_;
3223        return compareValues(status, o.status, true) && compareValues(lotNumber, o.lotNumber, true) && compareValues(expirationDate, o.expirationDate, true)
3224           && compareValues(primarySource, o.primarySource, true) && compareValues(isSubpotent, o.isSubpotent, true)
3225          ;
3226      }
3227
3228      public boolean isEmpty() {
3229        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, basedOn, status
3230          , statusReason, vaccineCode, administeredProduct, manufacturer, lotNumber, expirationDate
3231          , patient, encounter, supportingInformation, occurrence, primarySource, informationSource
3232          , location, site, route, doseQuantity, performer, note, reason, isSubpotent
3233          , subpotentReason, programEligibility, fundingSource, reaction, protocolApplied);
3234      }
3235
3236  @Override
3237  public ResourceType getResourceType() {
3238    return ResourceType.Immunization;
3239   }
3240
3241 /**
3242   * Search parameter: <b>location</b>
3243   * <p>
3244   * Description: <b>The service delivery location or facility in which the vaccine was / was to be administered</b><br>
3245   * Type: <b>reference</b><br>
3246   * Path: <b>Immunization.location</b><br>
3247   * </p>
3248   */
3249  @SearchParamDefinition(name="location", path="Immunization.location", description="The service delivery location or facility in which the vaccine was / was to be administered", type="reference", target={Location.class } )
3250  public static final String SP_LOCATION = "location";
3251 /**
3252   * <b>Fluent Client</b> search parameter constant for <b>location</b>
3253   * <p>
3254   * Description: <b>The service delivery location or facility in which the vaccine was / was to be administered</b><br>
3255   * Type: <b>reference</b><br>
3256   * Path: <b>Immunization.location</b><br>
3257   * </p>
3258   */
3259  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_LOCATION);
3260
3261/**
3262   * Constant for fluent queries to be used to add include statements. Specifies
3263   * the path value of "<b>Immunization:location</b>".
3264   */
3265  public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include("Immunization:location").toLocked();
3266
3267 /**
3268   * Search parameter: <b>lot-number</b>
3269   * <p>
3270   * Description: <b>Vaccine Lot Number</b><br>
3271   * Type: <b>string</b><br>
3272   * Path: <b>Immunization.lotNumber</b><br>
3273   * </p>
3274   */
3275  @SearchParamDefinition(name="lot-number", path="Immunization.lotNumber", description="Vaccine Lot Number", type="string" )
3276  public static final String SP_LOT_NUMBER = "lot-number";
3277 /**
3278   * <b>Fluent Client</b> search parameter constant for <b>lot-number</b>
3279   * <p>
3280   * Description: <b>Vaccine Lot Number</b><br>
3281   * Type: <b>string</b><br>
3282   * Path: <b>Immunization.lotNumber</b><br>
3283   * </p>
3284   */
3285  public static final ca.uhn.fhir.rest.gclient.StringClientParam LOT_NUMBER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_LOT_NUMBER);
3286
3287 /**
3288   * Search parameter: <b>manufacturer</b>
3289   * <p>
3290   * Description: <b>Vaccine Manufacturer</b><br>
3291   * Type: <b>reference</b><br>
3292   * Path: <b>Immunization.manufacturer.reference</b><br>
3293   * </p>
3294   */
3295  @SearchParamDefinition(name="manufacturer", path="Immunization.manufacturer.reference", description="Vaccine Manufacturer", type="reference", target={Organization.class } )
3296  public static final String SP_MANUFACTURER = "manufacturer";
3297 /**
3298   * <b>Fluent Client</b> search parameter constant for <b>manufacturer</b>
3299   * <p>
3300   * Description: <b>Vaccine Manufacturer</b><br>
3301   * Type: <b>reference</b><br>
3302   * Path: <b>Immunization.manufacturer.reference</b><br>
3303   * </p>
3304   */
3305  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam MANUFACTURER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_MANUFACTURER);
3306
3307/**
3308   * Constant for fluent queries to be used to add include statements. Specifies
3309   * the path value of "<b>Immunization:manufacturer</b>".
3310   */
3311  public static final ca.uhn.fhir.model.api.Include INCLUDE_MANUFACTURER = new ca.uhn.fhir.model.api.Include("Immunization:manufacturer").toLocked();
3312
3313 /**
3314   * Search parameter: <b>performer</b>
3315   * <p>
3316   * Description: <b>The practitioner, individual or organization who played a role in the vaccination</b><br>
3317   * Type: <b>reference</b><br>
3318   * Path: <b>Immunization.performer.actor</b><br>
3319   * </p>
3320   */
3321  @SearchParamDefinition(name="performer", path="Immunization.performer.actor", description="The practitioner, individual or organization who played a role in the vaccination", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
3322  public static final String SP_PERFORMER = "performer";
3323 /**
3324   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
3325   * <p>
3326   * Description: <b>The practitioner, individual or organization who played a role in the vaccination</b><br>
3327   * Type: <b>reference</b><br>
3328   * Path: <b>Immunization.performer.actor</b><br>
3329   * </p>
3330   */
3331  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
3332
3333/**
3334   * Constant for fluent queries to be used to add include statements. Specifies
3335   * the path value of "<b>Immunization:performer</b>".
3336   */
3337  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("Immunization:performer").toLocked();
3338
3339 /**
3340   * Search parameter: <b>reaction-date</b>
3341   * <p>
3342   * Description: <b>When reaction started</b><br>
3343   * Type: <b>date</b><br>
3344   * Path: <b>Immunization.reaction.date</b><br>
3345   * </p>
3346   */
3347  @SearchParamDefinition(name="reaction-date", path="Immunization.reaction.date", description="When reaction started", type="date" )
3348  public static final String SP_REACTION_DATE = "reaction-date";
3349 /**
3350   * <b>Fluent Client</b> search parameter constant for <b>reaction-date</b>
3351   * <p>
3352   * Description: <b>When reaction started</b><br>
3353   * Type: <b>date</b><br>
3354   * Path: <b>Immunization.reaction.date</b><br>
3355   * </p>
3356   */
3357  public static final ca.uhn.fhir.rest.gclient.DateClientParam REACTION_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_REACTION_DATE);
3358
3359 /**
3360   * Search parameter: <b>reaction</b>
3361   * <p>
3362   * Description: <b>Additional information on reaction</b><br>
3363   * Type: <b>reference</b><br>
3364   * Path: <b>Immunization.reaction.manifestation.reference</b><br>
3365   * </p>
3366   */
3367  @SearchParamDefinition(name="reaction", path="Immunization.reaction.manifestation.reference", description="Additional information on reaction", type="reference", target={Observation.class } )
3368  public static final String SP_REACTION = "reaction";
3369 /**
3370   * <b>Fluent Client</b> search parameter constant for <b>reaction</b>
3371   * <p>
3372   * Description: <b>Additional information on reaction</b><br>
3373   * Type: <b>reference</b><br>
3374   * Path: <b>Immunization.reaction.manifestation.reference</b><br>
3375   * </p>
3376   */
3377  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REACTION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REACTION);
3378
3379/**
3380   * Constant for fluent queries to be used to add include statements. Specifies
3381   * the path value of "<b>Immunization:reaction</b>".
3382   */
3383  public static final ca.uhn.fhir.model.api.Include INCLUDE_REACTION = new ca.uhn.fhir.model.api.Include("Immunization:reaction").toLocked();
3384
3385 /**
3386   * Search parameter: <b>reason-code</b>
3387   * <p>
3388   * Description: <b>Reason why the vaccine was administered</b><br>
3389   * Type: <b>token</b><br>
3390   * Path: <b>Immunization.reason.concept</b><br>
3391   * </p>
3392   */
3393  @SearchParamDefinition(name="reason-code", path="Immunization.reason.concept", description="Reason why the vaccine was administered", type="token" )
3394  public static final String SP_REASON_CODE = "reason-code";
3395 /**
3396   * <b>Fluent Client</b> search parameter constant for <b>reason-code</b>
3397   * <p>
3398   * Description: <b>Reason why the vaccine was administered</b><br>
3399   * Type: <b>token</b><br>
3400   * Path: <b>Immunization.reason.concept</b><br>
3401   * </p>
3402   */
3403  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REASON_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REASON_CODE);
3404
3405 /**
3406   * Search parameter: <b>reason-reference</b>
3407   * <p>
3408   * Description: <b>Reference to a resource (by instance)</b><br>
3409   * Type: <b>reference</b><br>
3410   * Path: <b>Immunization.reason.reference</b><br>
3411   * </p>
3412   */
3413  @SearchParamDefinition(name="reason-reference", path="Immunization.reason.reference", description="Reference to a resource (by instance)", type="reference", target={Condition.class, DiagnosticReport.class, Observation.class } )
3414  public static final String SP_REASON_REFERENCE = "reason-reference";
3415 /**
3416   * <b>Fluent Client</b> search parameter constant for <b>reason-reference</b>
3417   * <p>
3418   * Description: <b>Reference to a resource (by instance)</b><br>
3419   * Type: <b>reference</b><br>
3420   * Path: <b>Immunization.reason.reference</b><br>
3421   * </p>
3422   */
3423  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REASON_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REASON_REFERENCE);
3424
3425/**
3426   * Constant for fluent queries to be used to add include statements. Specifies
3427   * the path value of "<b>Immunization:reason-reference</b>".
3428   */
3429  public static final ca.uhn.fhir.model.api.Include INCLUDE_REASON_REFERENCE = new ca.uhn.fhir.model.api.Include("Immunization:reason-reference").toLocked();
3430
3431 /**
3432   * Search parameter: <b>series</b>
3433   * <p>
3434   * Description: <b>The series being followed by the provider</b><br>
3435   * Type: <b>string</b><br>
3436   * Path: <b>Immunization.protocolApplied.series</b><br>
3437   * </p>
3438   */
3439  @SearchParamDefinition(name="series", path="Immunization.protocolApplied.series", description="The series being followed by the provider", type="string" )
3440  public static final String SP_SERIES = "series";
3441 /**
3442   * <b>Fluent Client</b> search parameter constant for <b>series</b>
3443   * <p>
3444   * Description: <b>The series being followed by the provider</b><br>
3445   * Type: <b>string</b><br>
3446   * Path: <b>Immunization.protocolApplied.series</b><br>
3447   * </p>
3448   */
3449  public static final ca.uhn.fhir.rest.gclient.StringClientParam SERIES = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_SERIES);
3450
3451 /**
3452   * Search parameter: <b>status-reason</b>
3453   * <p>
3454   * Description: <b>Reason why the vaccine was not administered</b><br>
3455   * Type: <b>token</b><br>
3456   * Path: <b>Immunization.statusReason</b><br>
3457   * </p>
3458   */
3459  @SearchParamDefinition(name="status-reason", path="Immunization.statusReason", description="Reason why the vaccine was not administered", type="token" )
3460  public static final String SP_STATUS_REASON = "status-reason";
3461 /**
3462   * <b>Fluent Client</b> search parameter constant for <b>status-reason</b>
3463   * <p>
3464   * Description: <b>Reason why the vaccine was not administered</b><br>
3465   * Type: <b>token</b><br>
3466   * Path: <b>Immunization.statusReason</b><br>
3467   * </p>
3468   */
3469  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS_REASON = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS_REASON);
3470
3471 /**
3472   * Search parameter: <b>status</b>
3473   * <p>
3474   * Description: <b>Immunization event status</b><br>
3475   * Type: <b>token</b><br>
3476   * Path: <b>Immunization.status</b><br>
3477   * </p>
3478   */
3479  @SearchParamDefinition(name="status", path="Immunization.status", description="Immunization event status", type="token" )
3480  public static final String SP_STATUS = "status";
3481 /**
3482   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3483   * <p>
3484   * Description: <b>Immunization event status</b><br>
3485   * Type: <b>token</b><br>
3486   * Path: <b>Immunization.status</b><br>
3487   * </p>
3488   */
3489  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3490
3491 /**
3492   * Search parameter: <b>target-disease</b>
3493   * <p>
3494   * Description: <b>The target disease the dose is being administered against</b><br>
3495   * Type: <b>token</b><br>
3496   * Path: <b>Immunization.protocolApplied.targetDisease</b><br>
3497   * </p>
3498   */
3499  @SearchParamDefinition(name="target-disease", path="Immunization.protocolApplied.targetDisease", description="The target disease the dose is being administered against", type="token" )
3500  public static final String SP_TARGET_DISEASE = "target-disease";
3501 /**
3502   * <b>Fluent Client</b> search parameter constant for <b>target-disease</b>
3503   * <p>
3504   * Description: <b>The target disease the dose is being administered against</b><br>
3505   * Type: <b>token</b><br>
3506   * Path: <b>Immunization.protocolApplied.targetDisease</b><br>
3507   * </p>
3508   */
3509  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TARGET_DISEASE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TARGET_DISEASE);
3510
3511 /**
3512   * Search parameter: <b>vaccine-code</b>
3513   * <p>
3514   * Description: <b>Vaccine Product Administered</b><br>
3515   * Type: <b>token</b><br>
3516   * Path: <b>Immunization.vaccineCode</b><br>
3517   * </p>
3518   */
3519  @SearchParamDefinition(name="vaccine-code", path="Immunization.vaccineCode", description="Vaccine Product Administered", type="token" )
3520  public static final String SP_VACCINE_CODE = "vaccine-code";
3521 /**
3522   * <b>Fluent Client</b> search parameter constant for <b>vaccine-code</b>
3523   * <p>
3524   * Description: <b>Vaccine Product Administered</b><br>
3525   * Type: <b>token</b><br>
3526   * Path: <b>Immunization.vaccineCode</b><br>
3527   * </p>
3528   */
3529  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VACCINE_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VACCINE_CODE);
3530
3531 /**
3532   * Search parameter: <b>date</b>
3533   * <p>
3534   * Description: <b>Multiple Resources: 
3535
3536* [AdverseEvent](adverseevent.html): When the event occurred
3537* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3538* [Appointment](appointment.html): Appointment date/time.
3539* [AuditEvent](auditevent.html): Time when the event was recorded
3540* [CarePlan](careplan.html): Time period plan covers
3541* [CareTeam](careteam.html): A date within the coverage time period.
3542* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3543* [Composition](composition.html): Composition editing time
3544* [Consent](consent.html): When consent was agreed to
3545* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3546* [DocumentReference](documentreference.html): When this document reference was created
3547* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3548* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3549* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3550* [Flag](flag.html): Time period when flag is active
3551* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3552* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3553* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3554* [Invoice](invoice.html): Invoice date / posting date
3555* [List](list.html): When the list was prepared
3556* [MeasureReport](measurereport.html): The date of the measure report
3557* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3558* [Observation](observation.html): Clinically relevant time/time-period for observation
3559* [Procedure](procedure.html): When the procedure occurred or is occurring
3560* [ResearchSubject](researchsubject.html): Start and end of participation
3561* [RiskAssessment](riskassessment.html): When was assessment made?
3562* [SupplyRequest](supplyrequest.html): When the request was made
3563</b><br>
3564   * Type: <b>date</b><br>
3565   * 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>
3566   * </p>
3567   */
3568  @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" )
3569  public static final String SP_DATE = "date";
3570 /**
3571   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3572   * <p>
3573   * Description: <b>Multiple Resources: 
3574
3575* [AdverseEvent](adverseevent.html): When the event occurred
3576* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3577* [Appointment](appointment.html): Appointment date/time.
3578* [AuditEvent](auditevent.html): Time when the event was recorded
3579* [CarePlan](careplan.html): Time period plan covers
3580* [CareTeam](careteam.html): A date within the coverage time period.
3581* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3582* [Composition](composition.html): Composition editing time
3583* [Consent](consent.html): When consent was agreed to
3584* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3585* [DocumentReference](documentreference.html): When this document reference was created
3586* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3587* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3588* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3589* [Flag](flag.html): Time period when flag is active
3590* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3591* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3592* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3593* [Invoice](invoice.html): Invoice date / posting date
3594* [List](list.html): When the list was prepared
3595* [MeasureReport](measurereport.html): The date of the measure report
3596* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3597* [Observation](observation.html): Clinically relevant time/time-period for observation
3598* [Procedure](procedure.html): When the procedure occurred or is occurring
3599* [ResearchSubject](researchsubject.html): Start and end of participation
3600* [RiskAssessment](riskassessment.html): When was assessment made?
3601* [SupplyRequest](supplyrequest.html): When the request was made
3602</b><br>
3603   * Type: <b>date</b><br>
3604   * 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>
3605   * </p>
3606   */
3607  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3608
3609 /**
3610   * Search parameter: <b>identifier</b>
3611   * <p>
3612   * Description: <b>Multiple Resources: 
3613
3614* [Account](account.html): Account number
3615* [AdverseEvent](adverseevent.html): Business identifier for the event
3616* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3617* [Appointment](appointment.html): An Identifier of the Appointment
3618* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3619* [Basic](basic.html): Business identifier
3620* [BodyStructure](bodystructure.html): Bodystructure identifier
3621* [CarePlan](careplan.html): External Ids for this plan
3622* [CareTeam](careteam.html): External Ids for this team
3623* [ChargeItem](chargeitem.html): Business Identifier for item
3624* [Claim](claim.html): The primary identifier of the financial resource
3625* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3626* [ClinicalImpression](clinicalimpression.html): Business identifier
3627* [Communication](communication.html): Unique identifier
3628* [CommunicationRequest](communicationrequest.html): Unique identifier
3629* [Composition](composition.html): Version-independent identifier for the Composition
3630* [Condition](condition.html): A unique identifier of the condition record
3631* [Consent](consent.html): Identifier for this record (external references)
3632* [Contract](contract.html): The identity of the contract
3633* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3634* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3635* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3636* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3637* [DeviceRequest](devicerequest.html): Business identifier for request/order
3638* [DeviceUsage](deviceusage.html): Search by identifier
3639* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3640* [DocumentReference](documentreference.html): Identifier of the attachment binary
3641* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3642* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3643* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3644* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3645* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3646* [Flag](flag.html): Business identifier
3647* [Goal](goal.html): External Ids for this goal
3648* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3649* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3650* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3651* [Immunization](immunization.html): Business identifier
3652* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3653* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3654* [Invoice](invoice.html): Business Identifier for item
3655* [List](list.html): Business identifier
3656* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3657* [Medication](medication.html): Returns medications with this external identifier
3658* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3659* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3660* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3661* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3662* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3663* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3664* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3665* [Observation](observation.html): The unique id for a particular observation
3666* [Person](person.html): A person Identifier
3667* [Procedure](procedure.html): A unique identifier for a procedure
3668* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3669* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3670* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3671* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3672* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3673* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3674* [Specimen](specimen.html): The unique identifier associated with the specimen
3675* [SupplyDelivery](supplydelivery.html): External identifier
3676* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3677* [Task](task.html): Search for a task instance by its business identifier
3678* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3679</b><br>
3680   * Type: <b>token</b><br>
3681   * 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>
3682   * </p>
3683   */
3684  @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" )
3685  public static final String SP_IDENTIFIER = "identifier";
3686 /**
3687   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3688   * <p>
3689   * Description: <b>Multiple Resources: 
3690
3691* [Account](account.html): Account number
3692* [AdverseEvent](adverseevent.html): Business identifier for the event
3693* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3694* [Appointment](appointment.html): An Identifier of the Appointment
3695* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3696* [Basic](basic.html): Business identifier
3697* [BodyStructure](bodystructure.html): Bodystructure identifier
3698* [CarePlan](careplan.html): External Ids for this plan
3699* [CareTeam](careteam.html): External Ids for this team
3700* [ChargeItem](chargeitem.html): Business Identifier for item
3701* [Claim](claim.html): The primary identifier of the financial resource
3702* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3703* [ClinicalImpression](clinicalimpression.html): Business identifier
3704* [Communication](communication.html): Unique identifier
3705* [CommunicationRequest](communicationrequest.html): Unique identifier
3706* [Composition](composition.html): Version-independent identifier for the Composition
3707* [Condition](condition.html): A unique identifier of the condition record
3708* [Consent](consent.html): Identifier for this record (external references)
3709* [Contract](contract.html): The identity of the contract
3710* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3711* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3712* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3713* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3714* [DeviceRequest](devicerequest.html): Business identifier for request/order
3715* [DeviceUsage](deviceusage.html): Search by identifier
3716* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3717* [DocumentReference](documentreference.html): Identifier of the attachment binary
3718* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3719* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3720* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3721* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3722* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3723* [Flag](flag.html): Business identifier
3724* [Goal](goal.html): External Ids for this goal
3725* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3726* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3727* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3728* [Immunization](immunization.html): Business identifier
3729* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3730* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3731* [Invoice](invoice.html): Business Identifier for item
3732* [List](list.html): Business identifier
3733* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3734* [Medication](medication.html): Returns medications with this external identifier
3735* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3736* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3737* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3738* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3739* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3740* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3741* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3742* [Observation](observation.html): The unique id for a particular observation
3743* [Person](person.html): A person Identifier
3744* [Procedure](procedure.html): A unique identifier for a procedure
3745* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3746* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3747* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3748* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3749* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3750* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3751* [Specimen](specimen.html): The unique identifier associated with the specimen
3752* [SupplyDelivery](supplydelivery.html): External identifier
3753* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3754* [Task](task.html): Search for a task instance by its business identifier
3755* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3756</b><br>
3757   * Type: <b>token</b><br>
3758   * 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>
3759   * </p>
3760   */
3761  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3762
3763 /**
3764   * Search parameter: <b>patient</b>
3765   * <p>
3766   * Description: <b>Multiple Resources: 
3767
3768* [Account](account.html): The entity that caused the expenses
3769* [AdverseEvent](adverseevent.html): Subject impacted by event
3770* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3771* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3772* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3773* [AuditEvent](auditevent.html): Where the activity involved patient data
3774* [Basic](basic.html): Identifies the focus of this resource
3775* [BodyStructure](bodystructure.html): Who this is about
3776* [CarePlan](careplan.html): Who the care plan is for
3777* [CareTeam](careteam.html): Who care team is for
3778* [ChargeItem](chargeitem.html): Individual service was done for/to
3779* [Claim](claim.html): Patient receiving the products or services
3780* [ClaimResponse](claimresponse.html): The subject of care
3781* [ClinicalImpression](clinicalimpression.html): Patient assessed
3782* [Communication](communication.html): Focus of message
3783* [CommunicationRequest](communicationrequest.html): Focus of message
3784* [Composition](composition.html): Who and/or what the composition is about
3785* [Condition](condition.html): Who has the condition?
3786* [Consent](consent.html): Who the consent applies to
3787* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3788* [Coverage](coverage.html): Retrieve coverages for a patient
3789* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3790* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3791* [DetectedIssue](detectedissue.html): Associated patient
3792* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3793* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3794* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3795* [DocumentReference](documentreference.html): Who/what is the subject of the document
3796* [Encounter](encounter.html): The patient present at the encounter
3797* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3798* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3799* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3800* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3801* [Flag](flag.html): The identity of a subject to list flags for
3802* [Goal](goal.html): Who this goal is intended for
3803* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3804* [ImagingSelection](imagingselection.html): Who the study is about
3805* [ImagingStudy](imagingstudy.html): Who the study is about
3806* [Immunization](immunization.html): The patient for the vaccination record
3807* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3808* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3809* [Invoice](invoice.html): Recipient(s) of goods and services
3810* [List](list.html): If all resources have the same subject
3811* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3812* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3813* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3814* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3815* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3816* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3817* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3818* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3819* [Observation](observation.html): The subject that the observation is about (if patient)
3820* [Person](person.html): The Person links to this Patient
3821* [Procedure](procedure.html): Search by subject - a patient
3822* [Provenance](provenance.html): Where the activity involved patient data
3823* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3824* [RelatedPerson](relatedperson.html): The patient this related person is related to
3825* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3826* [ResearchSubject](researchsubject.html): Who or what is part of study
3827* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3828* [ServiceRequest](servicerequest.html): Search by subject - a patient
3829* [Specimen](specimen.html): The patient the specimen comes from
3830* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3831* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3832* [Task](task.html): Search by patient
3833* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3834</b><br>
3835   * Type: <b>reference</b><br>
3836   * 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>
3837   * </p>
3838   */
3839  @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 } )
3840  public static final String SP_PATIENT = "patient";
3841 /**
3842   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3843   * <p>
3844   * Description: <b>Multiple Resources: 
3845
3846* [Account](account.html): The entity that caused the expenses
3847* [AdverseEvent](adverseevent.html): Subject impacted by event
3848* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3849* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3850* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3851* [AuditEvent](auditevent.html): Where the activity involved patient data
3852* [Basic](basic.html): Identifies the focus of this resource
3853* [BodyStructure](bodystructure.html): Who this is about
3854* [CarePlan](careplan.html): Who the care plan is for
3855* [CareTeam](careteam.html): Who care team is for
3856* [ChargeItem](chargeitem.html): Individual service was done for/to
3857* [Claim](claim.html): Patient receiving the products or services
3858* [ClaimResponse](claimresponse.html): The subject of care
3859* [ClinicalImpression](clinicalimpression.html): Patient assessed
3860* [Communication](communication.html): Focus of message
3861* [CommunicationRequest](communicationrequest.html): Focus of message
3862* [Composition](composition.html): Who and/or what the composition is about
3863* [Condition](condition.html): Who has the condition?
3864* [Consent](consent.html): Who the consent applies to
3865* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3866* [Coverage](coverage.html): Retrieve coverages for a patient
3867* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3868* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3869* [DetectedIssue](detectedissue.html): Associated patient
3870* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3871* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3872* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3873* [DocumentReference](documentreference.html): Who/what is the subject of the document
3874* [Encounter](encounter.html): The patient present at the encounter
3875* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3876* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3877* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3878* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3879* [Flag](flag.html): The identity of a subject to list flags for
3880* [Goal](goal.html): Who this goal is intended for
3881* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3882* [ImagingSelection](imagingselection.html): Who the study is about
3883* [ImagingStudy](imagingstudy.html): Who the study is about
3884* [Immunization](immunization.html): The patient for the vaccination record
3885* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3886* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3887* [Invoice](invoice.html): Recipient(s) of goods and services
3888* [List](list.html): If all resources have the same subject
3889* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3890* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3891* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3892* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3893* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3894* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3895* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3896* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3897* [Observation](observation.html): The subject that the observation is about (if patient)
3898* [Person](person.html): The Person links to this Patient
3899* [Procedure](procedure.html): Search by subject - a patient
3900* [Provenance](provenance.html): Where the activity involved patient data
3901* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3902* [RelatedPerson](relatedperson.html): The patient this related person is related to
3903* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3904* [ResearchSubject](researchsubject.html): Who or what is part of study
3905* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3906* [ServiceRequest](servicerequest.html): Search by subject - a patient
3907* [Specimen](specimen.html): The patient the specimen comes from
3908* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3909* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3910* [Task](task.html): Search by patient
3911* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3912</b><br>
3913   * Type: <b>reference</b><br>
3914   * 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>
3915   * </p>
3916   */
3917  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3918
3919/**
3920   * Constant for fluent queries to be used to add include statements. Specifies
3921   * the path value of "<b>Immunization:patient</b>".
3922   */
3923  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Immunization:patient").toLocked();
3924
3925
3926}
3927