001package org.hl7.fhir.dstu3.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Mon, Apr 17, 2017 17:38-0400 for FHIR v3.0.1
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import ca.uhn.fhir.model.api.annotation.ResourceDef;
038import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.ChildOrder;
041import ca.uhn.fhir.model.api.annotation.Description;
042import ca.uhn.fhir.model.api.annotation.Block;
043import org.hl7.fhir.instance.model.api.*;
044import org.hl7.fhir.exceptions.FHIRException;
045/**
046 * A patient's point-in-time immunization and recommendation (i.e. forecasting a patient's immunization eligibility according to a published schedule) with optional supporting justification.
047 */
048@ResourceDef(name="ImmunizationRecommendation", profile="http://hl7.org/fhir/Profile/ImmunizationRecommendation")
049public class ImmunizationRecommendation extends DomainResource {
050
051    @Block()
052    public static class ImmunizationRecommendationRecommendationComponent extends BackboneElement implements IBaseBackboneElement {
053        /**
054         * The date the immunization recommendation was created.
055         */
056        @Child(name = "date", type = {DateTimeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
057        @Description(shortDefinition="Date recommendation created", formalDefinition="The date the immunization recommendation was created." )
058        protected DateTimeType date;
059
060        /**
061         * Vaccine that pertains to the recommendation.
062         */
063        @Child(name = "vaccineCode", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
064        @Description(shortDefinition="Vaccine recommendation applies to", formalDefinition="Vaccine that pertains to the recommendation." )
065        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vaccine-code")
066        protected CodeableConcept vaccineCode;
067
068        /**
069         * The targeted disease for the recommendation.
070         */
071        @Child(name = "targetDisease", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
072        @Description(shortDefinition="Disease to be immunized against", formalDefinition="The targeted disease for the recommendation." )
073        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-recommendation-target-disease")
074        protected CodeableConcept targetDisease;
075
076        /**
077         * The next recommended dose number (e.g. dose 2 is the next recommended dose).
078         */
079        @Child(name = "doseNumber", type = {PositiveIntType.class}, order=4, min=0, max=1, modifier=false, summary=true)
080        @Description(shortDefinition="Recommended dose number", formalDefinition="The next recommended dose number (e.g. dose 2 is the next recommended dose)." )
081        protected PositiveIntType doseNumber;
082
083        /**
084         * Vaccine administration status.
085         */
086        @Child(name = "forecastStatus", type = {CodeableConcept.class}, order=5, min=1, max=1, modifier=false, summary=true)
087        @Description(shortDefinition="Vaccine administration status", formalDefinition="Vaccine administration status." )
088        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-recommendation-status")
089        protected CodeableConcept forecastStatus;
090
091        /**
092         * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
093         */
094        @Child(name = "dateCriterion", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
095        @Description(shortDefinition="Dates governing proposed immunization", formalDefinition="Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc." )
096        protected List<ImmunizationRecommendationRecommendationDateCriterionComponent> dateCriterion;
097
098        /**
099         * Contains information about the protocol under which the vaccine was administered.
100         */
101        @Child(name = "protocol", type = {}, order=7, min=0, max=1, modifier=false, summary=false)
102        @Description(shortDefinition="Protocol used by recommendation", formalDefinition="Contains information about the protocol under which the vaccine was administered." )
103        protected ImmunizationRecommendationRecommendationProtocolComponent protocol;
104
105        /**
106         * Immunization event history that supports the status and recommendation.
107         */
108        @Child(name = "supportingImmunization", type = {Immunization.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
109        @Description(shortDefinition="Past immunizations supporting recommendation", formalDefinition="Immunization event history that supports the status and recommendation." )
110        protected List<Reference> supportingImmunization;
111        /**
112         * The actual objects that are the target of the reference (Immunization event history that supports the status and recommendation.)
113         */
114        protected List<Immunization> supportingImmunizationTarget;
115
116
117        /**
118         * Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.
119         */
120        @Child(name = "supportingPatientInformation", type = {Observation.class, AllergyIntolerance.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
121        @Description(shortDefinition="Patient observations supporting recommendation", formalDefinition="Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information." )
122        protected List<Reference> supportingPatientInformation;
123        /**
124         * The actual objects that are the target of the reference (Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.)
125         */
126        protected List<Resource> supportingPatientInformationTarget;
127
128
129        private static final long serialVersionUID = 1279700888L;
130
131    /**
132     * Constructor
133     */
134      public ImmunizationRecommendationRecommendationComponent() {
135        super();
136      }
137
138    /**
139     * Constructor
140     */
141      public ImmunizationRecommendationRecommendationComponent(DateTimeType date, CodeableConcept forecastStatus) {
142        super();
143        this.date = date;
144        this.forecastStatus = forecastStatus;
145      }
146
147        /**
148         * @return {@link #date} (The date the immunization recommendation was created.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
149         */
150        public DateTimeType getDateElement() { 
151          if (this.date == null)
152            if (Configuration.errorOnAutoCreate())
153              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.date");
154            else if (Configuration.doAutoCreate())
155              this.date = new DateTimeType(); // bb
156          return this.date;
157        }
158
159        public boolean hasDateElement() { 
160          return this.date != null && !this.date.isEmpty();
161        }
162
163        public boolean hasDate() { 
164          return this.date != null && !this.date.isEmpty();
165        }
166
167        /**
168         * @param value {@link #date} (The date the immunization recommendation was created.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
169         */
170        public ImmunizationRecommendationRecommendationComponent setDateElement(DateTimeType value) { 
171          this.date = value;
172          return this;
173        }
174
175        /**
176         * @return The date the immunization recommendation was created.
177         */
178        public Date getDate() { 
179          return this.date == null ? null : this.date.getValue();
180        }
181
182        /**
183         * @param value The date the immunization recommendation was created.
184         */
185        public ImmunizationRecommendationRecommendationComponent setDate(Date value) { 
186            if (this.date == null)
187              this.date = new DateTimeType();
188            this.date.setValue(value);
189          return this;
190        }
191
192        /**
193         * @return {@link #vaccineCode} (Vaccine that pertains to the recommendation.)
194         */
195        public CodeableConcept getVaccineCode() { 
196          if (this.vaccineCode == null)
197            if (Configuration.errorOnAutoCreate())
198              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.vaccineCode");
199            else if (Configuration.doAutoCreate())
200              this.vaccineCode = new CodeableConcept(); // cc
201          return this.vaccineCode;
202        }
203
204        public boolean hasVaccineCode() { 
205          return this.vaccineCode != null && !this.vaccineCode.isEmpty();
206        }
207
208        /**
209         * @param value {@link #vaccineCode} (Vaccine that pertains to the recommendation.)
210         */
211        public ImmunizationRecommendationRecommendationComponent setVaccineCode(CodeableConcept value) { 
212          this.vaccineCode = value;
213          return this;
214        }
215
216        /**
217         * @return {@link #targetDisease} (The targeted disease for the recommendation.)
218         */
219        public CodeableConcept getTargetDisease() { 
220          if (this.targetDisease == null)
221            if (Configuration.errorOnAutoCreate())
222              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.targetDisease");
223            else if (Configuration.doAutoCreate())
224              this.targetDisease = new CodeableConcept(); // cc
225          return this.targetDisease;
226        }
227
228        public boolean hasTargetDisease() { 
229          return this.targetDisease != null && !this.targetDisease.isEmpty();
230        }
231
232        /**
233         * @param value {@link #targetDisease} (The targeted disease for the recommendation.)
234         */
235        public ImmunizationRecommendationRecommendationComponent setTargetDisease(CodeableConcept value) { 
236          this.targetDisease = value;
237          return this;
238        }
239
240        /**
241         * @return {@link #doseNumber} (The next recommended dose number (e.g. dose 2 is the next recommended dose).). This is the underlying object with id, value and extensions. The accessor "getDoseNumber" gives direct access to the value
242         */
243        public PositiveIntType getDoseNumberElement() { 
244          if (this.doseNumber == null)
245            if (Configuration.errorOnAutoCreate())
246              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.doseNumber");
247            else if (Configuration.doAutoCreate())
248              this.doseNumber = new PositiveIntType(); // bb
249          return this.doseNumber;
250        }
251
252        public boolean hasDoseNumberElement() { 
253          return this.doseNumber != null && !this.doseNumber.isEmpty();
254        }
255
256        public boolean hasDoseNumber() { 
257          return this.doseNumber != null && !this.doseNumber.isEmpty();
258        }
259
260        /**
261         * @param value {@link #doseNumber} (The next recommended dose number (e.g. dose 2 is the next recommended dose).). This is the underlying object with id, value and extensions. The accessor "getDoseNumber" gives direct access to the value
262         */
263        public ImmunizationRecommendationRecommendationComponent setDoseNumberElement(PositiveIntType value) { 
264          this.doseNumber = value;
265          return this;
266        }
267
268        /**
269         * @return The next recommended dose number (e.g. dose 2 is the next recommended dose).
270         */
271        public int getDoseNumber() { 
272          return this.doseNumber == null || this.doseNumber.isEmpty() ? 0 : this.doseNumber.getValue();
273        }
274
275        /**
276         * @param value The next recommended dose number (e.g. dose 2 is the next recommended dose).
277         */
278        public ImmunizationRecommendationRecommendationComponent setDoseNumber(int value) { 
279            if (this.doseNumber == null)
280              this.doseNumber = new PositiveIntType();
281            this.doseNumber.setValue(value);
282          return this;
283        }
284
285        /**
286         * @return {@link #forecastStatus} (Vaccine administration status.)
287         */
288        public CodeableConcept getForecastStatus() { 
289          if (this.forecastStatus == null)
290            if (Configuration.errorOnAutoCreate())
291              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.forecastStatus");
292            else if (Configuration.doAutoCreate())
293              this.forecastStatus = new CodeableConcept(); // cc
294          return this.forecastStatus;
295        }
296
297        public boolean hasForecastStatus() { 
298          return this.forecastStatus != null && !this.forecastStatus.isEmpty();
299        }
300
301        /**
302         * @param value {@link #forecastStatus} (Vaccine administration status.)
303         */
304        public ImmunizationRecommendationRecommendationComponent setForecastStatus(CodeableConcept value) { 
305          this.forecastStatus = value;
306          return this;
307        }
308
309        /**
310         * @return {@link #dateCriterion} (Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.)
311         */
312        public List<ImmunizationRecommendationRecommendationDateCriterionComponent> getDateCriterion() { 
313          if (this.dateCriterion == null)
314            this.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
315          return this.dateCriterion;
316        }
317
318        /**
319         * @return Returns a reference to <code>this</code> for easy method chaining
320         */
321        public ImmunizationRecommendationRecommendationComponent setDateCriterion(List<ImmunizationRecommendationRecommendationDateCriterionComponent> theDateCriterion) { 
322          this.dateCriterion = theDateCriterion;
323          return this;
324        }
325
326        public boolean hasDateCriterion() { 
327          if (this.dateCriterion == null)
328            return false;
329          for (ImmunizationRecommendationRecommendationDateCriterionComponent item : this.dateCriterion)
330            if (!item.isEmpty())
331              return true;
332          return false;
333        }
334
335        public ImmunizationRecommendationRecommendationDateCriterionComponent addDateCriterion() { //3
336          ImmunizationRecommendationRecommendationDateCriterionComponent t = new ImmunizationRecommendationRecommendationDateCriterionComponent();
337          if (this.dateCriterion == null)
338            this.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
339          this.dateCriterion.add(t);
340          return t;
341        }
342
343        public ImmunizationRecommendationRecommendationComponent addDateCriterion(ImmunizationRecommendationRecommendationDateCriterionComponent t) { //3
344          if (t == null)
345            return this;
346          if (this.dateCriterion == null)
347            this.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
348          this.dateCriterion.add(t);
349          return this;
350        }
351
352        /**
353         * @return The first repetition of repeating field {@link #dateCriterion}, creating it if it does not already exist
354         */
355        public ImmunizationRecommendationRecommendationDateCriterionComponent getDateCriterionFirstRep() { 
356          if (getDateCriterion().isEmpty()) {
357            addDateCriterion();
358          }
359          return getDateCriterion().get(0);
360        }
361
362        /**
363         * @return {@link #protocol} (Contains information about the protocol under which the vaccine was administered.)
364         */
365        public ImmunizationRecommendationRecommendationProtocolComponent getProtocol() { 
366          if (this.protocol == null)
367            if (Configuration.errorOnAutoCreate())
368              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.protocol");
369            else if (Configuration.doAutoCreate())
370              this.protocol = new ImmunizationRecommendationRecommendationProtocolComponent(); // cc
371          return this.protocol;
372        }
373
374        public boolean hasProtocol() { 
375          return this.protocol != null && !this.protocol.isEmpty();
376        }
377
378        /**
379         * @param value {@link #protocol} (Contains information about the protocol under which the vaccine was administered.)
380         */
381        public ImmunizationRecommendationRecommendationComponent setProtocol(ImmunizationRecommendationRecommendationProtocolComponent value) { 
382          this.protocol = value;
383          return this;
384        }
385
386        /**
387         * @return {@link #supportingImmunization} (Immunization event history that supports the status and recommendation.)
388         */
389        public List<Reference> getSupportingImmunization() { 
390          if (this.supportingImmunization == null)
391            this.supportingImmunization = new ArrayList<Reference>();
392          return this.supportingImmunization;
393        }
394
395        /**
396         * @return Returns a reference to <code>this</code> for easy method chaining
397         */
398        public ImmunizationRecommendationRecommendationComponent setSupportingImmunization(List<Reference> theSupportingImmunization) { 
399          this.supportingImmunization = theSupportingImmunization;
400          return this;
401        }
402
403        public boolean hasSupportingImmunization() { 
404          if (this.supportingImmunization == null)
405            return false;
406          for (Reference item : this.supportingImmunization)
407            if (!item.isEmpty())
408              return true;
409          return false;
410        }
411
412        public Reference addSupportingImmunization() { //3
413          Reference t = new Reference();
414          if (this.supportingImmunization == null)
415            this.supportingImmunization = new ArrayList<Reference>();
416          this.supportingImmunization.add(t);
417          return t;
418        }
419
420        public ImmunizationRecommendationRecommendationComponent addSupportingImmunization(Reference t) { //3
421          if (t == null)
422            return this;
423          if (this.supportingImmunization == null)
424            this.supportingImmunization = new ArrayList<Reference>();
425          this.supportingImmunization.add(t);
426          return this;
427        }
428
429        /**
430         * @return The first repetition of repeating field {@link #supportingImmunization}, creating it if it does not already exist
431         */
432        public Reference getSupportingImmunizationFirstRep() { 
433          if (getSupportingImmunization().isEmpty()) {
434            addSupportingImmunization();
435          }
436          return getSupportingImmunization().get(0);
437        }
438
439        /**
440         * @deprecated Use Reference#setResource(IBaseResource) instead
441         */
442        @Deprecated
443        public List<Immunization> getSupportingImmunizationTarget() { 
444          if (this.supportingImmunizationTarget == null)
445            this.supportingImmunizationTarget = new ArrayList<Immunization>();
446          return this.supportingImmunizationTarget;
447        }
448
449        /**
450         * @deprecated Use Reference#setResource(IBaseResource) instead
451         */
452        @Deprecated
453        public Immunization addSupportingImmunizationTarget() { 
454          Immunization r = new Immunization();
455          if (this.supportingImmunizationTarget == null)
456            this.supportingImmunizationTarget = new ArrayList<Immunization>();
457          this.supportingImmunizationTarget.add(r);
458          return r;
459        }
460
461        /**
462         * @return {@link #supportingPatientInformation} (Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.)
463         */
464        public List<Reference> getSupportingPatientInformation() { 
465          if (this.supportingPatientInformation == null)
466            this.supportingPatientInformation = new ArrayList<Reference>();
467          return this.supportingPatientInformation;
468        }
469
470        /**
471         * @return Returns a reference to <code>this</code> for easy method chaining
472         */
473        public ImmunizationRecommendationRecommendationComponent setSupportingPatientInformation(List<Reference> theSupportingPatientInformation) { 
474          this.supportingPatientInformation = theSupportingPatientInformation;
475          return this;
476        }
477
478        public boolean hasSupportingPatientInformation() { 
479          if (this.supportingPatientInformation == null)
480            return false;
481          for (Reference item : this.supportingPatientInformation)
482            if (!item.isEmpty())
483              return true;
484          return false;
485        }
486
487        public Reference addSupportingPatientInformation() { //3
488          Reference t = new Reference();
489          if (this.supportingPatientInformation == null)
490            this.supportingPatientInformation = new ArrayList<Reference>();
491          this.supportingPatientInformation.add(t);
492          return t;
493        }
494
495        public ImmunizationRecommendationRecommendationComponent addSupportingPatientInformation(Reference t) { //3
496          if (t == null)
497            return this;
498          if (this.supportingPatientInformation == null)
499            this.supportingPatientInformation = new ArrayList<Reference>();
500          this.supportingPatientInformation.add(t);
501          return this;
502        }
503
504        /**
505         * @return The first repetition of repeating field {@link #supportingPatientInformation}, creating it if it does not already exist
506         */
507        public Reference getSupportingPatientInformationFirstRep() { 
508          if (getSupportingPatientInformation().isEmpty()) {
509            addSupportingPatientInformation();
510          }
511          return getSupportingPatientInformation().get(0);
512        }
513
514        /**
515         * @deprecated Use Reference#setResource(IBaseResource) instead
516         */
517        @Deprecated
518        public List<Resource> getSupportingPatientInformationTarget() { 
519          if (this.supportingPatientInformationTarget == null)
520            this.supportingPatientInformationTarget = new ArrayList<Resource>();
521          return this.supportingPatientInformationTarget;
522        }
523
524        protected void listChildren(List<Property> childrenList) {
525          super.listChildren(childrenList);
526          childrenList.add(new Property("date", "dateTime", "The date the immunization recommendation was created.", 0, java.lang.Integer.MAX_VALUE, date));
527          childrenList.add(new Property("vaccineCode", "CodeableConcept", "Vaccine that pertains to the recommendation.", 0, java.lang.Integer.MAX_VALUE, vaccineCode));
528          childrenList.add(new Property("targetDisease", "CodeableConcept", "The targeted disease for the recommendation.", 0, java.lang.Integer.MAX_VALUE, targetDisease));
529          childrenList.add(new Property("doseNumber", "positiveInt", "The next recommended dose number (e.g. dose 2 is the next recommended dose).", 0, java.lang.Integer.MAX_VALUE, doseNumber));
530          childrenList.add(new Property("forecastStatus", "CodeableConcept", "Vaccine administration status.", 0, java.lang.Integer.MAX_VALUE, forecastStatus));
531          childrenList.add(new Property("dateCriterion", "", "Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.", 0, java.lang.Integer.MAX_VALUE, dateCriterion));
532          childrenList.add(new Property("protocol", "", "Contains information about the protocol under which the vaccine was administered.", 0, java.lang.Integer.MAX_VALUE, protocol));
533          childrenList.add(new Property("supportingImmunization", "Reference(Immunization)", "Immunization event history that supports the status and recommendation.", 0, java.lang.Integer.MAX_VALUE, supportingImmunization));
534          childrenList.add(new Property("supportingPatientInformation", "Reference(Observation|AllergyIntolerance)", "Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.", 0, java.lang.Integer.MAX_VALUE, supportingPatientInformation));
535        }
536
537      @Override
538      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
539        switch (hash) {
540        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
541        case 664556354: /*vaccineCode*/ return this.vaccineCode == null ? new Base[0] : new Base[] {this.vaccineCode}; // CodeableConcept
542        case -319593813: /*targetDisease*/ return this.targetDisease == null ? new Base[0] : new Base[] {this.targetDisease}; // CodeableConcept
543        case -887709242: /*doseNumber*/ return this.doseNumber == null ? new Base[0] : new Base[] {this.doseNumber}; // PositiveIntType
544        case 1904598477: /*forecastStatus*/ return this.forecastStatus == null ? new Base[0] : new Base[] {this.forecastStatus}; // CodeableConcept
545        case 2087518867: /*dateCriterion*/ return this.dateCriterion == null ? new Base[0] : this.dateCriterion.toArray(new Base[this.dateCriterion.size()]); // ImmunizationRecommendationRecommendationDateCriterionComponent
546        case -989163880: /*protocol*/ return this.protocol == null ? new Base[0] : new Base[] {this.protocol}; // ImmunizationRecommendationRecommendationProtocolComponent
547        case 1171592021: /*supportingImmunization*/ return this.supportingImmunization == null ? new Base[0] : this.supportingImmunization.toArray(new Base[this.supportingImmunization.size()]); // Reference
548        case -1234160646: /*supportingPatientInformation*/ return this.supportingPatientInformation == null ? new Base[0] : this.supportingPatientInformation.toArray(new Base[this.supportingPatientInformation.size()]); // Reference
549        default: return super.getProperty(hash, name, checkValid);
550        }
551
552      }
553
554      @Override
555      public Base setProperty(int hash, String name, Base value) throws FHIRException {
556        switch (hash) {
557        case 3076014: // date
558          this.date = castToDateTime(value); // DateTimeType
559          return value;
560        case 664556354: // vaccineCode
561          this.vaccineCode = castToCodeableConcept(value); // CodeableConcept
562          return value;
563        case -319593813: // targetDisease
564          this.targetDisease = castToCodeableConcept(value); // CodeableConcept
565          return value;
566        case -887709242: // doseNumber
567          this.doseNumber = castToPositiveInt(value); // PositiveIntType
568          return value;
569        case 1904598477: // forecastStatus
570          this.forecastStatus = castToCodeableConcept(value); // CodeableConcept
571          return value;
572        case 2087518867: // dateCriterion
573          this.getDateCriterion().add((ImmunizationRecommendationRecommendationDateCriterionComponent) value); // ImmunizationRecommendationRecommendationDateCriterionComponent
574          return value;
575        case -989163880: // protocol
576          this.protocol = (ImmunizationRecommendationRecommendationProtocolComponent) value; // ImmunizationRecommendationRecommendationProtocolComponent
577          return value;
578        case 1171592021: // supportingImmunization
579          this.getSupportingImmunization().add(castToReference(value)); // Reference
580          return value;
581        case -1234160646: // supportingPatientInformation
582          this.getSupportingPatientInformation().add(castToReference(value)); // Reference
583          return value;
584        default: return super.setProperty(hash, name, value);
585        }
586
587      }
588
589      @Override
590      public Base setProperty(String name, Base value) throws FHIRException {
591        if (name.equals("date")) {
592          this.date = castToDateTime(value); // DateTimeType
593        } else if (name.equals("vaccineCode")) {
594          this.vaccineCode = castToCodeableConcept(value); // CodeableConcept
595        } else if (name.equals("targetDisease")) {
596          this.targetDisease = castToCodeableConcept(value); // CodeableConcept
597        } else if (name.equals("doseNumber")) {
598          this.doseNumber = castToPositiveInt(value); // PositiveIntType
599        } else if (name.equals("forecastStatus")) {
600          this.forecastStatus = castToCodeableConcept(value); // CodeableConcept
601        } else if (name.equals("dateCriterion")) {
602          this.getDateCriterion().add((ImmunizationRecommendationRecommendationDateCriterionComponent) value);
603        } else if (name.equals("protocol")) {
604          this.protocol = (ImmunizationRecommendationRecommendationProtocolComponent) value; // ImmunizationRecommendationRecommendationProtocolComponent
605        } else if (name.equals("supportingImmunization")) {
606          this.getSupportingImmunization().add(castToReference(value));
607        } else if (name.equals("supportingPatientInformation")) {
608          this.getSupportingPatientInformation().add(castToReference(value));
609        } else
610          return super.setProperty(name, value);
611        return value;
612      }
613
614      @Override
615      public Base makeProperty(int hash, String name) throws FHIRException {
616        switch (hash) {
617        case 3076014:  return getDateElement();
618        case 664556354:  return getVaccineCode(); 
619        case -319593813:  return getTargetDisease(); 
620        case -887709242:  return getDoseNumberElement();
621        case 1904598477:  return getForecastStatus(); 
622        case 2087518867:  return addDateCriterion(); 
623        case -989163880:  return getProtocol(); 
624        case 1171592021:  return addSupportingImmunization(); 
625        case -1234160646:  return addSupportingPatientInformation(); 
626        default: return super.makeProperty(hash, name);
627        }
628
629      }
630
631      @Override
632      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
633        switch (hash) {
634        case 3076014: /*date*/ return new String[] {"dateTime"};
635        case 664556354: /*vaccineCode*/ return new String[] {"CodeableConcept"};
636        case -319593813: /*targetDisease*/ return new String[] {"CodeableConcept"};
637        case -887709242: /*doseNumber*/ return new String[] {"positiveInt"};
638        case 1904598477: /*forecastStatus*/ return new String[] {"CodeableConcept"};
639        case 2087518867: /*dateCriterion*/ return new String[] {};
640        case -989163880: /*protocol*/ return new String[] {};
641        case 1171592021: /*supportingImmunization*/ return new String[] {"Reference"};
642        case -1234160646: /*supportingPatientInformation*/ return new String[] {"Reference"};
643        default: return super.getTypesForProperty(hash, name);
644        }
645
646      }
647
648      @Override
649      public Base addChild(String name) throws FHIRException {
650        if (name.equals("date")) {
651          throw new FHIRException("Cannot call addChild on a primitive type ImmunizationRecommendation.date");
652        }
653        else if (name.equals("vaccineCode")) {
654          this.vaccineCode = new CodeableConcept();
655          return this.vaccineCode;
656        }
657        else if (name.equals("targetDisease")) {
658          this.targetDisease = new CodeableConcept();
659          return this.targetDisease;
660        }
661        else if (name.equals("doseNumber")) {
662          throw new FHIRException("Cannot call addChild on a primitive type ImmunizationRecommendation.doseNumber");
663        }
664        else if (name.equals("forecastStatus")) {
665          this.forecastStatus = new CodeableConcept();
666          return this.forecastStatus;
667        }
668        else if (name.equals("dateCriterion")) {
669          return addDateCriterion();
670        }
671        else if (name.equals("protocol")) {
672          this.protocol = new ImmunizationRecommendationRecommendationProtocolComponent();
673          return this.protocol;
674        }
675        else if (name.equals("supportingImmunization")) {
676          return addSupportingImmunization();
677        }
678        else if (name.equals("supportingPatientInformation")) {
679          return addSupportingPatientInformation();
680        }
681        else
682          return super.addChild(name);
683      }
684
685      public ImmunizationRecommendationRecommendationComponent copy() {
686        ImmunizationRecommendationRecommendationComponent dst = new ImmunizationRecommendationRecommendationComponent();
687        copyValues(dst);
688        dst.date = date == null ? null : date.copy();
689        dst.vaccineCode = vaccineCode == null ? null : vaccineCode.copy();
690        dst.targetDisease = targetDisease == null ? null : targetDisease.copy();
691        dst.doseNumber = doseNumber == null ? null : doseNumber.copy();
692        dst.forecastStatus = forecastStatus == null ? null : forecastStatus.copy();
693        if (dateCriterion != null) {
694          dst.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
695          for (ImmunizationRecommendationRecommendationDateCriterionComponent i : dateCriterion)
696            dst.dateCriterion.add(i.copy());
697        };
698        dst.protocol = protocol == null ? null : protocol.copy();
699        if (supportingImmunization != null) {
700          dst.supportingImmunization = new ArrayList<Reference>();
701          for (Reference i : supportingImmunization)
702            dst.supportingImmunization.add(i.copy());
703        };
704        if (supportingPatientInformation != null) {
705          dst.supportingPatientInformation = new ArrayList<Reference>();
706          for (Reference i : supportingPatientInformation)
707            dst.supportingPatientInformation.add(i.copy());
708        };
709        return dst;
710      }
711
712      @Override
713      public boolean equalsDeep(Base other) {
714        if (!super.equalsDeep(other))
715          return false;
716        if (!(other instanceof ImmunizationRecommendationRecommendationComponent))
717          return false;
718        ImmunizationRecommendationRecommendationComponent o = (ImmunizationRecommendationRecommendationComponent) other;
719        return compareDeep(date, o.date, true) && compareDeep(vaccineCode, o.vaccineCode, true) && compareDeep(targetDisease, o.targetDisease, true)
720           && compareDeep(doseNumber, o.doseNumber, true) && compareDeep(forecastStatus, o.forecastStatus, true)
721           && compareDeep(dateCriterion, o.dateCriterion, true) && compareDeep(protocol, o.protocol, true)
722           && compareDeep(supportingImmunization, o.supportingImmunization, true) && compareDeep(supportingPatientInformation, o.supportingPatientInformation, true)
723          ;
724      }
725
726      @Override
727      public boolean equalsShallow(Base other) {
728        if (!super.equalsShallow(other))
729          return false;
730        if (!(other instanceof ImmunizationRecommendationRecommendationComponent))
731          return false;
732        ImmunizationRecommendationRecommendationComponent o = (ImmunizationRecommendationRecommendationComponent) other;
733        return compareValues(date, o.date, true) && compareValues(doseNumber, o.doseNumber, true);
734      }
735
736      public boolean isEmpty() {
737        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(date, vaccineCode, targetDisease
738          , doseNumber, forecastStatus, dateCriterion, protocol, supportingImmunization, supportingPatientInformation
739          );
740      }
741
742  public String fhirType() {
743    return "ImmunizationRecommendation.recommendation";
744
745  }
746
747  }
748
749    @Block()
750    public static class ImmunizationRecommendationRecommendationDateCriterionComponent extends BackboneElement implements IBaseBackboneElement {
751        /**
752         * Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.
753         */
754        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
755        @Description(shortDefinition="Type of date", formalDefinition="Date classification of recommendation.  For example, earliest date to give, latest date to give, etc." )
756        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-recommendation-date-criterion")
757        protected CodeableConcept code;
758
759        /**
760         * The date whose meaning is specified by dateCriterion.code.
761         */
762        @Child(name = "value", type = {DateTimeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
763        @Description(shortDefinition="Recommended date", formalDefinition="The date whose meaning is specified by dateCriterion.code." )
764        protected DateTimeType value;
765
766        private static final long serialVersionUID = 1036994566L;
767
768    /**
769     * Constructor
770     */
771      public ImmunizationRecommendationRecommendationDateCriterionComponent() {
772        super();
773      }
774
775    /**
776     * Constructor
777     */
778      public ImmunizationRecommendationRecommendationDateCriterionComponent(CodeableConcept code, DateTimeType value) {
779        super();
780        this.code = code;
781        this.value = value;
782      }
783
784        /**
785         * @return {@link #code} (Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.)
786         */
787        public CodeableConcept getCode() { 
788          if (this.code == null)
789            if (Configuration.errorOnAutoCreate())
790              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationDateCriterionComponent.code");
791            else if (Configuration.doAutoCreate())
792              this.code = new CodeableConcept(); // cc
793          return this.code;
794        }
795
796        public boolean hasCode() { 
797          return this.code != null && !this.code.isEmpty();
798        }
799
800        /**
801         * @param value {@link #code} (Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.)
802         */
803        public ImmunizationRecommendationRecommendationDateCriterionComponent setCode(CodeableConcept value) { 
804          this.code = value;
805          return this;
806        }
807
808        /**
809         * @return {@link #value} (The date whose meaning is specified by dateCriterion.code.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
810         */
811        public DateTimeType getValueElement() { 
812          if (this.value == null)
813            if (Configuration.errorOnAutoCreate())
814              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationDateCriterionComponent.value");
815            else if (Configuration.doAutoCreate())
816              this.value = new DateTimeType(); // bb
817          return this.value;
818        }
819
820        public boolean hasValueElement() { 
821          return this.value != null && !this.value.isEmpty();
822        }
823
824        public boolean hasValue() { 
825          return this.value != null && !this.value.isEmpty();
826        }
827
828        /**
829         * @param value {@link #value} (The date whose meaning is specified by dateCriterion.code.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
830         */
831        public ImmunizationRecommendationRecommendationDateCriterionComponent setValueElement(DateTimeType value) { 
832          this.value = value;
833          return this;
834        }
835
836        /**
837         * @return The date whose meaning is specified by dateCriterion.code.
838         */
839        public Date getValue() { 
840          return this.value == null ? null : this.value.getValue();
841        }
842
843        /**
844         * @param value The date whose meaning is specified by dateCriterion.code.
845         */
846        public ImmunizationRecommendationRecommendationDateCriterionComponent setValue(Date value) { 
847            if (this.value == null)
848              this.value = new DateTimeType();
849            this.value.setValue(value);
850          return this;
851        }
852
853        protected void listChildren(List<Property> childrenList) {
854          super.listChildren(childrenList);
855          childrenList.add(new Property("code", "CodeableConcept", "Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.", 0, java.lang.Integer.MAX_VALUE, code));
856          childrenList.add(new Property("value", "dateTime", "The date whose meaning is specified by dateCriterion.code.", 0, java.lang.Integer.MAX_VALUE, value));
857        }
858
859      @Override
860      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
861        switch (hash) {
862        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
863        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DateTimeType
864        default: return super.getProperty(hash, name, checkValid);
865        }
866
867      }
868
869      @Override
870      public Base setProperty(int hash, String name, Base value) throws FHIRException {
871        switch (hash) {
872        case 3059181: // code
873          this.code = castToCodeableConcept(value); // CodeableConcept
874          return value;
875        case 111972721: // value
876          this.value = castToDateTime(value); // DateTimeType
877          return value;
878        default: return super.setProperty(hash, name, value);
879        }
880
881      }
882
883      @Override
884      public Base setProperty(String name, Base value) throws FHIRException {
885        if (name.equals("code")) {
886          this.code = castToCodeableConcept(value); // CodeableConcept
887        } else if (name.equals("value")) {
888          this.value = castToDateTime(value); // DateTimeType
889        } else
890          return super.setProperty(name, value);
891        return value;
892      }
893
894      @Override
895      public Base makeProperty(int hash, String name) throws FHIRException {
896        switch (hash) {
897        case 3059181:  return getCode(); 
898        case 111972721:  return getValueElement();
899        default: return super.makeProperty(hash, name);
900        }
901
902      }
903
904      @Override
905      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
906        switch (hash) {
907        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
908        case 111972721: /*value*/ return new String[] {"dateTime"};
909        default: return super.getTypesForProperty(hash, name);
910        }
911
912      }
913
914      @Override
915      public Base addChild(String name) throws FHIRException {
916        if (name.equals("code")) {
917          this.code = new CodeableConcept();
918          return this.code;
919        }
920        else if (name.equals("value")) {
921          throw new FHIRException("Cannot call addChild on a primitive type ImmunizationRecommendation.value");
922        }
923        else
924          return super.addChild(name);
925      }
926
927      public ImmunizationRecommendationRecommendationDateCriterionComponent copy() {
928        ImmunizationRecommendationRecommendationDateCriterionComponent dst = new ImmunizationRecommendationRecommendationDateCriterionComponent();
929        copyValues(dst);
930        dst.code = code == null ? null : code.copy();
931        dst.value = value == null ? null : value.copy();
932        return dst;
933      }
934
935      @Override
936      public boolean equalsDeep(Base other) {
937        if (!super.equalsDeep(other))
938          return false;
939        if (!(other instanceof ImmunizationRecommendationRecommendationDateCriterionComponent))
940          return false;
941        ImmunizationRecommendationRecommendationDateCriterionComponent o = (ImmunizationRecommendationRecommendationDateCriterionComponent) other;
942        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
943      }
944
945      @Override
946      public boolean equalsShallow(Base other) {
947        if (!super.equalsShallow(other))
948          return false;
949        if (!(other instanceof ImmunizationRecommendationRecommendationDateCriterionComponent))
950          return false;
951        ImmunizationRecommendationRecommendationDateCriterionComponent o = (ImmunizationRecommendationRecommendationDateCriterionComponent) other;
952        return compareValues(value, o.value, true);
953      }
954
955      public boolean isEmpty() {
956        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
957      }
958
959  public String fhirType() {
960    return "ImmunizationRecommendation.recommendation.dateCriterion";
961
962  }
963
964  }
965
966    @Block()
967    public static class ImmunizationRecommendationRecommendationProtocolComponent extends BackboneElement implements IBaseBackboneElement {
968        /**
969         * Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
970         */
971        @Child(name = "doseSequence", type = {PositiveIntType.class}, order=1, min=0, max=1, modifier=false, summary=false)
972        @Description(shortDefinition="Dose number within sequence", formalDefinition="Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol." )
973        protected PositiveIntType doseSequence;
974
975        /**
976         * Contains the description about the protocol under which the vaccine was administered.
977         */
978        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
979        @Description(shortDefinition="Protocol details", formalDefinition="Contains the description about the protocol under which the vaccine was administered." )
980        protected StringType description;
981
982        /**
983         * Indicates the authority who published the protocol.  For example, ACIP.
984         */
985        @Child(name = "authority", type = {Organization.class}, order=3, min=0, max=1, modifier=false, summary=false)
986        @Description(shortDefinition="Who is responsible for protocol", formalDefinition="Indicates the authority who published the protocol.  For example, ACIP." )
987        protected Reference authority;
988
989        /**
990         * The actual object that is the target of the reference (Indicates the authority who published the protocol.  For example, ACIP.)
991         */
992        protected Organization authorityTarget;
993
994        /**
995         * One possible path to achieve presumed immunity against a disease - within the context of an authority.
996         */
997        @Child(name = "series", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
998        @Description(shortDefinition="Name of vaccination series", formalDefinition="One possible path to achieve presumed immunity against a disease - within the context of an authority." )
999        protected StringType series;
1000
1001        private static final long serialVersionUID = 215094970L;
1002
1003    /**
1004     * Constructor
1005     */
1006      public ImmunizationRecommendationRecommendationProtocolComponent() {
1007        super();
1008      }
1009
1010        /**
1011         * @return {@link #doseSequence} (Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.). This is the underlying object with id, value and extensions. The accessor "getDoseSequence" gives direct access to the value
1012         */
1013        public PositiveIntType getDoseSequenceElement() { 
1014          if (this.doseSequence == null)
1015            if (Configuration.errorOnAutoCreate())
1016              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationProtocolComponent.doseSequence");
1017            else if (Configuration.doAutoCreate())
1018              this.doseSequence = new PositiveIntType(); // bb
1019          return this.doseSequence;
1020        }
1021
1022        public boolean hasDoseSequenceElement() { 
1023          return this.doseSequence != null && !this.doseSequence.isEmpty();
1024        }
1025
1026        public boolean hasDoseSequence() { 
1027          return this.doseSequence != null && !this.doseSequence.isEmpty();
1028        }
1029
1030        /**
1031         * @param value {@link #doseSequence} (Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.). This is the underlying object with id, value and extensions. The accessor "getDoseSequence" gives direct access to the value
1032         */
1033        public ImmunizationRecommendationRecommendationProtocolComponent setDoseSequenceElement(PositiveIntType value) { 
1034          this.doseSequence = value;
1035          return this;
1036        }
1037
1038        /**
1039         * @return Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
1040         */
1041        public int getDoseSequence() { 
1042          return this.doseSequence == null || this.doseSequence.isEmpty() ? 0 : this.doseSequence.getValue();
1043        }
1044
1045        /**
1046         * @param value Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
1047         */
1048        public ImmunizationRecommendationRecommendationProtocolComponent setDoseSequence(int value) { 
1049            if (this.doseSequence == null)
1050              this.doseSequence = new PositiveIntType();
1051            this.doseSequence.setValue(value);
1052          return this;
1053        }
1054
1055        /**
1056         * @return {@link #description} (Contains the description about the protocol under which the vaccine was administered.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1057         */
1058        public StringType getDescriptionElement() { 
1059          if (this.description == null)
1060            if (Configuration.errorOnAutoCreate())
1061              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationProtocolComponent.description");
1062            else if (Configuration.doAutoCreate())
1063              this.description = new StringType(); // bb
1064          return this.description;
1065        }
1066
1067        public boolean hasDescriptionElement() { 
1068          return this.description != null && !this.description.isEmpty();
1069        }
1070
1071        public boolean hasDescription() { 
1072          return this.description != null && !this.description.isEmpty();
1073        }
1074
1075        /**
1076         * @param value {@link #description} (Contains the description about the protocol under which the vaccine was administered.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1077         */
1078        public ImmunizationRecommendationRecommendationProtocolComponent setDescriptionElement(StringType value) { 
1079          this.description = value;
1080          return this;
1081        }
1082
1083        /**
1084         * @return Contains the description about the protocol under which the vaccine was administered.
1085         */
1086        public String getDescription() { 
1087          return this.description == null ? null : this.description.getValue();
1088        }
1089
1090        /**
1091         * @param value Contains the description about the protocol under which the vaccine was administered.
1092         */
1093        public ImmunizationRecommendationRecommendationProtocolComponent setDescription(String value) { 
1094          if (Utilities.noString(value))
1095            this.description = null;
1096          else {
1097            if (this.description == null)
1098              this.description = new StringType();
1099            this.description.setValue(value);
1100          }
1101          return this;
1102        }
1103
1104        /**
1105         * @return {@link #authority} (Indicates the authority who published the protocol.  For example, ACIP.)
1106         */
1107        public Reference getAuthority() { 
1108          if (this.authority == null)
1109            if (Configuration.errorOnAutoCreate())
1110              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationProtocolComponent.authority");
1111            else if (Configuration.doAutoCreate())
1112              this.authority = new Reference(); // cc
1113          return this.authority;
1114        }
1115
1116        public boolean hasAuthority() { 
1117          return this.authority != null && !this.authority.isEmpty();
1118        }
1119
1120        /**
1121         * @param value {@link #authority} (Indicates the authority who published the protocol.  For example, ACIP.)
1122         */
1123        public ImmunizationRecommendationRecommendationProtocolComponent setAuthority(Reference value) { 
1124          this.authority = value;
1125          return this;
1126        }
1127
1128        /**
1129         * @return {@link #authority} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Indicates the authority who published the protocol.  For example, ACIP.)
1130         */
1131        public Organization getAuthorityTarget() { 
1132          if (this.authorityTarget == null)
1133            if (Configuration.errorOnAutoCreate())
1134              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationProtocolComponent.authority");
1135            else if (Configuration.doAutoCreate())
1136              this.authorityTarget = new Organization(); // aa
1137          return this.authorityTarget;
1138        }
1139
1140        /**
1141         * @param value {@link #authority} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Indicates the authority who published the protocol.  For example, ACIP.)
1142         */
1143        public ImmunizationRecommendationRecommendationProtocolComponent setAuthorityTarget(Organization value) { 
1144          this.authorityTarget = value;
1145          return this;
1146        }
1147
1148        /**
1149         * @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
1150         */
1151        public StringType getSeriesElement() { 
1152          if (this.series == null)
1153            if (Configuration.errorOnAutoCreate())
1154              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationProtocolComponent.series");
1155            else if (Configuration.doAutoCreate())
1156              this.series = new StringType(); // bb
1157          return this.series;
1158        }
1159
1160        public boolean hasSeriesElement() { 
1161          return this.series != null && !this.series.isEmpty();
1162        }
1163
1164        public boolean hasSeries() { 
1165          return this.series != null && !this.series.isEmpty();
1166        }
1167
1168        /**
1169         * @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
1170         */
1171        public ImmunizationRecommendationRecommendationProtocolComponent setSeriesElement(StringType value) { 
1172          this.series = value;
1173          return this;
1174        }
1175
1176        /**
1177         * @return One possible path to achieve presumed immunity against a disease - within the context of an authority.
1178         */
1179        public String getSeries() { 
1180          return this.series == null ? null : this.series.getValue();
1181        }
1182
1183        /**
1184         * @param value One possible path to achieve presumed immunity against a disease - within the context of an authority.
1185         */
1186        public ImmunizationRecommendationRecommendationProtocolComponent setSeries(String value) { 
1187          if (Utilities.noString(value))
1188            this.series = null;
1189          else {
1190            if (this.series == null)
1191              this.series = new StringType();
1192            this.series.setValue(value);
1193          }
1194          return this;
1195        }
1196
1197        protected void listChildren(List<Property> childrenList) {
1198          super.listChildren(childrenList);
1199          childrenList.add(new Property("doseSequence", "positiveInt", "Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.", 0, java.lang.Integer.MAX_VALUE, doseSequence));
1200          childrenList.add(new Property("description", "string", "Contains the description about the protocol under which the vaccine was administered.", 0, java.lang.Integer.MAX_VALUE, description));
1201          childrenList.add(new Property("authority", "Reference(Organization)", "Indicates the authority who published the protocol.  For example, ACIP.", 0, java.lang.Integer.MAX_VALUE, authority));
1202          childrenList.add(new Property("series", "string", "One possible path to achieve presumed immunity against a disease - within the context of an authority.", 0, java.lang.Integer.MAX_VALUE, series));
1203        }
1204
1205      @Override
1206      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1207        switch (hash) {
1208        case 550933246: /*doseSequence*/ return this.doseSequence == null ? new Base[0] : new Base[] {this.doseSequence}; // PositiveIntType
1209        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1210        case 1475610435: /*authority*/ return this.authority == null ? new Base[0] : new Base[] {this.authority}; // Reference
1211        case -905838985: /*series*/ return this.series == null ? new Base[0] : new Base[] {this.series}; // StringType
1212        default: return super.getProperty(hash, name, checkValid);
1213        }
1214
1215      }
1216
1217      @Override
1218      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1219        switch (hash) {
1220        case 550933246: // doseSequence
1221          this.doseSequence = castToPositiveInt(value); // PositiveIntType
1222          return value;
1223        case -1724546052: // description
1224          this.description = castToString(value); // StringType
1225          return value;
1226        case 1475610435: // authority
1227          this.authority = castToReference(value); // Reference
1228          return value;
1229        case -905838985: // series
1230          this.series = castToString(value); // StringType
1231          return value;
1232        default: return super.setProperty(hash, name, value);
1233        }
1234
1235      }
1236
1237      @Override
1238      public Base setProperty(String name, Base value) throws FHIRException {
1239        if (name.equals("doseSequence")) {
1240          this.doseSequence = castToPositiveInt(value); // PositiveIntType
1241        } else if (name.equals("description")) {
1242          this.description = castToString(value); // StringType
1243        } else if (name.equals("authority")) {
1244          this.authority = castToReference(value); // Reference
1245        } else if (name.equals("series")) {
1246          this.series = castToString(value); // StringType
1247        } else
1248          return super.setProperty(name, value);
1249        return value;
1250      }
1251
1252      @Override
1253      public Base makeProperty(int hash, String name) throws FHIRException {
1254        switch (hash) {
1255        case 550933246:  return getDoseSequenceElement();
1256        case -1724546052:  return getDescriptionElement();
1257        case 1475610435:  return getAuthority(); 
1258        case -905838985:  return getSeriesElement();
1259        default: return super.makeProperty(hash, name);
1260        }
1261
1262      }
1263
1264      @Override
1265      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1266        switch (hash) {
1267        case 550933246: /*doseSequence*/ return new String[] {"positiveInt"};
1268        case -1724546052: /*description*/ return new String[] {"string"};
1269        case 1475610435: /*authority*/ return new String[] {"Reference"};
1270        case -905838985: /*series*/ return new String[] {"string"};
1271        default: return super.getTypesForProperty(hash, name);
1272        }
1273
1274      }
1275
1276      @Override
1277      public Base addChild(String name) throws FHIRException {
1278        if (name.equals("doseSequence")) {
1279          throw new FHIRException("Cannot call addChild on a primitive type ImmunizationRecommendation.doseSequence");
1280        }
1281        else if (name.equals("description")) {
1282          throw new FHIRException("Cannot call addChild on a primitive type ImmunizationRecommendation.description");
1283        }
1284        else if (name.equals("authority")) {
1285          this.authority = new Reference();
1286          return this.authority;
1287        }
1288        else if (name.equals("series")) {
1289          throw new FHIRException("Cannot call addChild on a primitive type ImmunizationRecommendation.series");
1290        }
1291        else
1292          return super.addChild(name);
1293      }
1294
1295      public ImmunizationRecommendationRecommendationProtocolComponent copy() {
1296        ImmunizationRecommendationRecommendationProtocolComponent dst = new ImmunizationRecommendationRecommendationProtocolComponent();
1297        copyValues(dst);
1298        dst.doseSequence = doseSequence == null ? null : doseSequence.copy();
1299        dst.description = description == null ? null : description.copy();
1300        dst.authority = authority == null ? null : authority.copy();
1301        dst.series = series == null ? null : series.copy();
1302        return dst;
1303      }
1304
1305      @Override
1306      public boolean equalsDeep(Base other) {
1307        if (!super.equalsDeep(other))
1308          return false;
1309        if (!(other instanceof ImmunizationRecommendationRecommendationProtocolComponent))
1310          return false;
1311        ImmunizationRecommendationRecommendationProtocolComponent o = (ImmunizationRecommendationRecommendationProtocolComponent) other;
1312        return compareDeep(doseSequence, o.doseSequence, true) && compareDeep(description, o.description, true)
1313           && compareDeep(authority, o.authority, true) && compareDeep(series, o.series, true);
1314      }
1315
1316      @Override
1317      public boolean equalsShallow(Base other) {
1318        if (!super.equalsShallow(other))
1319          return false;
1320        if (!(other instanceof ImmunizationRecommendationRecommendationProtocolComponent))
1321          return false;
1322        ImmunizationRecommendationRecommendationProtocolComponent o = (ImmunizationRecommendationRecommendationProtocolComponent) other;
1323        return compareValues(doseSequence, o.doseSequence, true) && compareValues(description, o.description, true)
1324           && compareValues(series, o.series, true);
1325      }
1326
1327      public boolean isEmpty() {
1328        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(doseSequence, description
1329          , authority, series);
1330      }
1331
1332  public String fhirType() {
1333    return "ImmunizationRecommendation.recommendation.protocol";
1334
1335  }
1336
1337  }
1338
1339    /**
1340     * A unique identifier assigned to this particular recommendation record.
1341     */
1342    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1343    @Description(shortDefinition="Business identifier", formalDefinition="A unique identifier assigned to this particular recommendation record." )
1344    protected List<Identifier> identifier;
1345
1346    /**
1347     * The patient the recommendations are for.
1348     */
1349    @Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1, modifier=false, summary=true)
1350    @Description(shortDefinition="Who this profile is for", formalDefinition="The patient the recommendations are for." )
1351    protected Reference patient;
1352
1353    /**
1354     * The actual object that is the target of the reference (The patient the recommendations are for.)
1355     */
1356    protected Patient patientTarget;
1357
1358    /**
1359     * Vaccine administration recommendations.
1360     */
1361    @Child(name = "recommendation", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1362    @Description(shortDefinition="Vaccine administration recommendations", formalDefinition="Vaccine administration recommendations." )
1363    protected List<ImmunizationRecommendationRecommendationComponent> recommendation;
1364
1365    private static final long serialVersionUID = 641058495L;
1366
1367  /**
1368   * Constructor
1369   */
1370    public ImmunizationRecommendation() {
1371      super();
1372    }
1373
1374  /**
1375   * Constructor
1376   */
1377    public ImmunizationRecommendation(Reference patient) {
1378      super();
1379      this.patient = patient;
1380    }
1381
1382    /**
1383     * @return {@link #identifier} (A unique identifier assigned to this particular recommendation record.)
1384     */
1385    public List<Identifier> getIdentifier() { 
1386      if (this.identifier == null)
1387        this.identifier = new ArrayList<Identifier>();
1388      return this.identifier;
1389    }
1390
1391    /**
1392     * @return Returns a reference to <code>this</code> for easy method chaining
1393     */
1394    public ImmunizationRecommendation setIdentifier(List<Identifier> theIdentifier) { 
1395      this.identifier = theIdentifier;
1396      return this;
1397    }
1398
1399    public boolean hasIdentifier() { 
1400      if (this.identifier == null)
1401        return false;
1402      for (Identifier item : this.identifier)
1403        if (!item.isEmpty())
1404          return true;
1405      return false;
1406    }
1407
1408    public Identifier addIdentifier() { //3
1409      Identifier t = new Identifier();
1410      if (this.identifier == null)
1411        this.identifier = new ArrayList<Identifier>();
1412      this.identifier.add(t);
1413      return t;
1414    }
1415
1416    public ImmunizationRecommendation addIdentifier(Identifier t) { //3
1417      if (t == null)
1418        return this;
1419      if (this.identifier == null)
1420        this.identifier = new ArrayList<Identifier>();
1421      this.identifier.add(t);
1422      return this;
1423    }
1424
1425    /**
1426     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
1427     */
1428    public Identifier getIdentifierFirstRep() { 
1429      if (getIdentifier().isEmpty()) {
1430        addIdentifier();
1431      }
1432      return getIdentifier().get(0);
1433    }
1434
1435    /**
1436     * @return {@link #patient} (The patient the recommendations are for.)
1437     */
1438    public Reference getPatient() { 
1439      if (this.patient == null)
1440        if (Configuration.errorOnAutoCreate())
1441          throw new Error("Attempt to auto-create ImmunizationRecommendation.patient");
1442        else if (Configuration.doAutoCreate())
1443          this.patient = new Reference(); // cc
1444      return this.patient;
1445    }
1446
1447    public boolean hasPatient() { 
1448      return this.patient != null && !this.patient.isEmpty();
1449    }
1450
1451    /**
1452     * @param value {@link #patient} (The patient the recommendations are for.)
1453     */
1454    public ImmunizationRecommendation setPatient(Reference value) { 
1455      this.patient = value;
1456      return this;
1457    }
1458
1459    /**
1460     * @return {@link #patient} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The patient the recommendations are for.)
1461     */
1462    public Patient getPatientTarget() { 
1463      if (this.patientTarget == null)
1464        if (Configuration.errorOnAutoCreate())
1465          throw new Error("Attempt to auto-create ImmunizationRecommendation.patient");
1466        else if (Configuration.doAutoCreate())
1467          this.patientTarget = new Patient(); // aa
1468      return this.patientTarget;
1469    }
1470
1471    /**
1472     * @param value {@link #patient} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The patient the recommendations are for.)
1473     */
1474    public ImmunizationRecommendation setPatientTarget(Patient value) { 
1475      this.patientTarget = value;
1476      return this;
1477    }
1478
1479    /**
1480     * @return {@link #recommendation} (Vaccine administration recommendations.)
1481     */
1482    public List<ImmunizationRecommendationRecommendationComponent> getRecommendation() { 
1483      if (this.recommendation == null)
1484        this.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1485      return this.recommendation;
1486    }
1487
1488    /**
1489     * @return Returns a reference to <code>this</code> for easy method chaining
1490     */
1491    public ImmunizationRecommendation setRecommendation(List<ImmunizationRecommendationRecommendationComponent> theRecommendation) { 
1492      this.recommendation = theRecommendation;
1493      return this;
1494    }
1495
1496    public boolean hasRecommendation() { 
1497      if (this.recommendation == null)
1498        return false;
1499      for (ImmunizationRecommendationRecommendationComponent item : this.recommendation)
1500        if (!item.isEmpty())
1501          return true;
1502      return false;
1503    }
1504
1505    public ImmunizationRecommendationRecommendationComponent addRecommendation() { //3
1506      ImmunizationRecommendationRecommendationComponent t = new ImmunizationRecommendationRecommendationComponent();
1507      if (this.recommendation == null)
1508        this.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1509      this.recommendation.add(t);
1510      return t;
1511    }
1512
1513    public ImmunizationRecommendation addRecommendation(ImmunizationRecommendationRecommendationComponent t) { //3
1514      if (t == null)
1515        return this;
1516      if (this.recommendation == null)
1517        this.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1518      this.recommendation.add(t);
1519      return this;
1520    }
1521
1522    /**
1523     * @return The first repetition of repeating field {@link #recommendation}, creating it if it does not already exist
1524     */
1525    public ImmunizationRecommendationRecommendationComponent getRecommendationFirstRep() { 
1526      if (getRecommendation().isEmpty()) {
1527        addRecommendation();
1528      }
1529      return getRecommendation().get(0);
1530    }
1531
1532      protected void listChildren(List<Property> childrenList) {
1533        super.listChildren(childrenList);
1534        childrenList.add(new Property("identifier", "Identifier", "A unique identifier assigned to this particular recommendation record.", 0, java.lang.Integer.MAX_VALUE, identifier));
1535        childrenList.add(new Property("patient", "Reference(Patient)", "The patient the recommendations are for.", 0, java.lang.Integer.MAX_VALUE, patient));
1536        childrenList.add(new Property("recommendation", "", "Vaccine administration recommendations.", 0, java.lang.Integer.MAX_VALUE, recommendation));
1537      }
1538
1539      @Override
1540      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1541        switch (hash) {
1542        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1543        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1544        case -1028636743: /*recommendation*/ return this.recommendation == null ? new Base[0] : this.recommendation.toArray(new Base[this.recommendation.size()]); // ImmunizationRecommendationRecommendationComponent
1545        default: return super.getProperty(hash, name, checkValid);
1546        }
1547
1548      }
1549
1550      @Override
1551      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1552        switch (hash) {
1553        case -1618432855: // identifier
1554          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1555          return value;
1556        case -791418107: // patient
1557          this.patient = castToReference(value); // Reference
1558          return value;
1559        case -1028636743: // recommendation
1560          this.getRecommendation().add((ImmunizationRecommendationRecommendationComponent) value); // ImmunizationRecommendationRecommendationComponent
1561          return value;
1562        default: return super.setProperty(hash, name, value);
1563        }
1564
1565      }
1566
1567      @Override
1568      public Base setProperty(String name, Base value) throws FHIRException {
1569        if (name.equals("identifier")) {
1570          this.getIdentifier().add(castToIdentifier(value));
1571        } else if (name.equals("patient")) {
1572          this.patient = castToReference(value); // Reference
1573        } else if (name.equals("recommendation")) {
1574          this.getRecommendation().add((ImmunizationRecommendationRecommendationComponent) value);
1575        } else
1576          return super.setProperty(name, value);
1577        return value;
1578      }
1579
1580      @Override
1581      public Base makeProperty(int hash, String name) throws FHIRException {
1582        switch (hash) {
1583        case -1618432855:  return addIdentifier(); 
1584        case -791418107:  return getPatient(); 
1585        case -1028636743:  return addRecommendation(); 
1586        default: return super.makeProperty(hash, name);
1587        }
1588
1589      }
1590
1591      @Override
1592      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1593        switch (hash) {
1594        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1595        case -791418107: /*patient*/ return new String[] {"Reference"};
1596        case -1028636743: /*recommendation*/ return new String[] {};
1597        default: return super.getTypesForProperty(hash, name);
1598        }
1599
1600      }
1601
1602      @Override
1603      public Base addChild(String name) throws FHIRException {
1604        if (name.equals("identifier")) {
1605          return addIdentifier();
1606        }
1607        else if (name.equals("patient")) {
1608          this.patient = new Reference();
1609          return this.patient;
1610        }
1611        else if (name.equals("recommendation")) {
1612          return addRecommendation();
1613        }
1614        else
1615          return super.addChild(name);
1616      }
1617
1618  public String fhirType() {
1619    return "ImmunizationRecommendation";
1620
1621  }
1622
1623      public ImmunizationRecommendation copy() {
1624        ImmunizationRecommendation dst = new ImmunizationRecommendation();
1625        copyValues(dst);
1626        if (identifier != null) {
1627          dst.identifier = new ArrayList<Identifier>();
1628          for (Identifier i : identifier)
1629            dst.identifier.add(i.copy());
1630        };
1631        dst.patient = patient == null ? null : patient.copy();
1632        if (recommendation != null) {
1633          dst.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1634          for (ImmunizationRecommendationRecommendationComponent i : recommendation)
1635            dst.recommendation.add(i.copy());
1636        };
1637        return dst;
1638      }
1639
1640      protected ImmunizationRecommendation typedCopy() {
1641        return copy();
1642      }
1643
1644      @Override
1645      public boolean equalsDeep(Base other) {
1646        if (!super.equalsDeep(other))
1647          return false;
1648        if (!(other instanceof ImmunizationRecommendation))
1649          return false;
1650        ImmunizationRecommendation o = (ImmunizationRecommendation) other;
1651        return compareDeep(identifier, o.identifier, true) && compareDeep(patient, o.patient, true) && compareDeep(recommendation, o.recommendation, true)
1652          ;
1653      }
1654
1655      @Override
1656      public boolean equalsShallow(Base other) {
1657        if (!super.equalsShallow(other))
1658          return false;
1659        if (!(other instanceof ImmunizationRecommendation))
1660          return false;
1661        ImmunizationRecommendation o = (ImmunizationRecommendation) other;
1662        return true;
1663      }
1664
1665      public boolean isEmpty() {
1666        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, patient, recommendation
1667          );
1668      }
1669
1670  @Override
1671  public ResourceType getResourceType() {
1672    return ResourceType.ImmunizationRecommendation;
1673   }
1674
1675 /**
1676   * Search parameter: <b>date</b>
1677   * <p>
1678   * Description: <b>Date recommendation created</b><br>
1679   * Type: <b>date</b><br>
1680   * Path: <b>ImmunizationRecommendation.recommendation.date</b><br>
1681   * </p>
1682   */
1683  @SearchParamDefinition(name="date", path="ImmunizationRecommendation.recommendation.date", description="Date recommendation created", type="date" )
1684  public static final String SP_DATE = "date";
1685 /**
1686   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1687   * <p>
1688   * Description: <b>Date recommendation created</b><br>
1689   * Type: <b>date</b><br>
1690   * Path: <b>ImmunizationRecommendation.recommendation.date</b><br>
1691   * </p>
1692   */
1693  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1694
1695 /**
1696   * Search parameter: <b>identifier</b>
1697   * <p>
1698   * Description: <b>Business identifier</b><br>
1699   * Type: <b>token</b><br>
1700   * Path: <b>ImmunizationRecommendation.identifier</b><br>
1701   * </p>
1702   */
1703  @SearchParamDefinition(name="identifier", path="ImmunizationRecommendation.identifier", description="Business identifier", type="token" )
1704  public static final String SP_IDENTIFIER = "identifier";
1705 /**
1706   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1707   * <p>
1708   * Description: <b>Business identifier</b><br>
1709   * Type: <b>token</b><br>
1710   * Path: <b>ImmunizationRecommendation.identifier</b><br>
1711   * </p>
1712   */
1713  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1714
1715 /**
1716   * Search parameter: <b>dose-sequence</b>
1717   * <p>
1718   * Description: <b>Dose number within sequence</b><br>
1719   * Type: <b>number</b><br>
1720   * Path: <b>ImmunizationRecommendation.recommendation.protocol.doseSequence</b><br>
1721   * </p>
1722   */
1723  @SearchParamDefinition(name="dose-sequence", path="ImmunizationRecommendation.recommendation.protocol.doseSequence", description="Dose number within sequence", type="number" )
1724  public static final String SP_DOSE_SEQUENCE = "dose-sequence";
1725 /**
1726   * <b>Fluent Client</b> search parameter constant for <b>dose-sequence</b>
1727   * <p>
1728   * Description: <b>Dose number within sequence</b><br>
1729   * Type: <b>number</b><br>
1730   * Path: <b>ImmunizationRecommendation.recommendation.protocol.doseSequence</b><br>
1731   * </p>
1732   */
1733  public static final ca.uhn.fhir.rest.gclient.NumberClientParam DOSE_SEQUENCE = new ca.uhn.fhir.rest.gclient.NumberClientParam(SP_DOSE_SEQUENCE);
1734
1735 /**
1736   * Search parameter: <b>target-disease</b>
1737   * <p>
1738   * Description: <b>Disease to be immunized against</b><br>
1739   * Type: <b>token</b><br>
1740   * Path: <b>ImmunizationRecommendation.recommendation.targetDisease</b><br>
1741   * </p>
1742   */
1743  @SearchParamDefinition(name="target-disease", path="ImmunizationRecommendation.recommendation.targetDisease", description="Disease to be immunized against", type="token" )
1744  public static final String SP_TARGET_DISEASE = "target-disease";
1745 /**
1746   * <b>Fluent Client</b> search parameter constant for <b>target-disease</b>
1747   * <p>
1748   * Description: <b>Disease to be immunized against</b><br>
1749   * Type: <b>token</b><br>
1750   * Path: <b>ImmunizationRecommendation.recommendation.targetDisease</b><br>
1751   * </p>
1752   */
1753  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TARGET_DISEASE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TARGET_DISEASE);
1754
1755 /**
1756   * Search parameter: <b>patient</b>
1757   * <p>
1758   * Description: <b>Who this profile is for</b><br>
1759   * Type: <b>reference</b><br>
1760   * Path: <b>ImmunizationRecommendation.patient</b><br>
1761   * </p>
1762   */
1763  @SearchParamDefinition(name="patient", path="ImmunizationRecommendation.patient", description="Who this profile is for", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Patient.class } )
1764  public static final String SP_PATIENT = "patient";
1765 /**
1766   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1767   * <p>
1768   * Description: <b>Who this profile is for</b><br>
1769   * Type: <b>reference</b><br>
1770   * Path: <b>ImmunizationRecommendation.patient</b><br>
1771   * </p>
1772   */
1773  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1774
1775/**
1776   * Constant for fluent queries to be used to add include statements. Specifies
1777   * the path value of "<b>ImmunizationRecommendation:patient</b>".
1778   */
1779  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ImmunizationRecommendation:patient").toLocked();
1780
1781 /**
1782   * Search parameter: <b>vaccine-type</b>
1783   * <p>
1784   * Description: <b>Vaccine recommendation applies to</b><br>
1785   * Type: <b>token</b><br>
1786   * Path: <b>ImmunizationRecommendation.recommendation.vaccineCode</b><br>
1787   * </p>
1788   */
1789  @SearchParamDefinition(name="vaccine-type", path="ImmunizationRecommendation.recommendation.vaccineCode", description="Vaccine recommendation applies to", type="token" )
1790  public static final String SP_VACCINE_TYPE = "vaccine-type";
1791 /**
1792   * <b>Fluent Client</b> search parameter constant for <b>vaccine-type</b>
1793   * <p>
1794   * Description: <b>Vaccine recommendation applies to</b><br>
1795   * Type: <b>token</b><br>
1796   * Path: <b>ImmunizationRecommendation.recommendation.vaccineCode</b><br>
1797   * </p>
1798   */
1799  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VACCINE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VACCINE_TYPE);
1800
1801 /**
1802   * Search parameter: <b>dose-number</b>
1803   * <p>
1804   * Description: <b>Recommended dose number</b><br>
1805   * Type: <b>number</b><br>
1806   * Path: <b>ImmunizationRecommendation.recommendation.doseNumber</b><br>
1807   * </p>
1808   */
1809  @SearchParamDefinition(name="dose-number", path="ImmunizationRecommendation.recommendation.doseNumber", description="Recommended dose number", type="number" )
1810  public static final String SP_DOSE_NUMBER = "dose-number";
1811 /**
1812   * <b>Fluent Client</b> search parameter constant for <b>dose-number</b>
1813   * <p>
1814   * Description: <b>Recommended dose number</b><br>
1815   * Type: <b>number</b><br>
1816   * Path: <b>ImmunizationRecommendation.recommendation.doseNumber</b><br>
1817   * </p>
1818   */
1819  public static final ca.uhn.fhir.rest.gclient.NumberClientParam DOSE_NUMBER = new ca.uhn.fhir.rest.gclient.NumberClientParam(SP_DOSE_NUMBER);
1820
1821 /**
1822   * Search parameter: <b>information</b>
1823   * <p>
1824   * Description: <b>Patient observations supporting recommendation</b><br>
1825   * Type: <b>reference</b><br>
1826   * Path: <b>ImmunizationRecommendation.recommendation.supportingPatientInformation</b><br>
1827   * </p>
1828   */
1829  @SearchParamDefinition(name="information", path="ImmunizationRecommendation.recommendation.supportingPatientInformation", description="Patient observations supporting recommendation", type="reference", target={AllergyIntolerance.class, Observation.class } )
1830  public static final String SP_INFORMATION = "information";
1831 /**
1832   * <b>Fluent Client</b> search parameter constant for <b>information</b>
1833   * <p>
1834   * Description: <b>Patient observations supporting recommendation</b><br>
1835   * Type: <b>reference</b><br>
1836   * Path: <b>ImmunizationRecommendation.recommendation.supportingPatientInformation</b><br>
1837   * </p>
1838   */
1839  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INFORMATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INFORMATION);
1840
1841/**
1842   * Constant for fluent queries to be used to add include statements. Specifies
1843   * the path value of "<b>ImmunizationRecommendation:information</b>".
1844   */
1845  public static final ca.uhn.fhir.model.api.Include INCLUDE_INFORMATION = new ca.uhn.fhir.model.api.Include("ImmunizationRecommendation:information").toLocked();
1846
1847 /**
1848   * Search parameter: <b>support</b>
1849   * <p>
1850   * Description: <b>Past immunizations supporting recommendation</b><br>
1851   * Type: <b>reference</b><br>
1852   * Path: <b>ImmunizationRecommendation.recommendation.supportingImmunization</b><br>
1853   * </p>
1854   */
1855  @SearchParamDefinition(name="support", path="ImmunizationRecommendation.recommendation.supportingImmunization", description="Past immunizations supporting recommendation", type="reference", target={Immunization.class } )
1856  public static final String SP_SUPPORT = "support";
1857 /**
1858   * <b>Fluent Client</b> search parameter constant for <b>support</b>
1859   * <p>
1860   * Description: <b>Past immunizations supporting recommendation</b><br>
1861   * Type: <b>reference</b><br>
1862   * Path: <b>ImmunizationRecommendation.recommendation.supportingImmunization</b><br>
1863   * </p>
1864   */
1865  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUPPORT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUPPORT);
1866
1867/**
1868   * Constant for fluent queries to be used to add include statements. Specifies
1869   * the path value of "<b>ImmunizationRecommendation:support</b>".
1870   */
1871  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUPPORT = new ca.uhn.fhir.model.api.Include("ImmunizationRecommendation:support").toLocked();
1872
1873 /**
1874   * Search parameter: <b>status</b>
1875   * <p>
1876   * Description: <b>Vaccine administration status</b><br>
1877   * Type: <b>token</b><br>
1878   * Path: <b>ImmunizationRecommendation.recommendation.forecastStatus</b><br>
1879   * </p>
1880   */
1881  @SearchParamDefinition(name="status", path="ImmunizationRecommendation.recommendation.forecastStatus", description="Vaccine administration status", type="token" )
1882  public static final String SP_STATUS = "status";
1883 /**
1884   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1885   * <p>
1886   * Description: <b>Vaccine administration status</b><br>
1887   * Type: <b>token</b><br>
1888   * Path: <b>ImmunizationRecommendation.recommendation.forecastStatus</b><br>
1889   * </p>
1890   */
1891  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1892
1893
1894}
1895