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