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