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