001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A patient's point-in-time set of recommendations (i.e. forecasting) according to a published schedule with optional supporting justification.
052 */
053@ResourceDef(name="ImmunizationRecommendation", profile="http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation")
054public class ImmunizationRecommendation extends DomainResource {
055
056    @Block()
057    public static class ImmunizationRecommendationRecommendationComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * Vaccine(s) or vaccine group that pertain to the recommendation.
060         */
061        @Child(name = "vaccineCode", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
062        @Description(shortDefinition="Vaccine  or vaccine group recommendation applies to", formalDefinition="Vaccine(s) or vaccine group that pertain to the recommendation." )
063        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vaccine-code")
064        protected List<CodeableConcept> vaccineCode;
065
066        /**
067         * The targeted disease for the recommendation.
068         */
069        @Child(name = "targetDisease", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
070        @Description(shortDefinition="Disease to be immunized against", formalDefinition="The targeted disease for the recommendation." )
071        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-target-disease")
072        protected List<CodeableConcept> targetDisease;
073
074        /**
075         * Vaccine(s) which should not be used to fulfill the recommendation.
076         */
077        @Child(name = "contraindicatedVaccineCode", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
078        @Description(shortDefinition="Vaccine which is contraindicated to fulfill the recommendation", formalDefinition="Vaccine(s) which should not be used to fulfill the recommendation." )
079        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vaccine-code")
080        protected List<CodeableConcept> contraindicatedVaccineCode;
081
082        /**
083         * Indicates the patient status with respect to the path to immunity for the target disease.
084         */
085        @Child(name = "forecastStatus", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=true, summary=true)
086        @Description(shortDefinition="Vaccine recommendation status", formalDefinition="Indicates the patient status with respect to the path to immunity for the target disease." )
087        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-recommendation-status")
088        protected CodeableConcept forecastStatus;
089
090        /**
091         * The reason for the assigned forecast status.
092         */
093        @Child(name = "forecastReason", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
094        @Description(shortDefinition="Vaccine administration status reason", formalDefinition="The reason for the assigned forecast status." )
095        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-recommendation-reason")
096        protected List<CodeableConcept> forecastReason;
097
098        /**
099         * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
100         */
101        @Child(name = "dateCriterion", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
102        @Description(shortDefinition="Dates governing proposed immunization", formalDefinition="Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc." )
103        protected List<ImmunizationRecommendationRecommendationDateCriterionComponent> dateCriterion;
104
105        /**
106         * Contains the description about the protocol under which the vaccine was administered.
107         */
108        @Child(name = "description", type = {MarkdownType.class}, order=7, min=0, max=1, modifier=false, summary=false)
109        @Description(shortDefinition="Protocol details", formalDefinition="Contains the description about the protocol under which the vaccine was administered." )
110        protected MarkdownType description;
111
112        /**
113         * One possible path to achieve presumed immunity against a disease - within the context of an authority.
114         */
115        @Child(name = "series", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
116        @Description(shortDefinition="Name of vaccination series", formalDefinition="One possible path to achieve presumed immunity against a disease - within the context of an authority." )
117        protected StringType series;
118
119        /**
120         * Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (e.g. dose 2 is the next recommended dose).
121         */
122        @Child(name = "doseNumber", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
123        @Description(shortDefinition="Recommended dose number within series", formalDefinition="Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (e.g. dose 2 is the next recommended dose)." )
124        protected StringType doseNumber;
125
126        /**
127         * The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.
128         */
129        @Child(name = "seriesDoses", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
130        @Description(shortDefinition="Recommended number of doses for immunity", formalDefinition="The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process." )
131        protected StringType seriesDoses;
132
133        /**
134         * Immunization event history and/or evaluation that supports the status and recommendation.
135         */
136        @Child(name = "supportingImmunization", type = {Immunization.class, ImmunizationEvaluation.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
137        @Description(shortDefinition="Past immunizations supporting recommendation", formalDefinition="Immunization event history and/or evaluation that supports the status and recommendation." )
138        protected List<Reference> supportingImmunization;
139
140        /**
141         * Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.
142         */
143        @Child(name = "supportingPatientInformation", type = {Reference.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
144        @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." )
145        protected List<Reference> supportingPatientInformation;
146
147        private static final long serialVersionUID = 1830552442L;
148
149    /**
150     * Constructor
151     */
152      public ImmunizationRecommendationRecommendationComponent() {
153        super();
154      }
155
156    /**
157     * Constructor
158     */
159      public ImmunizationRecommendationRecommendationComponent(CodeableConcept forecastStatus) {
160        super();
161        this.setForecastStatus(forecastStatus);
162      }
163
164        /**
165         * @return {@link #vaccineCode} (Vaccine(s) or vaccine group that pertain to the recommendation.)
166         */
167        public List<CodeableConcept> getVaccineCode() { 
168          if (this.vaccineCode == null)
169            this.vaccineCode = new ArrayList<CodeableConcept>();
170          return this.vaccineCode;
171        }
172
173        /**
174         * @return Returns a reference to <code>this</code> for easy method chaining
175         */
176        public ImmunizationRecommendationRecommendationComponent setVaccineCode(List<CodeableConcept> theVaccineCode) { 
177          this.vaccineCode = theVaccineCode;
178          return this;
179        }
180
181        public boolean hasVaccineCode() { 
182          if (this.vaccineCode == null)
183            return false;
184          for (CodeableConcept item : this.vaccineCode)
185            if (!item.isEmpty())
186              return true;
187          return false;
188        }
189
190        public CodeableConcept addVaccineCode() { //3
191          CodeableConcept t = new CodeableConcept();
192          if (this.vaccineCode == null)
193            this.vaccineCode = new ArrayList<CodeableConcept>();
194          this.vaccineCode.add(t);
195          return t;
196        }
197
198        public ImmunizationRecommendationRecommendationComponent addVaccineCode(CodeableConcept t) { //3
199          if (t == null)
200            return this;
201          if (this.vaccineCode == null)
202            this.vaccineCode = new ArrayList<CodeableConcept>();
203          this.vaccineCode.add(t);
204          return this;
205        }
206
207        /**
208         * @return The first repetition of repeating field {@link #vaccineCode}, creating it if it does not already exist {3}
209         */
210        public CodeableConcept getVaccineCodeFirstRep() { 
211          if (getVaccineCode().isEmpty()) {
212            addVaccineCode();
213          }
214          return getVaccineCode().get(0);
215        }
216
217        /**
218         * @return {@link #targetDisease} (The targeted disease for the recommendation.)
219         */
220        public List<CodeableConcept> getTargetDisease() { 
221          if (this.targetDisease == null)
222            this.targetDisease = new ArrayList<CodeableConcept>();
223          return this.targetDisease;
224        }
225
226        /**
227         * @return Returns a reference to <code>this</code> for easy method chaining
228         */
229        public ImmunizationRecommendationRecommendationComponent setTargetDisease(List<CodeableConcept> theTargetDisease) { 
230          this.targetDisease = theTargetDisease;
231          return this;
232        }
233
234        public boolean hasTargetDisease() { 
235          if (this.targetDisease == null)
236            return false;
237          for (CodeableConcept item : this.targetDisease)
238            if (!item.isEmpty())
239              return true;
240          return false;
241        }
242
243        public CodeableConcept addTargetDisease() { //3
244          CodeableConcept t = new CodeableConcept();
245          if (this.targetDisease == null)
246            this.targetDisease = new ArrayList<CodeableConcept>();
247          this.targetDisease.add(t);
248          return t;
249        }
250
251        public ImmunizationRecommendationRecommendationComponent addTargetDisease(CodeableConcept t) { //3
252          if (t == null)
253            return this;
254          if (this.targetDisease == null)
255            this.targetDisease = new ArrayList<CodeableConcept>();
256          this.targetDisease.add(t);
257          return this;
258        }
259
260        /**
261         * @return The first repetition of repeating field {@link #targetDisease}, creating it if it does not already exist {3}
262         */
263        public CodeableConcept getTargetDiseaseFirstRep() { 
264          if (getTargetDisease().isEmpty()) {
265            addTargetDisease();
266          }
267          return getTargetDisease().get(0);
268        }
269
270        /**
271         * @return {@link #contraindicatedVaccineCode} (Vaccine(s) which should not be used to fulfill the recommendation.)
272         */
273        public List<CodeableConcept> getContraindicatedVaccineCode() { 
274          if (this.contraindicatedVaccineCode == null)
275            this.contraindicatedVaccineCode = new ArrayList<CodeableConcept>();
276          return this.contraindicatedVaccineCode;
277        }
278
279        /**
280         * @return Returns a reference to <code>this</code> for easy method chaining
281         */
282        public ImmunizationRecommendationRecommendationComponent setContraindicatedVaccineCode(List<CodeableConcept> theContraindicatedVaccineCode) { 
283          this.contraindicatedVaccineCode = theContraindicatedVaccineCode;
284          return this;
285        }
286
287        public boolean hasContraindicatedVaccineCode() { 
288          if (this.contraindicatedVaccineCode == null)
289            return false;
290          for (CodeableConcept item : this.contraindicatedVaccineCode)
291            if (!item.isEmpty())
292              return true;
293          return false;
294        }
295
296        public CodeableConcept addContraindicatedVaccineCode() { //3
297          CodeableConcept t = new CodeableConcept();
298          if (this.contraindicatedVaccineCode == null)
299            this.contraindicatedVaccineCode = new ArrayList<CodeableConcept>();
300          this.contraindicatedVaccineCode.add(t);
301          return t;
302        }
303
304        public ImmunizationRecommendationRecommendationComponent addContraindicatedVaccineCode(CodeableConcept t) { //3
305          if (t == null)
306            return this;
307          if (this.contraindicatedVaccineCode == null)
308            this.contraindicatedVaccineCode = new ArrayList<CodeableConcept>();
309          this.contraindicatedVaccineCode.add(t);
310          return this;
311        }
312
313        /**
314         * @return The first repetition of repeating field {@link #contraindicatedVaccineCode}, creating it if it does not already exist {3}
315         */
316        public CodeableConcept getContraindicatedVaccineCodeFirstRep() { 
317          if (getContraindicatedVaccineCode().isEmpty()) {
318            addContraindicatedVaccineCode();
319          }
320          return getContraindicatedVaccineCode().get(0);
321        }
322
323        /**
324         * @return {@link #forecastStatus} (Indicates the patient status with respect to the path to immunity for the target disease.)
325         */
326        public CodeableConcept getForecastStatus() { 
327          if (this.forecastStatus == null)
328            if (Configuration.errorOnAutoCreate())
329              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.forecastStatus");
330            else if (Configuration.doAutoCreate())
331              this.forecastStatus = new CodeableConcept(); // cc
332          return this.forecastStatus;
333        }
334
335        public boolean hasForecastStatus() { 
336          return this.forecastStatus != null && !this.forecastStatus.isEmpty();
337        }
338
339        /**
340         * @param value {@link #forecastStatus} (Indicates the patient status with respect to the path to immunity for the target disease.)
341         */
342        public ImmunizationRecommendationRecommendationComponent setForecastStatus(CodeableConcept value) { 
343          this.forecastStatus = value;
344          return this;
345        }
346
347        /**
348         * @return {@link #forecastReason} (The reason for the assigned forecast status.)
349         */
350        public List<CodeableConcept> getForecastReason() { 
351          if (this.forecastReason == null)
352            this.forecastReason = new ArrayList<CodeableConcept>();
353          return this.forecastReason;
354        }
355
356        /**
357         * @return Returns a reference to <code>this</code> for easy method chaining
358         */
359        public ImmunizationRecommendationRecommendationComponent setForecastReason(List<CodeableConcept> theForecastReason) { 
360          this.forecastReason = theForecastReason;
361          return this;
362        }
363
364        public boolean hasForecastReason() { 
365          if (this.forecastReason == null)
366            return false;
367          for (CodeableConcept item : this.forecastReason)
368            if (!item.isEmpty())
369              return true;
370          return false;
371        }
372
373        public CodeableConcept addForecastReason() { //3
374          CodeableConcept t = new CodeableConcept();
375          if (this.forecastReason == null)
376            this.forecastReason = new ArrayList<CodeableConcept>();
377          this.forecastReason.add(t);
378          return t;
379        }
380
381        public ImmunizationRecommendationRecommendationComponent addForecastReason(CodeableConcept t) { //3
382          if (t == null)
383            return this;
384          if (this.forecastReason == null)
385            this.forecastReason = new ArrayList<CodeableConcept>();
386          this.forecastReason.add(t);
387          return this;
388        }
389
390        /**
391         * @return The first repetition of repeating field {@link #forecastReason}, creating it if it does not already exist {3}
392         */
393        public CodeableConcept getForecastReasonFirstRep() { 
394          if (getForecastReason().isEmpty()) {
395            addForecastReason();
396          }
397          return getForecastReason().get(0);
398        }
399
400        /**
401         * @return {@link #dateCriterion} (Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.)
402         */
403        public List<ImmunizationRecommendationRecommendationDateCriterionComponent> getDateCriterion() { 
404          if (this.dateCriterion == null)
405            this.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
406          return this.dateCriterion;
407        }
408
409        /**
410         * @return Returns a reference to <code>this</code> for easy method chaining
411         */
412        public ImmunizationRecommendationRecommendationComponent setDateCriterion(List<ImmunizationRecommendationRecommendationDateCriterionComponent> theDateCriterion) { 
413          this.dateCriterion = theDateCriterion;
414          return this;
415        }
416
417        public boolean hasDateCriterion() { 
418          if (this.dateCriterion == null)
419            return false;
420          for (ImmunizationRecommendationRecommendationDateCriterionComponent item : this.dateCriterion)
421            if (!item.isEmpty())
422              return true;
423          return false;
424        }
425
426        public ImmunizationRecommendationRecommendationDateCriterionComponent addDateCriterion() { //3
427          ImmunizationRecommendationRecommendationDateCriterionComponent t = new ImmunizationRecommendationRecommendationDateCriterionComponent();
428          if (this.dateCriterion == null)
429            this.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
430          this.dateCriterion.add(t);
431          return t;
432        }
433
434        public ImmunizationRecommendationRecommendationComponent addDateCriterion(ImmunizationRecommendationRecommendationDateCriterionComponent t) { //3
435          if (t == null)
436            return this;
437          if (this.dateCriterion == null)
438            this.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
439          this.dateCriterion.add(t);
440          return this;
441        }
442
443        /**
444         * @return The first repetition of repeating field {@link #dateCriterion}, creating it if it does not already exist {3}
445         */
446        public ImmunizationRecommendationRecommendationDateCriterionComponent getDateCriterionFirstRep() { 
447          if (getDateCriterion().isEmpty()) {
448            addDateCriterion();
449          }
450          return getDateCriterion().get(0);
451        }
452
453        /**
454         * @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
455         */
456        public MarkdownType getDescriptionElement() { 
457          if (this.description == null)
458            if (Configuration.errorOnAutoCreate())
459              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.description");
460            else if (Configuration.doAutoCreate())
461              this.description = new MarkdownType(); // bb
462          return this.description;
463        }
464
465        public boolean hasDescriptionElement() { 
466          return this.description != null && !this.description.isEmpty();
467        }
468
469        public boolean hasDescription() { 
470          return this.description != null && !this.description.isEmpty();
471        }
472
473        /**
474         * @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
475         */
476        public ImmunizationRecommendationRecommendationComponent setDescriptionElement(MarkdownType value) { 
477          this.description = value;
478          return this;
479        }
480
481        /**
482         * @return Contains the description about the protocol under which the vaccine was administered.
483         */
484        public String getDescription() { 
485          return this.description == null ? null : this.description.getValue();
486        }
487
488        /**
489         * @param value Contains the description about the protocol under which the vaccine was administered.
490         */
491        public ImmunizationRecommendationRecommendationComponent setDescription(String value) { 
492          if (Utilities.noString(value))
493            this.description = null;
494          else {
495            if (this.description == null)
496              this.description = new MarkdownType();
497            this.description.setValue(value);
498          }
499          return this;
500        }
501
502        /**
503         * @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
504         */
505        public StringType getSeriesElement() { 
506          if (this.series == null)
507            if (Configuration.errorOnAutoCreate())
508              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.series");
509            else if (Configuration.doAutoCreate())
510              this.series = new StringType(); // bb
511          return this.series;
512        }
513
514        public boolean hasSeriesElement() { 
515          return this.series != null && !this.series.isEmpty();
516        }
517
518        public boolean hasSeries() { 
519          return this.series != null && !this.series.isEmpty();
520        }
521
522        /**
523         * @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
524         */
525        public ImmunizationRecommendationRecommendationComponent setSeriesElement(StringType value) { 
526          this.series = value;
527          return this;
528        }
529
530        /**
531         * @return One possible path to achieve presumed immunity against a disease - within the context of an authority.
532         */
533        public String getSeries() { 
534          return this.series == null ? null : this.series.getValue();
535        }
536
537        /**
538         * @param value One possible path to achieve presumed immunity against a disease - within the context of an authority.
539         */
540        public ImmunizationRecommendationRecommendationComponent setSeries(String value) { 
541          if (Utilities.noString(value))
542            this.series = null;
543          else {
544            if (this.series == null)
545              this.series = new StringType();
546            this.series.setValue(value);
547          }
548          return this;
549        }
550
551        /**
552         * @return {@link #doseNumber} (Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (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
553         */
554        public StringType getDoseNumberElement() { 
555          if (this.doseNumber == null)
556            if (Configuration.errorOnAutoCreate())
557              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.doseNumber");
558            else if (Configuration.doAutoCreate())
559              this.doseNumber = new StringType(); // bb
560          return this.doseNumber;
561        }
562
563        public boolean hasDoseNumberElement() { 
564          return this.doseNumber != null && !this.doseNumber.isEmpty();
565        }
566
567        public boolean hasDoseNumber() { 
568          return this.doseNumber != null && !this.doseNumber.isEmpty();
569        }
570
571        /**
572         * @param value {@link #doseNumber} (Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (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
573         */
574        public ImmunizationRecommendationRecommendationComponent setDoseNumberElement(StringType value) { 
575          this.doseNumber = value;
576          return this;
577        }
578
579        /**
580         * @return Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (e.g. dose 2 is the next recommended dose).
581         */
582        public String getDoseNumber() { 
583          return this.doseNumber == null ? null : this.doseNumber.getValue();
584        }
585
586        /**
587         * @param value Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (e.g. dose 2 is the next recommended dose).
588         */
589        public ImmunizationRecommendationRecommendationComponent setDoseNumber(String value) { 
590          if (Utilities.noString(value))
591            this.doseNumber = null;
592          else {
593            if (this.doseNumber == null)
594              this.doseNumber = new StringType();
595            this.doseNumber.setValue(value);
596          }
597          return this;
598        }
599
600        /**
601         * @return {@link #seriesDoses} (The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.). This is the underlying object with id, value and extensions. The accessor "getSeriesDoses" gives direct access to the value
602         */
603        public StringType getSeriesDosesElement() { 
604          if (this.seriesDoses == null)
605            if (Configuration.errorOnAutoCreate())
606              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationComponent.seriesDoses");
607            else if (Configuration.doAutoCreate())
608              this.seriesDoses = new StringType(); // bb
609          return this.seriesDoses;
610        }
611
612        public boolean hasSeriesDosesElement() { 
613          return this.seriesDoses != null && !this.seriesDoses.isEmpty();
614        }
615
616        public boolean hasSeriesDoses() { 
617          return this.seriesDoses != null && !this.seriesDoses.isEmpty();
618        }
619
620        /**
621         * @param value {@link #seriesDoses} (The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.). This is the underlying object with id, value and extensions. The accessor "getSeriesDoses" gives direct access to the value
622         */
623        public ImmunizationRecommendationRecommendationComponent setSeriesDosesElement(StringType value) { 
624          this.seriesDoses = value;
625          return this;
626        }
627
628        /**
629         * @return The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.
630         */
631        public String getSeriesDoses() { 
632          return this.seriesDoses == null ? null : this.seriesDoses.getValue();
633        }
634
635        /**
636         * @param value The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.
637         */
638        public ImmunizationRecommendationRecommendationComponent setSeriesDoses(String value) { 
639          if (Utilities.noString(value))
640            this.seriesDoses = null;
641          else {
642            if (this.seriesDoses == null)
643              this.seriesDoses = new StringType();
644            this.seriesDoses.setValue(value);
645          }
646          return this;
647        }
648
649        /**
650         * @return {@link #supportingImmunization} (Immunization event history and/or evaluation that supports the status and recommendation.)
651         */
652        public List<Reference> getSupportingImmunization() { 
653          if (this.supportingImmunization == null)
654            this.supportingImmunization = new ArrayList<Reference>();
655          return this.supportingImmunization;
656        }
657
658        /**
659         * @return Returns a reference to <code>this</code> for easy method chaining
660         */
661        public ImmunizationRecommendationRecommendationComponent setSupportingImmunization(List<Reference> theSupportingImmunization) { 
662          this.supportingImmunization = theSupportingImmunization;
663          return this;
664        }
665
666        public boolean hasSupportingImmunization() { 
667          if (this.supportingImmunization == null)
668            return false;
669          for (Reference item : this.supportingImmunization)
670            if (!item.isEmpty())
671              return true;
672          return false;
673        }
674
675        public Reference addSupportingImmunization() { //3
676          Reference t = new Reference();
677          if (this.supportingImmunization == null)
678            this.supportingImmunization = new ArrayList<Reference>();
679          this.supportingImmunization.add(t);
680          return t;
681        }
682
683        public ImmunizationRecommendationRecommendationComponent addSupportingImmunization(Reference t) { //3
684          if (t == null)
685            return this;
686          if (this.supportingImmunization == null)
687            this.supportingImmunization = new ArrayList<Reference>();
688          this.supportingImmunization.add(t);
689          return this;
690        }
691
692        /**
693         * @return The first repetition of repeating field {@link #supportingImmunization}, creating it if it does not already exist {3}
694         */
695        public Reference getSupportingImmunizationFirstRep() { 
696          if (getSupportingImmunization().isEmpty()) {
697            addSupportingImmunization();
698          }
699          return getSupportingImmunization().get(0);
700        }
701
702        /**
703         * @return {@link #supportingPatientInformation} (Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.)
704         */
705        public List<Reference> getSupportingPatientInformation() { 
706          if (this.supportingPatientInformation == null)
707            this.supportingPatientInformation = new ArrayList<Reference>();
708          return this.supportingPatientInformation;
709        }
710
711        /**
712         * @return Returns a reference to <code>this</code> for easy method chaining
713         */
714        public ImmunizationRecommendationRecommendationComponent setSupportingPatientInformation(List<Reference> theSupportingPatientInformation) { 
715          this.supportingPatientInformation = theSupportingPatientInformation;
716          return this;
717        }
718
719        public boolean hasSupportingPatientInformation() { 
720          if (this.supportingPatientInformation == null)
721            return false;
722          for (Reference item : this.supportingPatientInformation)
723            if (!item.isEmpty())
724              return true;
725          return false;
726        }
727
728        public Reference addSupportingPatientInformation() { //3
729          Reference t = new Reference();
730          if (this.supportingPatientInformation == null)
731            this.supportingPatientInformation = new ArrayList<Reference>();
732          this.supportingPatientInformation.add(t);
733          return t;
734        }
735
736        public ImmunizationRecommendationRecommendationComponent addSupportingPatientInformation(Reference t) { //3
737          if (t == null)
738            return this;
739          if (this.supportingPatientInformation == null)
740            this.supportingPatientInformation = new ArrayList<Reference>();
741          this.supportingPatientInformation.add(t);
742          return this;
743        }
744
745        /**
746         * @return The first repetition of repeating field {@link #supportingPatientInformation}, creating it if it does not already exist {3}
747         */
748        public Reference getSupportingPatientInformationFirstRep() { 
749          if (getSupportingPatientInformation().isEmpty()) {
750            addSupportingPatientInformation();
751          }
752          return getSupportingPatientInformation().get(0);
753        }
754
755        protected void listChildren(List<Property> children) {
756          super.listChildren(children);
757          children.add(new Property("vaccineCode", "CodeableConcept", "Vaccine(s) or vaccine group that pertain to the recommendation.", 0, java.lang.Integer.MAX_VALUE, vaccineCode));
758          children.add(new Property("targetDisease", "CodeableConcept", "The targeted disease for the recommendation.", 0, java.lang.Integer.MAX_VALUE, targetDisease));
759          children.add(new Property("contraindicatedVaccineCode", "CodeableConcept", "Vaccine(s) which should not be used to fulfill the recommendation.", 0, java.lang.Integer.MAX_VALUE, contraindicatedVaccineCode));
760          children.add(new Property("forecastStatus", "CodeableConcept", "Indicates the patient status with respect to the path to immunity for the target disease.", 0, 1, forecastStatus));
761          children.add(new Property("forecastReason", "CodeableConcept", "The reason for the assigned forecast status.", 0, java.lang.Integer.MAX_VALUE, forecastReason));
762          children.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));
763          children.add(new Property("description", "markdown", "Contains the description about the protocol under which the vaccine was administered.", 0, 1, description));
764          children.add(new Property("series", "string", "One possible path to achieve presumed immunity against a disease - within the context of an authority.", 0, 1, series));
765          children.add(new Property("doseNumber", "string", "Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (e.g. dose 2 is the next recommended dose).", 0, 1, doseNumber));
766          children.add(new Property("seriesDoses", "string", "The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.", 0, 1, seriesDoses));
767          children.add(new Property("supportingImmunization", "Reference(Immunization|ImmunizationEvaluation)", "Immunization event history and/or evaluation that supports the status and recommendation.", 0, java.lang.Integer.MAX_VALUE, supportingImmunization));
768          children.add(new Property("supportingPatientInformation", "Reference(Any)", "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));
769        }
770
771        @Override
772        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
773          switch (_hash) {
774          case 664556354: /*vaccineCode*/  return new Property("vaccineCode", "CodeableConcept", "Vaccine(s) or vaccine group that pertain to the recommendation.", 0, java.lang.Integer.MAX_VALUE, vaccineCode);
775          case -319593813: /*targetDisease*/  return new Property("targetDisease", "CodeableConcept", "The targeted disease for the recommendation.", 0, java.lang.Integer.MAX_VALUE, targetDisease);
776          case 571105240: /*contraindicatedVaccineCode*/  return new Property("contraindicatedVaccineCode", "CodeableConcept", "Vaccine(s) which should not be used to fulfill the recommendation.", 0, java.lang.Integer.MAX_VALUE, contraindicatedVaccineCode);
777          case 1904598477: /*forecastStatus*/  return new Property("forecastStatus", "CodeableConcept", "Indicates the patient status with respect to the path to immunity for the target disease.", 0, 1, forecastStatus);
778          case 1862115359: /*forecastReason*/  return new Property("forecastReason", "CodeableConcept", "The reason for the assigned forecast status.", 0, java.lang.Integer.MAX_VALUE, forecastReason);
779          case 2087518867: /*dateCriterion*/  return new Property("dateCriterion", "", "Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.", 0, java.lang.Integer.MAX_VALUE, dateCriterion);
780          case -1724546052: /*description*/  return new Property("description", "markdown", "Contains the description about the protocol under which the vaccine was administered.", 0, 1, description);
781          case -905838985: /*series*/  return new Property("series", "string", "One possible path to achieve presumed immunity against a disease - within the context of an authority.", 0, 1, series);
782          case -887709242: /*doseNumber*/  return new Property("doseNumber", "string", "Nominal position of the recommended dose in a series as determined by the evaluation and forecasting process (e.g. dose 2 is the next recommended dose).", 0, 1, doseNumber);
783          case -1936727105: /*seriesDoses*/  return new Property("seriesDoses", "string", "The recommended number of doses to achieve immunity as determined by the evaluation and forecasting process.", 0, 1, seriesDoses);
784          case 1171592021: /*supportingImmunization*/  return new Property("supportingImmunization", "Reference(Immunization|ImmunizationEvaluation)", "Immunization event history and/or evaluation that supports the status and recommendation.", 0, java.lang.Integer.MAX_VALUE, supportingImmunization);
785          case -1234160646: /*supportingPatientInformation*/  return new Property("supportingPatientInformation", "Reference(Any)", "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);
786          default: return super.getNamedProperty(_hash, _name, _checkValid);
787          }
788
789        }
790
791      @Override
792      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
793        switch (hash) {
794        case 664556354: /*vaccineCode*/ return this.vaccineCode == null ? new Base[0] : this.vaccineCode.toArray(new Base[this.vaccineCode.size()]); // CodeableConcept
795        case -319593813: /*targetDisease*/ return this.targetDisease == null ? new Base[0] : this.targetDisease.toArray(new Base[this.targetDisease.size()]); // CodeableConcept
796        case 571105240: /*contraindicatedVaccineCode*/ return this.contraindicatedVaccineCode == null ? new Base[0] : this.contraindicatedVaccineCode.toArray(new Base[this.contraindicatedVaccineCode.size()]); // CodeableConcept
797        case 1904598477: /*forecastStatus*/ return this.forecastStatus == null ? new Base[0] : new Base[] {this.forecastStatus}; // CodeableConcept
798        case 1862115359: /*forecastReason*/ return this.forecastReason == null ? new Base[0] : this.forecastReason.toArray(new Base[this.forecastReason.size()]); // CodeableConcept
799        case 2087518867: /*dateCriterion*/ return this.dateCriterion == null ? new Base[0] : this.dateCriterion.toArray(new Base[this.dateCriterion.size()]); // ImmunizationRecommendationRecommendationDateCriterionComponent
800        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
801        case -905838985: /*series*/ return this.series == null ? new Base[0] : new Base[] {this.series}; // StringType
802        case -887709242: /*doseNumber*/ return this.doseNumber == null ? new Base[0] : new Base[] {this.doseNumber}; // StringType
803        case -1936727105: /*seriesDoses*/ return this.seriesDoses == null ? new Base[0] : new Base[] {this.seriesDoses}; // StringType
804        case 1171592021: /*supportingImmunization*/ return this.supportingImmunization == null ? new Base[0] : this.supportingImmunization.toArray(new Base[this.supportingImmunization.size()]); // Reference
805        case -1234160646: /*supportingPatientInformation*/ return this.supportingPatientInformation == null ? new Base[0] : this.supportingPatientInformation.toArray(new Base[this.supportingPatientInformation.size()]); // Reference
806        default: return super.getProperty(hash, name, checkValid);
807        }
808
809      }
810
811      @Override
812      public Base setProperty(int hash, String name, Base value) throws FHIRException {
813        switch (hash) {
814        case 664556354: // vaccineCode
815          this.getVaccineCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
816          return value;
817        case -319593813: // targetDisease
818          this.getTargetDisease().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
819          return value;
820        case 571105240: // contraindicatedVaccineCode
821          this.getContraindicatedVaccineCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
822          return value;
823        case 1904598477: // forecastStatus
824          this.forecastStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
825          return value;
826        case 1862115359: // forecastReason
827          this.getForecastReason().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
828          return value;
829        case 2087518867: // dateCriterion
830          this.getDateCriterion().add((ImmunizationRecommendationRecommendationDateCriterionComponent) value); // ImmunizationRecommendationRecommendationDateCriterionComponent
831          return value;
832        case -1724546052: // description
833          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
834          return value;
835        case -905838985: // series
836          this.series = TypeConvertor.castToString(value); // StringType
837          return value;
838        case -887709242: // doseNumber
839          this.doseNumber = TypeConvertor.castToString(value); // StringType
840          return value;
841        case -1936727105: // seriesDoses
842          this.seriesDoses = TypeConvertor.castToString(value); // StringType
843          return value;
844        case 1171592021: // supportingImmunization
845          this.getSupportingImmunization().add(TypeConvertor.castToReference(value)); // Reference
846          return value;
847        case -1234160646: // supportingPatientInformation
848          this.getSupportingPatientInformation().add(TypeConvertor.castToReference(value)); // Reference
849          return value;
850        default: return super.setProperty(hash, name, value);
851        }
852
853      }
854
855      @Override
856      public Base setProperty(String name, Base value) throws FHIRException {
857        if (name.equals("vaccineCode")) {
858          this.getVaccineCode().add(TypeConvertor.castToCodeableConcept(value));
859        } else if (name.equals("targetDisease")) {
860          this.getTargetDisease().add(TypeConvertor.castToCodeableConcept(value));
861        } else if (name.equals("contraindicatedVaccineCode")) {
862          this.getContraindicatedVaccineCode().add(TypeConvertor.castToCodeableConcept(value));
863        } else if (name.equals("forecastStatus")) {
864          this.forecastStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
865        } else if (name.equals("forecastReason")) {
866          this.getForecastReason().add(TypeConvertor.castToCodeableConcept(value));
867        } else if (name.equals("dateCriterion")) {
868          this.getDateCriterion().add((ImmunizationRecommendationRecommendationDateCriterionComponent) value);
869        } else if (name.equals("description")) {
870          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
871        } else if (name.equals("series")) {
872          this.series = TypeConvertor.castToString(value); // StringType
873        } else if (name.equals("doseNumber")) {
874          this.doseNumber = TypeConvertor.castToString(value); // StringType
875        } else if (name.equals("seriesDoses")) {
876          this.seriesDoses = TypeConvertor.castToString(value); // StringType
877        } else if (name.equals("supportingImmunization")) {
878          this.getSupportingImmunization().add(TypeConvertor.castToReference(value));
879        } else if (name.equals("supportingPatientInformation")) {
880          this.getSupportingPatientInformation().add(TypeConvertor.castToReference(value));
881        } else
882          return super.setProperty(name, value);
883        return value;
884      }
885
886      @Override
887      public Base makeProperty(int hash, String name) throws FHIRException {
888        switch (hash) {
889        case 664556354:  return addVaccineCode(); 
890        case -319593813:  return addTargetDisease(); 
891        case 571105240:  return addContraindicatedVaccineCode(); 
892        case 1904598477:  return getForecastStatus();
893        case 1862115359:  return addForecastReason(); 
894        case 2087518867:  return addDateCriterion(); 
895        case -1724546052:  return getDescriptionElement();
896        case -905838985:  return getSeriesElement();
897        case -887709242:  return getDoseNumberElement();
898        case -1936727105:  return getSeriesDosesElement();
899        case 1171592021:  return addSupportingImmunization(); 
900        case -1234160646:  return addSupportingPatientInformation(); 
901        default: return super.makeProperty(hash, name);
902        }
903
904      }
905
906      @Override
907      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
908        switch (hash) {
909        case 664556354: /*vaccineCode*/ return new String[] {"CodeableConcept"};
910        case -319593813: /*targetDisease*/ return new String[] {"CodeableConcept"};
911        case 571105240: /*contraindicatedVaccineCode*/ return new String[] {"CodeableConcept"};
912        case 1904598477: /*forecastStatus*/ return new String[] {"CodeableConcept"};
913        case 1862115359: /*forecastReason*/ return new String[] {"CodeableConcept"};
914        case 2087518867: /*dateCriterion*/ return new String[] {};
915        case -1724546052: /*description*/ return new String[] {"markdown"};
916        case -905838985: /*series*/ return new String[] {"string"};
917        case -887709242: /*doseNumber*/ return new String[] {"string"};
918        case -1936727105: /*seriesDoses*/ return new String[] {"string"};
919        case 1171592021: /*supportingImmunization*/ return new String[] {"Reference"};
920        case -1234160646: /*supportingPatientInformation*/ return new String[] {"Reference"};
921        default: return super.getTypesForProperty(hash, name);
922        }
923
924      }
925
926      @Override
927      public Base addChild(String name) throws FHIRException {
928        if (name.equals("vaccineCode")) {
929          return addVaccineCode();
930        }
931        else if (name.equals("targetDisease")) {
932          return addTargetDisease();
933        }
934        else if (name.equals("contraindicatedVaccineCode")) {
935          return addContraindicatedVaccineCode();
936        }
937        else if (name.equals("forecastStatus")) {
938          this.forecastStatus = new CodeableConcept();
939          return this.forecastStatus;
940        }
941        else if (name.equals("forecastReason")) {
942          return addForecastReason();
943        }
944        else if (name.equals("dateCriterion")) {
945          return addDateCriterion();
946        }
947        else if (name.equals("description")) {
948          throw new FHIRException("Cannot call addChild on a singleton property ImmunizationRecommendation.recommendation.description");
949        }
950        else if (name.equals("series")) {
951          throw new FHIRException("Cannot call addChild on a singleton property ImmunizationRecommendation.recommendation.series");
952        }
953        else if (name.equals("doseNumber")) {
954          throw new FHIRException("Cannot call addChild on a singleton property ImmunizationRecommendation.recommendation.doseNumber");
955        }
956        else if (name.equals("seriesDoses")) {
957          throw new FHIRException("Cannot call addChild on a singleton property ImmunizationRecommendation.recommendation.seriesDoses");
958        }
959        else if (name.equals("supportingImmunization")) {
960          return addSupportingImmunization();
961        }
962        else if (name.equals("supportingPatientInformation")) {
963          return addSupportingPatientInformation();
964        }
965        else
966          return super.addChild(name);
967      }
968
969      public ImmunizationRecommendationRecommendationComponent copy() {
970        ImmunizationRecommendationRecommendationComponent dst = new ImmunizationRecommendationRecommendationComponent();
971        copyValues(dst);
972        return dst;
973      }
974
975      public void copyValues(ImmunizationRecommendationRecommendationComponent dst) {
976        super.copyValues(dst);
977        if (vaccineCode != null) {
978          dst.vaccineCode = new ArrayList<CodeableConcept>();
979          for (CodeableConcept i : vaccineCode)
980            dst.vaccineCode.add(i.copy());
981        };
982        if (targetDisease != null) {
983          dst.targetDisease = new ArrayList<CodeableConcept>();
984          for (CodeableConcept i : targetDisease)
985            dst.targetDisease.add(i.copy());
986        };
987        if (contraindicatedVaccineCode != null) {
988          dst.contraindicatedVaccineCode = new ArrayList<CodeableConcept>();
989          for (CodeableConcept i : contraindicatedVaccineCode)
990            dst.contraindicatedVaccineCode.add(i.copy());
991        };
992        dst.forecastStatus = forecastStatus == null ? null : forecastStatus.copy();
993        if (forecastReason != null) {
994          dst.forecastReason = new ArrayList<CodeableConcept>();
995          for (CodeableConcept i : forecastReason)
996            dst.forecastReason.add(i.copy());
997        };
998        if (dateCriterion != null) {
999          dst.dateCriterion = new ArrayList<ImmunizationRecommendationRecommendationDateCriterionComponent>();
1000          for (ImmunizationRecommendationRecommendationDateCriterionComponent i : dateCriterion)
1001            dst.dateCriterion.add(i.copy());
1002        };
1003        dst.description = description == null ? null : description.copy();
1004        dst.series = series == null ? null : series.copy();
1005        dst.doseNumber = doseNumber == null ? null : doseNumber.copy();
1006        dst.seriesDoses = seriesDoses == null ? null : seriesDoses.copy();
1007        if (supportingImmunization != null) {
1008          dst.supportingImmunization = new ArrayList<Reference>();
1009          for (Reference i : supportingImmunization)
1010            dst.supportingImmunization.add(i.copy());
1011        };
1012        if (supportingPatientInformation != null) {
1013          dst.supportingPatientInformation = new ArrayList<Reference>();
1014          for (Reference i : supportingPatientInformation)
1015            dst.supportingPatientInformation.add(i.copy());
1016        };
1017      }
1018
1019      @Override
1020      public boolean equalsDeep(Base other_) {
1021        if (!super.equalsDeep(other_))
1022          return false;
1023        if (!(other_ instanceof ImmunizationRecommendationRecommendationComponent))
1024          return false;
1025        ImmunizationRecommendationRecommendationComponent o = (ImmunizationRecommendationRecommendationComponent) other_;
1026        return compareDeep(vaccineCode, o.vaccineCode, true) && compareDeep(targetDisease, o.targetDisease, true)
1027           && compareDeep(contraindicatedVaccineCode, o.contraindicatedVaccineCode, true) && compareDeep(forecastStatus, o.forecastStatus, true)
1028           && compareDeep(forecastReason, o.forecastReason, true) && compareDeep(dateCriterion, o.dateCriterion, true)
1029           && compareDeep(description, o.description, true) && compareDeep(series, o.series, true) && compareDeep(doseNumber, o.doseNumber, true)
1030           && compareDeep(seriesDoses, o.seriesDoses, true) && compareDeep(supportingImmunization, o.supportingImmunization, true)
1031           && compareDeep(supportingPatientInformation, o.supportingPatientInformation, true);
1032      }
1033
1034      @Override
1035      public boolean equalsShallow(Base other_) {
1036        if (!super.equalsShallow(other_))
1037          return false;
1038        if (!(other_ instanceof ImmunizationRecommendationRecommendationComponent))
1039          return false;
1040        ImmunizationRecommendationRecommendationComponent o = (ImmunizationRecommendationRecommendationComponent) other_;
1041        return compareValues(description, o.description, true) && compareValues(series, o.series, true) && compareValues(doseNumber, o.doseNumber, true)
1042           && compareValues(seriesDoses, o.seriesDoses, true);
1043      }
1044
1045      public boolean isEmpty() {
1046        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(vaccineCode, targetDisease
1047          , contraindicatedVaccineCode, forecastStatus, forecastReason, dateCriterion, description
1048          , series, doseNumber, seriesDoses, supportingImmunization, supportingPatientInformation
1049          );
1050      }
1051
1052  public String fhirType() {
1053    return "ImmunizationRecommendation.recommendation";
1054
1055  }
1056
1057  }
1058
1059    @Block()
1060    public static class ImmunizationRecommendationRecommendationDateCriterionComponent extends BackboneElement implements IBaseBackboneElement {
1061        /**
1062         * Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.
1063         */
1064        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
1065        @Description(shortDefinition="Type of date", formalDefinition="Date classification of recommendation.  For example, earliest date to give, latest date to give, etc." )
1066        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/immunization-recommendation-date-criterion")
1067        protected CodeableConcept code;
1068
1069        /**
1070         * The date whose meaning is specified by dateCriterion.code.
1071         */
1072        @Child(name = "value", type = {DateTimeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1073        @Description(shortDefinition="Recommended date", formalDefinition="The date whose meaning is specified by dateCriterion.code." )
1074        protected DateTimeType value;
1075
1076        private static final long serialVersionUID = 1036994566L;
1077
1078    /**
1079     * Constructor
1080     */
1081      public ImmunizationRecommendationRecommendationDateCriterionComponent() {
1082        super();
1083      }
1084
1085    /**
1086     * Constructor
1087     */
1088      public ImmunizationRecommendationRecommendationDateCriterionComponent(CodeableConcept code, Date value) {
1089        super();
1090        this.setCode(code);
1091        this.setValue(value);
1092      }
1093
1094        /**
1095         * @return {@link #code} (Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.)
1096         */
1097        public CodeableConcept getCode() { 
1098          if (this.code == null)
1099            if (Configuration.errorOnAutoCreate())
1100              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationDateCriterionComponent.code");
1101            else if (Configuration.doAutoCreate())
1102              this.code = new CodeableConcept(); // cc
1103          return this.code;
1104        }
1105
1106        public boolean hasCode() { 
1107          return this.code != null && !this.code.isEmpty();
1108        }
1109
1110        /**
1111         * @param value {@link #code} (Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.)
1112         */
1113        public ImmunizationRecommendationRecommendationDateCriterionComponent setCode(CodeableConcept value) { 
1114          this.code = value;
1115          return this;
1116        }
1117
1118        /**
1119         * @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
1120         */
1121        public DateTimeType getValueElement() { 
1122          if (this.value == null)
1123            if (Configuration.errorOnAutoCreate())
1124              throw new Error("Attempt to auto-create ImmunizationRecommendationRecommendationDateCriterionComponent.value");
1125            else if (Configuration.doAutoCreate())
1126              this.value = new DateTimeType(); // bb
1127          return this.value;
1128        }
1129
1130        public boolean hasValueElement() { 
1131          return this.value != null && !this.value.isEmpty();
1132        }
1133
1134        public boolean hasValue() { 
1135          return this.value != null && !this.value.isEmpty();
1136        }
1137
1138        /**
1139         * @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
1140         */
1141        public ImmunizationRecommendationRecommendationDateCriterionComponent setValueElement(DateTimeType value) { 
1142          this.value = value;
1143          return this;
1144        }
1145
1146        /**
1147         * @return The date whose meaning is specified by dateCriterion.code.
1148         */
1149        public Date getValue() { 
1150          return this.value == null ? null : this.value.getValue();
1151        }
1152
1153        /**
1154         * @param value The date whose meaning is specified by dateCriterion.code.
1155         */
1156        public ImmunizationRecommendationRecommendationDateCriterionComponent setValue(Date value) { 
1157            if (this.value == null)
1158              this.value = new DateTimeType();
1159            this.value.setValue(value);
1160          return this;
1161        }
1162
1163        protected void listChildren(List<Property> children) {
1164          super.listChildren(children);
1165          children.add(new Property("code", "CodeableConcept", "Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.", 0, 1, code));
1166          children.add(new Property("value", "dateTime", "The date whose meaning is specified by dateCriterion.code.", 0, 1, value));
1167        }
1168
1169        @Override
1170        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1171          switch (_hash) {
1172          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.", 0, 1, code);
1173          case 111972721: /*value*/  return new Property("value", "dateTime", "The date whose meaning is specified by dateCriterion.code.", 0, 1, value);
1174          default: return super.getNamedProperty(_hash, _name, _checkValid);
1175          }
1176
1177        }
1178
1179      @Override
1180      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1181        switch (hash) {
1182        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1183        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DateTimeType
1184        default: return super.getProperty(hash, name, checkValid);
1185        }
1186
1187      }
1188
1189      @Override
1190      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1191        switch (hash) {
1192        case 3059181: // code
1193          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1194          return value;
1195        case 111972721: // value
1196          this.value = TypeConvertor.castToDateTime(value); // DateTimeType
1197          return value;
1198        default: return super.setProperty(hash, name, value);
1199        }
1200
1201      }
1202
1203      @Override
1204      public Base setProperty(String name, Base value) throws FHIRException {
1205        if (name.equals("code")) {
1206          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1207        } else if (name.equals("value")) {
1208          this.value = TypeConvertor.castToDateTime(value); // DateTimeType
1209        } else
1210          return super.setProperty(name, value);
1211        return value;
1212      }
1213
1214      @Override
1215      public Base makeProperty(int hash, String name) throws FHIRException {
1216        switch (hash) {
1217        case 3059181:  return getCode();
1218        case 111972721:  return getValueElement();
1219        default: return super.makeProperty(hash, name);
1220        }
1221
1222      }
1223
1224      @Override
1225      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1226        switch (hash) {
1227        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1228        case 111972721: /*value*/ return new String[] {"dateTime"};
1229        default: return super.getTypesForProperty(hash, name);
1230        }
1231
1232      }
1233
1234      @Override
1235      public Base addChild(String name) throws FHIRException {
1236        if (name.equals("code")) {
1237          this.code = new CodeableConcept();
1238          return this.code;
1239        }
1240        else if (name.equals("value")) {
1241          throw new FHIRException("Cannot call addChild on a singleton property ImmunizationRecommendation.recommendation.dateCriterion.value");
1242        }
1243        else
1244          return super.addChild(name);
1245      }
1246
1247      public ImmunizationRecommendationRecommendationDateCriterionComponent copy() {
1248        ImmunizationRecommendationRecommendationDateCriterionComponent dst = new ImmunizationRecommendationRecommendationDateCriterionComponent();
1249        copyValues(dst);
1250        return dst;
1251      }
1252
1253      public void copyValues(ImmunizationRecommendationRecommendationDateCriterionComponent dst) {
1254        super.copyValues(dst);
1255        dst.code = code == null ? null : code.copy();
1256        dst.value = value == null ? null : value.copy();
1257      }
1258
1259      @Override
1260      public boolean equalsDeep(Base other_) {
1261        if (!super.equalsDeep(other_))
1262          return false;
1263        if (!(other_ instanceof ImmunizationRecommendationRecommendationDateCriterionComponent))
1264          return false;
1265        ImmunizationRecommendationRecommendationDateCriterionComponent o = (ImmunizationRecommendationRecommendationDateCriterionComponent) other_;
1266        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
1267      }
1268
1269      @Override
1270      public boolean equalsShallow(Base other_) {
1271        if (!super.equalsShallow(other_))
1272          return false;
1273        if (!(other_ instanceof ImmunizationRecommendationRecommendationDateCriterionComponent))
1274          return false;
1275        ImmunizationRecommendationRecommendationDateCriterionComponent o = (ImmunizationRecommendationRecommendationDateCriterionComponent) other_;
1276        return compareValues(value, o.value, true);
1277      }
1278
1279      public boolean isEmpty() {
1280        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
1281      }
1282
1283  public String fhirType() {
1284    return "ImmunizationRecommendation.recommendation.dateCriterion";
1285
1286  }
1287
1288  }
1289
1290    /**
1291     * A unique identifier assigned to this particular recommendation record.
1292     */
1293    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1294    @Description(shortDefinition="Business identifier", formalDefinition="A unique identifier assigned to this particular recommendation record." )
1295    protected List<Identifier> identifier;
1296
1297    /**
1298     * The patient the recommendation(s) are for.
1299     */
1300    @Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1, modifier=false, summary=true)
1301    @Description(shortDefinition="Who this profile is for", formalDefinition="The patient the recommendation(s) are for." )
1302    protected Reference patient;
1303
1304    /**
1305     * The date the immunization recommendation(s) were created.
1306     */
1307    @Child(name = "date", type = {DateTimeType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1308    @Description(shortDefinition="Date recommendation(s) created", formalDefinition="The date the immunization recommendation(s) were created." )
1309    protected DateTimeType date;
1310
1311    /**
1312     * Indicates the authority who published the protocol (e.g. ACIP).
1313     */
1314    @Child(name = "authority", type = {Organization.class}, order=3, min=0, max=1, modifier=false, summary=false)
1315    @Description(shortDefinition="Who is responsible for protocol", formalDefinition="Indicates the authority who published the protocol (e.g. ACIP)." )
1316    protected Reference authority;
1317
1318    /**
1319     * Vaccine administration recommendations.
1320     */
1321    @Child(name = "recommendation", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1322    @Description(shortDefinition="Vaccine administration recommendations", formalDefinition="Vaccine administration recommendations." )
1323    protected List<ImmunizationRecommendationRecommendationComponent> recommendation;
1324
1325    private static final long serialVersionUID = 534427937L;
1326
1327  /**
1328   * Constructor
1329   */
1330    public ImmunizationRecommendation() {
1331      super();
1332    }
1333
1334  /**
1335   * Constructor
1336   */
1337    public ImmunizationRecommendation(Reference patient, Date date, ImmunizationRecommendationRecommendationComponent recommendation) {
1338      super();
1339      this.setPatient(patient);
1340      this.setDate(date);
1341      this.addRecommendation(recommendation);
1342    }
1343
1344    /**
1345     * @return {@link #identifier} (A unique identifier assigned to this particular recommendation record.)
1346     */
1347    public List<Identifier> getIdentifier() { 
1348      if (this.identifier == null)
1349        this.identifier = new ArrayList<Identifier>();
1350      return this.identifier;
1351    }
1352
1353    /**
1354     * @return Returns a reference to <code>this</code> for easy method chaining
1355     */
1356    public ImmunizationRecommendation setIdentifier(List<Identifier> theIdentifier) { 
1357      this.identifier = theIdentifier;
1358      return this;
1359    }
1360
1361    public boolean hasIdentifier() { 
1362      if (this.identifier == null)
1363        return false;
1364      for (Identifier item : this.identifier)
1365        if (!item.isEmpty())
1366          return true;
1367      return false;
1368    }
1369
1370    public Identifier addIdentifier() { //3
1371      Identifier t = new Identifier();
1372      if (this.identifier == null)
1373        this.identifier = new ArrayList<Identifier>();
1374      this.identifier.add(t);
1375      return t;
1376    }
1377
1378    public ImmunizationRecommendation addIdentifier(Identifier t) { //3
1379      if (t == null)
1380        return this;
1381      if (this.identifier == null)
1382        this.identifier = new ArrayList<Identifier>();
1383      this.identifier.add(t);
1384      return this;
1385    }
1386
1387    /**
1388     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1389     */
1390    public Identifier getIdentifierFirstRep() { 
1391      if (getIdentifier().isEmpty()) {
1392        addIdentifier();
1393      }
1394      return getIdentifier().get(0);
1395    }
1396
1397    /**
1398     * @return {@link #patient} (The patient the recommendation(s) are for.)
1399     */
1400    public Reference getPatient() { 
1401      if (this.patient == null)
1402        if (Configuration.errorOnAutoCreate())
1403          throw new Error("Attempt to auto-create ImmunizationRecommendation.patient");
1404        else if (Configuration.doAutoCreate())
1405          this.patient = new Reference(); // cc
1406      return this.patient;
1407    }
1408
1409    public boolean hasPatient() { 
1410      return this.patient != null && !this.patient.isEmpty();
1411    }
1412
1413    /**
1414     * @param value {@link #patient} (The patient the recommendation(s) are for.)
1415     */
1416    public ImmunizationRecommendation setPatient(Reference value) { 
1417      this.patient = value;
1418      return this;
1419    }
1420
1421    /**
1422     * @return {@link #date} (The date the immunization recommendation(s) were created.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1423     */
1424    public DateTimeType getDateElement() { 
1425      if (this.date == null)
1426        if (Configuration.errorOnAutoCreate())
1427          throw new Error("Attempt to auto-create ImmunizationRecommendation.date");
1428        else if (Configuration.doAutoCreate())
1429          this.date = new DateTimeType(); // bb
1430      return this.date;
1431    }
1432
1433    public boolean hasDateElement() { 
1434      return this.date != null && !this.date.isEmpty();
1435    }
1436
1437    public boolean hasDate() { 
1438      return this.date != null && !this.date.isEmpty();
1439    }
1440
1441    /**
1442     * @param value {@link #date} (The date the immunization recommendation(s) were created.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1443     */
1444    public ImmunizationRecommendation setDateElement(DateTimeType value) { 
1445      this.date = value;
1446      return this;
1447    }
1448
1449    /**
1450     * @return The date the immunization recommendation(s) were created.
1451     */
1452    public Date getDate() { 
1453      return this.date == null ? null : this.date.getValue();
1454    }
1455
1456    /**
1457     * @param value The date the immunization recommendation(s) were created.
1458     */
1459    public ImmunizationRecommendation setDate(Date value) { 
1460        if (this.date == null)
1461          this.date = new DateTimeType();
1462        this.date.setValue(value);
1463      return this;
1464    }
1465
1466    /**
1467     * @return {@link #authority} (Indicates the authority who published the protocol (e.g. ACIP).)
1468     */
1469    public Reference getAuthority() { 
1470      if (this.authority == null)
1471        if (Configuration.errorOnAutoCreate())
1472          throw new Error("Attempt to auto-create ImmunizationRecommendation.authority");
1473        else if (Configuration.doAutoCreate())
1474          this.authority = new Reference(); // cc
1475      return this.authority;
1476    }
1477
1478    public boolean hasAuthority() { 
1479      return this.authority != null && !this.authority.isEmpty();
1480    }
1481
1482    /**
1483     * @param value {@link #authority} (Indicates the authority who published the protocol (e.g. ACIP).)
1484     */
1485    public ImmunizationRecommendation setAuthority(Reference value) { 
1486      this.authority = value;
1487      return this;
1488    }
1489
1490    /**
1491     * @return {@link #recommendation} (Vaccine administration recommendations.)
1492     */
1493    public List<ImmunizationRecommendationRecommendationComponent> getRecommendation() { 
1494      if (this.recommendation == null)
1495        this.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1496      return this.recommendation;
1497    }
1498
1499    /**
1500     * @return Returns a reference to <code>this</code> for easy method chaining
1501     */
1502    public ImmunizationRecommendation setRecommendation(List<ImmunizationRecommendationRecommendationComponent> theRecommendation) { 
1503      this.recommendation = theRecommendation;
1504      return this;
1505    }
1506
1507    public boolean hasRecommendation() { 
1508      if (this.recommendation == null)
1509        return false;
1510      for (ImmunizationRecommendationRecommendationComponent item : this.recommendation)
1511        if (!item.isEmpty())
1512          return true;
1513      return false;
1514    }
1515
1516    public ImmunizationRecommendationRecommendationComponent addRecommendation() { //3
1517      ImmunizationRecommendationRecommendationComponent t = new ImmunizationRecommendationRecommendationComponent();
1518      if (this.recommendation == null)
1519        this.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1520      this.recommendation.add(t);
1521      return t;
1522    }
1523
1524    public ImmunizationRecommendation addRecommendation(ImmunizationRecommendationRecommendationComponent t) { //3
1525      if (t == null)
1526        return this;
1527      if (this.recommendation == null)
1528        this.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1529      this.recommendation.add(t);
1530      return this;
1531    }
1532
1533    /**
1534     * @return The first repetition of repeating field {@link #recommendation}, creating it if it does not already exist {3}
1535     */
1536    public ImmunizationRecommendationRecommendationComponent getRecommendationFirstRep() { 
1537      if (getRecommendation().isEmpty()) {
1538        addRecommendation();
1539      }
1540      return getRecommendation().get(0);
1541    }
1542
1543      protected void listChildren(List<Property> children) {
1544        super.listChildren(children);
1545        children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this particular recommendation record.", 0, java.lang.Integer.MAX_VALUE, identifier));
1546        children.add(new Property("patient", "Reference(Patient)", "The patient the recommendation(s) are for.", 0, 1, patient));
1547        children.add(new Property("date", "dateTime", "The date the immunization recommendation(s) were created.", 0, 1, date));
1548        children.add(new Property("authority", "Reference(Organization)", "Indicates the authority who published the protocol (e.g. ACIP).", 0, 1, authority));
1549        children.add(new Property("recommendation", "", "Vaccine administration recommendations.", 0, java.lang.Integer.MAX_VALUE, recommendation));
1550      }
1551
1552      @Override
1553      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1554        switch (_hash) {
1555        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A unique identifier assigned to this particular recommendation record.", 0, java.lang.Integer.MAX_VALUE, identifier);
1556        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "The patient the recommendation(s) are for.", 0, 1, patient);
1557        case 3076014: /*date*/  return new Property("date", "dateTime", "The date the immunization recommendation(s) were created.", 0, 1, date);
1558        case 1475610435: /*authority*/  return new Property("authority", "Reference(Organization)", "Indicates the authority who published the protocol (e.g. ACIP).", 0, 1, authority);
1559        case -1028636743: /*recommendation*/  return new Property("recommendation", "", "Vaccine administration recommendations.", 0, java.lang.Integer.MAX_VALUE, recommendation);
1560        default: return super.getNamedProperty(_hash, _name, _checkValid);
1561        }
1562
1563      }
1564
1565      @Override
1566      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1567        switch (hash) {
1568        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1569        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1570        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1571        case 1475610435: /*authority*/ return this.authority == null ? new Base[0] : new Base[] {this.authority}; // Reference
1572        case -1028636743: /*recommendation*/ return this.recommendation == null ? new Base[0] : this.recommendation.toArray(new Base[this.recommendation.size()]); // ImmunizationRecommendationRecommendationComponent
1573        default: return super.getProperty(hash, name, checkValid);
1574        }
1575
1576      }
1577
1578      @Override
1579      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1580        switch (hash) {
1581        case -1618432855: // identifier
1582          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1583          return value;
1584        case -791418107: // patient
1585          this.patient = TypeConvertor.castToReference(value); // Reference
1586          return value;
1587        case 3076014: // date
1588          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1589          return value;
1590        case 1475610435: // authority
1591          this.authority = TypeConvertor.castToReference(value); // Reference
1592          return value;
1593        case -1028636743: // recommendation
1594          this.getRecommendation().add((ImmunizationRecommendationRecommendationComponent) value); // ImmunizationRecommendationRecommendationComponent
1595          return value;
1596        default: return super.setProperty(hash, name, value);
1597        }
1598
1599      }
1600
1601      @Override
1602      public Base setProperty(String name, Base value) throws FHIRException {
1603        if (name.equals("identifier")) {
1604          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1605        } else if (name.equals("patient")) {
1606          this.patient = TypeConvertor.castToReference(value); // Reference
1607        } else if (name.equals("date")) {
1608          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1609        } else if (name.equals("authority")) {
1610          this.authority = TypeConvertor.castToReference(value); // Reference
1611        } else if (name.equals("recommendation")) {
1612          this.getRecommendation().add((ImmunizationRecommendationRecommendationComponent) value);
1613        } else
1614          return super.setProperty(name, value);
1615        return value;
1616      }
1617
1618      @Override
1619      public Base makeProperty(int hash, String name) throws FHIRException {
1620        switch (hash) {
1621        case -1618432855:  return addIdentifier(); 
1622        case -791418107:  return getPatient();
1623        case 3076014:  return getDateElement();
1624        case 1475610435:  return getAuthority();
1625        case -1028636743:  return addRecommendation(); 
1626        default: return super.makeProperty(hash, name);
1627        }
1628
1629      }
1630
1631      @Override
1632      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1633        switch (hash) {
1634        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1635        case -791418107: /*patient*/ return new String[] {"Reference"};
1636        case 3076014: /*date*/ return new String[] {"dateTime"};
1637        case 1475610435: /*authority*/ return new String[] {"Reference"};
1638        case -1028636743: /*recommendation*/ return new String[] {};
1639        default: return super.getTypesForProperty(hash, name);
1640        }
1641
1642      }
1643
1644      @Override
1645      public Base addChild(String name) throws FHIRException {
1646        if (name.equals("identifier")) {
1647          return addIdentifier();
1648        }
1649        else if (name.equals("patient")) {
1650          this.patient = new Reference();
1651          return this.patient;
1652        }
1653        else if (name.equals("date")) {
1654          throw new FHIRException("Cannot call addChild on a singleton property ImmunizationRecommendation.date");
1655        }
1656        else if (name.equals("authority")) {
1657          this.authority = new Reference();
1658          return this.authority;
1659        }
1660        else if (name.equals("recommendation")) {
1661          return addRecommendation();
1662        }
1663        else
1664          return super.addChild(name);
1665      }
1666
1667  public String fhirType() {
1668    return "ImmunizationRecommendation";
1669
1670  }
1671
1672      public ImmunizationRecommendation copy() {
1673        ImmunizationRecommendation dst = new ImmunizationRecommendation();
1674        copyValues(dst);
1675        return dst;
1676      }
1677
1678      public void copyValues(ImmunizationRecommendation dst) {
1679        super.copyValues(dst);
1680        if (identifier != null) {
1681          dst.identifier = new ArrayList<Identifier>();
1682          for (Identifier i : identifier)
1683            dst.identifier.add(i.copy());
1684        };
1685        dst.patient = patient == null ? null : patient.copy();
1686        dst.date = date == null ? null : date.copy();
1687        dst.authority = authority == null ? null : authority.copy();
1688        if (recommendation != null) {
1689          dst.recommendation = new ArrayList<ImmunizationRecommendationRecommendationComponent>();
1690          for (ImmunizationRecommendationRecommendationComponent i : recommendation)
1691            dst.recommendation.add(i.copy());
1692        };
1693      }
1694
1695      protected ImmunizationRecommendation typedCopy() {
1696        return copy();
1697      }
1698
1699      @Override
1700      public boolean equalsDeep(Base other_) {
1701        if (!super.equalsDeep(other_))
1702          return false;
1703        if (!(other_ instanceof ImmunizationRecommendation))
1704          return false;
1705        ImmunizationRecommendation o = (ImmunizationRecommendation) other_;
1706        return compareDeep(identifier, o.identifier, true) && compareDeep(patient, o.patient, true) && compareDeep(date, o.date, true)
1707           && compareDeep(authority, o.authority, true) && compareDeep(recommendation, o.recommendation, true)
1708          ;
1709      }
1710
1711      @Override
1712      public boolean equalsShallow(Base other_) {
1713        if (!super.equalsShallow(other_))
1714          return false;
1715        if (!(other_ instanceof ImmunizationRecommendation))
1716          return false;
1717        ImmunizationRecommendation o = (ImmunizationRecommendation) other_;
1718        return compareValues(date, o.date, true);
1719      }
1720
1721      public boolean isEmpty() {
1722        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, patient, date
1723          , authority, recommendation);
1724      }
1725
1726  @Override
1727  public ResourceType getResourceType() {
1728    return ResourceType.ImmunizationRecommendation;
1729   }
1730
1731 /**
1732   * Search parameter: <b>information</b>
1733   * <p>
1734   * Description: <b>Patient observations supporting recommendation</b><br>
1735   * Type: <b>reference</b><br>
1736   * Path: <b>ImmunizationRecommendation.recommendation.supportingPatientInformation</b><br>
1737   * </p>
1738   */
1739  @SearchParamDefinition(name="information", path="ImmunizationRecommendation.recommendation.supportingPatientInformation", description="Patient observations supporting recommendation", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
1740  public static final String SP_INFORMATION = "information";
1741 /**
1742   * <b>Fluent Client</b> search parameter constant for <b>information</b>
1743   * <p>
1744   * Description: <b>Patient observations supporting recommendation</b><br>
1745   * Type: <b>reference</b><br>
1746   * Path: <b>ImmunizationRecommendation.recommendation.supportingPatientInformation</b><br>
1747   * </p>
1748   */
1749  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INFORMATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INFORMATION);
1750
1751/**
1752   * Constant for fluent queries to be used to add include statements. Specifies
1753   * the path value of "<b>ImmunizationRecommendation:information</b>".
1754   */
1755  public static final ca.uhn.fhir.model.api.Include INCLUDE_INFORMATION = new ca.uhn.fhir.model.api.Include("ImmunizationRecommendation:information").toLocked();
1756
1757 /**
1758   * Search parameter: <b>status</b>
1759   * <p>
1760   * Description: <b>Vaccine recommendation status</b><br>
1761   * Type: <b>token</b><br>
1762   * Path: <b>ImmunizationRecommendation.recommendation.forecastStatus</b><br>
1763   * </p>
1764   */
1765  @SearchParamDefinition(name="status", path="ImmunizationRecommendation.recommendation.forecastStatus", description="Vaccine recommendation status", type="token" )
1766  public static final String SP_STATUS = "status";
1767 /**
1768   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1769   * <p>
1770   * Description: <b>Vaccine recommendation status</b><br>
1771   * Type: <b>token</b><br>
1772   * Path: <b>ImmunizationRecommendation.recommendation.forecastStatus</b><br>
1773   * </p>
1774   */
1775  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1776
1777 /**
1778   * Search parameter: <b>support</b>
1779   * <p>
1780   * Description: <b>Past immunizations supporting recommendation</b><br>
1781   * Type: <b>reference</b><br>
1782   * Path: <b>ImmunizationRecommendation.recommendation.supportingImmunization</b><br>
1783   * </p>
1784   */
1785  @SearchParamDefinition(name="support", path="ImmunizationRecommendation.recommendation.supportingImmunization", description="Past immunizations supporting recommendation", type="reference", target={Immunization.class, ImmunizationEvaluation.class } )
1786  public static final String SP_SUPPORT = "support";
1787 /**
1788   * <b>Fluent Client</b> search parameter constant for <b>support</b>
1789   * <p>
1790   * Description: <b>Past immunizations supporting recommendation</b><br>
1791   * Type: <b>reference</b><br>
1792   * Path: <b>ImmunizationRecommendation.recommendation.supportingImmunization</b><br>
1793   * </p>
1794   */
1795  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUPPORT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUPPORT);
1796
1797/**
1798   * Constant for fluent queries to be used to add include statements. Specifies
1799   * the path value of "<b>ImmunizationRecommendation:support</b>".
1800   */
1801  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUPPORT = new ca.uhn.fhir.model.api.Include("ImmunizationRecommendation:support").toLocked();
1802
1803 /**
1804   * Search parameter: <b>target-disease</b>
1805   * <p>
1806   * Description: <b>Disease to be immunized against</b><br>
1807   * Type: <b>token</b><br>
1808   * Path: <b>ImmunizationRecommendation.recommendation.targetDisease</b><br>
1809   * </p>
1810   */
1811  @SearchParamDefinition(name="target-disease", path="ImmunizationRecommendation.recommendation.targetDisease", description="Disease to be immunized against", type="token" )
1812  public static final String SP_TARGET_DISEASE = "target-disease";
1813 /**
1814   * <b>Fluent Client</b> search parameter constant for <b>target-disease</b>
1815   * <p>
1816   * Description: <b>Disease to be immunized against</b><br>
1817   * Type: <b>token</b><br>
1818   * Path: <b>ImmunizationRecommendation.recommendation.targetDisease</b><br>
1819   * </p>
1820   */
1821  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TARGET_DISEASE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TARGET_DISEASE);
1822
1823 /**
1824   * Search parameter: <b>vaccine-type</b>
1825   * <p>
1826   * Description: <b>Vaccine  or vaccine group recommendation applies to</b><br>
1827   * Type: <b>token</b><br>
1828   * Path: <b>ImmunizationRecommendation.recommendation.vaccineCode</b><br>
1829   * </p>
1830   */
1831  @SearchParamDefinition(name="vaccine-type", path="ImmunizationRecommendation.recommendation.vaccineCode", description="Vaccine  or vaccine group recommendation applies to", type="token" )
1832  public static final String SP_VACCINE_TYPE = "vaccine-type";
1833 /**
1834   * <b>Fluent Client</b> search parameter constant for <b>vaccine-type</b>
1835   * <p>
1836   * Description: <b>Vaccine  or vaccine group recommendation applies to</b><br>
1837   * Type: <b>token</b><br>
1838   * Path: <b>ImmunizationRecommendation.recommendation.vaccineCode</b><br>
1839   * </p>
1840   */
1841  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VACCINE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VACCINE_TYPE);
1842
1843 /**
1844   * Search parameter: <b>date</b>
1845   * <p>
1846   * Description: <b>Multiple Resources: 
1847
1848* [AdverseEvent](adverseevent.html): When the event occurred
1849* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
1850* [Appointment](appointment.html): Appointment date/time.
1851* [AuditEvent](auditevent.html): Time when the event was recorded
1852* [CarePlan](careplan.html): Time period plan covers
1853* [CareTeam](careteam.html): A date within the coverage time period.
1854* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
1855* [Composition](composition.html): Composition editing time
1856* [Consent](consent.html): When consent was agreed to
1857* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
1858* [DocumentReference](documentreference.html): When this document reference was created
1859* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
1860* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
1861* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
1862* [Flag](flag.html): Time period when flag is active
1863* [Immunization](immunization.html): Vaccination  (non)-Administration Date
1864* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
1865* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
1866* [Invoice](invoice.html): Invoice date / posting date
1867* [List](list.html): When the list was prepared
1868* [MeasureReport](measurereport.html): The date of the measure report
1869* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
1870* [Observation](observation.html): Clinically relevant time/time-period for observation
1871* [Procedure](procedure.html): When the procedure occurred or is occurring
1872* [ResearchSubject](researchsubject.html): Start and end of participation
1873* [RiskAssessment](riskassessment.html): When was assessment made?
1874* [SupplyRequest](supplyrequest.html): When the request was made
1875</b><br>
1876   * Type: <b>date</b><br>
1877   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
1878   * </p>
1879   */
1880  @SearchParamDefinition(name="date", path="AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): When the event occurred\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [Appointment](appointment.html): Appointment date/time.\r\n* [AuditEvent](auditevent.html): Time when the event was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [DocumentReference](documentreference.html): When this document reference was created\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created\r\n* [Invoice](invoice.html): Invoice date / posting date\r\n* [List](list.html): When the list was prepared\r\n* [MeasureReport](measurereport.html): The date of the measure report\r\n* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication\r\n* [Observation](observation.html): Clinically relevant time/time-period for observation\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [ResearchSubject](researchsubject.html): Start and end of participation\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
1881  public static final String SP_DATE = "date";
1882 /**
1883   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1884   * <p>
1885   * Description: <b>Multiple Resources: 
1886
1887* [AdverseEvent](adverseevent.html): When the event occurred
1888* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
1889* [Appointment](appointment.html): Appointment date/time.
1890* [AuditEvent](auditevent.html): Time when the event was recorded
1891* [CarePlan](careplan.html): Time period plan covers
1892* [CareTeam](careteam.html): A date within the coverage time period.
1893* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
1894* [Composition](composition.html): Composition editing time
1895* [Consent](consent.html): When consent was agreed to
1896* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
1897* [DocumentReference](documentreference.html): When this document reference was created
1898* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
1899* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
1900* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
1901* [Flag](flag.html): Time period when flag is active
1902* [Immunization](immunization.html): Vaccination  (non)-Administration Date
1903* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
1904* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
1905* [Invoice](invoice.html): Invoice date / posting date
1906* [List](list.html): When the list was prepared
1907* [MeasureReport](measurereport.html): The date of the measure report
1908* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
1909* [Observation](observation.html): Clinically relevant time/time-period for observation
1910* [Procedure](procedure.html): When the procedure occurred or is occurring
1911* [ResearchSubject](researchsubject.html): Start and end of participation
1912* [RiskAssessment](riskassessment.html): When was assessment made?
1913* [SupplyRequest](supplyrequest.html): When the request was made
1914</b><br>
1915   * Type: <b>date</b><br>
1916   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
1917   * </p>
1918   */
1919  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1920
1921 /**
1922   * Search parameter: <b>identifier</b>
1923   * <p>
1924   * Description: <b>Multiple Resources: 
1925
1926* [Account](account.html): Account number
1927* [AdverseEvent](adverseevent.html): Business identifier for the event
1928* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1929* [Appointment](appointment.html): An Identifier of the Appointment
1930* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
1931* [Basic](basic.html): Business identifier
1932* [BodyStructure](bodystructure.html): Bodystructure identifier
1933* [CarePlan](careplan.html): External Ids for this plan
1934* [CareTeam](careteam.html): External Ids for this team
1935* [ChargeItem](chargeitem.html): Business Identifier for item
1936* [Claim](claim.html): The primary identifier of the financial resource
1937* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
1938* [ClinicalImpression](clinicalimpression.html): Business identifier
1939* [Communication](communication.html): Unique identifier
1940* [CommunicationRequest](communicationrequest.html): Unique identifier
1941* [Composition](composition.html): Version-independent identifier for the Composition
1942* [Condition](condition.html): A unique identifier of the condition record
1943* [Consent](consent.html): Identifier for this record (external references)
1944* [Contract](contract.html): The identity of the contract
1945* [Coverage](coverage.html): The primary identifier of the insured and the coverage
1946* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
1947* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
1948* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1949* [DeviceRequest](devicerequest.html): Business identifier for request/order
1950* [DeviceUsage](deviceusage.html): Search by identifier
1951* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1952* [DocumentReference](documentreference.html): Identifier of the attachment binary
1953* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1954* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
1955* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1956* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
1957* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1958* [Flag](flag.html): Business identifier
1959* [Goal](goal.html): External Ids for this goal
1960* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
1961* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
1962* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1963* [Immunization](immunization.html): Business identifier
1964* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
1965* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
1966* [Invoice](invoice.html): Business Identifier for item
1967* [List](list.html): Business identifier
1968* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
1969* [Medication](medication.html): Returns medications with this external identifier
1970* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1971* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1972* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1973* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
1974* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
1975* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
1976* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1977* [Observation](observation.html): The unique id for a particular observation
1978* [Person](person.html): A person Identifier
1979* [Procedure](procedure.html): A unique identifier for a procedure
1980* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
1981* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
1982* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
1983* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
1984* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1985* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1986* [Specimen](specimen.html): The unique identifier associated with the specimen
1987* [SupplyDelivery](supplydelivery.html): External identifier
1988* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1989* [Task](task.html): Search for a task instance by its business identifier
1990* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1991</b><br>
1992   * Type: <b>token</b><br>
1993   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
1994   * </p>
1995   */
1996  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
1997  public static final String SP_IDENTIFIER = "identifier";
1998 /**
1999   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2000   * <p>
2001   * Description: <b>Multiple Resources: 
2002
2003* [Account](account.html): Account number
2004* [AdverseEvent](adverseevent.html): Business identifier for the event
2005* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2006* [Appointment](appointment.html): An Identifier of the Appointment
2007* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2008* [Basic](basic.html): Business identifier
2009* [BodyStructure](bodystructure.html): Bodystructure identifier
2010* [CarePlan](careplan.html): External Ids for this plan
2011* [CareTeam](careteam.html): External Ids for this team
2012* [ChargeItem](chargeitem.html): Business Identifier for item
2013* [Claim](claim.html): The primary identifier of the financial resource
2014* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2015* [ClinicalImpression](clinicalimpression.html): Business identifier
2016* [Communication](communication.html): Unique identifier
2017* [CommunicationRequest](communicationrequest.html): Unique identifier
2018* [Composition](composition.html): Version-independent identifier for the Composition
2019* [Condition](condition.html): A unique identifier of the condition record
2020* [Consent](consent.html): Identifier for this record (external references)
2021* [Contract](contract.html): The identity of the contract
2022* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2023* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2024* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2025* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2026* [DeviceRequest](devicerequest.html): Business identifier for request/order
2027* [DeviceUsage](deviceusage.html): Search by identifier
2028* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2029* [DocumentReference](documentreference.html): Identifier of the attachment binary
2030* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2031* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2032* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2033* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2034* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2035* [Flag](flag.html): Business identifier
2036* [Goal](goal.html): External Ids for this goal
2037* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2038* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2039* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2040* [Immunization](immunization.html): Business identifier
2041* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2042* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2043* [Invoice](invoice.html): Business Identifier for item
2044* [List](list.html): Business identifier
2045* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2046* [Medication](medication.html): Returns medications with this external identifier
2047* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2048* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2049* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2050* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2051* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2052* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2053* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2054* [Observation](observation.html): The unique id for a particular observation
2055* [Person](person.html): A person Identifier
2056* [Procedure](procedure.html): A unique identifier for a procedure
2057* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2058* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2059* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2060* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2061* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2062* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2063* [Specimen](specimen.html): The unique identifier associated with the specimen
2064* [SupplyDelivery](supplydelivery.html): External identifier
2065* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2066* [Task](task.html): Search for a task instance by its business identifier
2067* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2068</b><br>
2069   * Type: <b>token</b><br>
2070   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
2071   * </p>
2072   */
2073  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2074
2075 /**
2076   * Search parameter: <b>patient</b>
2077   * <p>
2078   * Description: <b>Multiple Resources: 
2079
2080* [Account](account.html): The entity that caused the expenses
2081* [AdverseEvent](adverseevent.html): Subject impacted by event
2082* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2083* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2084* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2085* [AuditEvent](auditevent.html): Where the activity involved patient data
2086* [Basic](basic.html): Identifies the focus of this resource
2087* [BodyStructure](bodystructure.html): Who this is about
2088* [CarePlan](careplan.html): Who the care plan is for
2089* [CareTeam](careteam.html): Who care team is for
2090* [ChargeItem](chargeitem.html): Individual service was done for/to
2091* [Claim](claim.html): Patient receiving the products or services
2092* [ClaimResponse](claimresponse.html): The subject of care
2093* [ClinicalImpression](clinicalimpression.html): Patient assessed
2094* [Communication](communication.html): Focus of message
2095* [CommunicationRequest](communicationrequest.html): Focus of message
2096* [Composition](composition.html): Who and/or what the composition is about
2097* [Condition](condition.html): Who has the condition?
2098* [Consent](consent.html): Who the consent applies to
2099* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2100* [Coverage](coverage.html): Retrieve coverages for a patient
2101* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2102* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2103* [DetectedIssue](detectedissue.html): Associated patient
2104* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2105* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2106* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2107* [DocumentReference](documentreference.html): Who/what is the subject of the document
2108* [Encounter](encounter.html): The patient present at the encounter
2109* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2110* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2111* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2112* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2113* [Flag](flag.html): The identity of a subject to list flags for
2114* [Goal](goal.html): Who this goal is intended for
2115* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2116* [ImagingSelection](imagingselection.html): Who the study is about
2117* [ImagingStudy](imagingstudy.html): Who the study is about
2118* [Immunization](immunization.html): The patient for the vaccination record
2119* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2120* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2121* [Invoice](invoice.html): Recipient(s) of goods and services
2122* [List](list.html): If all resources have the same subject
2123* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2124* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2125* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2126* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2127* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2128* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2129* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2130* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2131* [Observation](observation.html): The subject that the observation is about (if patient)
2132* [Person](person.html): The Person links to this Patient
2133* [Procedure](procedure.html): Search by subject - a patient
2134* [Provenance](provenance.html): Where the activity involved patient data
2135* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2136* [RelatedPerson](relatedperson.html): The patient this related person is related to
2137* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2138* [ResearchSubject](researchsubject.html): Who or what is part of study
2139* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2140* [ServiceRequest](servicerequest.html): Search by subject - a patient
2141* [Specimen](specimen.html): The patient the specimen comes from
2142* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2143* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2144* [Task](task.html): Search by patient
2145* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2146</b><br>
2147   * Type: <b>reference</b><br>
2148   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
2149   * </p>
2150   */
2151  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
2152  public static final String SP_PATIENT = "patient";
2153 /**
2154   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2155   * <p>
2156   * Description: <b>Multiple Resources: 
2157
2158* [Account](account.html): The entity that caused the expenses
2159* [AdverseEvent](adverseevent.html): Subject impacted by event
2160* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2161* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2162* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2163* [AuditEvent](auditevent.html): Where the activity involved patient data
2164* [Basic](basic.html): Identifies the focus of this resource
2165* [BodyStructure](bodystructure.html): Who this is about
2166* [CarePlan](careplan.html): Who the care plan is for
2167* [CareTeam](careteam.html): Who care team is for
2168* [ChargeItem](chargeitem.html): Individual service was done for/to
2169* [Claim](claim.html): Patient receiving the products or services
2170* [ClaimResponse](claimresponse.html): The subject of care
2171* [ClinicalImpression](clinicalimpression.html): Patient assessed
2172* [Communication](communication.html): Focus of message
2173* [CommunicationRequest](communicationrequest.html): Focus of message
2174* [Composition](composition.html): Who and/or what the composition is about
2175* [Condition](condition.html): Who has the condition?
2176* [Consent](consent.html): Who the consent applies to
2177* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2178* [Coverage](coverage.html): Retrieve coverages for a patient
2179* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2180* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2181* [DetectedIssue](detectedissue.html): Associated patient
2182* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2183* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2184* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2185* [DocumentReference](documentreference.html): Who/what is the subject of the document
2186* [Encounter](encounter.html): The patient present at the encounter
2187* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2188* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2189* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2190* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2191* [Flag](flag.html): The identity of a subject to list flags for
2192* [Goal](goal.html): Who this goal is intended for
2193* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2194* [ImagingSelection](imagingselection.html): Who the study is about
2195* [ImagingStudy](imagingstudy.html): Who the study is about
2196* [Immunization](immunization.html): The patient for the vaccination record
2197* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2198* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2199* [Invoice](invoice.html): Recipient(s) of goods and services
2200* [List](list.html): If all resources have the same subject
2201* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2202* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2203* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2204* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2205* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2206* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2207* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2208* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2209* [Observation](observation.html): The subject that the observation is about (if patient)
2210* [Person](person.html): The Person links to this Patient
2211* [Procedure](procedure.html): Search by subject - a patient
2212* [Provenance](provenance.html): Where the activity involved patient data
2213* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2214* [RelatedPerson](relatedperson.html): The patient this related person is related to
2215* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2216* [ResearchSubject](researchsubject.html): Who or what is part of study
2217* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2218* [ServiceRequest](servicerequest.html): Search by subject - a patient
2219* [Specimen](specimen.html): The patient the specimen comes from
2220* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2221* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2222* [Task](task.html): Search by patient
2223* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2224</b><br>
2225   * Type: <b>reference</b><br>
2226   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
2227   * </p>
2228   */
2229  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2230
2231/**
2232   * Constant for fluent queries to be used to add include statements. Specifies
2233   * the path value of "<b>ImmunizationRecommendation:patient</b>".
2234   */
2235  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ImmunizationRecommendation:patient").toLocked();
2236
2237
2238}
2239