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