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 request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.
052 */
053@ResourceDef(name="NutritionOrder", profile="http://hl7.org/fhir/StructureDefinition/NutritionOrder")
054public class NutritionOrder extends DomainResource {
055
056    @Block()
057    public static class NutritionOrderOralDietComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet.
060         */
061        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
062        @Description(shortDefinition="Type of oral diet or diet restrictions that describe what can be consumed orally", formalDefinition="The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet." )
063        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/diet-type")
064        protected List<CodeableConcept> type;
065
066        /**
067         * Schedule information for an oral diet.
068         */
069        @Child(name = "schedule", type = {}, order=2, min=0, max=1, modifier=false, summary=false)
070        @Description(shortDefinition="Scheduling information for oral diets", formalDefinition="Schedule information for an oral diet." )
071        protected OralDietScheduleComponent schedule;
072
073        /**
074         * Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet.
075         */
076        @Child(name = "nutrient", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
077        @Description(shortDefinition="Required  nutrient modifications", formalDefinition="Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet." )
078        protected List<NutritionOrderOralDietNutrientComponent> nutrient;
079
080        /**
081         * Class that describes any texture modifications required for the patient to safely consume various types of solid foods.
082         */
083        @Child(name = "texture", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
084        @Description(shortDefinition="Required  texture modifications", formalDefinition="Class that describes any texture modifications required for the patient to safely consume various types of solid foods." )
085        protected List<NutritionOrderOralDietTextureComponent> texture;
086
087        /**
088         * The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient.
089         */
090        @Child(name = "fluidConsistencyType", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
091        @Description(shortDefinition="The required consistency of fluids and liquids provided to the patient", formalDefinition="The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient." )
092        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/consistency-type")
093        protected List<CodeableConcept> fluidConsistencyType;
094
095        /**
096         * Free text or additional instructions or information pertaining to the oral diet.
097         */
098        @Child(name = "instruction", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
099        @Description(shortDefinition="Instructions or additional information about the oral diet", formalDefinition="Free text or additional instructions or information pertaining to the oral diet." )
100        protected StringType instruction;
101
102        private static final long serialVersionUID = -1779061880L;
103
104    /**
105     * Constructor
106     */
107      public NutritionOrderOralDietComponent() {
108        super();
109      }
110
111        /**
112         * @return {@link #type} (The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet.)
113         */
114        public List<CodeableConcept> getType() { 
115          if (this.type == null)
116            this.type = new ArrayList<CodeableConcept>();
117          return this.type;
118        }
119
120        /**
121         * @return Returns a reference to <code>this</code> for easy method chaining
122         */
123        public NutritionOrderOralDietComponent setType(List<CodeableConcept> theType) { 
124          this.type = theType;
125          return this;
126        }
127
128        public boolean hasType() { 
129          if (this.type == null)
130            return false;
131          for (CodeableConcept item : this.type)
132            if (!item.isEmpty())
133              return true;
134          return false;
135        }
136
137        public CodeableConcept addType() { //3
138          CodeableConcept t = new CodeableConcept();
139          if (this.type == null)
140            this.type = new ArrayList<CodeableConcept>();
141          this.type.add(t);
142          return t;
143        }
144
145        public NutritionOrderOralDietComponent addType(CodeableConcept t) { //3
146          if (t == null)
147            return this;
148          if (this.type == null)
149            this.type = new ArrayList<CodeableConcept>();
150          this.type.add(t);
151          return this;
152        }
153
154        /**
155         * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3}
156         */
157        public CodeableConcept getTypeFirstRep() { 
158          if (getType().isEmpty()) {
159            addType();
160          }
161          return getType().get(0);
162        }
163
164        /**
165         * @return {@link #schedule} (Schedule information for an oral diet.)
166         */
167        public OralDietScheduleComponent getSchedule() { 
168          if (this.schedule == null)
169            if (Configuration.errorOnAutoCreate())
170              throw new Error("Attempt to auto-create NutritionOrderOralDietComponent.schedule");
171            else if (Configuration.doAutoCreate())
172              this.schedule = new OralDietScheduleComponent(); // cc
173          return this.schedule;
174        }
175
176        public boolean hasSchedule() { 
177          return this.schedule != null && !this.schedule.isEmpty();
178        }
179
180        /**
181         * @param value {@link #schedule} (Schedule information for an oral diet.)
182         */
183        public NutritionOrderOralDietComponent setSchedule(OralDietScheduleComponent value) { 
184          this.schedule = value;
185          return this;
186        }
187
188        /**
189         * @return {@link #nutrient} (Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet.)
190         */
191        public List<NutritionOrderOralDietNutrientComponent> getNutrient() { 
192          if (this.nutrient == null)
193            this.nutrient = new ArrayList<NutritionOrderOralDietNutrientComponent>();
194          return this.nutrient;
195        }
196
197        /**
198         * @return Returns a reference to <code>this</code> for easy method chaining
199         */
200        public NutritionOrderOralDietComponent setNutrient(List<NutritionOrderOralDietNutrientComponent> theNutrient) { 
201          this.nutrient = theNutrient;
202          return this;
203        }
204
205        public boolean hasNutrient() { 
206          if (this.nutrient == null)
207            return false;
208          for (NutritionOrderOralDietNutrientComponent item : this.nutrient)
209            if (!item.isEmpty())
210              return true;
211          return false;
212        }
213
214        public NutritionOrderOralDietNutrientComponent addNutrient() { //3
215          NutritionOrderOralDietNutrientComponent t = new NutritionOrderOralDietNutrientComponent();
216          if (this.nutrient == null)
217            this.nutrient = new ArrayList<NutritionOrderOralDietNutrientComponent>();
218          this.nutrient.add(t);
219          return t;
220        }
221
222        public NutritionOrderOralDietComponent addNutrient(NutritionOrderOralDietNutrientComponent t) { //3
223          if (t == null)
224            return this;
225          if (this.nutrient == null)
226            this.nutrient = new ArrayList<NutritionOrderOralDietNutrientComponent>();
227          this.nutrient.add(t);
228          return this;
229        }
230
231        /**
232         * @return The first repetition of repeating field {@link #nutrient}, creating it if it does not already exist {3}
233         */
234        public NutritionOrderOralDietNutrientComponent getNutrientFirstRep() { 
235          if (getNutrient().isEmpty()) {
236            addNutrient();
237          }
238          return getNutrient().get(0);
239        }
240
241        /**
242         * @return {@link #texture} (Class that describes any texture modifications required for the patient to safely consume various types of solid foods.)
243         */
244        public List<NutritionOrderOralDietTextureComponent> getTexture() { 
245          if (this.texture == null)
246            this.texture = new ArrayList<NutritionOrderOralDietTextureComponent>();
247          return this.texture;
248        }
249
250        /**
251         * @return Returns a reference to <code>this</code> for easy method chaining
252         */
253        public NutritionOrderOralDietComponent setTexture(List<NutritionOrderOralDietTextureComponent> theTexture) { 
254          this.texture = theTexture;
255          return this;
256        }
257
258        public boolean hasTexture() { 
259          if (this.texture == null)
260            return false;
261          for (NutritionOrderOralDietTextureComponent item : this.texture)
262            if (!item.isEmpty())
263              return true;
264          return false;
265        }
266
267        public NutritionOrderOralDietTextureComponent addTexture() { //3
268          NutritionOrderOralDietTextureComponent t = new NutritionOrderOralDietTextureComponent();
269          if (this.texture == null)
270            this.texture = new ArrayList<NutritionOrderOralDietTextureComponent>();
271          this.texture.add(t);
272          return t;
273        }
274
275        public NutritionOrderOralDietComponent addTexture(NutritionOrderOralDietTextureComponent t) { //3
276          if (t == null)
277            return this;
278          if (this.texture == null)
279            this.texture = new ArrayList<NutritionOrderOralDietTextureComponent>();
280          this.texture.add(t);
281          return this;
282        }
283
284        /**
285         * @return The first repetition of repeating field {@link #texture}, creating it if it does not already exist {3}
286         */
287        public NutritionOrderOralDietTextureComponent getTextureFirstRep() { 
288          if (getTexture().isEmpty()) {
289            addTexture();
290          }
291          return getTexture().get(0);
292        }
293
294        /**
295         * @return {@link #fluidConsistencyType} (The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient.)
296         */
297        public List<CodeableConcept> getFluidConsistencyType() { 
298          if (this.fluidConsistencyType == null)
299            this.fluidConsistencyType = new ArrayList<CodeableConcept>();
300          return this.fluidConsistencyType;
301        }
302
303        /**
304         * @return Returns a reference to <code>this</code> for easy method chaining
305         */
306        public NutritionOrderOralDietComponent setFluidConsistencyType(List<CodeableConcept> theFluidConsistencyType) { 
307          this.fluidConsistencyType = theFluidConsistencyType;
308          return this;
309        }
310
311        public boolean hasFluidConsistencyType() { 
312          if (this.fluidConsistencyType == null)
313            return false;
314          for (CodeableConcept item : this.fluidConsistencyType)
315            if (!item.isEmpty())
316              return true;
317          return false;
318        }
319
320        public CodeableConcept addFluidConsistencyType() { //3
321          CodeableConcept t = new CodeableConcept();
322          if (this.fluidConsistencyType == null)
323            this.fluidConsistencyType = new ArrayList<CodeableConcept>();
324          this.fluidConsistencyType.add(t);
325          return t;
326        }
327
328        public NutritionOrderOralDietComponent addFluidConsistencyType(CodeableConcept t) { //3
329          if (t == null)
330            return this;
331          if (this.fluidConsistencyType == null)
332            this.fluidConsistencyType = new ArrayList<CodeableConcept>();
333          this.fluidConsistencyType.add(t);
334          return this;
335        }
336
337        /**
338         * @return The first repetition of repeating field {@link #fluidConsistencyType}, creating it if it does not already exist {3}
339         */
340        public CodeableConcept getFluidConsistencyTypeFirstRep() { 
341          if (getFluidConsistencyType().isEmpty()) {
342            addFluidConsistencyType();
343          }
344          return getFluidConsistencyType().get(0);
345        }
346
347        /**
348         * @return {@link #instruction} (Free text or additional instructions or information pertaining to the oral diet.). This is the underlying object with id, value and extensions. The accessor "getInstruction" gives direct access to the value
349         */
350        public StringType getInstructionElement() { 
351          if (this.instruction == null)
352            if (Configuration.errorOnAutoCreate())
353              throw new Error("Attempt to auto-create NutritionOrderOralDietComponent.instruction");
354            else if (Configuration.doAutoCreate())
355              this.instruction = new StringType(); // bb
356          return this.instruction;
357        }
358
359        public boolean hasInstructionElement() { 
360          return this.instruction != null && !this.instruction.isEmpty();
361        }
362
363        public boolean hasInstruction() { 
364          return this.instruction != null && !this.instruction.isEmpty();
365        }
366
367        /**
368         * @param value {@link #instruction} (Free text or additional instructions or information pertaining to the oral diet.). This is the underlying object with id, value and extensions. The accessor "getInstruction" gives direct access to the value
369         */
370        public NutritionOrderOralDietComponent setInstructionElement(StringType value) { 
371          this.instruction = value;
372          return this;
373        }
374
375        /**
376         * @return Free text or additional instructions or information pertaining to the oral diet.
377         */
378        public String getInstruction() { 
379          return this.instruction == null ? null : this.instruction.getValue();
380        }
381
382        /**
383         * @param value Free text or additional instructions or information pertaining to the oral diet.
384         */
385        public NutritionOrderOralDietComponent setInstruction(String value) { 
386          if (Utilities.noString(value))
387            this.instruction = null;
388          else {
389            if (this.instruction == null)
390              this.instruction = new StringType();
391            this.instruction.setValue(value);
392          }
393          return this;
394        }
395
396        protected void listChildren(List<Property> children) {
397          super.listChildren(children);
398          children.add(new Property("type", "CodeableConcept", "The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet.", 0, java.lang.Integer.MAX_VALUE, type));
399          children.add(new Property("schedule", "", "Schedule information for an oral diet.", 0, 1, schedule));
400          children.add(new Property("nutrient", "", "Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet.", 0, java.lang.Integer.MAX_VALUE, nutrient));
401          children.add(new Property("texture", "", "Class that describes any texture modifications required for the patient to safely consume various types of solid foods.", 0, java.lang.Integer.MAX_VALUE, texture));
402          children.add(new Property("fluidConsistencyType", "CodeableConcept", "The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient.", 0, java.lang.Integer.MAX_VALUE, fluidConsistencyType));
403          children.add(new Property("instruction", "string", "Free text or additional instructions or information pertaining to the oral diet.", 0, 1, instruction));
404        }
405
406        @Override
407        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
408          switch (_hash) {
409          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet.", 0, java.lang.Integer.MAX_VALUE, type);
410          case -697920873: /*schedule*/  return new Property("schedule", "", "Schedule information for an oral diet.", 0, 1, schedule);
411          case -1671151641: /*nutrient*/  return new Property("nutrient", "", "Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet.", 0, java.lang.Integer.MAX_VALUE, nutrient);
412          case -1417816805: /*texture*/  return new Property("texture", "", "Class that describes any texture modifications required for the patient to safely consume various types of solid foods.", 0, java.lang.Integer.MAX_VALUE, texture);
413          case -525105592: /*fluidConsistencyType*/  return new Property("fluidConsistencyType", "CodeableConcept", "The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient.", 0, java.lang.Integer.MAX_VALUE, fluidConsistencyType);
414          case 301526158: /*instruction*/  return new Property("instruction", "string", "Free text or additional instructions or information pertaining to the oral diet.", 0, 1, instruction);
415          default: return super.getNamedProperty(_hash, _name, _checkValid);
416          }
417
418        }
419
420      @Override
421      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
422        switch (hash) {
423        case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept
424        case -697920873: /*schedule*/ return this.schedule == null ? new Base[0] : new Base[] {this.schedule}; // OralDietScheduleComponent
425        case -1671151641: /*nutrient*/ return this.nutrient == null ? new Base[0] : this.nutrient.toArray(new Base[this.nutrient.size()]); // NutritionOrderOralDietNutrientComponent
426        case -1417816805: /*texture*/ return this.texture == null ? new Base[0] : this.texture.toArray(new Base[this.texture.size()]); // NutritionOrderOralDietTextureComponent
427        case -525105592: /*fluidConsistencyType*/ return this.fluidConsistencyType == null ? new Base[0] : this.fluidConsistencyType.toArray(new Base[this.fluidConsistencyType.size()]); // CodeableConcept
428        case 301526158: /*instruction*/ return this.instruction == null ? new Base[0] : new Base[] {this.instruction}; // StringType
429        default: return super.getProperty(hash, name, checkValid);
430        }
431
432      }
433
434      @Override
435      public Base setProperty(int hash, String name, Base value) throws FHIRException {
436        switch (hash) {
437        case 3575610: // type
438          this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
439          return value;
440        case -697920873: // schedule
441          this.schedule = (OralDietScheduleComponent) value; // OralDietScheduleComponent
442          return value;
443        case -1671151641: // nutrient
444          this.getNutrient().add((NutritionOrderOralDietNutrientComponent) value); // NutritionOrderOralDietNutrientComponent
445          return value;
446        case -1417816805: // texture
447          this.getTexture().add((NutritionOrderOralDietTextureComponent) value); // NutritionOrderOralDietTextureComponent
448          return value;
449        case -525105592: // fluidConsistencyType
450          this.getFluidConsistencyType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
451          return value;
452        case 301526158: // instruction
453          this.instruction = TypeConvertor.castToString(value); // StringType
454          return value;
455        default: return super.setProperty(hash, name, value);
456        }
457
458      }
459
460      @Override
461      public Base setProperty(String name, Base value) throws FHIRException {
462        if (name.equals("type")) {
463          this.getType().add(TypeConvertor.castToCodeableConcept(value));
464        } else if (name.equals("schedule")) {
465          this.schedule = (OralDietScheduleComponent) value; // OralDietScheduleComponent
466        } else if (name.equals("nutrient")) {
467          this.getNutrient().add((NutritionOrderOralDietNutrientComponent) value);
468        } else if (name.equals("texture")) {
469          this.getTexture().add((NutritionOrderOralDietTextureComponent) value);
470        } else if (name.equals("fluidConsistencyType")) {
471          this.getFluidConsistencyType().add(TypeConvertor.castToCodeableConcept(value));
472        } else if (name.equals("instruction")) {
473          this.instruction = TypeConvertor.castToString(value); // StringType
474        } else
475          return super.setProperty(name, value);
476        return value;
477      }
478
479  @Override
480  public void removeChild(String name, Base value) throws FHIRException {
481        if (name.equals("type")) {
482          this.getType().remove(value);
483        } else if (name.equals("schedule")) {
484          this.schedule = (OralDietScheduleComponent) value; // OralDietScheduleComponent
485        } else if (name.equals("nutrient")) {
486          this.getNutrient().remove((NutritionOrderOralDietNutrientComponent) value);
487        } else if (name.equals("texture")) {
488          this.getTexture().remove((NutritionOrderOralDietTextureComponent) value);
489        } else if (name.equals("fluidConsistencyType")) {
490          this.getFluidConsistencyType().remove(value);
491        } else if (name.equals("instruction")) {
492          this.instruction = null;
493        } else
494          super.removeChild(name, value);
495        
496      }
497
498      @Override
499      public Base makeProperty(int hash, String name) throws FHIRException {
500        switch (hash) {
501        case 3575610:  return addType(); 
502        case -697920873:  return getSchedule();
503        case -1671151641:  return addNutrient(); 
504        case -1417816805:  return addTexture(); 
505        case -525105592:  return addFluidConsistencyType(); 
506        case 301526158:  return getInstructionElement();
507        default: return super.makeProperty(hash, name);
508        }
509
510      }
511
512      @Override
513      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
514        switch (hash) {
515        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
516        case -697920873: /*schedule*/ return new String[] {};
517        case -1671151641: /*nutrient*/ return new String[] {};
518        case -1417816805: /*texture*/ return new String[] {};
519        case -525105592: /*fluidConsistencyType*/ return new String[] {"CodeableConcept"};
520        case 301526158: /*instruction*/ return new String[] {"string"};
521        default: return super.getTypesForProperty(hash, name);
522        }
523
524      }
525
526      @Override
527      public Base addChild(String name) throws FHIRException {
528        if (name.equals("type")) {
529          return addType();
530        }
531        else if (name.equals("schedule")) {
532          this.schedule = new OralDietScheduleComponent();
533          return this.schedule;
534        }
535        else if (name.equals("nutrient")) {
536          return addNutrient();
537        }
538        else if (name.equals("texture")) {
539          return addTexture();
540        }
541        else if (name.equals("fluidConsistencyType")) {
542          return addFluidConsistencyType();
543        }
544        else if (name.equals("instruction")) {
545          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.oralDiet.instruction");
546        }
547        else
548          return super.addChild(name);
549      }
550
551      public NutritionOrderOralDietComponent copy() {
552        NutritionOrderOralDietComponent dst = new NutritionOrderOralDietComponent();
553        copyValues(dst);
554        return dst;
555      }
556
557      public void copyValues(NutritionOrderOralDietComponent dst) {
558        super.copyValues(dst);
559        if (type != null) {
560          dst.type = new ArrayList<CodeableConcept>();
561          for (CodeableConcept i : type)
562            dst.type.add(i.copy());
563        };
564        dst.schedule = schedule == null ? null : schedule.copy();
565        if (nutrient != null) {
566          dst.nutrient = new ArrayList<NutritionOrderOralDietNutrientComponent>();
567          for (NutritionOrderOralDietNutrientComponent i : nutrient)
568            dst.nutrient.add(i.copy());
569        };
570        if (texture != null) {
571          dst.texture = new ArrayList<NutritionOrderOralDietTextureComponent>();
572          for (NutritionOrderOralDietTextureComponent i : texture)
573            dst.texture.add(i.copy());
574        };
575        if (fluidConsistencyType != null) {
576          dst.fluidConsistencyType = new ArrayList<CodeableConcept>();
577          for (CodeableConcept i : fluidConsistencyType)
578            dst.fluidConsistencyType.add(i.copy());
579        };
580        dst.instruction = instruction == null ? null : instruction.copy();
581      }
582
583      @Override
584      public boolean equalsDeep(Base other_) {
585        if (!super.equalsDeep(other_))
586          return false;
587        if (!(other_ instanceof NutritionOrderOralDietComponent))
588          return false;
589        NutritionOrderOralDietComponent o = (NutritionOrderOralDietComponent) other_;
590        return compareDeep(type, o.type, true) && compareDeep(schedule, o.schedule, true) && compareDeep(nutrient, o.nutrient, true)
591           && compareDeep(texture, o.texture, true) && compareDeep(fluidConsistencyType, o.fluidConsistencyType, true)
592           && compareDeep(instruction, o.instruction, true);
593      }
594
595      @Override
596      public boolean equalsShallow(Base other_) {
597        if (!super.equalsShallow(other_))
598          return false;
599        if (!(other_ instanceof NutritionOrderOralDietComponent))
600          return false;
601        NutritionOrderOralDietComponent o = (NutritionOrderOralDietComponent) other_;
602        return compareValues(instruction, o.instruction, true);
603      }
604
605      public boolean isEmpty() {
606        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, schedule, nutrient
607          , texture, fluidConsistencyType, instruction);
608      }
609
610  public String fhirType() {
611    return "NutritionOrder.oralDiet";
612
613  }
614
615  }
616
617    @Block()
618    public static class OralDietScheduleComponent extends BackboneElement implements IBaseBackboneElement {
619        /**
620         * The time period and frequency at which the diet should be given.  The diet should be given for the combination of all schedules if more than one schedule is present.
621         */
622        @Child(name = "timing", type = {Timing.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
623        @Description(shortDefinition="Scheduled frequency of diet", formalDefinition="The time period and frequency at which the diet should be given.  The diet should be given for the combination of all schedules if more than one schedule is present." )
624        protected List<Timing> timing;
625
626        /**
627         * Indicates whether the product is only taken when needed within a specific dosing schedule.
628         */
629        @Child(name = "asNeeded", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
630        @Description(shortDefinition="Take 'as needed'", formalDefinition="Indicates whether the product is only taken when needed within a specific dosing schedule." )
631        protected BooleanType asNeeded;
632
633        /**
634         * Indicates whether the product is only taken based on a precondition for taking the product.
635         */
636        @Child(name = "asNeededFor", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
637        @Description(shortDefinition="Take 'as needed' for x", formalDefinition="Indicates whether the product is only taken based on a precondition for taking the product." )
638        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-as-needed-reason")
639        protected CodeableConcept asNeededFor;
640
641        private static final long serialVersionUID = -1051458478L;
642
643    /**
644     * Constructor
645     */
646      public OralDietScheduleComponent() {
647        super();
648      }
649
650        /**
651         * @return {@link #timing} (The time period and frequency at which the diet should be given.  The diet should be given for the combination of all schedules if more than one schedule is present.)
652         */
653        public List<Timing> getTiming() { 
654          if (this.timing == null)
655            this.timing = new ArrayList<Timing>();
656          return this.timing;
657        }
658
659        /**
660         * @return Returns a reference to <code>this</code> for easy method chaining
661         */
662        public OralDietScheduleComponent setTiming(List<Timing> theTiming) { 
663          this.timing = theTiming;
664          return this;
665        }
666
667        public boolean hasTiming() { 
668          if (this.timing == null)
669            return false;
670          for (Timing item : this.timing)
671            if (!item.isEmpty())
672              return true;
673          return false;
674        }
675
676        public Timing addTiming() { //3
677          Timing t = new Timing();
678          if (this.timing == null)
679            this.timing = new ArrayList<Timing>();
680          this.timing.add(t);
681          return t;
682        }
683
684        public OralDietScheduleComponent addTiming(Timing t) { //3
685          if (t == null)
686            return this;
687          if (this.timing == null)
688            this.timing = new ArrayList<Timing>();
689          this.timing.add(t);
690          return this;
691        }
692
693        /**
694         * @return The first repetition of repeating field {@link #timing}, creating it if it does not already exist {3}
695         */
696        public Timing getTimingFirstRep() { 
697          if (getTiming().isEmpty()) {
698            addTiming();
699          }
700          return getTiming().get(0);
701        }
702
703        /**
704         * @return {@link #asNeeded} (Indicates whether the product is only taken when needed within a specific dosing schedule.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
705         */
706        public BooleanType getAsNeededElement() { 
707          if (this.asNeeded == null)
708            if (Configuration.errorOnAutoCreate())
709              throw new Error("Attempt to auto-create OralDietScheduleComponent.asNeeded");
710            else if (Configuration.doAutoCreate())
711              this.asNeeded = new BooleanType(); // bb
712          return this.asNeeded;
713        }
714
715        public boolean hasAsNeededElement() { 
716          return this.asNeeded != null && !this.asNeeded.isEmpty();
717        }
718
719        public boolean hasAsNeeded() { 
720          return this.asNeeded != null && !this.asNeeded.isEmpty();
721        }
722
723        /**
724         * @param value {@link #asNeeded} (Indicates whether the product is only taken when needed within a specific dosing schedule.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
725         */
726        public OralDietScheduleComponent setAsNeededElement(BooleanType value) { 
727          this.asNeeded = value;
728          return this;
729        }
730
731        /**
732         * @return Indicates whether the product is only taken when needed within a specific dosing schedule.
733         */
734        public boolean getAsNeeded() { 
735          return this.asNeeded == null || this.asNeeded.isEmpty() ? false : this.asNeeded.getValue();
736        }
737
738        /**
739         * @param value Indicates whether the product is only taken when needed within a specific dosing schedule.
740         */
741        public OralDietScheduleComponent setAsNeeded(boolean value) { 
742            if (this.asNeeded == null)
743              this.asNeeded = new BooleanType();
744            this.asNeeded.setValue(value);
745          return this;
746        }
747
748        /**
749         * @return {@link #asNeededFor} (Indicates whether the product is only taken based on a precondition for taking the product.)
750         */
751        public CodeableConcept getAsNeededFor() { 
752          if (this.asNeededFor == null)
753            if (Configuration.errorOnAutoCreate())
754              throw new Error("Attempt to auto-create OralDietScheduleComponent.asNeededFor");
755            else if (Configuration.doAutoCreate())
756              this.asNeededFor = new CodeableConcept(); // cc
757          return this.asNeededFor;
758        }
759
760        public boolean hasAsNeededFor() { 
761          return this.asNeededFor != null && !this.asNeededFor.isEmpty();
762        }
763
764        /**
765         * @param value {@link #asNeededFor} (Indicates whether the product is only taken based on a precondition for taking the product.)
766         */
767        public OralDietScheduleComponent setAsNeededFor(CodeableConcept value) { 
768          this.asNeededFor = value;
769          return this;
770        }
771
772        protected void listChildren(List<Property> children) {
773          super.listChildren(children);
774          children.add(new Property("timing", "Timing", "The time period and frequency at which the diet should be given.  The diet should be given for the combination of all schedules if more than one schedule is present.", 0, java.lang.Integer.MAX_VALUE, timing));
775          children.add(new Property("asNeeded", "boolean", "Indicates whether the product is only taken when needed within a specific dosing schedule.", 0, 1, asNeeded));
776          children.add(new Property("asNeededFor", "CodeableConcept", "Indicates whether the product is only taken based on a precondition for taking the product.", 0, 1, asNeededFor));
777        }
778
779        @Override
780        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
781          switch (_hash) {
782          case -873664438: /*timing*/  return new Property("timing", "Timing", "The time period and frequency at which the diet should be given.  The diet should be given for the combination of all schedules if more than one schedule is present.", 0, java.lang.Integer.MAX_VALUE, timing);
783          case -1432923513: /*asNeeded*/  return new Property("asNeeded", "boolean", "Indicates whether the product is only taken when needed within a specific dosing schedule.", 0, 1, asNeeded);
784          case -544350014: /*asNeededFor*/  return new Property("asNeededFor", "CodeableConcept", "Indicates whether the product is only taken based on a precondition for taking the product.", 0, 1, asNeededFor);
785          default: return super.getNamedProperty(_hash, _name, _checkValid);
786          }
787
788        }
789
790      @Override
791      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
792        switch (hash) {
793        case -873664438: /*timing*/ return this.timing == null ? new Base[0] : this.timing.toArray(new Base[this.timing.size()]); // Timing
794        case -1432923513: /*asNeeded*/ return this.asNeeded == null ? new Base[0] : new Base[] {this.asNeeded}; // BooleanType
795        case -544350014: /*asNeededFor*/ return this.asNeededFor == null ? new Base[0] : new Base[] {this.asNeededFor}; // CodeableConcept
796        default: return super.getProperty(hash, name, checkValid);
797        }
798
799      }
800
801      @Override
802      public Base setProperty(int hash, String name, Base value) throws FHIRException {
803        switch (hash) {
804        case -873664438: // timing
805          this.getTiming().add(TypeConvertor.castToTiming(value)); // Timing
806          return value;
807        case -1432923513: // asNeeded
808          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
809          return value;
810        case -544350014: // asNeededFor
811          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
812          return value;
813        default: return super.setProperty(hash, name, value);
814        }
815
816      }
817
818      @Override
819      public Base setProperty(String name, Base value) throws FHIRException {
820        if (name.equals("timing")) {
821          this.getTiming().add(TypeConvertor.castToTiming(value));
822        } else if (name.equals("asNeeded")) {
823          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
824        } else if (name.equals("asNeededFor")) {
825          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
826        } else
827          return super.setProperty(name, value);
828        return value;
829      }
830
831  @Override
832  public void removeChild(String name, Base value) throws FHIRException {
833        if (name.equals("timing")) {
834          this.getTiming().remove(value);
835        } else if (name.equals("asNeeded")) {
836          this.asNeeded = null;
837        } else if (name.equals("asNeededFor")) {
838          this.asNeededFor = null;
839        } else
840          super.removeChild(name, value);
841        
842      }
843
844      @Override
845      public Base makeProperty(int hash, String name) throws FHIRException {
846        switch (hash) {
847        case -873664438:  return addTiming(); 
848        case -1432923513:  return getAsNeededElement();
849        case -544350014:  return getAsNeededFor();
850        default: return super.makeProperty(hash, name);
851        }
852
853      }
854
855      @Override
856      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
857        switch (hash) {
858        case -873664438: /*timing*/ return new String[] {"Timing"};
859        case -1432923513: /*asNeeded*/ return new String[] {"boolean"};
860        case -544350014: /*asNeededFor*/ return new String[] {"CodeableConcept"};
861        default: return super.getTypesForProperty(hash, name);
862        }
863
864      }
865
866      @Override
867      public Base addChild(String name) throws FHIRException {
868        if (name.equals("timing")) {
869          return addTiming();
870        }
871        else if (name.equals("asNeeded")) {
872          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.oralDiet.schedule.asNeeded");
873        }
874        else if (name.equals("asNeededFor")) {
875          this.asNeededFor = new CodeableConcept();
876          return this.asNeededFor;
877        }
878        else
879          return super.addChild(name);
880      }
881
882      public OralDietScheduleComponent copy() {
883        OralDietScheduleComponent dst = new OralDietScheduleComponent();
884        copyValues(dst);
885        return dst;
886      }
887
888      public void copyValues(OralDietScheduleComponent dst) {
889        super.copyValues(dst);
890        if (timing != null) {
891          dst.timing = new ArrayList<Timing>();
892          for (Timing i : timing)
893            dst.timing.add(i.copy());
894        };
895        dst.asNeeded = asNeeded == null ? null : asNeeded.copy();
896        dst.asNeededFor = asNeededFor == null ? null : asNeededFor.copy();
897      }
898
899      @Override
900      public boolean equalsDeep(Base other_) {
901        if (!super.equalsDeep(other_))
902          return false;
903        if (!(other_ instanceof OralDietScheduleComponent))
904          return false;
905        OralDietScheduleComponent o = (OralDietScheduleComponent) other_;
906        return compareDeep(timing, o.timing, true) && compareDeep(asNeeded, o.asNeeded, true) && compareDeep(asNeededFor, o.asNeededFor, true)
907          ;
908      }
909
910      @Override
911      public boolean equalsShallow(Base other_) {
912        if (!super.equalsShallow(other_))
913          return false;
914        if (!(other_ instanceof OralDietScheduleComponent))
915          return false;
916        OralDietScheduleComponent o = (OralDietScheduleComponent) other_;
917        return compareValues(asNeeded, o.asNeeded, true);
918      }
919
920      public boolean isEmpty() {
921        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(timing, asNeeded, asNeededFor
922          );
923      }
924
925  public String fhirType() {
926    return "NutritionOrder.oralDiet.schedule";
927
928  }
929
930  }
931
932    @Block()
933    public static class NutritionOrderOralDietNutrientComponent extends BackboneElement implements IBaseBackboneElement {
934        /**
935         * The nutrient that is being modified such as carbohydrate or sodium.
936         */
937        @Child(name = "modifier", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
938        @Description(shortDefinition="Type of nutrient that is being modified", formalDefinition="The nutrient that is being modified such as carbohydrate or sodium." )
939        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/nutrient-code")
940        protected CodeableConcept modifier;
941
942        /**
943         * The quantity of the specified nutrient to include in diet.
944         */
945        @Child(name = "amount", type = {Quantity.class}, order=2, min=0, max=1, modifier=false, summary=false)
946        @Description(shortDefinition="Quantity of the specified nutrient", formalDefinition="The quantity of the specified nutrient to include in diet." )
947        protected Quantity amount;
948
949        private static final long serialVersionUID = 1042462093L;
950
951    /**
952     * Constructor
953     */
954      public NutritionOrderOralDietNutrientComponent() {
955        super();
956      }
957
958        /**
959         * @return {@link #modifier} (The nutrient that is being modified such as carbohydrate or sodium.)
960         */
961        public CodeableConcept getModifier() { 
962          if (this.modifier == null)
963            if (Configuration.errorOnAutoCreate())
964              throw new Error("Attempt to auto-create NutritionOrderOralDietNutrientComponent.modifier");
965            else if (Configuration.doAutoCreate())
966              this.modifier = new CodeableConcept(); // cc
967          return this.modifier;
968        }
969
970        public boolean hasModifier() { 
971          return this.modifier != null && !this.modifier.isEmpty();
972        }
973
974        /**
975         * @param value {@link #modifier} (The nutrient that is being modified such as carbohydrate or sodium.)
976         */
977        public NutritionOrderOralDietNutrientComponent setModifier(CodeableConcept value) { 
978          this.modifier = value;
979          return this;
980        }
981
982        /**
983         * @return {@link #amount} (The quantity of the specified nutrient to include in diet.)
984         */
985        public Quantity getAmount() { 
986          if (this.amount == null)
987            if (Configuration.errorOnAutoCreate())
988              throw new Error("Attempt to auto-create NutritionOrderOralDietNutrientComponent.amount");
989            else if (Configuration.doAutoCreate())
990              this.amount = new Quantity(); // cc
991          return this.amount;
992        }
993
994        public boolean hasAmount() { 
995          return this.amount != null && !this.amount.isEmpty();
996        }
997
998        /**
999         * @param value {@link #amount} (The quantity of the specified nutrient to include in diet.)
1000         */
1001        public NutritionOrderOralDietNutrientComponent setAmount(Quantity value) { 
1002          this.amount = value;
1003          return this;
1004        }
1005
1006        protected void listChildren(List<Property> children) {
1007          super.listChildren(children);
1008          children.add(new Property("modifier", "CodeableConcept", "The nutrient that is being modified such as carbohydrate or sodium.", 0, 1, modifier));
1009          children.add(new Property("amount", "Quantity", "The quantity of the specified nutrient to include in diet.", 0, 1, amount));
1010        }
1011
1012        @Override
1013        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1014          switch (_hash) {
1015          case -615513385: /*modifier*/  return new Property("modifier", "CodeableConcept", "The nutrient that is being modified such as carbohydrate or sodium.", 0, 1, modifier);
1016          case -1413853096: /*amount*/  return new Property("amount", "Quantity", "The quantity of the specified nutrient to include in diet.", 0, 1, amount);
1017          default: return super.getNamedProperty(_hash, _name, _checkValid);
1018          }
1019
1020        }
1021
1022      @Override
1023      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1024        switch (hash) {
1025        case -615513385: /*modifier*/ return this.modifier == null ? new Base[0] : new Base[] {this.modifier}; // CodeableConcept
1026        case -1413853096: /*amount*/ return this.amount == null ? new Base[0] : new Base[] {this.amount}; // Quantity
1027        default: return super.getProperty(hash, name, checkValid);
1028        }
1029
1030      }
1031
1032      @Override
1033      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1034        switch (hash) {
1035        case -615513385: // modifier
1036          this.modifier = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1037          return value;
1038        case -1413853096: // amount
1039          this.amount = TypeConvertor.castToQuantity(value); // Quantity
1040          return value;
1041        default: return super.setProperty(hash, name, value);
1042        }
1043
1044      }
1045
1046      @Override
1047      public Base setProperty(String name, Base value) throws FHIRException {
1048        if (name.equals("modifier")) {
1049          this.modifier = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1050        } else if (name.equals("amount")) {
1051          this.amount = TypeConvertor.castToQuantity(value); // Quantity
1052        } else
1053          return super.setProperty(name, value);
1054        return value;
1055      }
1056
1057  @Override
1058  public void removeChild(String name, Base value) throws FHIRException {
1059        if (name.equals("modifier")) {
1060          this.modifier = null;
1061        } else if (name.equals("amount")) {
1062          this.amount = null;
1063        } else
1064          super.removeChild(name, value);
1065        
1066      }
1067
1068      @Override
1069      public Base makeProperty(int hash, String name) throws FHIRException {
1070        switch (hash) {
1071        case -615513385:  return getModifier();
1072        case -1413853096:  return getAmount();
1073        default: return super.makeProperty(hash, name);
1074        }
1075
1076      }
1077
1078      @Override
1079      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1080        switch (hash) {
1081        case -615513385: /*modifier*/ return new String[] {"CodeableConcept"};
1082        case -1413853096: /*amount*/ return new String[] {"Quantity"};
1083        default: return super.getTypesForProperty(hash, name);
1084        }
1085
1086      }
1087
1088      @Override
1089      public Base addChild(String name) throws FHIRException {
1090        if (name.equals("modifier")) {
1091          this.modifier = new CodeableConcept();
1092          return this.modifier;
1093        }
1094        else if (name.equals("amount")) {
1095          this.amount = new Quantity();
1096          return this.amount;
1097        }
1098        else
1099          return super.addChild(name);
1100      }
1101
1102      public NutritionOrderOralDietNutrientComponent copy() {
1103        NutritionOrderOralDietNutrientComponent dst = new NutritionOrderOralDietNutrientComponent();
1104        copyValues(dst);
1105        return dst;
1106      }
1107
1108      public void copyValues(NutritionOrderOralDietNutrientComponent dst) {
1109        super.copyValues(dst);
1110        dst.modifier = modifier == null ? null : modifier.copy();
1111        dst.amount = amount == null ? null : amount.copy();
1112      }
1113
1114      @Override
1115      public boolean equalsDeep(Base other_) {
1116        if (!super.equalsDeep(other_))
1117          return false;
1118        if (!(other_ instanceof NutritionOrderOralDietNutrientComponent))
1119          return false;
1120        NutritionOrderOralDietNutrientComponent o = (NutritionOrderOralDietNutrientComponent) other_;
1121        return compareDeep(modifier, o.modifier, true) && compareDeep(amount, o.amount, true);
1122      }
1123
1124      @Override
1125      public boolean equalsShallow(Base other_) {
1126        if (!super.equalsShallow(other_))
1127          return false;
1128        if (!(other_ instanceof NutritionOrderOralDietNutrientComponent))
1129          return false;
1130        NutritionOrderOralDietNutrientComponent o = (NutritionOrderOralDietNutrientComponent) other_;
1131        return true;
1132      }
1133
1134      public boolean isEmpty() {
1135        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(modifier, amount);
1136      }
1137
1138  public String fhirType() {
1139    return "NutritionOrder.oralDiet.nutrient";
1140
1141  }
1142
1143  }
1144
1145    @Block()
1146    public static class NutritionOrderOralDietTextureComponent extends BackboneElement implements IBaseBackboneElement {
1147        /**
1148         * Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed.
1149         */
1150        @Child(name = "modifier", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
1151        @Description(shortDefinition="Code to indicate how to alter the texture of the foods, e.g. pureed", formalDefinition="Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed." )
1152        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/texture-code")
1153        protected CodeableConcept modifier;
1154
1155        /**
1156         * The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types.
1157         */
1158        @Child(name = "foodType", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
1159        @Description(shortDefinition="Concepts that are used to identify an entity that is ingested for nutritional purposes", formalDefinition="The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types." )
1160        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/modified-foodtype")
1161        protected CodeableConcept foodType;
1162
1163        private static final long serialVersionUID = -56402817L;
1164
1165    /**
1166     * Constructor
1167     */
1168      public NutritionOrderOralDietTextureComponent() {
1169        super();
1170      }
1171
1172        /**
1173         * @return {@link #modifier} (Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed.)
1174         */
1175        public CodeableConcept getModifier() { 
1176          if (this.modifier == null)
1177            if (Configuration.errorOnAutoCreate())
1178              throw new Error("Attempt to auto-create NutritionOrderOralDietTextureComponent.modifier");
1179            else if (Configuration.doAutoCreate())
1180              this.modifier = new CodeableConcept(); // cc
1181          return this.modifier;
1182        }
1183
1184        public boolean hasModifier() { 
1185          return this.modifier != null && !this.modifier.isEmpty();
1186        }
1187
1188        /**
1189         * @param value {@link #modifier} (Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed.)
1190         */
1191        public NutritionOrderOralDietTextureComponent setModifier(CodeableConcept value) { 
1192          this.modifier = value;
1193          return this;
1194        }
1195
1196        /**
1197         * @return {@link #foodType} (The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types.)
1198         */
1199        public CodeableConcept getFoodType() { 
1200          if (this.foodType == null)
1201            if (Configuration.errorOnAutoCreate())
1202              throw new Error("Attempt to auto-create NutritionOrderOralDietTextureComponent.foodType");
1203            else if (Configuration.doAutoCreate())
1204              this.foodType = new CodeableConcept(); // cc
1205          return this.foodType;
1206        }
1207
1208        public boolean hasFoodType() { 
1209          return this.foodType != null && !this.foodType.isEmpty();
1210        }
1211
1212        /**
1213         * @param value {@link #foodType} (The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types.)
1214         */
1215        public NutritionOrderOralDietTextureComponent setFoodType(CodeableConcept value) { 
1216          this.foodType = value;
1217          return this;
1218        }
1219
1220        protected void listChildren(List<Property> children) {
1221          super.listChildren(children);
1222          children.add(new Property("modifier", "CodeableConcept", "Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed.", 0, 1, modifier));
1223          children.add(new Property("foodType", "CodeableConcept", "The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types.", 0, 1, foodType));
1224        }
1225
1226        @Override
1227        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1228          switch (_hash) {
1229          case -615513385: /*modifier*/  return new Property("modifier", "CodeableConcept", "Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed.", 0, 1, modifier);
1230          case 379498680: /*foodType*/  return new Property("foodType", "CodeableConcept", "The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types.", 0, 1, foodType);
1231          default: return super.getNamedProperty(_hash, _name, _checkValid);
1232          }
1233
1234        }
1235
1236      @Override
1237      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1238        switch (hash) {
1239        case -615513385: /*modifier*/ return this.modifier == null ? new Base[0] : new Base[] {this.modifier}; // CodeableConcept
1240        case 379498680: /*foodType*/ return this.foodType == null ? new Base[0] : new Base[] {this.foodType}; // CodeableConcept
1241        default: return super.getProperty(hash, name, checkValid);
1242        }
1243
1244      }
1245
1246      @Override
1247      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1248        switch (hash) {
1249        case -615513385: // modifier
1250          this.modifier = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1251          return value;
1252        case 379498680: // foodType
1253          this.foodType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1254          return value;
1255        default: return super.setProperty(hash, name, value);
1256        }
1257
1258      }
1259
1260      @Override
1261      public Base setProperty(String name, Base value) throws FHIRException {
1262        if (name.equals("modifier")) {
1263          this.modifier = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1264        } else if (name.equals("foodType")) {
1265          this.foodType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1266        } else
1267          return super.setProperty(name, value);
1268        return value;
1269      }
1270
1271  @Override
1272  public void removeChild(String name, Base value) throws FHIRException {
1273        if (name.equals("modifier")) {
1274          this.modifier = null;
1275        } else if (name.equals("foodType")) {
1276          this.foodType = null;
1277        } else
1278          super.removeChild(name, value);
1279        
1280      }
1281
1282      @Override
1283      public Base makeProperty(int hash, String name) throws FHIRException {
1284        switch (hash) {
1285        case -615513385:  return getModifier();
1286        case 379498680:  return getFoodType();
1287        default: return super.makeProperty(hash, name);
1288        }
1289
1290      }
1291
1292      @Override
1293      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1294        switch (hash) {
1295        case -615513385: /*modifier*/ return new String[] {"CodeableConcept"};
1296        case 379498680: /*foodType*/ return new String[] {"CodeableConcept"};
1297        default: return super.getTypesForProperty(hash, name);
1298        }
1299
1300      }
1301
1302      @Override
1303      public Base addChild(String name) throws FHIRException {
1304        if (name.equals("modifier")) {
1305          this.modifier = new CodeableConcept();
1306          return this.modifier;
1307        }
1308        else if (name.equals("foodType")) {
1309          this.foodType = new CodeableConcept();
1310          return this.foodType;
1311        }
1312        else
1313          return super.addChild(name);
1314      }
1315
1316      public NutritionOrderOralDietTextureComponent copy() {
1317        NutritionOrderOralDietTextureComponent dst = new NutritionOrderOralDietTextureComponent();
1318        copyValues(dst);
1319        return dst;
1320      }
1321
1322      public void copyValues(NutritionOrderOralDietTextureComponent dst) {
1323        super.copyValues(dst);
1324        dst.modifier = modifier == null ? null : modifier.copy();
1325        dst.foodType = foodType == null ? null : foodType.copy();
1326      }
1327
1328      @Override
1329      public boolean equalsDeep(Base other_) {
1330        if (!super.equalsDeep(other_))
1331          return false;
1332        if (!(other_ instanceof NutritionOrderOralDietTextureComponent))
1333          return false;
1334        NutritionOrderOralDietTextureComponent o = (NutritionOrderOralDietTextureComponent) other_;
1335        return compareDeep(modifier, o.modifier, true) && compareDeep(foodType, o.foodType, true);
1336      }
1337
1338      @Override
1339      public boolean equalsShallow(Base other_) {
1340        if (!super.equalsShallow(other_))
1341          return false;
1342        if (!(other_ instanceof NutritionOrderOralDietTextureComponent))
1343          return false;
1344        NutritionOrderOralDietTextureComponent o = (NutritionOrderOralDietTextureComponent) other_;
1345        return true;
1346      }
1347
1348      public boolean isEmpty() {
1349        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(modifier, foodType);
1350      }
1351
1352  public String fhirType() {
1353    return "NutritionOrder.oralDiet.texture";
1354
1355  }
1356
1357  }
1358
1359    @Block()
1360    public static class NutritionOrderSupplementComponent extends BackboneElement implements IBaseBackboneElement {
1361        /**
1362         * The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement.
1363         */
1364        @Child(name = "type", type = {CodeableReference.class}, order=1, min=0, max=1, modifier=false, summary=true)
1365        @Description(shortDefinition="Type of supplement product requested", formalDefinition="The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement." )
1366        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/supplement-type")
1367        protected CodeableReference type;
1368
1369        /**
1370         * The product or brand name of the nutritional supplement such as "Acme Protein Shake".
1371         */
1372        @Child(name = "productName", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1373        @Description(shortDefinition="Product or brand name of the nutritional supplement", formalDefinition="The product or brand name of the nutritional supplement such as \"Acme Protein Shake\"." )
1374        protected StringType productName;
1375
1376        /**
1377         * Schedule information for a supplement.
1378         */
1379        @Child(name = "schedule", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
1380        @Description(shortDefinition="Scheduling information for supplements", formalDefinition="Schedule information for a supplement." )
1381        protected SupplementScheduleComponent schedule;
1382
1383        /**
1384         * The amount of the nutritional supplement to be given.
1385         */
1386        @Child(name = "quantity", type = {Quantity.class}, order=4, min=0, max=1, modifier=false, summary=false)
1387        @Description(shortDefinition="Amount of the nutritional supplement", formalDefinition="The amount of the nutritional supplement to be given." )
1388        protected Quantity quantity;
1389
1390        /**
1391         * Free text or additional instructions or information pertaining to the oral supplement.
1392         */
1393        @Child(name = "instruction", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
1394        @Description(shortDefinition="Instructions or additional information about the oral supplement", formalDefinition="Free text or additional instructions or information pertaining to the oral supplement." )
1395        protected StringType instruction;
1396
1397        private static final long serialVersionUID = 648731928L;
1398
1399    /**
1400     * Constructor
1401     */
1402      public NutritionOrderSupplementComponent() {
1403        super();
1404      }
1405
1406        /**
1407         * @return {@link #type} (The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement.)
1408         */
1409        public CodeableReference getType() { 
1410          if (this.type == null)
1411            if (Configuration.errorOnAutoCreate())
1412              throw new Error("Attempt to auto-create NutritionOrderSupplementComponent.type");
1413            else if (Configuration.doAutoCreate())
1414              this.type = new CodeableReference(); // cc
1415          return this.type;
1416        }
1417
1418        public boolean hasType() { 
1419          return this.type != null && !this.type.isEmpty();
1420        }
1421
1422        /**
1423         * @param value {@link #type} (The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement.)
1424         */
1425        public NutritionOrderSupplementComponent setType(CodeableReference value) { 
1426          this.type = value;
1427          return this;
1428        }
1429
1430        /**
1431         * @return {@link #productName} (The product or brand name of the nutritional supplement such as "Acme Protein Shake".). This is the underlying object with id, value and extensions. The accessor "getProductName" gives direct access to the value
1432         */
1433        public StringType getProductNameElement() { 
1434          if (this.productName == null)
1435            if (Configuration.errorOnAutoCreate())
1436              throw new Error("Attempt to auto-create NutritionOrderSupplementComponent.productName");
1437            else if (Configuration.doAutoCreate())
1438              this.productName = new StringType(); // bb
1439          return this.productName;
1440        }
1441
1442        public boolean hasProductNameElement() { 
1443          return this.productName != null && !this.productName.isEmpty();
1444        }
1445
1446        public boolean hasProductName() { 
1447          return this.productName != null && !this.productName.isEmpty();
1448        }
1449
1450        /**
1451         * @param value {@link #productName} (The product or brand name of the nutritional supplement such as "Acme Protein Shake".). This is the underlying object with id, value and extensions. The accessor "getProductName" gives direct access to the value
1452         */
1453        public NutritionOrderSupplementComponent setProductNameElement(StringType value) { 
1454          this.productName = value;
1455          return this;
1456        }
1457
1458        /**
1459         * @return The product or brand name of the nutritional supplement such as "Acme Protein Shake".
1460         */
1461        public String getProductName() { 
1462          return this.productName == null ? null : this.productName.getValue();
1463        }
1464
1465        /**
1466         * @param value The product or brand name of the nutritional supplement such as "Acme Protein Shake".
1467         */
1468        public NutritionOrderSupplementComponent setProductName(String value) { 
1469          if (Utilities.noString(value))
1470            this.productName = null;
1471          else {
1472            if (this.productName == null)
1473              this.productName = new StringType();
1474            this.productName.setValue(value);
1475          }
1476          return this;
1477        }
1478
1479        /**
1480         * @return {@link #schedule} (Schedule information for a supplement.)
1481         */
1482        public SupplementScheduleComponent getSchedule() { 
1483          if (this.schedule == null)
1484            if (Configuration.errorOnAutoCreate())
1485              throw new Error("Attempt to auto-create NutritionOrderSupplementComponent.schedule");
1486            else if (Configuration.doAutoCreate())
1487              this.schedule = new SupplementScheduleComponent(); // cc
1488          return this.schedule;
1489        }
1490
1491        public boolean hasSchedule() { 
1492          return this.schedule != null && !this.schedule.isEmpty();
1493        }
1494
1495        /**
1496         * @param value {@link #schedule} (Schedule information for a supplement.)
1497         */
1498        public NutritionOrderSupplementComponent setSchedule(SupplementScheduleComponent value) { 
1499          this.schedule = value;
1500          return this;
1501        }
1502
1503        /**
1504         * @return {@link #quantity} (The amount of the nutritional supplement to be given.)
1505         */
1506        public Quantity getQuantity() { 
1507          if (this.quantity == null)
1508            if (Configuration.errorOnAutoCreate())
1509              throw new Error("Attempt to auto-create NutritionOrderSupplementComponent.quantity");
1510            else if (Configuration.doAutoCreate())
1511              this.quantity = new Quantity(); // cc
1512          return this.quantity;
1513        }
1514
1515        public boolean hasQuantity() { 
1516          return this.quantity != null && !this.quantity.isEmpty();
1517        }
1518
1519        /**
1520         * @param value {@link #quantity} (The amount of the nutritional supplement to be given.)
1521         */
1522        public NutritionOrderSupplementComponent setQuantity(Quantity value) { 
1523          this.quantity = value;
1524          return this;
1525        }
1526
1527        /**
1528         * @return {@link #instruction} (Free text or additional instructions or information pertaining to the oral supplement.). This is the underlying object with id, value and extensions. The accessor "getInstruction" gives direct access to the value
1529         */
1530        public StringType getInstructionElement() { 
1531          if (this.instruction == null)
1532            if (Configuration.errorOnAutoCreate())
1533              throw new Error("Attempt to auto-create NutritionOrderSupplementComponent.instruction");
1534            else if (Configuration.doAutoCreate())
1535              this.instruction = new StringType(); // bb
1536          return this.instruction;
1537        }
1538
1539        public boolean hasInstructionElement() { 
1540          return this.instruction != null && !this.instruction.isEmpty();
1541        }
1542
1543        public boolean hasInstruction() { 
1544          return this.instruction != null && !this.instruction.isEmpty();
1545        }
1546
1547        /**
1548         * @param value {@link #instruction} (Free text or additional instructions or information pertaining to the oral supplement.). This is the underlying object with id, value and extensions. The accessor "getInstruction" gives direct access to the value
1549         */
1550        public NutritionOrderSupplementComponent setInstructionElement(StringType value) { 
1551          this.instruction = value;
1552          return this;
1553        }
1554
1555        /**
1556         * @return Free text or additional instructions or information pertaining to the oral supplement.
1557         */
1558        public String getInstruction() { 
1559          return this.instruction == null ? null : this.instruction.getValue();
1560        }
1561
1562        /**
1563         * @param value Free text or additional instructions or information pertaining to the oral supplement.
1564         */
1565        public NutritionOrderSupplementComponent setInstruction(String value) { 
1566          if (Utilities.noString(value))
1567            this.instruction = null;
1568          else {
1569            if (this.instruction == null)
1570              this.instruction = new StringType();
1571            this.instruction.setValue(value);
1572          }
1573          return this;
1574        }
1575
1576        protected void listChildren(List<Property> children) {
1577          super.listChildren(children);
1578          children.add(new Property("type", "CodeableReference(NutritionProduct)", "The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement.", 0, 1, type));
1579          children.add(new Property("productName", "string", "The product or brand name of the nutritional supplement such as \"Acme Protein Shake\".", 0, 1, productName));
1580          children.add(new Property("schedule", "", "Schedule information for a supplement.", 0, 1, schedule));
1581          children.add(new Property("quantity", "Quantity", "The amount of the nutritional supplement to be given.", 0, 1, quantity));
1582          children.add(new Property("instruction", "string", "Free text or additional instructions or information pertaining to the oral supplement.", 0, 1, instruction));
1583        }
1584
1585        @Override
1586        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1587          switch (_hash) {
1588          case 3575610: /*type*/  return new Property("type", "CodeableReference(NutritionProduct)", "The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement.", 0, 1, type);
1589          case -1491817446: /*productName*/  return new Property("productName", "string", "The product or brand name of the nutritional supplement such as \"Acme Protein Shake\".", 0, 1, productName);
1590          case -697920873: /*schedule*/  return new Property("schedule", "", "Schedule information for a supplement.", 0, 1, schedule);
1591          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "The amount of the nutritional supplement to be given.", 0, 1, quantity);
1592          case 301526158: /*instruction*/  return new Property("instruction", "string", "Free text or additional instructions or information pertaining to the oral supplement.", 0, 1, instruction);
1593          default: return super.getNamedProperty(_hash, _name, _checkValid);
1594          }
1595
1596        }
1597
1598      @Override
1599      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1600        switch (hash) {
1601        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableReference
1602        case -1491817446: /*productName*/ return this.productName == null ? new Base[0] : new Base[] {this.productName}; // StringType
1603        case -697920873: /*schedule*/ return this.schedule == null ? new Base[0] : new Base[] {this.schedule}; // SupplementScheduleComponent
1604        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
1605        case 301526158: /*instruction*/ return this.instruction == null ? new Base[0] : new Base[] {this.instruction}; // StringType
1606        default: return super.getProperty(hash, name, checkValid);
1607        }
1608
1609      }
1610
1611      @Override
1612      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1613        switch (hash) {
1614        case 3575610: // type
1615          this.type = TypeConvertor.castToCodeableReference(value); // CodeableReference
1616          return value;
1617        case -1491817446: // productName
1618          this.productName = TypeConvertor.castToString(value); // StringType
1619          return value;
1620        case -697920873: // schedule
1621          this.schedule = (SupplementScheduleComponent) value; // SupplementScheduleComponent
1622          return value;
1623        case -1285004149: // quantity
1624          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1625          return value;
1626        case 301526158: // instruction
1627          this.instruction = TypeConvertor.castToString(value); // StringType
1628          return value;
1629        default: return super.setProperty(hash, name, value);
1630        }
1631
1632      }
1633
1634      @Override
1635      public Base setProperty(String name, Base value) throws FHIRException {
1636        if (name.equals("type")) {
1637          this.type = TypeConvertor.castToCodeableReference(value); // CodeableReference
1638        } else if (name.equals("productName")) {
1639          this.productName = TypeConvertor.castToString(value); // StringType
1640        } else if (name.equals("schedule")) {
1641          this.schedule = (SupplementScheduleComponent) value; // SupplementScheduleComponent
1642        } else if (name.equals("quantity")) {
1643          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1644        } else if (name.equals("instruction")) {
1645          this.instruction = TypeConvertor.castToString(value); // StringType
1646        } else
1647          return super.setProperty(name, value);
1648        return value;
1649      }
1650
1651  @Override
1652  public void removeChild(String name, Base value) throws FHIRException {
1653        if (name.equals("type")) {
1654          this.type = null;
1655        } else if (name.equals("productName")) {
1656          this.productName = null;
1657        } else if (name.equals("schedule")) {
1658          this.schedule = (SupplementScheduleComponent) value; // SupplementScheduleComponent
1659        } else if (name.equals("quantity")) {
1660          this.quantity = null;
1661        } else if (name.equals("instruction")) {
1662          this.instruction = null;
1663        } else
1664          super.removeChild(name, value);
1665        
1666      }
1667
1668      @Override
1669      public Base makeProperty(int hash, String name) throws FHIRException {
1670        switch (hash) {
1671        case 3575610:  return getType();
1672        case -1491817446:  return getProductNameElement();
1673        case -697920873:  return getSchedule();
1674        case -1285004149:  return getQuantity();
1675        case 301526158:  return getInstructionElement();
1676        default: return super.makeProperty(hash, name);
1677        }
1678
1679      }
1680
1681      @Override
1682      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1683        switch (hash) {
1684        case 3575610: /*type*/ return new String[] {"CodeableReference"};
1685        case -1491817446: /*productName*/ return new String[] {"string"};
1686        case -697920873: /*schedule*/ return new String[] {};
1687        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
1688        case 301526158: /*instruction*/ return new String[] {"string"};
1689        default: return super.getTypesForProperty(hash, name);
1690        }
1691
1692      }
1693
1694      @Override
1695      public Base addChild(String name) throws FHIRException {
1696        if (name.equals("type")) {
1697          this.type = new CodeableReference();
1698          return this.type;
1699        }
1700        else if (name.equals("productName")) {
1701          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.supplement.productName");
1702        }
1703        else if (name.equals("schedule")) {
1704          this.schedule = new SupplementScheduleComponent();
1705          return this.schedule;
1706        }
1707        else if (name.equals("quantity")) {
1708          this.quantity = new Quantity();
1709          return this.quantity;
1710        }
1711        else if (name.equals("instruction")) {
1712          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.supplement.instruction");
1713        }
1714        else
1715          return super.addChild(name);
1716      }
1717
1718      public NutritionOrderSupplementComponent copy() {
1719        NutritionOrderSupplementComponent dst = new NutritionOrderSupplementComponent();
1720        copyValues(dst);
1721        return dst;
1722      }
1723
1724      public void copyValues(NutritionOrderSupplementComponent dst) {
1725        super.copyValues(dst);
1726        dst.type = type == null ? null : type.copy();
1727        dst.productName = productName == null ? null : productName.copy();
1728        dst.schedule = schedule == null ? null : schedule.copy();
1729        dst.quantity = quantity == null ? null : quantity.copy();
1730        dst.instruction = instruction == null ? null : instruction.copy();
1731      }
1732
1733      @Override
1734      public boolean equalsDeep(Base other_) {
1735        if (!super.equalsDeep(other_))
1736          return false;
1737        if (!(other_ instanceof NutritionOrderSupplementComponent))
1738          return false;
1739        NutritionOrderSupplementComponent o = (NutritionOrderSupplementComponent) other_;
1740        return compareDeep(type, o.type, true) && compareDeep(productName, o.productName, true) && compareDeep(schedule, o.schedule, true)
1741           && compareDeep(quantity, o.quantity, true) && compareDeep(instruction, o.instruction, true);
1742      }
1743
1744      @Override
1745      public boolean equalsShallow(Base other_) {
1746        if (!super.equalsShallow(other_))
1747          return false;
1748        if (!(other_ instanceof NutritionOrderSupplementComponent))
1749          return false;
1750        NutritionOrderSupplementComponent o = (NutritionOrderSupplementComponent) other_;
1751        return compareValues(productName, o.productName, true) && compareValues(instruction, o.instruction, true)
1752          ;
1753      }
1754
1755      public boolean isEmpty() {
1756        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, productName, schedule
1757          , quantity, instruction);
1758      }
1759
1760  public String fhirType() {
1761    return "NutritionOrder.supplement";
1762
1763  }
1764
1765  }
1766
1767    @Block()
1768    public static class SupplementScheduleComponent extends BackboneElement implements IBaseBackboneElement {
1769        /**
1770         * The time period and frequency at which the supplement should be given.  The supplement should be given for the combination of all schedules if more than one schedule is present.
1771         */
1772        @Child(name = "timing", type = {Timing.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1773        @Description(shortDefinition="Scheduled frequency of diet", formalDefinition="The time period and frequency at which the supplement should be given.  The supplement should be given for the combination of all schedules if more than one schedule is present." )
1774        protected List<Timing> timing;
1775
1776        /**
1777         * Indicates whether the supplement is only taken when needed within a specific dosing schedule.
1778         */
1779        @Child(name = "asNeeded", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1780        @Description(shortDefinition="Take 'as needed'", formalDefinition="Indicates whether the supplement is only taken when needed within a specific dosing schedule." )
1781        protected BooleanType asNeeded;
1782
1783        /**
1784         * Indicates whether the supplement is only taken based on a precondition for taking the supplement.
1785         */
1786        @Child(name = "asNeededFor", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1787        @Description(shortDefinition="Take 'as needed' for x", formalDefinition="Indicates whether the supplement is only taken based on a precondition for taking the supplement." )
1788        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-as-needed-reason")
1789        protected CodeableConcept asNeededFor;
1790
1791        private static final long serialVersionUID = -1051458478L;
1792
1793    /**
1794     * Constructor
1795     */
1796      public SupplementScheduleComponent() {
1797        super();
1798      }
1799
1800        /**
1801         * @return {@link #timing} (The time period and frequency at which the supplement should be given.  The supplement should be given for the combination of all schedules if more than one schedule is present.)
1802         */
1803        public List<Timing> getTiming() { 
1804          if (this.timing == null)
1805            this.timing = new ArrayList<Timing>();
1806          return this.timing;
1807        }
1808
1809        /**
1810         * @return Returns a reference to <code>this</code> for easy method chaining
1811         */
1812        public SupplementScheduleComponent setTiming(List<Timing> theTiming) { 
1813          this.timing = theTiming;
1814          return this;
1815        }
1816
1817        public boolean hasTiming() { 
1818          if (this.timing == null)
1819            return false;
1820          for (Timing item : this.timing)
1821            if (!item.isEmpty())
1822              return true;
1823          return false;
1824        }
1825
1826        public Timing addTiming() { //3
1827          Timing t = new Timing();
1828          if (this.timing == null)
1829            this.timing = new ArrayList<Timing>();
1830          this.timing.add(t);
1831          return t;
1832        }
1833
1834        public SupplementScheduleComponent addTiming(Timing t) { //3
1835          if (t == null)
1836            return this;
1837          if (this.timing == null)
1838            this.timing = new ArrayList<Timing>();
1839          this.timing.add(t);
1840          return this;
1841        }
1842
1843        /**
1844         * @return The first repetition of repeating field {@link #timing}, creating it if it does not already exist {3}
1845         */
1846        public Timing getTimingFirstRep() { 
1847          if (getTiming().isEmpty()) {
1848            addTiming();
1849          }
1850          return getTiming().get(0);
1851        }
1852
1853        /**
1854         * @return {@link #asNeeded} (Indicates whether the supplement is only taken when needed within a specific dosing schedule.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
1855         */
1856        public BooleanType getAsNeededElement() { 
1857          if (this.asNeeded == null)
1858            if (Configuration.errorOnAutoCreate())
1859              throw new Error("Attempt to auto-create SupplementScheduleComponent.asNeeded");
1860            else if (Configuration.doAutoCreate())
1861              this.asNeeded = new BooleanType(); // bb
1862          return this.asNeeded;
1863        }
1864
1865        public boolean hasAsNeededElement() { 
1866          return this.asNeeded != null && !this.asNeeded.isEmpty();
1867        }
1868
1869        public boolean hasAsNeeded() { 
1870          return this.asNeeded != null && !this.asNeeded.isEmpty();
1871        }
1872
1873        /**
1874         * @param value {@link #asNeeded} (Indicates whether the supplement is only taken when needed within a specific dosing schedule.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
1875         */
1876        public SupplementScheduleComponent setAsNeededElement(BooleanType value) { 
1877          this.asNeeded = value;
1878          return this;
1879        }
1880
1881        /**
1882         * @return Indicates whether the supplement is only taken when needed within a specific dosing schedule.
1883         */
1884        public boolean getAsNeeded() { 
1885          return this.asNeeded == null || this.asNeeded.isEmpty() ? false : this.asNeeded.getValue();
1886        }
1887
1888        /**
1889         * @param value Indicates whether the supplement is only taken when needed within a specific dosing schedule.
1890         */
1891        public SupplementScheduleComponent setAsNeeded(boolean value) { 
1892            if (this.asNeeded == null)
1893              this.asNeeded = new BooleanType();
1894            this.asNeeded.setValue(value);
1895          return this;
1896        }
1897
1898        /**
1899         * @return {@link #asNeededFor} (Indicates whether the supplement is only taken based on a precondition for taking the supplement.)
1900         */
1901        public CodeableConcept getAsNeededFor() { 
1902          if (this.asNeededFor == null)
1903            if (Configuration.errorOnAutoCreate())
1904              throw new Error("Attempt to auto-create SupplementScheduleComponent.asNeededFor");
1905            else if (Configuration.doAutoCreate())
1906              this.asNeededFor = new CodeableConcept(); // cc
1907          return this.asNeededFor;
1908        }
1909
1910        public boolean hasAsNeededFor() { 
1911          return this.asNeededFor != null && !this.asNeededFor.isEmpty();
1912        }
1913
1914        /**
1915         * @param value {@link #asNeededFor} (Indicates whether the supplement is only taken based on a precondition for taking the supplement.)
1916         */
1917        public SupplementScheduleComponent setAsNeededFor(CodeableConcept value) { 
1918          this.asNeededFor = value;
1919          return this;
1920        }
1921
1922        protected void listChildren(List<Property> children) {
1923          super.listChildren(children);
1924          children.add(new Property("timing", "Timing", "The time period and frequency at which the supplement should be given.  The supplement should be given for the combination of all schedules if more than one schedule is present.", 0, java.lang.Integer.MAX_VALUE, timing));
1925          children.add(new Property("asNeeded", "boolean", "Indicates whether the supplement is only taken when needed within a specific dosing schedule.", 0, 1, asNeeded));
1926          children.add(new Property("asNeededFor", "CodeableConcept", "Indicates whether the supplement is only taken based on a precondition for taking the supplement.", 0, 1, asNeededFor));
1927        }
1928
1929        @Override
1930        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1931          switch (_hash) {
1932          case -873664438: /*timing*/  return new Property("timing", "Timing", "The time period and frequency at which the supplement should be given.  The supplement should be given for the combination of all schedules if more than one schedule is present.", 0, java.lang.Integer.MAX_VALUE, timing);
1933          case -1432923513: /*asNeeded*/  return new Property("asNeeded", "boolean", "Indicates whether the supplement is only taken when needed within a specific dosing schedule.", 0, 1, asNeeded);
1934          case -544350014: /*asNeededFor*/  return new Property("asNeededFor", "CodeableConcept", "Indicates whether the supplement is only taken based on a precondition for taking the supplement.", 0, 1, asNeededFor);
1935          default: return super.getNamedProperty(_hash, _name, _checkValid);
1936          }
1937
1938        }
1939
1940      @Override
1941      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1942        switch (hash) {
1943        case -873664438: /*timing*/ return this.timing == null ? new Base[0] : this.timing.toArray(new Base[this.timing.size()]); // Timing
1944        case -1432923513: /*asNeeded*/ return this.asNeeded == null ? new Base[0] : new Base[] {this.asNeeded}; // BooleanType
1945        case -544350014: /*asNeededFor*/ return this.asNeededFor == null ? new Base[0] : new Base[] {this.asNeededFor}; // CodeableConcept
1946        default: return super.getProperty(hash, name, checkValid);
1947        }
1948
1949      }
1950
1951      @Override
1952      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1953        switch (hash) {
1954        case -873664438: // timing
1955          this.getTiming().add(TypeConvertor.castToTiming(value)); // Timing
1956          return value;
1957        case -1432923513: // asNeeded
1958          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
1959          return value;
1960        case -544350014: // asNeededFor
1961          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1962          return value;
1963        default: return super.setProperty(hash, name, value);
1964        }
1965
1966      }
1967
1968      @Override
1969      public Base setProperty(String name, Base value) throws FHIRException {
1970        if (name.equals("timing")) {
1971          this.getTiming().add(TypeConvertor.castToTiming(value));
1972        } else if (name.equals("asNeeded")) {
1973          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
1974        } else if (name.equals("asNeededFor")) {
1975          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1976        } else
1977          return super.setProperty(name, value);
1978        return value;
1979      }
1980
1981  @Override
1982  public void removeChild(String name, Base value) throws FHIRException {
1983        if (name.equals("timing")) {
1984          this.getTiming().remove(value);
1985        } else if (name.equals("asNeeded")) {
1986          this.asNeeded = null;
1987        } else if (name.equals("asNeededFor")) {
1988          this.asNeededFor = null;
1989        } else
1990          super.removeChild(name, value);
1991        
1992      }
1993
1994      @Override
1995      public Base makeProperty(int hash, String name) throws FHIRException {
1996        switch (hash) {
1997        case -873664438:  return addTiming(); 
1998        case -1432923513:  return getAsNeededElement();
1999        case -544350014:  return getAsNeededFor();
2000        default: return super.makeProperty(hash, name);
2001        }
2002
2003      }
2004
2005      @Override
2006      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2007        switch (hash) {
2008        case -873664438: /*timing*/ return new String[] {"Timing"};
2009        case -1432923513: /*asNeeded*/ return new String[] {"boolean"};
2010        case -544350014: /*asNeededFor*/ return new String[] {"CodeableConcept"};
2011        default: return super.getTypesForProperty(hash, name);
2012        }
2013
2014      }
2015
2016      @Override
2017      public Base addChild(String name) throws FHIRException {
2018        if (name.equals("timing")) {
2019          return addTiming();
2020        }
2021        else if (name.equals("asNeeded")) {
2022          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.supplement.schedule.asNeeded");
2023        }
2024        else if (name.equals("asNeededFor")) {
2025          this.asNeededFor = new CodeableConcept();
2026          return this.asNeededFor;
2027        }
2028        else
2029          return super.addChild(name);
2030      }
2031
2032      public SupplementScheduleComponent copy() {
2033        SupplementScheduleComponent dst = new SupplementScheduleComponent();
2034        copyValues(dst);
2035        return dst;
2036      }
2037
2038      public void copyValues(SupplementScheduleComponent dst) {
2039        super.copyValues(dst);
2040        if (timing != null) {
2041          dst.timing = new ArrayList<Timing>();
2042          for (Timing i : timing)
2043            dst.timing.add(i.copy());
2044        };
2045        dst.asNeeded = asNeeded == null ? null : asNeeded.copy();
2046        dst.asNeededFor = asNeededFor == null ? null : asNeededFor.copy();
2047      }
2048
2049      @Override
2050      public boolean equalsDeep(Base other_) {
2051        if (!super.equalsDeep(other_))
2052          return false;
2053        if (!(other_ instanceof SupplementScheduleComponent))
2054          return false;
2055        SupplementScheduleComponent o = (SupplementScheduleComponent) other_;
2056        return compareDeep(timing, o.timing, true) && compareDeep(asNeeded, o.asNeeded, true) && compareDeep(asNeededFor, o.asNeededFor, true)
2057          ;
2058      }
2059
2060      @Override
2061      public boolean equalsShallow(Base other_) {
2062        if (!super.equalsShallow(other_))
2063          return false;
2064        if (!(other_ instanceof SupplementScheduleComponent))
2065          return false;
2066        SupplementScheduleComponent o = (SupplementScheduleComponent) other_;
2067        return compareValues(asNeeded, o.asNeeded, true);
2068      }
2069
2070      public boolean isEmpty() {
2071        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(timing, asNeeded, asNeededFor
2072          );
2073      }
2074
2075  public String fhirType() {
2076    return "NutritionOrder.supplement.schedule";
2077
2078  }
2079
2080  }
2081
2082    @Block()
2083    public static class NutritionOrderEnteralFormulaComponent extends BackboneElement implements IBaseBackboneElement {
2084        /**
2085         * The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula.
2086         */
2087        @Child(name = "baseFormulaType", type = {CodeableReference.class}, order=1, min=0, max=1, modifier=false, summary=true)
2088        @Description(shortDefinition="Type of enteral or infant formula", formalDefinition="The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula." )
2089        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/entformula-type")
2090        protected CodeableReference baseFormulaType;
2091
2092        /**
2093         * The product or brand name of the enteral or infant formula product such as "ACME Adult Standard Formula".
2094         */
2095        @Child(name = "baseFormulaProductName", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2096        @Description(shortDefinition="Product or brand name of the enteral or infant formula", formalDefinition="The product or brand name of the enteral or infant formula product such as \"ACME Adult Standard Formula\"." )
2097        protected StringType baseFormulaProductName;
2098
2099        /**
2100         * The intended type of device that is to be used for the administration of the enteral formula.
2101         */
2102        @Child(name = "deliveryDevice", type = {CodeableReference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2103        @Description(shortDefinition="Intended type of device for the administration", formalDefinition="The intended type of device that is to be used for the administration of the enteral formula." )
2104        protected List<CodeableReference> deliveryDevice;
2105
2106        /**
2107         * Indicates modular components to be provided in addition or mixed with the base formula.
2108         */
2109        @Child(name = "additive", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2110        @Description(shortDefinition="Components to add to the feeding", formalDefinition="Indicates modular components to be provided in addition or mixed with the base formula." )
2111        protected List<NutritionOrderEnteralFormulaAdditiveComponent> additive;
2112
2113        /**
2114         * The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL.
2115         */
2116        @Child(name = "caloricDensity", type = {Quantity.class}, order=5, min=0, max=1, modifier=false, summary=false)
2117        @Description(shortDefinition="Amount of energy per specified volume that is required", formalDefinition="The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL." )
2118        protected Quantity caloricDensity;
2119
2120        /**
2121         * The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube.
2122         */
2123        @Child(name = "routeOfAdministration", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=false)
2124        @Description(shortDefinition="How the formula should enter the patient's gastrointestinal tract", formalDefinition="The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube." )
2125        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/enteral-route")
2126        protected CodeableConcept routeOfAdministration;
2127
2128        /**
2129         * Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours.
2130         */
2131        @Child(name = "administration", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2132        @Description(shortDefinition="Formula feeding instruction as structured data", formalDefinition="Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours." )
2133        protected List<NutritionOrderEnteralFormulaAdministrationComponent> administration;
2134
2135        /**
2136         * The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours.
2137         */
2138        @Child(name = "maxVolumeToDeliver", type = {Quantity.class}, order=8, min=0, max=1, modifier=false, summary=false)
2139        @Description(shortDefinition="Upper limit on formula volume per unit of time", formalDefinition="The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours." )
2140        protected Quantity maxVolumeToDeliver;
2141
2142        /**
2143         * Free text formula administration, feeding instructions or additional instructions or information.
2144         */
2145        @Child(name = "administrationInstruction", type = {MarkdownType.class}, order=9, min=0, max=1, modifier=false, summary=true)
2146        @Description(shortDefinition="Formula feeding instructions expressed as text", formalDefinition="Free text formula administration, feeding instructions or additional instructions or information." )
2147        protected MarkdownType administrationInstruction;
2148
2149        private static final long serialVersionUID = -694080614L;
2150
2151    /**
2152     * Constructor
2153     */
2154      public NutritionOrderEnteralFormulaComponent() {
2155        super();
2156      }
2157
2158        /**
2159         * @return {@link #baseFormulaType} (The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula.)
2160         */
2161        public CodeableReference getBaseFormulaType() { 
2162          if (this.baseFormulaType == null)
2163            if (Configuration.errorOnAutoCreate())
2164              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaComponent.baseFormulaType");
2165            else if (Configuration.doAutoCreate())
2166              this.baseFormulaType = new CodeableReference(); // cc
2167          return this.baseFormulaType;
2168        }
2169
2170        public boolean hasBaseFormulaType() { 
2171          return this.baseFormulaType != null && !this.baseFormulaType.isEmpty();
2172        }
2173
2174        /**
2175         * @param value {@link #baseFormulaType} (The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula.)
2176         */
2177        public NutritionOrderEnteralFormulaComponent setBaseFormulaType(CodeableReference value) { 
2178          this.baseFormulaType = value;
2179          return this;
2180        }
2181
2182        /**
2183         * @return {@link #baseFormulaProductName} (The product or brand name of the enteral or infant formula product such as "ACME Adult Standard Formula".). This is the underlying object with id, value and extensions. The accessor "getBaseFormulaProductName" gives direct access to the value
2184         */
2185        public StringType getBaseFormulaProductNameElement() { 
2186          if (this.baseFormulaProductName == null)
2187            if (Configuration.errorOnAutoCreate())
2188              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaComponent.baseFormulaProductName");
2189            else if (Configuration.doAutoCreate())
2190              this.baseFormulaProductName = new StringType(); // bb
2191          return this.baseFormulaProductName;
2192        }
2193
2194        public boolean hasBaseFormulaProductNameElement() { 
2195          return this.baseFormulaProductName != null && !this.baseFormulaProductName.isEmpty();
2196        }
2197
2198        public boolean hasBaseFormulaProductName() { 
2199          return this.baseFormulaProductName != null && !this.baseFormulaProductName.isEmpty();
2200        }
2201
2202        /**
2203         * @param value {@link #baseFormulaProductName} (The product or brand name of the enteral or infant formula product such as "ACME Adult Standard Formula".). This is the underlying object with id, value and extensions. The accessor "getBaseFormulaProductName" gives direct access to the value
2204         */
2205        public NutritionOrderEnteralFormulaComponent setBaseFormulaProductNameElement(StringType value) { 
2206          this.baseFormulaProductName = value;
2207          return this;
2208        }
2209
2210        /**
2211         * @return The product or brand name of the enteral or infant formula product such as "ACME Adult Standard Formula".
2212         */
2213        public String getBaseFormulaProductName() { 
2214          return this.baseFormulaProductName == null ? null : this.baseFormulaProductName.getValue();
2215        }
2216
2217        /**
2218         * @param value The product or brand name of the enteral or infant formula product such as "ACME Adult Standard Formula".
2219         */
2220        public NutritionOrderEnteralFormulaComponent setBaseFormulaProductName(String value) { 
2221          if (Utilities.noString(value))
2222            this.baseFormulaProductName = null;
2223          else {
2224            if (this.baseFormulaProductName == null)
2225              this.baseFormulaProductName = new StringType();
2226            this.baseFormulaProductName.setValue(value);
2227          }
2228          return this;
2229        }
2230
2231        /**
2232         * @return {@link #deliveryDevice} (The intended type of device that is to be used for the administration of the enteral formula.)
2233         */
2234        public List<CodeableReference> getDeliveryDevice() { 
2235          if (this.deliveryDevice == null)
2236            this.deliveryDevice = new ArrayList<CodeableReference>();
2237          return this.deliveryDevice;
2238        }
2239
2240        /**
2241         * @return Returns a reference to <code>this</code> for easy method chaining
2242         */
2243        public NutritionOrderEnteralFormulaComponent setDeliveryDevice(List<CodeableReference> theDeliveryDevice) { 
2244          this.deliveryDevice = theDeliveryDevice;
2245          return this;
2246        }
2247
2248        public boolean hasDeliveryDevice() { 
2249          if (this.deliveryDevice == null)
2250            return false;
2251          for (CodeableReference item : this.deliveryDevice)
2252            if (!item.isEmpty())
2253              return true;
2254          return false;
2255        }
2256
2257        public CodeableReference addDeliveryDevice() { //3
2258          CodeableReference t = new CodeableReference();
2259          if (this.deliveryDevice == null)
2260            this.deliveryDevice = new ArrayList<CodeableReference>();
2261          this.deliveryDevice.add(t);
2262          return t;
2263        }
2264
2265        public NutritionOrderEnteralFormulaComponent addDeliveryDevice(CodeableReference t) { //3
2266          if (t == null)
2267            return this;
2268          if (this.deliveryDevice == null)
2269            this.deliveryDevice = new ArrayList<CodeableReference>();
2270          this.deliveryDevice.add(t);
2271          return this;
2272        }
2273
2274        /**
2275         * @return The first repetition of repeating field {@link #deliveryDevice}, creating it if it does not already exist {3}
2276         */
2277        public CodeableReference getDeliveryDeviceFirstRep() { 
2278          if (getDeliveryDevice().isEmpty()) {
2279            addDeliveryDevice();
2280          }
2281          return getDeliveryDevice().get(0);
2282        }
2283
2284        /**
2285         * @return {@link #additive} (Indicates modular components to be provided in addition or mixed with the base formula.)
2286         */
2287        public List<NutritionOrderEnteralFormulaAdditiveComponent> getAdditive() { 
2288          if (this.additive == null)
2289            this.additive = new ArrayList<NutritionOrderEnteralFormulaAdditiveComponent>();
2290          return this.additive;
2291        }
2292
2293        /**
2294         * @return Returns a reference to <code>this</code> for easy method chaining
2295         */
2296        public NutritionOrderEnteralFormulaComponent setAdditive(List<NutritionOrderEnteralFormulaAdditiveComponent> theAdditive) { 
2297          this.additive = theAdditive;
2298          return this;
2299        }
2300
2301        public boolean hasAdditive() { 
2302          if (this.additive == null)
2303            return false;
2304          for (NutritionOrderEnteralFormulaAdditiveComponent item : this.additive)
2305            if (!item.isEmpty())
2306              return true;
2307          return false;
2308        }
2309
2310        public NutritionOrderEnteralFormulaAdditiveComponent addAdditive() { //3
2311          NutritionOrderEnteralFormulaAdditiveComponent t = new NutritionOrderEnteralFormulaAdditiveComponent();
2312          if (this.additive == null)
2313            this.additive = new ArrayList<NutritionOrderEnteralFormulaAdditiveComponent>();
2314          this.additive.add(t);
2315          return t;
2316        }
2317
2318        public NutritionOrderEnteralFormulaComponent addAdditive(NutritionOrderEnteralFormulaAdditiveComponent t) { //3
2319          if (t == null)
2320            return this;
2321          if (this.additive == null)
2322            this.additive = new ArrayList<NutritionOrderEnteralFormulaAdditiveComponent>();
2323          this.additive.add(t);
2324          return this;
2325        }
2326
2327        /**
2328         * @return The first repetition of repeating field {@link #additive}, creating it if it does not already exist {3}
2329         */
2330        public NutritionOrderEnteralFormulaAdditiveComponent getAdditiveFirstRep() { 
2331          if (getAdditive().isEmpty()) {
2332            addAdditive();
2333          }
2334          return getAdditive().get(0);
2335        }
2336
2337        /**
2338         * @return {@link #caloricDensity} (The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL.)
2339         */
2340        public Quantity getCaloricDensity() { 
2341          if (this.caloricDensity == null)
2342            if (Configuration.errorOnAutoCreate())
2343              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaComponent.caloricDensity");
2344            else if (Configuration.doAutoCreate())
2345              this.caloricDensity = new Quantity(); // cc
2346          return this.caloricDensity;
2347        }
2348
2349        public boolean hasCaloricDensity() { 
2350          return this.caloricDensity != null && !this.caloricDensity.isEmpty();
2351        }
2352
2353        /**
2354         * @param value {@link #caloricDensity} (The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL.)
2355         */
2356        public NutritionOrderEnteralFormulaComponent setCaloricDensity(Quantity value) { 
2357          this.caloricDensity = value;
2358          return this;
2359        }
2360
2361        /**
2362         * @return {@link #routeOfAdministration} (The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube.)
2363         */
2364        public CodeableConcept getRouteOfAdministration() { 
2365          if (this.routeOfAdministration == null)
2366            if (Configuration.errorOnAutoCreate())
2367              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaComponent.routeOfAdministration");
2368            else if (Configuration.doAutoCreate())
2369              this.routeOfAdministration = new CodeableConcept(); // cc
2370          return this.routeOfAdministration;
2371        }
2372
2373        public boolean hasRouteOfAdministration() { 
2374          return this.routeOfAdministration != null && !this.routeOfAdministration.isEmpty();
2375        }
2376
2377        /**
2378         * @param value {@link #routeOfAdministration} (The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube.)
2379         */
2380        public NutritionOrderEnteralFormulaComponent setRouteOfAdministration(CodeableConcept value) { 
2381          this.routeOfAdministration = value;
2382          return this;
2383        }
2384
2385        /**
2386         * @return {@link #administration} (Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours.)
2387         */
2388        public List<NutritionOrderEnteralFormulaAdministrationComponent> getAdministration() { 
2389          if (this.administration == null)
2390            this.administration = new ArrayList<NutritionOrderEnteralFormulaAdministrationComponent>();
2391          return this.administration;
2392        }
2393
2394        /**
2395         * @return Returns a reference to <code>this</code> for easy method chaining
2396         */
2397        public NutritionOrderEnteralFormulaComponent setAdministration(List<NutritionOrderEnteralFormulaAdministrationComponent> theAdministration) { 
2398          this.administration = theAdministration;
2399          return this;
2400        }
2401
2402        public boolean hasAdministration() { 
2403          if (this.administration == null)
2404            return false;
2405          for (NutritionOrderEnteralFormulaAdministrationComponent item : this.administration)
2406            if (!item.isEmpty())
2407              return true;
2408          return false;
2409        }
2410
2411        public NutritionOrderEnteralFormulaAdministrationComponent addAdministration() { //3
2412          NutritionOrderEnteralFormulaAdministrationComponent t = new NutritionOrderEnteralFormulaAdministrationComponent();
2413          if (this.administration == null)
2414            this.administration = new ArrayList<NutritionOrderEnteralFormulaAdministrationComponent>();
2415          this.administration.add(t);
2416          return t;
2417        }
2418
2419        public NutritionOrderEnteralFormulaComponent addAdministration(NutritionOrderEnteralFormulaAdministrationComponent t) { //3
2420          if (t == null)
2421            return this;
2422          if (this.administration == null)
2423            this.administration = new ArrayList<NutritionOrderEnteralFormulaAdministrationComponent>();
2424          this.administration.add(t);
2425          return this;
2426        }
2427
2428        /**
2429         * @return The first repetition of repeating field {@link #administration}, creating it if it does not already exist {3}
2430         */
2431        public NutritionOrderEnteralFormulaAdministrationComponent getAdministrationFirstRep() { 
2432          if (getAdministration().isEmpty()) {
2433            addAdministration();
2434          }
2435          return getAdministration().get(0);
2436        }
2437
2438        /**
2439         * @return {@link #maxVolumeToDeliver} (The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours.)
2440         */
2441        public Quantity getMaxVolumeToDeliver() { 
2442          if (this.maxVolumeToDeliver == null)
2443            if (Configuration.errorOnAutoCreate())
2444              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaComponent.maxVolumeToDeliver");
2445            else if (Configuration.doAutoCreate())
2446              this.maxVolumeToDeliver = new Quantity(); // cc
2447          return this.maxVolumeToDeliver;
2448        }
2449
2450        public boolean hasMaxVolumeToDeliver() { 
2451          return this.maxVolumeToDeliver != null && !this.maxVolumeToDeliver.isEmpty();
2452        }
2453
2454        /**
2455         * @param value {@link #maxVolumeToDeliver} (The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours.)
2456         */
2457        public NutritionOrderEnteralFormulaComponent setMaxVolumeToDeliver(Quantity value) { 
2458          this.maxVolumeToDeliver = value;
2459          return this;
2460        }
2461
2462        /**
2463         * @return {@link #administrationInstruction} (Free text formula administration, feeding instructions or additional instructions or information.). This is the underlying object with id, value and extensions. The accessor "getAdministrationInstruction" gives direct access to the value
2464         */
2465        public MarkdownType getAdministrationInstructionElement() { 
2466          if (this.administrationInstruction == null)
2467            if (Configuration.errorOnAutoCreate())
2468              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaComponent.administrationInstruction");
2469            else if (Configuration.doAutoCreate())
2470              this.administrationInstruction = new MarkdownType(); // bb
2471          return this.administrationInstruction;
2472        }
2473
2474        public boolean hasAdministrationInstructionElement() { 
2475          return this.administrationInstruction != null && !this.administrationInstruction.isEmpty();
2476        }
2477
2478        public boolean hasAdministrationInstruction() { 
2479          return this.administrationInstruction != null && !this.administrationInstruction.isEmpty();
2480        }
2481
2482        /**
2483         * @param value {@link #administrationInstruction} (Free text formula administration, feeding instructions or additional instructions or information.). This is the underlying object with id, value and extensions. The accessor "getAdministrationInstruction" gives direct access to the value
2484         */
2485        public NutritionOrderEnteralFormulaComponent setAdministrationInstructionElement(MarkdownType value) { 
2486          this.administrationInstruction = value;
2487          return this;
2488        }
2489
2490        /**
2491         * @return Free text formula administration, feeding instructions or additional instructions or information.
2492         */
2493        public String getAdministrationInstruction() { 
2494          return this.administrationInstruction == null ? null : this.administrationInstruction.getValue();
2495        }
2496
2497        /**
2498         * @param value Free text formula administration, feeding instructions or additional instructions or information.
2499         */
2500        public NutritionOrderEnteralFormulaComponent setAdministrationInstruction(String value) { 
2501          if (Utilities.noString(value))
2502            this.administrationInstruction = null;
2503          else {
2504            if (this.administrationInstruction == null)
2505              this.administrationInstruction = new MarkdownType();
2506            this.administrationInstruction.setValue(value);
2507          }
2508          return this;
2509        }
2510
2511        protected void listChildren(List<Property> children) {
2512          super.listChildren(children);
2513          children.add(new Property("baseFormulaType", "CodeableReference(NutritionProduct)", "The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula.", 0, 1, baseFormulaType));
2514          children.add(new Property("baseFormulaProductName", "string", "The product or brand name of the enteral or infant formula product such as \"ACME Adult Standard Formula\".", 0, 1, baseFormulaProductName));
2515          children.add(new Property("deliveryDevice", "CodeableReference(DeviceDefinition)", "The intended type of device that is to be used for the administration of the enteral formula.", 0, java.lang.Integer.MAX_VALUE, deliveryDevice));
2516          children.add(new Property("additive", "", "Indicates modular components to be provided in addition or mixed with the base formula.", 0, java.lang.Integer.MAX_VALUE, additive));
2517          children.add(new Property("caloricDensity", "Quantity", "The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL.", 0, 1, caloricDensity));
2518          children.add(new Property("routeOfAdministration", "CodeableConcept", "The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube.", 0, 1, routeOfAdministration));
2519          children.add(new Property("administration", "", "Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours.", 0, java.lang.Integer.MAX_VALUE, administration));
2520          children.add(new Property("maxVolumeToDeliver", "Quantity", "The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours.", 0, 1, maxVolumeToDeliver));
2521          children.add(new Property("administrationInstruction", "markdown", "Free text formula administration, feeding instructions or additional instructions or information.", 0, 1, administrationInstruction));
2522        }
2523
2524        @Override
2525        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2526          switch (_hash) {
2527          case -138930641: /*baseFormulaType*/  return new Property("baseFormulaType", "CodeableReference(NutritionProduct)", "The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula.", 0, 1, baseFormulaType);
2528          case -1267705979: /*baseFormulaProductName*/  return new Property("baseFormulaProductName", "string", "The product or brand name of the enteral or infant formula product such as \"ACME Adult Standard Formula\".", 0, 1, baseFormulaProductName);
2529          case 2060803946: /*deliveryDevice*/  return new Property("deliveryDevice", "CodeableReference(DeviceDefinition)", "The intended type of device that is to be used for the administration of the enteral formula.", 0, java.lang.Integer.MAX_VALUE, deliveryDevice);
2530          case -1226589236: /*additive*/  return new Property("additive", "", "Indicates modular components to be provided in addition or mixed with the base formula.", 0, java.lang.Integer.MAX_VALUE, additive);
2531          case 186983261: /*caloricDensity*/  return new Property("caloricDensity", "Quantity", "The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL.", 0, 1, caloricDensity);
2532          case 1742084734: /*routeOfAdministration*/  return new Property("routeOfAdministration", "CodeableConcept", "The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube.", 0, 1, routeOfAdministration);
2533          case 1255702622: /*administration*/  return new Property("administration", "", "Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours.", 0, java.lang.Integer.MAX_VALUE, administration);
2534          case 2017924652: /*maxVolumeToDeliver*/  return new Property("maxVolumeToDeliver", "Quantity", "The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours.", 0, 1, maxVolumeToDeliver);
2535          case 427085136: /*administrationInstruction*/  return new Property("administrationInstruction", "markdown", "Free text formula administration, feeding instructions or additional instructions or information.", 0, 1, administrationInstruction);
2536          default: return super.getNamedProperty(_hash, _name, _checkValid);
2537          }
2538
2539        }
2540
2541      @Override
2542      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2543        switch (hash) {
2544        case -138930641: /*baseFormulaType*/ return this.baseFormulaType == null ? new Base[0] : new Base[] {this.baseFormulaType}; // CodeableReference
2545        case -1267705979: /*baseFormulaProductName*/ return this.baseFormulaProductName == null ? new Base[0] : new Base[] {this.baseFormulaProductName}; // StringType
2546        case 2060803946: /*deliveryDevice*/ return this.deliveryDevice == null ? new Base[0] : this.deliveryDevice.toArray(new Base[this.deliveryDevice.size()]); // CodeableReference
2547        case -1226589236: /*additive*/ return this.additive == null ? new Base[0] : this.additive.toArray(new Base[this.additive.size()]); // NutritionOrderEnteralFormulaAdditiveComponent
2548        case 186983261: /*caloricDensity*/ return this.caloricDensity == null ? new Base[0] : new Base[] {this.caloricDensity}; // Quantity
2549        case 1742084734: /*routeOfAdministration*/ return this.routeOfAdministration == null ? new Base[0] : new Base[] {this.routeOfAdministration}; // CodeableConcept
2550        case 1255702622: /*administration*/ return this.administration == null ? new Base[0] : this.administration.toArray(new Base[this.administration.size()]); // NutritionOrderEnteralFormulaAdministrationComponent
2551        case 2017924652: /*maxVolumeToDeliver*/ return this.maxVolumeToDeliver == null ? new Base[0] : new Base[] {this.maxVolumeToDeliver}; // Quantity
2552        case 427085136: /*administrationInstruction*/ return this.administrationInstruction == null ? new Base[0] : new Base[] {this.administrationInstruction}; // MarkdownType
2553        default: return super.getProperty(hash, name, checkValid);
2554        }
2555
2556      }
2557
2558      @Override
2559      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2560        switch (hash) {
2561        case -138930641: // baseFormulaType
2562          this.baseFormulaType = TypeConvertor.castToCodeableReference(value); // CodeableReference
2563          return value;
2564        case -1267705979: // baseFormulaProductName
2565          this.baseFormulaProductName = TypeConvertor.castToString(value); // StringType
2566          return value;
2567        case 2060803946: // deliveryDevice
2568          this.getDeliveryDevice().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2569          return value;
2570        case -1226589236: // additive
2571          this.getAdditive().add((NutritionOrderEnteralFormulaAdditiveComponent) value); // NutritionOrderEnteralFormulaAdditiveComponent
2572          return value;
2573        case 186983261: // caloricDensity
2574          this.caloricDensity = TypeConvertor.castToQuantity(value); // Quantity
2575          return value;
2576        case 1742084734: // routeOfAdministration
2577          this.routeOfAdministration = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2578          return value;
2579        case 1255702622: // administration
2580          this.getAdministration().add((NutritionOrderEnteralFormulaAdministrationComponent) value); // NutritionOrderEnteralFormulaAdministrationComponent
2581          return value;
2582        case 2017924652: // maxVolumeToDeliver
2583          this.maxVolumeToDeliver = TypeConvertor.castToQuantity(value); // Quantity
2584          return value;
2585        case 427085136: // administrationInstruction
2586          this.administrationInstruction = TypeConvertor.castToMarkdown(value); // MarkdownType
2587          return value;
2588        default: return super.setProperty(hash, name, value);
2589        }
2590
2591      }
2592
2593      @Override
2594      public Base setProperty(String name, Base value) throws FHIRException {
2595        if (name.equals("baseFormulaType")) {
2596          this.baseFormulaType = TypeConvertor.castToCodeableReference(value); // CodeableReference
2597        } else if (name.equals("baseFormulaProductName")) {
2598          this.baseFormulaProductName = TypeConvertor.castToString(value); // StringType
2599        } else if (name.equals("deliveryDevice")) {
2600          this.getDeliveryDevice().add(TypeConvertor.castToCodeableReference(value));
2601        } else if (name.equals("additive")) {
2602          this.getAdditive().add((NutritionOrderEnteralFormulaAdditiveComponent) value);
2603        } else if (name.equals("caloricDensity")) {
2604          this.caloricDensity = TypeConvertor.castToQuantity(value); // Quantity
2605        } else if (name.equals("routeOfAdministration")) {
2606          this.routeOfAdministration = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2607        } else if (name.equals("administration")) {
2608          this.getAdministration().add((NutritionOrderEnteralFormulaAdministrationComponent) value);
2609        } else if (name.equals("maxVolumeToDeliver")) {
2610          this.maxVolumeToDeliver = TypeConvertor.castToQuantity(value); // Quantity
2611        } else if (name.equals("administrationInstruction")) {
2612          this.administrationInstruction = TypeConvertor.castToMarkdown(value); // MarkdownType
2613        } else
2614          return super.setProperty(name, value);
2615        return value;
2616      }
2617
2618  @Override
2619  public void removeChild(String name, Base value) throws FHIRException {
2620        if (name.equals("baseFormulaType")) {
2621          this.baseFormulaType = null;
2622        } else if (name.equals("baseFormulaProductName")) {
2623          this.baseFormulaProductName = null;
2624        } else if (name.equals("deliveryDevice")) {
2625          this.getDeliveryDevice().remove(value);
2626        } else if (name.equals("additive")) {
2627          this.getAdditive().remove((NutritionOrderEnteralFormulaAdditiveComponent) value);
2628        } else if (name.equals("caloricDensity")) {
2629          this.caloricDensity = null;
2630        } else if (name.equals("routeOfAdministration")) {
2631          this.routeOfAdministration = null;
2632        } else if (name.equals("administration")) {
2633          this.getAdministration().remove((NutritionOrderEnteralFormulaAdministrationComponent) value);
2634        } else if (name.equals("maxVolumeToDeliver")) {
2635          this.maxVolumeToDeliver = null;
2636        } else if (name.equals("administrationInstruction")) {
2637          this.administrationInstruction = null;
2638        } else
2639          super.removeChild(name, value);
2640        
2641      }
2642
2643      @Override
2644      public Base makeProperty(int hash, String name) throws FHIRException {
2645        switch (hash) {
2646        case -138930641:  return getBaseFormulaType();
2647        case -1267705979:  return getBaseFormulaProductNameElement();
2648        case 2060803946:  return addDeliveryDevice(); 
2649        case -1226589236:  return addAdditive(); 
2650        case 186983261:  return getCaloricDensity();
2651        case 1742084734:  return getRouteOfAdministration();
2652        case 1255702622:  return addAdministration(); 
2653        case 2017924652:  return getMaxVolumeToDeliver();
2654        case 427085136:  return getAdministrationInstructionElement();
2655        default: return super.makeProperty(hash, name);
2656        }
2657
2658      }
2659
2660      @Override
2661      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2662        switch (hash) {
2663        case -138930641: /*baseFormulaType*/ return new String[] {"CodeableReference"};
2664        case -1267705979: /*baseFormulaProductName*/ return new String[] {"string"};
2665        case 2060803946: /*deliveryDevice*/ return new String[] {"CodeableReference"};
2666        case -1226589236: /*additive*/ return new String[] {};
2667        case 186983261: /*caloricDensity*/ return new String[] {"Quantity"};
2668        case 1742084734: /*routeOfAdministration*/ return new String[] {"CodeableConcept"};
2669        case 1255702622: /*administration*/ return new String[] {};
2670        case 2017924652: /*maxVolumeToDeliver*/ return new String[] {"Quantity"};
2671        case 427085136: /*administrationInstruction*/ return new String[] {"markdown"};
2672        default: return super.getTypesForProperty(hash, name);
2673        }
2674
2675      }
2676
2677      @Override
2678      public Base addChild(String name) throws FHIRException {
2679        if (name.equals("baseFormulaType")) {
2680          this.baseFormulaType = new CodeableReference();
2681          return this.baseFormulaType;
2682        }
2683        else if (name.equals("baseFormulaProductName")) {
2684          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.enteralFormula.baseFormulaProductName");
2685        }
2686        else if (name.equals("deliveryDevice")) {
2687          return addDeliveryDevice();
2688        }
2689        else if (name.equals("additive")) {
2690          return addAdditive();
2691        }
2692        else if (name.equals("caloricDensity")) {
2693          this.caloricDensity = new Quantity();
2694          return this.caloricDensity;
2695        }
2696        else if (name.equals("routeOfAdministration")) {
2697          this.routeOfAdministration = new CodeableConcept();
2698          return this.routeOfAdministration;
2699        }
2700        else if (name.equals("administration")) {
2701          return addAdministration();
2702        }
2703        else if (name.equals("maxVolumeToDeliver")) {
2704          this.maxVolumeToDeliver = new Quantity();
2705          return this.maxVolumeToDeliver;
2706        }
2707        else if (name.equals("administrationInstruction")) {
2708          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.enteralFormula.administrationInstruction");
2709        }
2710        else
2711          return super.addChild(name);
2712      }
2713
2714      public NutritionOrderEnteralFormulaComponent copy() {
2715        NutritionOrderEnteralFormulaComponent dst = new NutritionOrderEnteralFormulaComponent();
2716        copyValues(dst);
2717        return dst;
2718      }
2719
2720      public void copyValues(NutritionOrderEnteralFormulaComponent dst) {
2721        super.copyValues(dst);
2722        dst.baseFormulaType = baseFormulaType == null ? null : baseFormulaType.copy();
2723        dst.baseFormulaProductName = baseFormulaProductName == null ? null : baseFormulaProductName.copy();
2724        if (deliveryDevice != null) {
2725          dst.deliveryDevice = new ArrayList<CodeableReference>();
2726          for (CodeableReference i : deliveryDevice)
2727            dst.deliveryDevice.add(i.copy());
2728        };
2729        if (additive != null) {
2730          dst.additive = new ArrayList<NutritionOrderEnteralFormulaAdditiveComponent>();
2731          for (NutritionOrderEnteralFormulaAdditiveComponent i : additive)
2732            dst.additive.add(i.copy());
2733        };
2734        dst.caloricDensity = caloricDensity == null ? null : caloricDensity.copy();
2735        dst.routeOfAdministration = routeOfAdministration == null ? null : routeOfAdministration.copy();
2736        if (administration != null) {
2737          dst.administration = new ArrayList<NutritionOrderEnteralFormulaAdministrationComponent>();
2738          for (NutritionOrderEnteralFormulaAdministrationComponent i : administration)
2739            dst.administration.add(i.copy());
2740        };
2741        dst.maxVolumeToDeliver = maxVolumeToDeliver == null ? null : maxVolumeToDeliver.copy();
2742        dst.administrationInstruction = administrationInstruction == null ? null : administrationInstruction.copy();
2743      }
2744
2745      @Override
2746      public boolean equalsDeep(Base other_) {
2747        if (!super.equalsDeep(other_))
2748          return false;
2749        if (!(other_ instanceof NutritionOrderEnteralFormulaComponent))
2750          return false;
2751        NutritionOrderEnteralFormulaComponent o = (NutritionOrderEnteralFormulaComponent) other_;
2752        return compareDeep(baseFormulaType, o.baseFormulaType, true) && compareDeep(baseFormulaProductName, o.baseFormulaProductName, true)
2753           && compareDeep(deliveryDevice, o.deliveryDevice, true) && compareDeep(additive, o.additive, true)
2754           && compareDeep(caloricDensity, o.caloricDensity, true) && compareDeep(routeOfAdministration, o.routeOfAdministration, true)
2755           && compareDeep(administration, o.administration, true) && compareDeep(maxVolumeToDeliver, o.maxVolumeToDeliver, true)
2756           && compareDeep(administrationInstruction, o.administrationInstruction, true);
2757      }
2758
2759      @Override
2760      public boolean equalsShallow(Base other_) {
2761        if (!super.equalsShallow(other_))
2762          return false;
2763        if (!(other_ instanceof NutritionOrderEnteralFormulaComponent))
2764          return false;
2765        NutritionOrderEnteralFormulaComponent o = (NutritionOrderEnteralFormulaComponent) other_;
2766        return compareValues(baseFormulaProductName, o.baseFormulaProductName, true) && compareValues(administrationInstruction, o.administrationInstruction, true)
2767          ;
2768      }
2769
2770      public boolean isEmpty() {
2771        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(baseFormulaType, baseFormulaProductName
2772          , deliveryDevice, additive, caloricDensity, routeOfAdministration, administration
2773          , maxVolumeToDeliver, administrationInstruction);
2774      }
2775
2776  public String fhirType() {
2777    return "NutritionOrder.enteralFormula";
2778
2779  }
2780
2781  }
2782
2783    @Block()
2784    public static class NutritionOrderEnteralFormulaAdditiveComponent extends BackboneElement implements IBaseBackboneElement {
2785        /**
2786         * Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula.
2787         */
2788        @Child(name = "type", type = {CodeableReference.class}, order=1, min=0, max=1, modifier=false, summary=false)
2789        @Description(shortDefinition="Type of modular component to add to the feeding", formalDefinition="Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula." )
2790        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/entformula-additive")
2791        protected CodeableReference type;
2792
2793        /**
2794         * The product or brand name of the type of modular component to be added to the formula.
2795         */
2796        @Child(name = "productName", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2797        @Description(shortDefinition="Product or brand name of the modular additive", formalDefinition="The product or brand name of the type of modular component to be added to the formula." )
2798        protected StringType productName;
2799
2800        /**
2801         * The amount of additive to be given in addition or to be mixed in with the base formula.
2802         */
2803        @Child(name = "quantity", type = {Quantity.class}, order=3, min=0, max=1, modifier=false, summary=false)
2804        @Description(shortDefinition="Amount of additive to be given or mixed in", formalDefinition="The amount of additive to be given in addition or to be mixed in with the base formula." )
2805        protected Quantity quantity;
2806
2807        private static final long serialVersionUID = 2072791035L;
2808
2809    /**
2810     * Constructor
2811     */
2812      public NutritionOrderEnteralFormulaAdditiveComponent() {
2813        super();
2814      }
2815
2816        /**
2817         * @return {@link #type} (Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula.)
2818         */
2819        public CodeableReference getType() { 
2820          if (this.type == null)
2821            if (Configuration.errorOnAutoCreate())
2822              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaAdditiveComponent.type");
2823            else if (Configuration.doAutoCreate())
2824              this.type = new CodeableReference(); // cc
2825          return this.type;
2826        }
2827
2828        public boolean hasType() { 
2829          return this.type != null && !this.type.isEmpty();
2830        }
2831
2832        /**
2833         * @param value {@link #type} (Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula.)
2834         */
2835        public NutritionOrderEnteralFormulaAdditiveComponent setType(CodeableReference value) { 
2836          this.type = value;
2837          return this;
2838        }
2839
2840        /**
2841         * @return {@link #productName} (The product or brand name of the type of modular component to be added to the formula.). This is the underlying object with id, value and extensions. The accessor "getProductName" gives direct access to the value
2842         */
2843        public StringType getProductNameElement() { 
2844          if (this.productName == null)
2845            if (Configuration.errorOnAutoCreate())
2846              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaAdditiveComponent.productName");
2847            else if (Configuration.doAutoCreate())
2848              this.productName = new StringType(); // bb
2849          return this.productName;
2850        }
2851
2852        public boolean hasProductNameElement() { 
2853          return this.productName != null && !this.productName.isEmpty();
2854        }
2855
2856        public boolean hasProductName() { 
2857          return this.productName != null && !this.productName.isEmpty();
2858        }
2859
2860        /**
2861         * @param value {@link #productName} (The product or brand name of the type of modular component to be added to the formula.). This is the underlying object with id, value and extensions. The accessor "getProductName" gives direct access to the value
2862         */
2863        public NutritionOrderEnteralFormulaAdditiveComponent setProductNameElement(StringType value) { 
2864          this.productName = value;
2865          return this;
2866        }
2867
2868        /**
2869         * @return The product or brand name of the type of modular component to be added to the formula.
2870         */
2871        public String getProductName() { 
2872          return this.productName == null ? null : this.productName.getValue();
2873        }
2874
2875        /**
2876         * @param value The product or brand name of the type of modular component to be added to the formula.
2877         */
2878        public NutritionOrderEnteralFormulaAdditiveComponent setProductName(String value) { 
2879          if (Utilities.noString(value))
2880            this.productName = null;
2881          else {
2882            if (this.productName == null)
2883              this.productName = new StringType();
2884            this.productName.setValue(value);
2885          }
2886          return this;
2887        }
2888
2889        /**
2890         * @return {@link #quantity} (The amount of additive to be given in addition or to be mixed in with the base formula.)
2891         */
2892        public Quantity getQuantity() { 
2893          if (this.quantity == null)
2894            if (Configuration.errorOnAutoCreate())
2895              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaAdditiveComponent.quantity");
2896            else if (Configuration.doAutoCreate())
2897              this.quantity = new Quantity(); // cc
2898          return this.quantity;
2899        }
2900
2901        public boolean hasQuantity() { 
2902          return this.quantity != null && !this.quantity.isEmpty();
2903        }
2904
2905        /**
2906         * @param value {@link #quantity} (The amount of additive to be given in addition or to be mixed in with the base formula.)
2907         */
2908        public NutritionOrderEnteralFormulaAdditiveComponent setQuantity(Quantity value) { 
2909          this.quantity = value;
2910          return this;
2911        }
2912
2913        protected void listChildren(List<Property> children) {
2914          super.listChildren(children);
2915          children.add(new Property("type", "CodeableReference(NutritionProduct)", "Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula.", 0, 1, type));
2916          children.add(new Property("productName", "string", "The product or brand name of the type of modular component to be added to the formula.", 0, 1, productName));
2917          children.add(new Property("quantity", "Quantity", "The amount of additive to be given in addition or to be mixed in with the base formula.", 0, 1, quantity));
2918        }
2919
2920        @Override
2921        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2922          switch (_hash) {
2923          case 3575610: /*type*/  return new Property("type", "CodeableReference(NutritionProduct)", "Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula.", 0, 1, type);
2924          case -1491817446: /*productName*/  return new Property("productName", "string", "The product or brand name of the type of modular component to be added to the formula.", 0, 1, productName);
2925          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "The amount of additive to be given in addition or to be mixed in with the base formula.", 0, 1, quantity);
2926          default: return super.getNamedProperty(_hash, _name, _checkValid);
2927          }
2928
2929        }
2930
2931      @Override
2932      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2933        switch (hash) {
2934        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableReference
2935        case -1491817446: /*productName*/ return this.productName == null ? new Base[0] : new Base[] {this.productName}; // StringType
2936        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
2937        default: return super.getProperty(hash, name, checkValid);
2938        }
2939
2940      }
2941
2942      @Override
2943      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2944        switch (hash) {
2945        case 3575610: // type
2946          this.type = TypeConvertor.castToCodeableReference(value); // CodeableReference
2947          return value;
2948        case -1491817446: // productName
2949          this.productName = TypeConvertor.castToString(value); // StringType
2950          return value;
2951        case -1285004149: // quantity
2952          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
2953          return value;
2954        default: return super.setProperty(hash, name, value);
2955        }
2956
2957      }
2958
2959      @Override
2960      public Base setProperty(String name, Base value) throws FHIRException {
2961        if (name.equals("type")) {
2962          this.type = TypeConvertor.castToCodeableReference(value); // CodeableReference
2963        } else if (name.equals("productName")) {
2964          this.productName = TypeConvertor.castToString(value); // StringType
2965        } else if (name.equals("quantity")) {
2966          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
2967        } else
2968          return super.setProperty(name, value);
2969        return value;
2970      }
2971
2972  @Override
2973  public void removeChild(String name, Base value) throws FHIRException {
2974        if (name.equals("type")) {
2975          this.type = null;
2976        } else if (name.equals("productName")) {
2977          this.productName = null;
2978        } else if (name.equals("quantity")) {
2979          this.quantity = null;
2980        } else
2981          super.removeChild(name, value);
2982        
2983      }
2984
2985      @Override
2986      public Base makeProperty(int hash, String name) throws FHIRException {
2987        switch (hash) {
2988        case 3575610:  return getType();
2989        case -1491817446:  return getProductNameElement();
2990        case -1285004149:  return getQuantity();
2991        default: return super.makeProperty(hash, name);
2992        }
2993
2994      }
2995
2996      @Override
2997      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2998        switch (hash) {
2999        case 3575610: /*type*/ return new String[] {"CodeableReference"};
3000        case -1491817446: /*productName*/ return new String[] {"string"};
3001        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
3002        default: return super.getTypesForProperty(hash, name);
3003        }
3004
3005      }
3006
3007      @Override
3008      public Base addChild(String name) throws FHIRException {
3009        if (name.equals("type")) {
3010          this.type = new CodeableReference();
3011          return this.type;
3012        }
3013        else if (name.equals("productName")) {
3014          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.enteralFormula.additive.productName");
3015        }
3016        else if (name.equals("quantity")) {
3017          this.quantity = new Quantity();
3018          return this.quantity;
3019        }
3020        else
3021          return super.addChild(name);
3022      }
3023
3024      public NutritionOrderEnteralFormulaAdditiveComponent copy() {
3025        NutritionOrderEnteralFormulaAdditiveComponent dst = new NutritionOrderEnteralFormulaAdditiveComponent();
3026        copyValues(dst);
3027        return dst;
3028      }
3029
3030      public void copyValues(NutritionOrderEnteralFormulaAdditiveComponent dst) {
3031        super.copyValues(dst);
3032        dst.type = type == null ? null : type.copy();
3033        dst.productName = productName == null ? null : productName.copy();
3034        dst.quantity = quantity == null ? null : quantity.copy();
3035      }
3036
3037      @Override
3038      public boolean equalsDeep(Base other_) {
3039        if (!super.equalsDeep(other_))
3040          return false;
3041        if (!(other_ instanceof NutritionOrderEnteralFormulaAdditiveComponent))
3042          return false;
3043        NutritionOrderEnteralFormulaAdditiveComponent o = (NutritionOrderEnteralFormulaAdditiveComponent) other_;
3044        return compareDeep(type, o.type, true) && compareDeep(productName, o.productName, true) && compareDeep(quantity, o.quantity, true)
3045          ;
3046      }
3047
3048      @Override
3049      public boolean equalsShallow(Base other_) {
3050        if (!super.equalsShallow(other_))
3051          return false;
3052        if (!(other_ instanceof NutritionOrderEnteralFormulaAdditiveComponent))
3053          return false;
3054        NutritionOrderEnteralFormulaAdditiveComponent o = (NutritionOrderEnteralFormulaAdditiveComponent) other_;
3055        return compareValues(productName, o.productName, true);
3056      }
3057
3058      public boolean isEmpty() {
3059        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, productName, quantity
3060          );
3061      }
3062
3063  public String fhirType() {
3064    return "NutritionOrder.enteralFormula.additive";
3065
3066  }
3067
3068  }
3069
3070    @Block()
3071    public static class NutritionOrderEnteralFormulaAdministrationComponent extends BackboneElement implements IBaseBackboneElement {
3072        /**
3073         * Schedule information for an enteral formula.
3074         */
3075        @Child(name = "schedule", type = {}, order=1, min=0, max=1, modifier=false, summary=false)
3076        @Description(shortDefinition="Scheduling information for enteral formula products", formalDefinition="Schedule information for an enteral formula." )
3077        protected EnteralFormulaScheduleComponent schedule;
3078
3079        /**
3080         * The volume of formula to provide to the patient per the specified administration schedule.
3081         */
3082        @Child(name = "quantity", type = {Quantity.class}, order=2, min=0, max=1, modifier=false, summary=false)
3083        @Description(shortDefinition="The volume of formula to provide", formalDefinition="The volume of formula to provide to the patient per the specified administration schedule." )
3084        protected Quantity quantity;
3085
3086        /**
3087         * The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.
3088         */
3089        @Child(name = "rate", type = {Quantity.class, Ratio.class}, order=3, min=0, max=1, modifier=false, summary=false)
3090        @Description(shortDefinition="Speed with which the formula is provided per period of time", formalDefinition="The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule." )
3091        protected DataType rate;
3092
3093        private static final long serialVersionUID = 42374218L;
3094
3095    /**
3096     * Constructor
3097     */
3098      public NutritionOrderEnteralFormulaAdministrationComponent() {
3099        super();
3100      }
3101
3102        /**
3103         * @return {@link #schedule} (Schedule information for an enteral formula.)
3104         */
3105        public EnteralFormulaScheduleComponent getSchedule() { 
3106          if (this.schedule == null)
3107            if (Configuration.errorOnAutoCreate())
3108              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaAdministrationComponent.schedule");
3109            else if (Configuration.doAutoCreate())
3110              this.schedule = new EnteralFormulaScheduleComponent(); // cc
3111          return this.schedule;
3112        }
3113
3114        public boolean hasSchedule() { 
3115          return this.schedule != null && !this.schedule.isEmpty();
3116        }
3117
3118        /**
3119         * @param value {@link #schedule} (Schedule information for an enteral formula.)
3120         */
3121        public NutritionOrderEnteralFormulaAdministrationComponent setSchedule(EnteralFormulaScheduleComponent value) { 
3122          this.schedule = value;
3123          return this;
3124        }
3125
3126        /**
3127         * @return {@link #quantity} (The volume of formula to provide to the patient per the specified administration schedule.)
3128         */
3129        public Quantity getQuantity() { 
3130          if (this.quantity == null)
3131            if (Configuration.errorOnAutoCreate())
3132              throw new Error("Attempt to auto-create NutritionOrderEnteralFormulaAdministrationComponent.quantity");
3133            else if (Configuration.doAutoCreate())
3134              this.quantity = new Quantity(); // cc
3135          return this.quantity;
3136        }
3137
3138        public boolean hasQuantity() { 
3139          return this.quantity != null && !this.quantity.isEmpty();
3140        }
3141
3142        /**
3143         * @param value {@link #quantity} (The volume of formula to provide to the patient per the specified administration schedule.)
3144         */
3145        public NutritionOrderEnteralFormulaAdministrationComponent setQuantity(Quantity value) { 
3146          this.quantity = value;
3147          return this;
3148        }
3149
3150        /**
3151         * @return {@link #rate} (The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.)
3152         */
3153        public DataType getRate() { 
3154          return this.rate;
3155        }
3156
3157        /**
3158         * @return {@link #rate} (The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.)
3159         */
3160        public Quantity getRateQuantity() throws FHIRException { 
3161          if (this.rate == null)
3162            this.rate = new Quantity();
3163          if (!(this.rate instanceof Quantity))
3164            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.rate.getClass().getName()+" was encountered");
3165          return (Quantity) this.rate;
3166        }
3167
3168        public boolean hasRateQuantity() { 
3169          return this != null && this.rate instanceof Quantity;
3170        }
3171
3172        /**
3173         * @return {@link #rate} (The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.)
3174         */
3175        public Ratio getRateRatio() throws FHIRException { 
3176          if (this.rate == null)
3177            this.rate = new Ratio();
3178          if (!(this.rate instanceof Ratio))
3179            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.rate.getClass().getName()+" was encountered");
3180          return (Ratio) this.rate;
3181        }
3182
3183        public boolean hasRateRatio() { 
3184          return this != null && this.rate instanceof Ratio;
3185        }
3186
3187        public boolean hasRate() { 
3188          return this.rate != null && !this.rate.isEmpty();
3189        }
3190
3191        /**
3192         * @param value {@link #rate} (The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.)
3193         */
3194        public NutritionOrderEnteralFormulaAdministrationComponent setRate(DataType value) { 
3195          if (value != null && !(value instanceof Quantity || value instanceof Ratio))
3196            throw new FHIRException("Not the right type for NutritionOrder.enteralFormula.administration.rate[x]: "+value.fhirType());
3197          this.rate = value;
3198          return this;
3199        }
3200
3201        protected void listChildren(List<Property> children) {
3202          super.listChildren(children);
3203          children.add(new Property("schedule", "", "Schedule information for an enteral formula.", 0, 1, schedule));
3204          children.add(new Property("quantity", "Quantity", "The volume of formula to provide to the patient per the specified administration schedule.", 0, 1, quantity));
3205          children.add(new Property("rate[x]", "Quantity|Ratio", "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.", 0, 1, rate));
3206        }
3207
3208        @Override
3209        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3210          switch (_hash) {
3211          case -697920873: /*schedule*/  return new Property("schedule", "", "Schedule information for an enteral formula.", 0, 1, schedule);
3212          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "The volume of formula to provide to the patient per the specified administration schedule.", 0, 1, quantity);
3213          case 983460768: /*rate[x]*/  return new Property("rate[x]", "Quantity|Ratio", "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.", 0, 1, rate);
3214          case 3493088: /*rate*/  return new Property("rate[x]", "Quantity|Ratio", "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.", 0, 1, rate);
3215          case -1085459061: /*rateQuantity*/  return new Property("rate[x]", "Quantity", "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.", 0, 1, rate);
3216          case 204021515: /*rateRatio*/  return new Property("rate[x]", "Ratio", "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule.", 0, 1, rate);
3217          default: return super.getNamedProperty(_hash, _name, _checkValid);
3218          }
3219
3220        }
3221
3222      @Override
3223      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3224        switch (hash) {
3225        case -697920873: /*schedule*/ return this.schedule == null ? new Base[0] : new Base[] {this.schedule}; // EnteralFormulaScheduleComponent
3226        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
3227        case 3493088: /*rate*/ return this.rate == null ? new Base[0] : new Base[] {this.rate}; // DataType
3228        default: return super.getProperty(hash, name, checkValid);
3229        }
3230
3231      }
3232
3233      @Override
3234      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3235        switch (hash) {
3236        case -697920873: // schedule
3237          this.schedule = (EnteralFormulaScheduleComponent) value; // EnteralFormulaScheduleComponent
3238          return value;
3239        case -1285004149: // quantity
3240          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
3241          return value;
3242        case 3493088: // rate
3243          this.rate = TypeConvertor.castToType(value); // DataType
3244          return value;
3245        default: return super.setProperty(hash, name, value);
3246        }
3247
3248      }
3249
3250      @Override
3251      public Base setProperty(String name, Base value) throws FHIRException {
3252        if (name.equals("schedule")) {
3253          this.schedule = (EnteralFormulaScheduleComponent) value; // EnteralFormulaScheduleComponent
3254        } else if (name.equals("quantity")) {
3255          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
3256        } else if (name.equals("rate[x]")) {
3257          this.rate = TypeConvertor.castToType(value); // DataType
3258        } else
3259          return super.setProperty(name, value);
3260        return value;
3261      }
3262
3263  @Override
3264  public void removeChild(String name, Base value) throws FHIRException {
3265        if (name.equals("schedule")) {
3266          this.schedule = (EnteralFormulaScheduleComponent) value; // EnteralFormulaScheduleComponent
3267        } else if (name.equals("quantity")) {
3268          this.quantity = null;
3269        } else if (name.equals("rate[x]")) {
3270          this.rate = null;
3271        } else
3272          super.removeChild(name, value);
3273        
3274      }
3275
3276      @Override
3277      public Base makeProperty(int hash, String name) throws FHIRException {
3278        switch (hash) {
3279        case -697920873:  return getSchedule();
3280        case -1285004149:  return getQuantity();
3281        case 983460768:  return getRate();
3282        case 3493088:  return getRate();
3283        default: return super.makeProperty(hash, name);
3284        }
3285
3286      }
3287
3288      @Override
3289      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3290        switch (hash) {
3291        case -697920873: /*schedule*/ return new String[] {};
3292        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
3293        case 3493088: /*rate*/ return new String[] {"Quantity", "Ratio"};
3294        default: return super.getTypesForProperty(hash, name);
3295        }
3296
3297      }
3298
3299      @Override
3300      public Base addChild(String name) throws FHIRException {
3301        if (name.equals("schedule")) {
3302          this.schedule = new EnteralFormulaScheduleComponent();
3303          return this.schedule;
3304        }
3305        else if (name.equals("quantity")) {
3306          this.quantity = new Quantity();
3307          return this.quantity;
3308        }
3309        else if (name.equals("rateQuantity")) {
3310          this.rate = new Quantity();
3311          return this.rate;
3312        }
3313        else if (name.equals("rateRatio")) {
3314          this.rate = new Ratio();
3315          return this.rate;
3316        }
3317        else
3318          return super.addChild(name);
3319      }
3320
3321      public NutritionOrderEnteralFormulaAdministrationComponent copy() {
3322        NutritionOrderEnteralFormulaAdministrationComponent dst = new NutritionOrderEnteralFormulaAdministrationComponent();
3323        copyValues(dst);
3324        return dst;
3325      }
3326
3327      public void copyValues(NutritionOrderEnteralFormulaAdministrationComponent dst) {
3328        super.copyValues(dst);
3329        dst.schedule = schedule == null ? null : schedule.copy();
3330        dst.quantity = quantity == null ? null : quantity.copy();
3331        dst.rate = rate == null ? null : rate.copy();
3332      }
3333
3334      @Override
3335      public boolean equalsDeep(Base other_) {
3336        if (!super.equalsDeep(other_))
3337          return false;
3338        if (!(other_ instanceof NutritionOrderEnteralFormulaAdministrationComponent))
3339          return false;
3340        NutritionOrderEnteralFormulaAdministrationComponent o = (NutritionOrderEnteralFormulaAdministrationComponent) other_;
3341        return compareDeep(schedule, o.schedule, true) && compareDeep(quantity, o.quantity, true) && compareDeep(rate, o.rate, true)
3342          ;
3343      }
3344
3345      @Override
3346      public boolean equalsShallow(Base other_) {
3347        if (!super.equalsShallow(other_))
3348          return false;
3349        if (!(other_ instanceof NutritionOrderEnteralFormulaAdministrationComponent))
3350          return false;
3351        NutritionOrderEnteralFormulaAdministrationComponent o = (NutritionOrderEnteralFormulaAdministrationComponent) other_;
3352        return true;
3353      }
3354
3355      public boolean isEmpty() {
3356        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(schedule, quantity, rate
3357          );
3358      }
3359
3360  public String fhirType() {
3361    return "NutritionOrder.enteralFormula.administration";
3362
3363  }
3364
3365  }
3366
3367    @Block()
3368    public static class EnteralFormulaScheduleComponent extends BackboneElement implements IBaseBackboneElement {
3369        /**
3370         * The time period and frequency at which the enteral formula should be given.  The enteral formula should be given for the combination of all schedules if more than one schedule is present.
3371         */
3372        @Child(name = "timing", type = {Timing.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3373        @Description(shortDefinition="Scheduled frequency of enteral formula", formalDefinition="The time period and frequency at which the enteral formula should be given.  The enteral formula should be given for the combination of all schedules if more than one schedule is present." )
3374        protected List<Timing> timing;
3375
3376        /**
3377         * Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.
3378         */
3379        @Child(name = "asNeeded", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3380        @Description(shortDefinition="Take 'as needed'", formalDefinition="Indicates whether the enteral formula is only taken when needed within a specific dosing schedule." )
3381        protected BooleanType asNeeded;
3382
3383        /**
3384         * Indicates whether the enteral formula is only taken based on a precondition for taking the enteral formula.
3385         */
3386        @Child(name = "asNeededFor", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
3387        @Description(shortDefinition="Take 'as needed' for x", formalDefinition="Indicates whether the enteral formula is only taken based on a precondition for taking the enteral formula." )
3388        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-as-needed-reason")
3389        protected CodeableConcept asNeededFor;
3390
3391        private static final long serialVersionUID = -1051458478L;
3392
3393    /**
3394     * Constructor
3395     */
3396      public EnteralFormulaScheduleComponent() {
3397        super();
3398      }
3399
3400        /**
3401         * @return {@link #timing} (The time period and frequency at which the enteral formula should be given.  The enteral formula should be given for the combination of all schedules if more than one schedule is present.)
3402         */
3403        public List<Timing> getTiming() { 
3404          if (this.timing == null)
3405            this.timing = new ArrayList<Timing>();
3406          return this.timing;
3407        }
3408
3409        /**
3410         * @return Returns a reference to <code>this</code> for easy method chaining
3411         */
3412        public EnteralFormulaScheduleComponent setTiming(List<Timing> theTiming) { 
3413          this.timing = theTiming;
3414          return this;
3415        }
3416
3417        public boolean hasTiming() { 
3418          if (this.timing == null)
3419            return false;
3420          for (Timing item : this.timing)
3421            if (!item.isEmpty())
3422              return true;
3423          return false;
3424        }
3425
3426        public Timing addTiming() { //3
3427          Timing t = new Timing();
3428          if (this.timing == null)
3429            this.timing = new ArrayList<Timing>();
3430          this.timing.add(t);
3431          return t;
3432        }
3433
3434        public EnteralFormulaScheduleComponent addTiming(Timing t) { //3
3435          if (t == null)
3436            return this;
3437          if (this.timing == null)
3438            this.timing = new ArrayList<Timing>();
3439          this.timing.add(t);
3440          return this;
3441        }
3442
3443        /**
3444         * @return The first repetition of repeating field {@link #timing}, creating it if it does not already exist {3}
3445         */
3446        public Timing getTimingFirstRep() { 
3447          if (getTiming().isEmpty()) {
3448            addTiming();
3449          }
3450          return getTiming().get(0);
3451        }
3452
3453        /**
3454         * @return {@link #asNeeded} (Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
3455         */
3456        public BooleanType getAsNeededElement() { 
3457          if (this.asNeeded == null)
3458            if (Configuration.errorOnAutoCreate())
3459              throw new Error("Attempt to auto-create EnteralFormulaScheduleComponent.asNeeded");
3460            else if (Configuration.doAutoCreate())
3461              this.asNeeded = new BooleanType(); // bb
3462          return this.asNeeded;
3463        }
3464
3465        public boolean hasAsNeededElement() { 
3466          return this.asNeeded != null && !this.asNeeded.isEmpty();
3467        }
3468
3469        public boolean hasAsNeeded() { 
3470          return this.asNeeded != null && !this.asNeeded.isEmpty();
3471        }
3472
3473        /**
3474         * @param value {@link #asNeeded} (Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
3475         */
3476        public EnteralFormulaScheduleComponent setAsNeededElement(BooleanType value) { 
3477          this.asNeeded = value;
3478          return this;
3479        }
3480
3481        /**
3482         * @return Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.
3483         */
3484        public boolean getAsNeeded() { 
3485          return this.asNeeded == null || this.asNeeded.isEmpty() ? false : this.asNeeded.getValue();
3486        }
3487
3488        /**
3489         * @param value Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.
3490         */
3491        public EnteralFormulaScheduleComponent setAsNeeded(boolean value) { 
3492            if (this.asNeeded == null)
3493              this.asNeeded = new BooleanType();
3494            this.asNeeded.setValue(value);
3495          return this;
3496        }
3497
3498        /**
3499         * @return {@link #asNeededFor} (Indicates whether the enteral formula is only taken based on a precondition for taking the enteral formula.)
3500         */
3501        public CodeableConcept getAsNeededFor() { 
3502          if (this.asNeededFor == null)
3503            if (Configuration.errorOnAutoCreate())
3504              throw new Error("Attempt to auto-create EnteralFormulaScheduleComponent.asNeededFor");
3505            else if (Configuration.doAutoCreate())
3506              this.asNeededFor = new CodeableConcept(); // cc
3507          return this.asNeededFor;
3508        }
3509
3510        public boolean hasAsNeededFor() { 
3511          return this.asNeededFor != null && !this.asNeededFor.isEmpty();
3512        }
3513
3514        /**
3515         * @param value {@link #asNeededFor} (Indicates whether the enteral formula is only taken based on a precondition for taking the enteral formula.)
3516         */
3517        public EnteralFormulaScheduleComponent setAsNeededFor(CodeableConcept value) { 
3518          this.asNeededFor = value;
3519          return this;
3520        }
3521
3522        protected void listChildren(List<Property> children) {
3523          super.listChildren(children);
3524          children.add(new Property("timing", "Timing", "The time period and frequency at which the enteral formula should be given.  The enteral formula should be given for the combination of all schedules if more than one schedule is present.", 0, java.lang.Integer.MAX_VALUE, timing));
3525          children.add(new Property("asNeeded", "boolean", "Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.", 0, 1, asNeeded));
3526          children.add(new Property("asNeededFor", "CodeableConcept", "Indicates whether the enteral formula is only taken based on a precondition for taking the enteral formula.", 0, 1, asNeededFor));
3527        }
3528
3529        @Override
3530        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3531          switch (_hash) {
3532          case -873664438: /*timing*/  return new Property("timing", "Timing", "The time period and frequency at which the enteral formula should be given.  The enteral formula should be given for the combination of all schedules if more than one schedule is present.", 0, java.lang.Integer.MAX_VALUE, timing);
3533          case -1432923513: /*asNeeded*/  return new Property("asNeeded", "boolean", "Indicates whether the enteral formula is only taken when needed within a specific dosing schedule.", 0, 1, asNeeded);
3534          case -544350014: /*asNeededFor*/  return new Property("asNeededFor", "CodeableConcept", "Indicates whether the enteral formula is only taken based on a precondition for taking the enteral formula.", 0, 1, asNeededFor);
3535          default: return super.getNamedProperty(_hash, _name, _checkValid);
3536          }
3537
3538        }
3539
3540      @Override
3541      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3542        switch (hash) {
3543        case -873664438: /*timing*/ return this.timing == null ? new Base[0] : this.timing.toArray(new Base[this.timing.size()]); // Timing
3544        case -1432923513: /*asNeeded*/ return this.asNeeded == null ? new Base[0] : new Base[] {this.asNeeded}; // BooleanType
3545        case -544350014: /*asNeededFor*/ return this.asNeededFor == null ? new Base[0] : new Base[] {this.asNeededFor}; // CodeableConcept
3546        default: return super.getProperty(hash, name, checkValid);
3547        }
3548
3549      }
3550
3551      @Override
3552      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3553        switch (hash) {
3554        case -873664438: // timing
3555          this.getTiming().add(TypeConvertor.castToTiming(value)); // Timing
3556          return value;
3557        case -1432923513: // asNeeded
3558          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
3559          return value;
3560        case -544350014: // asNeededFor
3561          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3562          return value;
3563        default: return super.setProperty(hash, name, value);
3564        }
3565
3566      }
3567
3568      @Override
3569      public Base setProperty(String name, Base value) throws FHIRException {
3570        if (name.equals("timing")) {
3571          this.getTiming().add(TypeConvertor.castToTiming(value));
3572        } else if (name.equals("asNeeded")) {
3573          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
3574        } else if (name.equals("asNeededFor")) {
3575          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3576        } else
3577          return super.setProperty(name, value);
3578        return value;
3579      }
3580
3581  @Override
3582  public void removeChild(String name, Base value) throws FHIRException {
3583        if (name.equals("timing")) {
3584          this.getTiming().remove(value);
3585        } else if (name.equals("asNeeded")) {
3586          this.asNeeded = null;
3587        } else if (name.equals("asNeededFor")) {
3588          this.asNeededFor = null;
3589        } else
3590          super.removeChild(name, value);
3591        
3592      }
3593
3594      @Override
3595      public Base makeProperty(int hash, String name) throws FHIRException {
3596        switch (hash) {
3597        case -873664438:  return addTiming(); 
3598        case -1432923513:  return getAsNeededElement();
3599        case -544350014:  return getAsNeededFor();
3600        default: return super.makeProperty(hash, name);
3601        }
3602
3603      }
3604
3605      @Override
3606      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3607        switch (hash) {
3608        case -873664438: /*timing*/ return new String[] {"Timing"};
3609        case -1432923513: /*asNeeded*/ return new String[] {"boolean"};
3610        case -544350014: /*asNeededFor*/ return new String[] {"CodeableConcept"};
3611        default: return super.getTypesForProperty(hash, name);
3612        }
3613
3614      }
3615
3616      @Override
3617      public Base addChild(String name) throws FHIRException {
3618        if (name.equals("timing")) {
3619          return addTiming();
3620        }
3621        else if (name.equals("asNeeded")) {
3622          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.enteralFormula.administration.schedule.asNeeded");
3623        }
3624        else if (name.equals("asNeededFor")) {
3625          this.asNeededFor = new CodeableConcept();
3626          return this.asNeededFor;
3627        }
3628        else
3629          return super.addChild(name);
3630      }
3631
3632      public EnteralFormulaScheduleComponent copy() {
3633        EnteralFormulaScheduleComponent dst = new EnteralFormulaScheduleComponent();
3634        copyValues(dst);
3635        return dst;
3636      }
3637
3638      public void copyValues(EnteralFormulaScheduleComponent dst) {
3639        super.copyValues(dst);
3640        if (timing != null) {
3641          dst.timing = new ArrayList<Timing>();
3642          for (Timing i : timing)
3643            dst.timing.add(i.copy());
3644        };
3645        dst.asNeeded = asNeeded == null ? null : asNeeded.copy();
3646        dst.asNeededFor = asNeededFor == null ? null : asNeededFor.copy();
3647      }
3648
3649      @Override
3650      public boolean equalsDeep(Base other_) {
3651        if (!super.equalsDeep(other_))
3652          return false;
3653        if (!(other_ instanceof EnteralFormulaScheduleComponent))
3654          return false;
3655        EnteralFormulaScheduleComponent o = (EnteralFormulaScheduleComponent) other_;
3656        return compareDeep(timing, o.timing, true) && compareDeep(asNeeded, o.asNeeded, true) && compareDeep(asNeededFor, o.asNeededFor, true)
3657          ;
3658      }
3659
3660      @Override
3661      public boolean equalsShallow(Base other_) {
3662        if (!super.equalsShallow(other_))
3663          return false;
3664        if (!(other_ instanceof EnteralFormulaScheduleComponent))
3665          return false;
3666        EnteralFormulaScheduleComponent o = (EnteralFormulaScheduleComponent) other_;
3667        return compareValues(asNeeded, o.asNeeded, true);
3668      }
3669
3670      public boolean isEmpty() {
3671        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(timing, asNeeded, asNeededFor
3672          );
3673      }
3674
3675  public String fhirType() {
3676    return "NutritionOrder.enteralFormula.administration.schedule";
3677
3678  }
3679
3680  }
3681
3682    /**
3683     * Identifiers assigned to this order by the order sender or by the order receiver.
3684     */
3685    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3686    @Description(shortDefinition="Identifiers assigned to this order", formalDefinition="Identifiers assigned to this order by the order sender or by the order receiver." )
3687    protected List<Identifier> identifier;
3688
3689    /**
3690     * The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.
3691     */
3692    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3693    @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder." )
3694    protected List<CanonicalType> instantiatesCanonical;
3695
3696    /**
3697     * The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.
3698     */
3699    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3700    @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder." )
3701    protected List<UriType> instantiatesUri;
3702
3703    /**
3704     * The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.
3705     */
3706    @Child(name = "instantiates", type = {UriType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3707    @Description(shortDefinition="Instantiates protocol or definition", formalDefinition="The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder." )
3708    protected List<UriType> instantiates;
3709
3710    /**
3711     * A plan or request that is fulfilled in whole or in part by this nutrition order.
3712     */
3713    @Child(name = "basedOn", type = {CarePlan.class, NutritionOrder.class, ServiceRequest.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3714    @Description(shortDefinition="What this order fulfills", formalDefinition="A plan or request that is fulfilled in whole or in part by this nutrition order." )
3715    protected List<Reference> basedOn;
3716
3717    /**
3718     * A shared identifier common to all nutrition orders that were authorized more or less simultaneously by a single author, representing the composite or group identifier.
3719     */
3720    @Child(name = "groupIdentifier", type = {Identifier.class}, order=5, min=0, max=1, modifier=false, summary=true)
3721    @Description(shortDefinition="Composite Request ID", formalDefinition="A shared identifier common to all nutrition orders that were authorized more or less simultaneously by a single author, representing the composite or group identifier." )
3722    protected Identifier groupIdentifier;
3723
3724    /**
3725     * The workflow status of the nutrition order/request.
3726     */
3727    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
3728    @Description(shortDefinition="draft | active | on-hold | revoked | completed | entered-in-error | unknown", formalDefinition="The workflow status of the nutrition order/request." )
3729    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
3730    protected Enumeration<RequestStatus> status;
3731
3732    /**
3733     * Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.
3734     */
3735    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
3736    @Description(shortDefinition="proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option", formalDefinition="Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain." )
3737    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
3738    protected Enumeration<RequestIntent> intent;
3739
3740    /**
3741     * Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.
3742     */
3743    @Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=false)
3744    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the Nutrition Order should be addressed with respect to other        requests." )
3745    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
3746    protected Enumeration<RequestPriority> priority;
3747
3748    /**
3749     * The person or set of individuals who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding.
3750     */
3751    @Child(name = "subject", type = {Patient.class, Group.class}, order=9, min=1, max=1, modifier=false, summary=true)
3752    @Description(shortDefinition="Who requires the diet, formula or nutritional supplement", formalDefinition="The person or set of individuals who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding." )
3753    protected Reference subject;
3754
3755    /**
3756     * An encounter that provides additional information about the healthcare context in which this request is made.
3757     */
3758    @Child(name = "encounter", type = {Encounter.class}, order=10, min=0, max=1, modifier=false, summary=false)
3759    @Description(shortDefinition="The encounter associated with this nutrition order", formalDefinition="An encounter that provides additional information about the healthcare context in which this request is made." )
3760    protected Reference encounter;
3761
3762    /**
3763     * Information to support fulfilling (i.e. dispensing or administering) of the nutrition,        for example, patient height and weight).
3764     */
3765    @Child(name = "supportingInformation", type = {Reference.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3766    @Description(shortDefinition="Information to support fulfilling of the nutrition order", formalDefinition="Information to support fulfilling (i.e. dispensing or administering) of the nutrition,        for example, patient height and weight)." )
3767    protected List<Reference> supportingInformation;
3768
3769    /**
3770     * The date and time that this nutrition order was requested.
3771     */
3772    @Child(name = "dateTime", type = {DateTimeType.class}, order=12, min=1, max=1, modifier=false, summary=true)
3773    @Description(shortDefinition="Date and time the nutrition order was requested", formalDefinition="The date and time that this nutrition order was requested." )
3774    protected DateTimeType dateTime;
3775
3776    /**
3777     * The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings.
3778     */
3779    @Child(name = "orderer", type = {Practitioner.class, PractitionerRole.class}, order=13, min=0, max=1, modifier=false, summary=true)
3780    @Description(shortDefinition="Who ordered the diet, formula or nutritional supplement", formalDefinition="The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings." )
3781    protected Reference orderer;
3782
3783    /**
3784     * The specified desired performer of the nutrition order.
3785     */
3786    @Child(name = "performer", type = {CodeableReference.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3787    @Description(shortDefinition="Who is desired to perform the administration of what is being ordered", formalDefinition="The specified desired performer of the nutrition order." )
3788    protected List<CodeableReference> performer;
3789
3790    /**
3791     * A link to a record of allergies or intolerances  which should be included in the nutrition order.
3792     */
3793    @Child(name = "allergyIntolerance", type = {AllergyIntolerance.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3794    @Description(shortDefinition="List of the patient's food and nutrition-related allergies and intolerances", formalDefinition="A link to a record of allergies or intolerances  which should be included in the nutrition order." )
3795    protected List<Reference> allergyIntolerance;
3796
3797    /**
3798     * This modifier is used to convey order-specific modifiers about the type of food that should be given. These can be derived from patient allergies, intolerances, or preferences such as Halal, Vegan or Kosher. This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.
3799     */
3800    @Child(name = "foodPreferenceModifier", type = {CodeableConcept.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3801    @Description(shortDefinition="Order-specific modifier about the type of food that should be given", formalDefinition="This modifier is used to convey order-specific modifiers about the type of food that should be given. These can be derived from patient allergies, intolerances, or preferences such as Halal, Vegan or Kosher. This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings." )
3802    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-diet")
3803    protected List<CodeableConcept> foodPreferenceModifier;
3804
3805    /**
3806     * This modifier is used to convey Order-specific modifier about the type of oral food or oral fluids that should not be given. These can be derived from patient allergies, intolerances, or preferences such as No Red Meat, No Soy or No Wheat or  Gluten-Free.  While it should not be necessary to repeat allergy or intolerance information captured in the referenced AllergyIntolerance resource in the excludeFoodModifier, this element may be used to convey additional specificity related to foods that should be eliminated from the patient?s diet for any reason.  This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.
3807     */
3808    @Child(name = "excludeFoodModifier", type = {CodeableConcept.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3809    @Description(shortDefinition="Order-specific modifier about the type of food that should not be given", formalDefinition="This modifier is used to convey Order-specific modifier about the type of oral food or oral fluids that should not be given. These can be derived from patient allergies, intolerances, or preferences such as No Red Meat, No Soy or No Wheat or  Gluten-Free.  While it should not be necessary to repeat allergy or intolerance information captured in the referenced AllergyIntolerance resource in the excludeFoodModifier, this element may be used to convey additional specificity related to foods that should be eliminated from the patient?s diet for any reason.  This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings." )
3810    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/food-type")
3811    protected List<CodeableConcept> excludeFoodModifier;
3812
3813    /**
3814     * This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.
3815     */
3816    @Child(name = "outsideFoodAllowed", type = {BooleanType.class}, order=18, min=0, max=1, modifier=false, summary=false)
3817    @Description(shortDefinition="Capture when a food item is brought in by the patient and/or family", formalDefinition="This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item." )
3818    protected BooleanType outsideFoodAllowed;
3819
3820    /**
3821     * Diet given orally in contrast to enteral (tube) feeding.
3822     */
3823    @Child(name = "oralDiet", type = {}, order=19, min=0, max=1, modifier=false, summary=false)
3824    @Description(shortDefinition="Oral diet components", formalDefinition="Diet given orally in contrast to enteral (tube) feeding." )
3825    protected NutritionOrderOralDietComponent oralDiet;
3826
3827    /**
3828     * Oral nutritional products given in order to add further nutritional value to the patient's diet.
3829     */
3830    @Child(name = "supplement", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3831    @Description(shortDefinition="Supplement components", formalDefinition="Oral nutritional products given in order to add further nutritional value to the patient's diet." )
3832    protected List<NutritionOrderSupplementComponent> supplement;
3833
3834    /**
3835     * Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity.
3836     */
3837    @Child(name = "enteralFormula", type = {}, order=21, min=0, max=1, modifier=false, summary=false)
3838    @Description(shortDefinition="Enteral formula components", formalDefinition="Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity." )
3839    protected NutritionOrderEnteralFormulaComponent enteralFormula;
3840
3841    /**
3842     * Comments made about the nutrition order by the requester, performer, subject or other participants.
3843     */
3844    @Child(name = "note", type = {Annotation.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3845    @Description(shortDefinition="Comments", formalDefinition="Comments made about the nutrition order by the requester, performer, subject or other participants." )
3846    protected List<Annotation> note;
3847
3848    private static final long serialVersionUID = -659986813L;
3849
3850  /**
3851   * Constructor
3852   */
3853    public NutritionOrder() {
3854      super();
3855    }
3856
3857  /**
3858   * Constructor
3859   */
3860    public NutritionOrder(RequestStatus status, RequestIntent intent, Reference subject, Date dateTime) {
3861      super();
3862      this.setStatus(status);
3863      this.setIntent(intent);
3864      this.setSubject(subject);
3865      this.setDateTime(dateTime);
3866    }
3867
3868    /**
3869     * @return {@link #identifier} (Identifiers assigned to this order by the order sender or by the order receiver.)
3870     */
3871    public List<Identifier> getIdentifier() { 
3872      if (this.identifier == null)
3873        this.identifier = new ArrayList<Identifier>();
3874      return this.identifier;
3875    }
3876
3877    /**
3878     * @return Returns a reference to <code>this</code> for easy method chaining
3879     */
3880    public NutritionOrder setIdentifier(List<Identifier> theIdentifier) { 
3881      this.identifier = theIdentifier;
3882      return this;
3883    }
3884
3885    public boolean hasIdentifier() { 
3886      if (this.identifier == null)
3887        return false;
3888      for (Identifier item : this.identifier)
3889        if (!item.isEmpty())
3890          return true;
3891      return false;
3892    }
3893
3894    public Identifier addIdentifier() { //3
3895      Identifier t = new Identifier();
3896      if (this.identifier == null)
3897        this.identifier = new ArrayList<Identifier>();
3898      this.identifier.add(t);
3899      return t;
3900    }
3901
3902    public NutritionOrder addIdentifier(Identifier t) { //3
3903      if (t == null)
3904        return this;
3905      if (this.identifier == null)
3906        this.identifier = new ArrayList<Identifier>();
3907      this.identifier.add(t);
3908      return this;
3909    }
3910
3911    /**
3912     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
3913     */
3914    public Identifier getIdentifierFirstRep() { 
3915      if (getIdentifier().isEmpty()) {
3916        addIdentifier();
3917      }
3918      return getIdentifier().get(0);
3919    }
3920
3921    /**
3922     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
3923     */
3924    public List<CanonicalType> getInstantiatesCanonical() { 
3925      if (this.instantiatesCanonical == null)
3926        this.instantiatesCanonical = new ArrayList<CanonicalType>();
3927      return this.instantiatesCanonical;
3928    }
3929
3930    /**
3931     * @return Returns a reference to <code>this</code> for easy method chaining
3932     */
3933    public NutritionOrder setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
3934      this.instantiatesCanonical = theInstantiatesCanonical;
3935      return this;
3936    }
3937
3938    public boolean hasInstantiatesCanonical() { 
3939      if (this.instantiatesCanonical == null)
3940        return false;
3941      for (CanonicalType item : this.instantiatesCanonical)
3942        if (!item.isEmpty())
3943          return true;
3944      return false;
3945    }
3946
3947    /**
3948     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
3949     */
3950    public CanonicalType addInstantiatesCanonicalElement() {//2 
3951      CanonicalType t = new CanonicalType();
3952      if (this.instantiatesCanonical == null)
3953        this.instantiatesCanonical = new ArrayList<CanonicalType>();
3954      this.instantiatesCanonical.add(t);
3955      return t;
3956    }
3957
3958    /**
3959     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
3960     */
3961    public NutritionOrder addInstantiatesCanonical(String value) { //1
3962      CanonicalType t = new CanonicalType();
3963      t.setValue(value);
3964      if (this.instantiatesCanonical == null)
3965        this.instantiatesCanonical = new ArrayList<CanonicalType>();
3966      this.instantiatesCanonical.add(t);
3967      return this;
3968    }
3969
3970    /**
3971     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
3972     */
3973    public boolean hasInstantiatesCanonical(String value) { 
3974      if (this.instantiatesCanonical == null)
3975        return false;
3976      for (CanonicalType v : this.instantiatesCanonical)
3977        if (v.getValue().equals(value)) // canonical
3978          return true;
3979      return false;
3980    }
3981
3982    /**
3983     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
3984     */
3985    public List<UriType> getInstantiatesUri() { 
3986      if (this.instantiatesUri == null)
3987        this.instantiatesUri = new ArrayList<UriType>();
3988      return this.instantiatesUri;
3989    }
3990
3991    /**
3992     * @return Returns a reference to <code>this</code> for easy method chaining
3993     */
3994    public NutritionOrder setInstantiatesUri(List<UriType> theInstantiatesUri) { 
3995      this.instantiatesUri = theInstantiatesUri;
3996      return this;
3997    }
3998
3999    public boolean hasInstantiatesUri() { 
4000      if (this.instantiatesUri == null)
4001        return false;
4002      for (UriType item : this.instantiatesUri)
4003        if (!item.isEmpty())
4004          return true;
4005      return false;
4006    }
4007
4008    /**
4009     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4010     */
4011    public UriType addInstantiatesUriElement() {//2 
4012      UriType t = new UriType();
4013      if (this.instantiatesUri == null)
4014        this.instantiatesUri = new ArrayList<UriType>();
4015      this.instantiatesUri.add(t);
4016      return t;
4017    }
4018
4019    /**
4020     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4021     */
4022    public NutritionOrder addInstantiatesUri(String value) { //1
4023      UriType t = new UriType();
4024      t.setValue(value);
4025      if (this.instantiatesUri == null)
4026        this.instantiatesUri = new ArrayList<UriType>();
4027      this.instantiatesUri.add(t);
4028      return this;
4029    }
4030
4031    /**
4032     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4033     */
4034    public boolean hasInstantiatesUri(String value) { 
4035      if (this.instantiatesUri == null)
4036        return false;
4037      for (UriType v : this.instantiatesUri)
4038        if (v.getValue().equals(value)) // uri
4039          return true;
4040      return false;
4041    }
4042
4043    /**
4044     * @return {@link #instantiates} (The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4045     */
4046    public List<UriType> getInstantiates() { 
4047      if (this.instantiates == null)
4048        this.instantiates = new ArrayList<UriType>();
4049      return this.instantiates;
4050    }
4051
4052    /**
4053     * @return Returns a reference to <code>this</code> for easy method chaining
4054     */
4055    public NutritionOrder setInstantiates(List<UriType> theInstantiates) { 
4056      this.instantiates = theInstantiates;
4057      return this;
4058    }
4059
4060    public boolean hasInstantiates() { 
4061      if (this.instantiates == null)
4062        return false;
4063      for (UriType item : this.instantiates)
4064        if (!item.isEmpty())
4065          return true;
4066      return false;
4067    }
4068
4069    /**
4070     * @return {@link #instantiates} (The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4071     */
4072    public UriType addInstantiatesElement() {//2 
4073      UriType t = new UriType();
4074      if (this.instantiates == null)
4075        this.instantiates = new ArrayList<UriType>();
4076      this.instantiates.add(t);
4077      return t;
4078    }
4079
4080    /**
4081     * @param value {@link #instantiates} (The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4082     */
4083    public NutritionOrder addInstantiates(String value) { //1
4084      UriType t = new UriType();
4085      t.setValue(value);
4086      if (this.instantiates == null)
4087        this.instantiates = new ArrayList<UriType>();
4088      this.instantiates.add(t);
4089      return this;
4090    }
4091
4092    /**
4093     * @param value {@link #instantiates} (The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.)
4094     */
4095    public boolean hasInstantiates(String value) { 
4096      if (this.instantiates == null)
4097        return false;
4098      for (UriType v : this.instantiates)
4099        if (v.getValue().equals(value)) // uri
4100          return true;
4101      return false;
4102    }
4103
4104    /**
4105     * @return {@link #basedOn} (A plan or request that is fulfilled in whole or in part by this nutrition order.)
4106     */
4107    public List<Reference> getBasedOn() { 
4108      if (this.basedOn == null)
4109        this.basedOn = new ArrayList<Reference>();
4110      return this.basedOn;
4111    }
4112
4113    /**
4114     * @return Returns a reference to <code>this</code> for easy method chaining
4115     */
4116    public NutritionOrder setBasedOn(List<Reference> theBasedOn) { 
4117      this.basedOn = theBasedOn;
4118      return this;
4119    }
4120
4121    public boolean hasBasedOn() { 
4122      if (this.basedOn == null)
4123        return false;
4124      for (Reference item : this.basedOn)
4125        if (!item.isEmpty())
4126          return true;
4127      return false;
4128    }
4129
4130    public Reference addBasedOn() { //3
4131      Reference t = new Reference();
4132      if (this.basedOn == null)
4133        this.basedOn = new ArrayList<Reference>();
4134      this.basedOn.add(t);
4135      return t;
4136    }
4137
4138    public NutritionOrder addBasedOn(Reference t) { //3
4139      if (t == null)
4140        return this;
4141      if (this.basedOn == null)
4142        this.basedOn = new ArrayList<Reference>();
4143      this.basedOn.add(t);
4144      return this;
4145    }
4146
4147    /**
4148     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
4149     */
4150    public Reference getBasedOnFirstRep() { 
4151      if (getBasedOn().isEmpty()) {
4152        addBasedOn();
4153      }
4154      return getBasedOn().get(0);
4155    }
4156
4157    /**
4158     * @return {@link #groupIdentifier} (A shared identifier common to all nutrition orders that were authorized more or less simultaneously by a single author, representing the composite or group identifier.)
4159     */
4160    public Identifier getGroupIdentifier() { 
4161      if (this.groupIdentifier == null)
4162        if (Configuration.errorOnAutoCreate())
4163          throw new Error("Attempt to auto-create NutritionOrder.groupIdentifier");
4164        else if (Configuration.doAutoCreate())
4165          this.groupIdentifier = new Identifier(); // cc
4166      return this.groupIdentifier;
4167    }
4168
4169    public boolean hasGroupIdentifier() { 
4170      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
4171    }
4172
4173    /**
4174     * @param value {@link #groupIdentifier} (A shared identifier common to all nutrition orders that were authorized more or less simultaneously by a single author, representing the composite or group identifier.)
4175     */
4176    public NutritionOrder setGroupIdentifier(Identifier value) { 
4177      this.groupIdentifier = value;
4178      return this;
4179    }
4180
4181    /**
4182     * @return {@link #status} (The workflow status of the nutrition order/request.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
4183     */
4184    public Enumeration<RequestStatus> getStatusElement() { 
4185      if (this.status == null)
4186        if (Configuration.errorOnAutoCreate())
4187          throw new Error("Attempt to auto-create NutritionOrder.status");
4188        else if (Configuration.doAutoCreate())
4189          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
4190      return this.status;
4191    }
4192
4193    public boolean hasStatusElement() { 
4194      return this.status != null && !this.status.isEmpty();
4195    }
4196
4197    public boolean hasStatus() { 
4198      return this.status != null && !this.status.isEmpty();
4199    }
4200
4201    /**
4202     * @param value {@link #status} (The workflow status of the nutrition order/request.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
4203     */
4204    public NutritionOrder setStatusElement(Enumeration<RequestStatus> value) { 
4205      this.status = value;
4206      return this;
4207    }
4208
4209    /**
4210     * @return The workflow status of the nutrition order/request.
4211     */
4212    public RequestStatus getStatus() { 
4213      return this.status == null ? null : this.status.getValue();
4214    }
4215
4216    /**
4217     * @param value The workflow status of the nutrition order/request.
4218     */
4219    public NutritionOrder setStatus(RequestStatus value) { 
4220        if (this.status == null)
4221          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
4222        this.status.setValue(value);
4223      return this;
4224    }
4225
4226    /**
4227     * @return {@link #intent} (Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
4228     */
4229    public Enumeration<RequestIntent> getIntentElement() { 
4230      if (this.intent == null)
4231        if (Configuration.errorOnAutoCreate())
4232          throw new Error("Attempt to auto-create NutritionOrder.intent");
4233        else if (Configuration.doAutoCreate())
4234          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
4235      return this.intent;
4236    }
4237
4238    public boolean hasIntentElement() { 
4239      return this.intent != null && !this.intent.isEmpty();
4240    }
4241
4242    public boolean hasIntent() { 
4243      return this.intent != null && !this.intent.isEmpty();
4244    }
4245
4246    /**
4247     * @param value {@link #intent} (Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
4248     */
4249    public NutritionOrder setIntentElement(Enumeration<RequestIntent> value) { 
4250      this.intent = value;
4251      return this;
4252    }
4253
4254    /**
4255     * @return Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.
4256     */
4257    public RequestIntent getIntent() { 
4258      return this.intent == null ? null : this.intent.getValue();
4259    }
4260
4261    /**
4262     * @param value Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.
4263     */
4264    public NutritionOrder setIntent(RequestIntent value) { 
4265        if (this.intent == null)
4266          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
4267        this.intent.setValue(value);
4268      return this;
4269    }
4270
4271    /**
4272     * @return {@link #priority} (Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
4273     */
4274    public Enumeration<RequestPriority> getPriorityElement() { 
4275      if (this.priority == null)
4276        if (Configuration.errorOnAutoCreate())
4277          throw new Error("Attempt to auto-create NutritionOrder.priority");
4278        else if (Configuration.doAutoCreate())
4279          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
4280      return this.priority;
4281    }
4282
4283    public boolean hasPriorityElement() { 
4284      return this.priority != null && !this.priority.isEmpty();
4285    }
4286
4287    public boolean hasPriority() { 
4288      return this.priority != null && !this.priority.isEmpty();
4289    }
4290
4291    /**
4292     * @param value {@link #priority} (Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
4293     */
4294    public NutritionOrder setPriorityElement(Enumeration<RequestPriority> value) { 
4295      this.priority = value;
4296      return this;
4297    }
4298
4299    /**
4300     * @return Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.
4301     */
4302    public RequestPriority getPriority() { 
4303      return this.priority == null ? null : this.priority.getValue();
4304    }
4305
4306    /**
4307     * @param value Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.
4308     */
4309    public NutritionOrder setPriority(RequestPriority value) { 
4310      if (value == null)
4311        this.priority = null;
4312      else {
4313        if (this.priority == null)
4314          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
4315        this.priority.setValue(value);
4316      }
4317      return this;
4318    }
4319
4320    /**
4321     * @return {@link #subject} (The person or set of individuals who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding.)
4322     */
4323    public Reference getSubject() { 
4324      if (this.subject == null)
4325        if (Configuration.errorOnAutoCreate())
4326          throw new Error("Attempt to auto-create NutritionOrder.subject");
4327        else if (Configuration.doAutoCreate())
4328          this.subject = new Reference(); // cc
4329      return this.subject;
4330    }
4331
4332    public boolean hasSubject() { 
4333      return this.subject != null && !this.subject.isEmpty();
4334    }
4335
4336    /**
4337     * @param value {@link #subject} (The person or set of individuals who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding.)
4338     */
4339    public NutritionOrder setSubject(Reference value) { 
4340      this.subject = value;
4341      return this;
4342    }
4343
4344    /**
4345     * @return {@link #encounter} (An encounter that provides additional information about the healthcare context in which this request is made.)
4346     */
4347    public Reference getEncounter() { 
4348      if (this.encounter == null)
4349        if (Configuration.errorOnAutoCreate())
4350          throw new Error("Attempt to auto-create NutritionOrder.encounter");
4351        else if (Configuration.doAutoCreate())
4352          this.encounter = new Reference(); // cc
4353      return this.encounter;
4354    }
4355
4356    public boolean hasEncounter() { 
4357      return this.encounter != null && !this.encounter.isEmpty();
4358    }
4359
4360    /**
4361     * @param value {@link #encounter} (An encounter that provides additional information about the healthcare context in which this request is made.)
4362     */
4363    public NutritionOrder setEncounter(Reference value) { 
4364      this.encounter = value;
4365      return this;
4366    }
4367
4368    /**
4369     * @return {@link #supportingInformation} (Information to support fulfilling (i.e. dispensing or administering) of the nutrition,        for example, patient height and weight).)
4370     */
4371    public List<Reference> getSupportingInformation() { 
4372      if (this.supportingInformation == null)
4373        this.supportingInformation = new ArrayList<Reference>();
4374      return this.supportingInformation;
4375    }
4376
4377    /**
4378     * @return Returns a reference to <code>this</code> for easy method chaining
4379     */
4380    public NutritionOrder setSupportingInformation(List<Reference> theSupportingInformation) { 
4381      this.supportingInformation = theSupportingInformation;
4382      return this;
4383    }
4384
4385    public boolean hasSupportingInformation() { 
4386      if (this.supportingInformation == null)
4387        return false;
4388      for (Reference item : this.supportingInformation)
4389        if (!item.isEmpty())
4390          return true;
4391      return false;
4392    }
4393
4394    public Reference addSupportingInformation() { //3
4395      Reference t = new Reference();
4396      if (this.supportingInformation == null)
4397        this.supportingInformation = new ArrayList<Reference>();
4398      this.supportingInformation.add(t);
4399      return t;
4400    }
4401
4402    public NutritionOrder addSupportingInformation(Reference t) { //3
4403      if (t == null)
4404        return this;
4405      if (this.supportingInformation == null)
4406        this.supportingInformation = new ArrayList<Reference>();
4407      this.supportingInformation.add(t);
4408      return this;
4409    }
4410
4411    /**
4412     * @return The first repetition of repeating field {@link #supportingInformation}, creating it if it does not already exist {3}
4413     */
4414    public Reference getSupportingInformationFirstRep() { 
4415      if (getSupportingInformation().isEmpty()) {
4416        addSupportingInformation();
4417      }
4418      return getSupportingInformation().get(0);
4419    }
4420
4421    /**
4422     * @return {@link #dateTime} (The date and time that this nutrition order was requested.). This is the underlying object with id, value and extensions. The accessor "getDateTime" gives direct access to the value
4423     */
4424    public DateTimeType getDateTimeElement() { 
4425      if (this.dateTime == null)
4426        if (Configuration.errorOnAutoCreate())
4427          throw new Error("Attempt to auto-create NutritionOrder.dateTime");
4428        else if (Configuration.doAutoCreate())
4429          this.dateTime = new DateTimeType(); // bb
4430      return this.dateTime;
4431    }
4432
4433    public boolean hasDateTimeElement() { 
4434      return this.dateTime != null && !this.dateTime.isEmpty();
4435    }
4436
4437    public boolean hasDateTime() { 
4438      return this.dateTime != null && !this.dateTime.isEmpty();
4439    }
4440
4441    /**
4442     * @param value {@link #dateTime} (The date and time that this nutrition order was requested.). This is the underlying object with id, value and extensions. The accessor "getDateTime" gives direct access to the value
4443     */
4444    public NutritionOrder setDateTimeElement(DateTimeType value) { 
4445      this.dateTime = value;
4446      return this;
4447    }
4448
4449    /**
4450     * @return The date and time that this nutrition order was requested.
4451     */
4452    public Date getDateTime() { 
4453      return this.dateTime == null ? null : this.dateTime.getValue();
4454    }
4455
4456    /**
4457     * @param value The date and time that this nutrition order was requested.
4458     */
4459    public NutritionOrder setDateTime(Date value) { 
4460        if (this.dateTime == null)
4461          this.dateTime = new DateTimeType();
4462        this.dateTime.setValue(value);
4463      return this;
4464    }
4465
4466    /**
4467     * @return {@link #orderer} (The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings.)
4468     */
4469    public Reference getOrderer() { 
4470      if (this.orderer == null)
4471        if (Configuration.errorOnAutoCreate())
4472          throw new Error("Attempt to auto-create NutritionOrder.orderer");
4473        else if (Configuration.doAutoCreate())
4474          this.orderer = new Reference(); // cc
4475      return this.orderer;
4476    }
4477
4478    public boolean hasOrderer() { 
4479      return this.orderer != null && !this.orderer.isEmpty();
4480    }
4481
4482    /**
4483     * @param value {@link #orderer} (The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings.)
4484     */
4485    public NutritionOrder setOrderer(Reference value) { 
4486      this.orderer = value;
4487      return this;
4488    }
4489
4490    /**
4491     * @return {@link #performer} (The specified desired performer of the nutrition order.)
4492     */
4493    public List<CodeableReference> getPerformer() { 
4494      if (this.performer == null)
4495        this.performer = new ArrayList<CodeableReference>();
4496      return this.performer;
4497    }
4498
4499    /**
4500     * @return Returns a reference to <code>this</code> for easy method chaining
4501     */
4502    public NutritionOrder setPerformer(List<CodeableReference> thePerformer) { 
4503      this.performer = thePerformer;
4504      return this;
4505    }
4506
4507    public boolean hasPerformer() { 
4508      if (this.performer == null)
4509        return false;
4510      for (CodeableReference item : this.performer)
4511        if (!item.isEmpty())
4512          return true;
4513      return false;
4514    }
4515
4516    public CodeableReference addPerformer() { //3
4517      CodeableReference t = new CodeableReference();
4518      if (this.performer == null)
4519        this.performer = new ArrayList<CodeableReference>();
4520      this.performer.add(t);
4521      return t;
4522    }
4523
4524    public NutritionOrder addPerformer(CodeableReference t) { //3
4525      if (t == null)
4526        return this;
4527      if (this.performer == null)
4528        this.performer = new ArrayList<CodeableReference>();
4529      this.performer.add(t);
4530      return this;
4531    }
4532
4533    /**
4534     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
4535     */
4536    public CodeableReference getPerformerFirstRep() { 
4537      if (getPerformer().isEmpty()) {
4538        addPerformer();
4539      }
4540      return getPerformer().get(0);
4541    }
4542
4543    /**
4544     * @return {@link #allergyIntolerance} (A link to a record of allergies or intolerances  which should be included in the nutrition order.)
4545     */
4546    public List<Reference> getAllergyIntolerance() { 
4547      if (this.allergyIntolerance == null)
4548        this.allergyIntolerance = new ArrayList<Reference>();
4549      return this.allergyIntolerance;
4550    }
4551
4552    /**
4553     * @return Returns a reference to <code>this</code> for easy method chaining
4554     */
4555    public NutritionOrder setAllergyIntolerance(List<Reference> theAllergyIntolerance) { 
4556      this.allergyIntolerance = theAllergyIntolerance;
4557      return this;
4558    }
4559
4560    public boolean hasAllergyIntolerance() { 
4561      if (this.allergyIntolerance == null)
4562        return false;
4563      for (Reference item : this.allergyIntolerance)
4564        if (!item.isEmpty())
4565          return true;
4566      return false;
4567    }
4568
4569    public Reference addAllergyIntolerance() { //3
4570      Reference t = new Reference();
4571      if (this.allergyIntolerance == null)
4572        this.allergyIntolerance = new ArrayList<Reference>();
4573      this.allergyIntolerance.add(t);
4574      return t;
4575    }
4576
4577    public NutritionOrder addAllergyIntolerance(Reference t) { //3
4578      if (t == null)
4579        return this;
4580      if (this.allergyIntolerance == null)
4581        this.allergyIntolerance = new ArrayList<Reference>();
4582      this.allergyIntolerance.add(t);
4583      return this;
4584    }
4585
4586    /**
4587     * @return The first repetition of repeating field {@link #allergyIntolerance}, creating it if it does not already exist {3}
4588     */
4589    public Reference getAllergyIntoleranceFirstRep() { 
4590      if (getAllergyIntolerance().isEmpty()) {
4591        addAllergyIntolerance();
4592      }
4593      return getAllergyIntolerance().get(0);
4594    }
4595
4596    /**
4597     * @return {@link #foodPreferenceModifier} (This modifier is used to convey order-specific modifiers about the type of food that should be given. These can be derived from patient allergies, intolerances, or preferences such as Halal, Vegan or Kosher. This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.)
4598     */
4599    public List<CodeableConcept> getFoodPreferenceModifier() { 
4600      if (this.foodPreferenceModifier == null)
4601        this.foodPreferenceModifier = new ArrayList<CodeableConcept>();
4602      return this.foodPreferenceModifier;
4603    }
4604
4605    /**
4606     * @return Returns a reference to <code>this</code> for easy method chaining
4607     */
4608    public NutritionOrder setFoodPreferenceModifier(List<CodeableConcept> theFoodPreferenceModifier) { 
4609      this.foodPreferenceModifier = theFoodPreferenceModifier;
4610      return this;
4611    }
4612
4613    public boolean hasFoodPreferenceModifier() { 
4614      if (this.foodPreferenceModifier == null)
4615        return false;
4616      for (CodeableConcept item : this.foodPreferenceModifier)
4617        if (!item.isEmpty())
4618          return true;
4619      return false;
4620    }
4621
4622    public CodeableConcept addFoodPreferenceModifier() { //3
4623      CodeableConcept t = new CodeableConcept();
4624      if (this.foodPreferenceModifier == null)
4625        this.foodPreferenceModifier = new ArrayList<CodeableConcept>();
4626      this.foodPreferenceModifier.add(t);
4627      return t;
4628    }
4629
4630    public NutritionOrder addFoodPreferenceModifier(CodeableConcept t) { //3
4631      if (t == null)
4632        return this;
4633      if (this.foodPreferenceModifier == null)
4634        this.foodPreferenceModifier = new ArrayList<CodeableConcept>();
4635      this.foodPreferenceModifier.add(t);
4636      return this;
4637    }
4638
4639    /**
4640     * @return The first repetition of repeating field {@link #foodPreferenceModifier}, creating it if it does not already exist {3}
4641     */
4642    public CodeableConcept getFoodPreferenceModifierFirstRep() { 
4643      if (getFoodPreferenceModifier().isEmpty()) {
4644        addFoodPreferenceModifier();
4645      }
4646      return getFoodPreferenceModifier().get(0);
4647    }
4648
4649    /**
4650     * @return {@link #excludeFoodModifier} (This modifier is used to convey Order-specific modifier about the type of oral food or oral fluids that should not be given. These can be derived from patient allergies, intolerances, or preferences such as No Red Meat, No Soy or No Wheat or  Gluten-Free.  While it should not be necessary to repeat allergy or intolerance information captured in the referenced AllergyIntolerance resource in the excludeFoodModifier, this element may be used to convey additional specificity related to foods that should be eliminated from the patient?s diet for any reason.  This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.)
4651     */
4652    public List<CodeableConcept> getExcludeFoodModifier() { 
4653      if (this.excludeFoodModifier == null)
4654        this.excludeFoodModifier = new ArrayList<CodeableConcept>();
4655      return this.excludeFoodModifier;
4656    }
4657
4658    /**
4659     * @return Returns a reference to <code>this</code> for easy method chaining
4660     */
4661    public NutritionOrder setExcludeFoodModifier(List<CodeableConcept> theExcludeFoodModifier) { 
4662      this.excludeFoodModifier = theExcludeFoodModifier;
4663      return this;
4664    }
4665
4666    public boolean hasExcludeFoodModifier() { 
4667      if (this.excludeFoodModifier == null)
4668        return false;
4669      for (CodeableConcept item : this.excludeFoodModifier)
4670        if (!item.isEmpty())
4671          return true;
4672      return false;
4673    }
4674
4675    public CodeableConcept addExcludeFoodModifier() { //3
4676      CodeableConcept t = new CodeableConcept();
4677      if (this.excludeFoodModifier == null)
4678        this.excludeFoodModifier = new ArrayList<CodeableConcept>();
4679      this.excludeFoodModifier.add(t);
4680      return t;
4681    }
4682
4683    public NutritionOrder addExcludeFoodModifier(CodeableConcept t) { //3
4684      if (t == null)
4685        return this;
4686      if (this.excludeFoodModifier == null)
4687        this.excludeFoodModifier = new ArrayList<CodeableConcept>();
4688      this.excludeFoodModifier.add(t);
4689      return this;
4690    }
4691
4692    /**
4693     * @return The first repetition of repeating field {@link #excludeFoodModifier}, creating it if it does not already exist {3}
4694     */
4695    public CodeableConcept getExcludeFoodModifierFirstRep() { 
4696      if (getExcludeFoodModifier().isEmpty()) {
4697        addExcludeFoodModifier();
4698      }
4699      return getExcludeFoodModifier().get(0);
4700    }
4701
4702    /**
4703     * @return {@link #outsideFoodAllowed} (This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.). This is the underlying object with id, value and extensions. The accessor "getOutsideFoodAllowed" gives direct access to the value
4704     */
4705    public BooleanType getOutsideFoodAllowedElement() { 
4706      if (this.outsideFoodAllowed == null)
4707        if (Configuration.errorOnAutoCreate())
4708          throw new Error("Attempt to auto-create NutritionOrder.outsideFoodAllowed");
4709        else if (Configuration.doAutoCreate())
4710          this.outsideFoodAllowed = new BooleanType(); // bb
4711      return this.outsideFoodAllowed;
4712    }
4713
4714    public boolean hasOutsideFoodAllowedElement() { 
4715      return this.outsideFoodAllowed != null && !this.outsideFoodAllowed.isEmpty();
4716    }
4717
4718    public boolean hasOutsideFoodAllowed() { 
4719      return this.outsideFoodAllowed != null && !this.outsideFoodAllowed.isEmpty();
4720    }
4721
4722    /**
4723     * @param value {@link #outsideFoodAllowed} (This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.). This is the underlying object with id, value and extensions. The accessor "getOutsideFoodAllowed" gives direct access to the value
4724     */
4725    public NutritionOrder setOutsideFoodAllowedElement(BooleanType value) { 
4726      this.outsideFoodAllowed = value;
4727      return this;
4728    }
4729
4730    /**
4731     * @return This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.
4732     */
4733    public boolean getOutsideFoodAllowed() { 
4734      return this.outsideFoodAllowed == null || this.outsideFoodAllowed.isEmpty() ? false : this.outsideFoodAllowed.getValue();
4735    }
4736
4737    /**
4738     * @param value This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.
4739     */
4740    public NutritionOrder setOutsideFoodAllowed(boolean value) { 
4741        if (this.outsideFoodAllowed == null)
4742          this.outsideFoodAllowed = new BooleanType();
4743        this.outsideFoodAllowed.setValue(value);
4744      return this;
4745    }
4746
4747    /**
4748     * @return {@link #oralDiet} (Diet given orally in contrast to enteral (tube) feeding.)
4749     */
4750    public NutritionOrderOralDietComponent getOralDiet() { 
4751      if (this.oralDiet == null)
4752        if (Configuration.errorOnAutoCreate())
4753          throw new Error("Attempt to auto-create NutritionOrder.oralDiet");
4754        else if (Configuration.doAutoCreate())
4755          this.oralDiet = new NutritionOrderOralDietComponent(); // cc
4756      return this.oralDiet;
4757    }
4758
4759    public boolean hasOralDiet() { 
4760      return this.oralDiet != null && !this.oralDiet.isEmpty();
4761    }
4762
4763    /**
4764     * @param value {@link #oralDiet} (Diet given orally in contrast to enteral (tube) feeding.)
4765     */
4766    public NutritionOrder setOralDiet(NutritionOrderOralDietComponent value) { 
4767      this.oralDiet = value;
4768      return this;
4769    }
4770
4771    /**
4772     * @return {@link #supplement} (Oral nutritional products given in order to add further nutritional value to the patient's diet.)
4773     */
4774    public List<NutritionOrderSupplementComponent> getSupplement() { 
4775      if (this.supplement == null)
4776        this.supplement = new ArrayList<NutritionOrderSupplementComponent>();
4777      return this.supplement;
4778    }
4779
4780    /**
4781     * @return Returns a reference to <code>this</code> for easy method chaining
4782     */
4783    public NutritionOrder setSupplement(List<NutritionOrderSupplementComponent> theSupplement) { 
4784      this.supplement = theSupplement;
4785      return this;
4786    }
4787
4788    public boolean hasSupplement() { 
4789      if (this.supplement == null)
4790        return false;
4791      for (NutritionOrderSupplementComponent item : this.supplement)
4792        if (!item.isEmpty())
4793          return true;
4794      return false;
4795    }
4796
4797    public NutritionOrderSupplementComponent addSupplement() { //3
4798      NutritionOrderSupplementComponent t = new NutritionOrderSupplementComponent();
4799      if (this.supplement == null)
4800        this.supplement = new ArrayList<NutritionOrderSupplementComponent>();
4801      this.supplement.add(t);
4802      return t;
4803    }
4804
4805    public NutritionOrder addSupplement(NutritionOrderSupplementComponent t) { //3
4806      if (t == null)
4807        return this;
4808      if (this.supplement == null)
4809        this.supplement = new ArrayList<NutritionOrderSupplementComponent>();
4810      this.supplement.add(t);
4811      return this;
4812    }
4813
4814    /**
4815     * @return The first repetition of repeating field {@link #supplement}, creating it if it does not already exist {3}
4816     */
4817    public NutritionOrderSupplementComponent getSupplementFirstRep() { 
4818      if (getSupplement().isEmpty()) {
4819        addSupplement();
4820      }
4821      return getSupplement().get(0);
4822    }
4823
4824    /**
4825     * @return {@link #enteralFormula} (Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity.)
4826     */
4827    public NutritionOrderEnteralFormulaComponent getEnteralFormula() { 
4828      if (this.enteralFormula == null)
4829        if (Configuration.errorOnAutoCreate())
4830          throw new Error("Attempt to auto-create NutritionOrder.enteralFormula");
4831        else if (Configuration.doAutoCreate())
4832          this.enteralFormula = new NutritionOrderEnteralFormulaComponent(); // cc
4833      return this.enteralFormula;
4834    }
4835
4836    public boolean hasEnteralFormula() { 
4837      return this.enteralFormula != null && !this.enteralFormula.isEmpty();
4838    }
4839
4840    /**
4841     * @param value {@link #enteralFormula} (Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity.)
4842     */
4843    public NutritionOrder setEnteralFormula(NutritionOrderEnteralFormulaComponent value) { 
4844      this.enteralFormula = value;
4845      return this;
4846    }
4847
4848    /**
4849     * @return {@link #note} (Comments made about the nutrition order by the requester, performer, subject or other participants.)
4850     */
4851    public List<Annotation> getNote() { 
4852      if (this.note == null)
4853        this.note = new ArrayList<Annotation>();
4854      return this.note;
4855    }
4856
4857    /**
4858     * @return Returns a reference to <code>this</code> for easy method chaining
4859     */
4860    public NutritionOrder setNote(List<Annotation> theNote) { 
4861      this.note = theNote;
4862      return this;
4863    }
4864
4865    public boolean hasNote() { 
4866      if (this.note == null)
4867        return false;
4868      for (Annotation item : this.note)
4869        if (!item.isEmpty())
4870          return true;
4871      return false;
4872    }
4873
4874    public Annotation addNote() { //3
4875      Annotation t = new Annotation();
4876      if (this.note == null)
4877        this.note = new ArrayList<Annotation>();
4878      this.note.add(t);
4879      return t;
4880    }
4881
4882    public NutritionOrder addNote(Annotation t) { //3
4883      if (t == null)
4884        return this;
4885      if (this.note == null)
4886        this.note = new ArrayList<Annotation>();
4887      this.note.add(t);
4888      return this;
4889    }
4890
4891    /**
4892     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
4893     */
4894    public Annotation getNoteFirstRep() { 
4895      if (getNote().isEmpty()) {
4896        addNote();
4897      }
4898      return getNote().get(0);
4899    }
4900
4901      protected void listChildren(List<Property> children) {
4902        super.listChildren(children);
4903        children.add(new Property("identifier", "Identifier", "Identifiers assigned to this order by the order sender or by the order receiver.", 0, java.lang.Integer.MAX_VALUE, identifier));
4904        children.add(new Property("instantiatesCanonical", "canonical(ActivityDefinition|PlanDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
4905        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
4906        children.add(new Property("instantiates", "uri", "The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.", 0, java.lang.Integer.MAX_VALUE, instantiates));
4907        children.add(new Property("basedOn", "Reference(CarePlan|NutritionOrder|ServiceRequest)", "A plan or request that is fulfilled in whole or in part by this nutrition order.", 0, java.lang.Integer.MAX_VALUE, basedOn));
4908        children.add(new Property("groupIdentifier", "Identifier", "A shared identifier common to all nutrition orders that were authorized more or less simultaneously by a single author, representing the composite or group identifier.", 0, 1, groupIdentifier));
4909        children.add(new Property("status", "code", "The workflow status of the nutrition order/request.", 0, 1, status));
4910        children.add(new Property("intent", "code", "Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.", 0, 1, intent));
4911        children.add(new Property("priority", "code", "Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.", 0, 1, priority));
4912        children.add(new Property("subject", "Reference(Patient|Group)", "The person or set of individuals who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding.", 0, 1, subject));
4913        children.add(new Property("encounter", "Reference(Encounter)", "An encounter that provides additional information about the healthcare context in which this request is made.", 0, 1, encounter));
4914        children.add(new Property("supportingInformation", "Reference(Any)", "Information to support fulfilling (i.e. dispensing or administering) of the nutrition,        for example, patient height and weight).", 0, java.lang.Integer.MAX_VALUE, supportingInformation));
4915        children.add(new Property("dateTime", "dateTime", "The date and time that this nutrition order was requested.", 0, 1, dateTime));
4916        children.add(new Property("orderer", "Reference(Practitioner|PractitionerRole)", "The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings.", 0, 1, orderer));
4917        children.add(new Property("performer", "CodeableReference(CareTeam|Practitioner|PractitionerRole|RelatedPerson|Patient|Organization)", "The specified desired performer of the nutrition order.", 0, java.lang.Integer.MAX_VALUE, performer));
4918        children.add(new Property("allergyIntolerance", "Reference(AllergyIntolerance)", "A link to a record of allergies or intolerances  which should be included in the nutrition order.", 0, java.lang.Integer.MAX_VALUE, allergyIntolerance));
4919        children.add(new Property("foodPreferenceModifier", "CodeableConcept", "This modifier is used to convey order-specific modifiers about the type of food that should be given. These can be derived from patient allergies, intolerances, or preferences such as Halal, Vegan or Kosher. This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.", 0, java.lang.Integer.MAX_VALUE, foodPreferenceModifier));
4920        children.add(new Property("excludeFoodModifier", "CodeableConcept", "This modifier is used to convey Order-specific modifier about the type of oral food or oral fluids that should not be given. These can be derived from patient allergies, intolerances, or preferences such as No Red Meat, No Soy or No Wheat or  Gluten-Free.  While it should not be necessary to repeat allergy or intolerance information captured in the referenced AllergyIntolerance resource in the excludeFoodModifier, this element may be used to convey additional specificity related to foods that should be eliminated from the patient?s diet for any reason.  This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.", 0, java.lang.Integer.MAX_VALUE, excludeFoodModifier));
4921        children.add(new Property("outsideFoodAllowed", "boolean", "This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.", 0, 1, outsideFoodAllowed));
4922        children.add(new Property("oralDiet", "", "Diet given orally in contrast to enteral (tube) feeding.", 0, 1, oralDiet));
4923        children.add(new Property("supplement", "", "Oral nutritional products given in order to add further nutritional value to the patient's diet.", 0, java.lang.Integer.MAX_VALUE, supplement));
4924        children.add(new Property("enteralFormula", "", "Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity.", 0, 1, enteralFormula));
4925        children.add(new Property("note", "Annotation", "Comments made about the nutrition order by the requester, performer, subject or other participants.", 0, java.lang.Integer.MAX_VALUE, note));
4926      }
4927
4928      @Override
4929      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4930        switch (_hash) {
4931        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers assigned to this order by the order sender or by the order receiver.", 0, java.lang.Integer.MAX_VALUE, identifier);
4932        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(ActivityDefinition|PlanDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
4933        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
4934        case -246883639: /*instantiates*/  return new Property("instantiates", "uri", "The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder.", 0, java.lang.Integer.MAX_VALUE, instantiates);
4935        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|NutritionOrder|ServiceRequest)", "A plan or request that is fulfilled in whole or in part by this nutrition order.", 0, java.lang.Integer.MAX_VALUE, basedOn);
4936        case -445338488: /*groupIdentifier*/  return new Property("groupIdentifier", "Identifier", "A shared identifier common to all nutrition orders that were authorized more or less simultaneously by a single author, representing the composite or group identifier.", 0, 1, groupIdentifier);
4937        case -892481550: /*status*/  return new Property("status", "code", "The workflow status of the nutrition order/request.", 0, 1, status);
4938        case -1183762788: /*intent*/  return new Property("intent", "code", "Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain.", 0, 1, intent);
4939        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the Nutrition Order should be addressed with respect to other        requests.", 0, 1, priority);
4940        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The person or set of individuals who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding.", 0, 1, subject);
4941        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "An encounter that provides additional information about the healthcare context in which this request is made.", 0, 1, encounter);
4942        case -1248768647: /*supportingInformation*/  return new Property("supportingInformation", "Reference(Any)", "Information to support fulfilling (i.e. dispensing or administering) of the nutrition,        for example, patient height and weight).", 0, java.lang.Integer.MAX_VALUE, supportingInformation);
4943        case 1792749467: /*dateTime*/  return new Property("dateTime", "dateTime", "The date and time that this nutrition order was requested.", 0, 1, dateTime);
4944        case -1207109509: /*orderer*/  return new Property("orderer", "Reference(Practitioner|PractitionerRole)", "The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings.", 0, 1, orderer);
4945        case 481140686: /*performer*/  return new Property("performer", "CodeableReference(CareTeam|Practitioner|PractitionerRole|RelatedPerson|Patient|Organization)", "The specified desired performer of the nutrition order.", 0, java.lang.Integer.MAX_VALUE, performer);
4946        case -120164120: /*allergyIntolerance*/  return new Property("allergyIntolerance", "Reference(AllergyIntolerance)", "A link to a record of allergies or intolerances  which should be included in the nutrition order.", 0, java.lang.Integer.MAX_VALUE, allergyIntolerance);
4947        case 659473872: /*foodPreferenceModifier*/  return new Property("foodPreferenceModifier", "CodeableConcept", "This modifier is used to convey order-specific modifiers about the type of food that should be given. These can be derived from patient allergies, intolerances, or preferences such as Halal, Vegan or Kosher. This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.", 0, java.lang.Integer.MAX_VALUE, foodPreferenceModifier);
4948        case 1760260175: /*excludeFoodModifier*/  return new Property("excludeFoodModifier", "CodeableConcept", "This modifier is used to convey Order-specific modifier about the type of oral food or oral fluids that should not be given. These can be derived from patient allergies, intolerances, or preferences such as No Red Meat, No Soy or No Wheat or  Gluten-Free.  While it should not be necessary to repeat allergy or intolerance information captured in the referenced AllergyIntolerance resource in the excludeFoodModifier, this element may be used to convey additional specificity related to foods that should be eliminated from the patient?s diet for any reason.  This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings.", 0, java.lang.Integer.MAX_VALUE, excludeFoodModifier);
4949        case 833777797: /*outsideFoodAllowed*/  return new Property("outsideFoodAllowed", "boolean", "This modifier is used to convey whether a food item is allowed to be brought in by the patient and/or family.  If set to true, indicates that the receiving system does not need to supply the food item.", 0, 1, outsideFoodAllowed);
4950        case 1153521250: /*oralDiet*/  return new Property("oralDiet", "", "Diet given orally in contrast to enteral (tube) feeding.", 0, 1, oralDiet);
4951        case -711993159: /*supplement*/  return new Property("supplement", "", "Oral nutritional products given in order to add further nutritional value to the patient's diet.", 0, java.lang.Integer.MAX_VALUE, supplement);
4952        case -671083805: /*enteralFormula*/  return new Property("enteralFormula", "", "Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity.", 0, 1, enteralFormula);
4953        case 3387378: /*note*/  return new Property("note", "Annotation", "Comments made about the nutrition order by the requester, performer, subject or other participants.", 0, java.lang.Integer.MAX_VALUE, note);
4954        default: return super.getNamedProperty(_hash, _name, _checkValid);
4955        }
4956
4957      }
4958
4959      @Override
4960      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4961        switch (hash) {
4962        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4963        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
4964        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
4965        case -246883639: /*instantiates*/ return this.instantiates == null ? new Base[0] : this.instantiates.toArray(new Base[this.instantiates.size()]); // UriType
4966        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
4967        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
4968        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
4969        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
4970        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
4971        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
4972        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
4973        case -1248768647: /*supportingInformation*/ return this.supportingInformation == null ? new Base[0] : this.supportingInformation.toArray(new Base[this.supportingInformation.size()]); // Reference
4974        case 1792749467: /*dateTime*/ return this.dateTime == null ? new Base[0] : new Base[] {this.dateTime}; // DateTimeType
4975        case -1207109509: /*orderer*/ return this.orderer == null ? new Base[0] : new Base[] {this.orderer}; // Reference
4976        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // CodeableReference
4977        case -120164120: /*allergyIntolerance*/ return this.allergyIntolerance == null ? new Base[0] : this.allergyIntolerance.toArray(new Base[this.allergyIntolerance.size()]); // Reference
4978        case 659473872: /*foodPreferenceModifier*/ return this.foodPreferenceModifier == null ? new Base[0] : this.foodPreferenceModifier.toArray(new Base[this.foodPreferenceModifier.size()]); // CodeableConcept
4979        case 1760260175: /*excludeFoodModifier*/ return this.excludeFoodModifier == null ? new Base[0] : this.excludeFoodModifier.toArray(new Base[this.excludeFoodModifier.size()]); // CodeableConcept
4980        case 833777797: /*outsideFoodAllowed*/ return this.outsideFoodAllowed == null ? new Base[0] : new Base[] {this.outsideFoodAllowed}; // BooleanType
4981        case 1153521250: /*oralDiet*/ return this.oralDiet == null ? new Base[0] : new Base[] {this.oralDiet}; // NutritionOrderOralDietComponent
4982        case -711993159: /*supplement*/ return this.supplement == null ? new Base[0] : this.supplement.toArray(new Base[this.supplement.size()]); // NutritionOrderSupplementComponent
4983        case -671083805: /*enteralFormula*/ return this.enteralFormula == null ? new Base[0] : new Base[] {this.enteralFormula}; // NutritionOrderEnteralFormulaComponent
4984        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
4985        default: return super.getProperty(hash, name, checkValid);
4986        }
4987
4988      }
4989
4990      @Override
4991      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4992        switch (hash) {
4993        case -1618432855: // identifier
4994          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4995          return value;
4996        case 8911915: // instantiatesCanonical
4997          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
4998          return value;
4999        case -1926393373: // instantiatesUri
5000          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
5001          return value;
5002        case -246883639: // instantiates
5003          this.getInstantiates().add(TypeConvertor.castToUri(value)); // UriType
5004          return value;
5005        case -332612366: // basedOn
5006          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
5007          return value;
5008        case -445338488: // groupIdentifier
5009          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5010          return value;
5011        case -892481550: // status
5012          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5013          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5014          return value;
5015        case -1183762788: // intent
5016          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5017          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5018          return value;
5019        case -1165461084: // priority
5020          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5021          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5022          return value;
5023        case -1867885268: // subject
5024          this.subject = TypeConvertor.castToReference(value); // Reference
5025          return value;
5026        case 1524132147: // encounter
5027          this.encounter = TypeConvertor.castToReference(value); // Reference
5028          return value;
5029        case -1248768647: // supportingInformation
5030          this.getSupportingInformation().add(TypeConvertor.castToReference(value)); // Reference
5031          return value;
5032        case 1792749467: // dateTime
5033          this.dateTime = TypeConvertor.castToDateTime(value); // DateTimeType
5034          return value;
5035        case -1207109509: // orderer
5036          this.orderer = TypeConvertor.castToReference(value); // Reference
5037          return value;
5038        case 481140686: // performer
5039          this.getPerformer().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
5040          return value;
5041        case -120164120: // allergyIntolerance
5042          this.getAllergyIntolerance().add(TypeConvertor.castToReference(value)); // Reference
5043          return value;
5044        case 659473872: // foodPreferenceModifier
5045          this.getFoodPreferenceModifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
5046          return value;
5047        case 1760260175: // excludeFoodModifier
5048          this.getExcludeFoodModifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
5049          return value;
5050        case 833777797: // outsideFoodAllowed
5051          this.outsideFoodAllowed = TypeConvertor.castToBoolean(value); // BooleanType
5052          return value;
5053        case 1153521250: // oralDiet
5054          this.oralDiet = (NutritionOrderOralDietComponent) value; // NutritionOrderOralDietComponent
5055          return value;
5056        case -711993159: // supplement
5057          this.getSupplement().add((NutritionOrderSupplementComponent) value); // NutritionOrderSupplementComponent
5058          return value;
5059        case -671083805: // enteralFormula
5060          this.enteralFormula = (NutritionOrderEnteralFormulaComponent) value; // NutritionOrderEnteralFormulaComponent
5061          return value;
5062        case 3387378: // note
5063          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
5064          return value;
5065        default: return super.setProperty(hash, name, value);
5066        }
5067
5068      }
5069
5070      @Override
5071      public Base setProperty(String name, Base value) throws FHIRException {
5072        if (name.equals("identifier")) {
5073          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
5074        } else if (name.equals("instantiatesCanonical")) {
5075          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
5076        } else if (name.equals("instantiatesUri")) {
5077          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
5078        } else if (name.equals("instantiates")) {
5079          this.getInstantiates().add(TypeConvertor.castToUri(value));
5080        } else if (name.equals("basedOn")) {
5081          this.getBasedOn().add(TypeConvertor.castToReference(value));
5082        } else if (name.equals("groupIdentifier")) {
5083          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
5084        } else if (name.equals("status")) {
5085          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5086          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5087        } else if (name.equals("intent")) {
5088          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5089          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5090        } else if (name.equals("priority")) {
5091          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5092          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5093        } else if (name.equals("subject")) {
5094          this.subject = TypeConvertor.castToReference(value); // Reference
5095        } else if (name.equals("encounter")) {
5096          this.encounter = TypeConvertor.castToReference(value); // Reference
5097        } else if (name.equals("supportingInformation")) {
5098          this.getSupportingInformation().add(TypeConvertor.castToReference(value));
5099        } else if (name.equals("dateTime")) {
5100          this.dateTime = TypeConvertor.castToDateTime(value); // DateTimeType
5101        } else if (name.equals("orderer")) {
5102          this.orderer = TypeConvertor.castToReference(value); // Reference
5103        } else if (name.equals("performer")) {
5104          this.getPerformer().add(TypeConvertor.castToCodeableReference(value));
5105        } else if (name.equals("allergyIntolerance")) {
5106          this.getAllergyIntolerance().add(TypeConvertor.castToReference(value));
5107        } else if (name.equals("foodPreferenceModifier")) {
5108          this.getFoodPreferenceModifier().add(TypeConvertor.castToCodeableConcept(value));
5109        } else if (name.equals("excludeFoodModifier")) {
5110          this.getExcludeFoodModifier().add(TypeConvertor.castToCodeableConcept(value));
5111        } else if (name.equals("outsideFoodAllowed")) {
5112          this.outsideFoodAllowed = TypeConvertor.castToBoolean(value); // BooleanType
5113        } else if (name.equals("oralDiet")) {
5114          this.oralDiet = (NutritionOrderOralDietComponent) value; // NutritionOrderOralDietComponent
5115        } else if (name.equals("supplement")) {
5116          this.getSupplement().add((NutritionOrderSupplementComponent) value);
5117        } else if (name.equals("enteralFormula")) {
5118          this.enteralFormula = (NutritionOrderEnteralFormulaComponent) value; // NutritionOrderEnteralFormulaComponent
5119        } else if (name.equals("note")) {
5120          this.getNote().add(TypeConvertor.castToAnnotation(value));
5121        } else
5122          return super.setProperty(name, value);
5123        return value;
5124      }
5125
5126  @Override
5127  public void removeChild(String name, Base value) throws FHIRException {
5128        if (name.equals("identifier")) {
5129          this.getIdentifier().remove(value);
5130        } else if (name.equals("instantiatesCanonical")) {
5131          this.getInstantiatesCanonical().remove(value);
5132        } else if (name.equals("instantiatesUri")) {
5133          this.getInstantiatesUri().remove(value);
5134        } else if (name.equals("instantiates")) {
5135          this.getInstantiates().remove(value);
5136        } else if (name.equals("basedOn")) {
5137          this.getBasedOn().remove(value);
5138        } else if (name.equals("groupIdentifier")) {
5139          this.groupIdentifier = null;
5140        } else if (name.equals("status")) {
5141          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
5142          this.status = (Enumeration) value; // Enumeration<RequestStatus>
5143        } else if (name.equals("intent")) {
5144          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
5145          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5146        } else if (name.equals("priority")) {
5147          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
5148          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5149        } else if (name.equals("subject")) {
5150          this.subject = null;
5151        } else if (name.equals("encounter")) {
5152          this.encounter = null;
5153        } else if (name.equals("supportingInformation")) {
5154          this.getSupportingInformation().remove(value);
5155        } else if (name.equals("dateTime")) {
5156          this.dateTime = null;
5157        } else if (name.equals("orderer")) {
5158          this.orderer = null;
5159        } else if (name.equals("performer")) {
5160          this.getPerformer().remove(value);
5161        } else if (name.equals("allergyIntolerance")) {
5162          this.getAllergyIntolerance().remove(value);
5163        } else if (name.equals("foodPreferenceModifier")) {
5164          this.getFoodPreferenceModifier().remove(value);
5165        } else if (name.equals("excludeFoodModifier")) {
5166          this.getExcludeFoodModifier().remove(value);
5167        } else if (name.equals("outsideFoodAllowed")) {
5168          this.outsideFoodAllowed = null;
5169        } else if (name.equals("oralDiet")) {
5170          this.oralDiet = (NutritionOrderOralDietComponent) value; // NutritionOrderOralDietComponent
5171        } else if (name.equals("supplement")) {
5172          this.getSupplement().remove((NutritionOrderSupplementComponent) value);
5173        } else if (name.equals("enteralFormula")) {
5174          this.enteralFormula = (NutritionOrderEnteralFormulaComponent) value; // NutritionOrderEnteralFormulaComponent
5175        } else if (name.equals("note")) {
5176          this.getNote().remove(value);
5177        } else
5178          super.removeChild(name, value);
5179        
5180      }
5181
5182      @Override
5183      public Base makeProperty(int hash, String name) throws FHIRException {
5184        switch (hash) {
5185        case -1618432855:  return addIdentifier(); 
5186        case 8911915:  return addInstantiatesCanonicalElement();
5187        case -1926393373:  return addInstantiatesUriElement();
5188        case -246883639:  return addInstantiatesElement();
5189        case -332612366:  return addBasedOn(); 
5190        case -445338488:  return getGroupIdentifier();
5191        case -892481550:  return getStatusElement();
5192        case -1183762788:  return getIntentElement();
5193        case -1165461084:  return getPriorityElement();
5194        case -1867885268:  return getSubject();
5195        case 1524132147:  return getEncounter();
5196        case -1248768647:  return addSupportingInformation(); 
5197        case 1792749467:  return getDateTimeElement();
5198        case -1207109509:  return getOrderer();
5199        case 481140686:  return addPerformer(); 
5200        case -120164120:  return addAllergyIntolerance(); 
5201        case 659473872:  return addFoodPreferenceModifier(); 
5202        case 1760260175:  return addExcludeFoodModifier(); 
5203        case 833777797:  return getOutsideFoodAllowedElement();
5204        case 1153521250:  return getOralDiet();
5205        case -711993159:  return addSupplement(); 
5206        case -671083805:  return getEnteralFormula();
5207        case 3387378:  return addNote(); 
5208        default: return super.makeProperty(hash, name);
5209        }
5210
5211      }
5212
5213      @Override
5214      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5215        switch (hash) {
5216        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
5217        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
5218        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
5219        case -246883639: /*instantiates*/ return new String[] {"uri"};
5220        case -332612366: /*basedOn*/ return new String[] {"Reference"};
5221        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
5222        case -892481550: /*status*/ return new String[] {"code"};
5223        case -1183762788: /*intent*/ return new String[] {"code"};
5224        case -1165461084: /*priority*/ return new String[] {"code"};
5225        case -1867885268: /*subject*/ return new String[] {"Reference"};
5226        case 1524132147: /*encounter*/ return new String[] {"Reference"};
5227        case -1248768647: /*supportingInformation*/ return new String[] {"Reference"};
5228        case 1792749467: /*dateTime*/ return new String[] {"dateTime"};
5229        case -1207109509: /*orderer*/ return new String[] {"Reference"};
5230        case 481140686: /*performer*/ return new String[] {"CodeableReference"};
5231        case -120164120: /*allergyIntolerance*/ return new String[] {"Reference"};
5232        case 659473872: /*foodPreferenceModifier*/ return new String[] {"CodeableConcept"};
5233        case 1760260175: /*excludeFoodModifier*/ return new String[] {"CodeableConcept"};
5234        case 833777797: /*outsideFoodAllowed*/ return new String[] {"boolean"};
5235        case 1153521250: /*oralDiet*/ return new String[] {};
5236        case -711993159: /*supplement*/ return new String[] {};
5237        case -671083805: /*enteralFormula*/ return new String[] {};
5238        case 3387378: /*note*/ return new String[] {"Annotation"};
5239        default: return super.getTypesForProperty(hash, name);
5240        }
5241
5242      }
5243
5244      @Override
5245      public Base addChild(String name) throws FHIRException {
5246        if (name.equals("identifier")) {
5247          return addIdentifier();
5248        }
5249        else if (name.equals("instantiatesCanonical")) {
5250          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.instantiatesCanonical");
5251        }
5252        else if (name.equals("instantiatesUri")) {
5253          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.instantiatesUri");
5254        }
5255        else if (name.equals("instantiates")) {
5256          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.instantiates");
5257        }
5258        else if (name.equals("basedOn")) {
5259          return addBasedOn();
5260        }
5261        else if (name.equals("groupIdentifier")) {
5262          this.groupIdentifier = new Identifier();
5263          return this.groupIdentifier;
5264        }
5265        else if (name.equals("status")) {
5266          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.status");
5267        }
5268        else if (name.equals("intent")) {
5269          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.intent");
5270        }
5271        else if (name.equals("priority")) {
5272          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.priority");
5273        }
5274        else if (name.equals("subject")) {
5275          this.subject = new Reference();
5276          return this.subject;
5277        }
5278        else if (name.equals("encounter")) {
5279          this.encounter = new Reference();
5280          return this.encounter;
5281        }
5282        else if (name.equals("supportingInformation")) {
5283          return addSupportingInformation();
5284        }
5285        else if (name.equals("dateTime")) {
5286          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.dateTime");
5287        }
5288        else if (name.equals("orderer")) {
5289          this.orderer = new Reference();
5290          return this.orderer;
5291        }
5292        else if (name.equals("performer")) {
5293          return addPerformer();
5294        }
5295        else if (name.equals("allergyIntolerance")) {
5296          return addAllergyIntolerance();
5297        }
5298        else if (name.equals("foodPreferenceModifier")) {
5299          return addFoodPreferenceModifier();
5300        }
5301        else if (name.equals("excludeFoodModifier")) {
5302          return addExcludeFoodModifier();
5303        }
5304        else if (name.equals("outsideFoodAllowed")) {
5305          throw new FHIRException("Cannot call addChild on a singleton property NutritionOrder.outsideFoodAllowed");
5306        }
5307        else if (name.equals("oralDiet")) {
5308          this.oralDiet = new NutritionOrderOralDietComponent();
5309          return this.oralDiet;
5310        }
5311        else if (name.equals("supplement")) {
5312          return addSupplement();
5313        }
5314        else if (name.equals("enteralFormula")) {
5315          this.enteralFormula = new NutritionOrderEnteralFormulaComponent();
5316          return this.enteralFormula;
5317        }
5318        else if (name.equals("note")) {
5319          return addNote();
5320        }
5321        else
5322          return super.addChild(name);
5323      }
5324
5325  public String fhirType() {
5326    return "NutritionOrder";
5327
5328  }
5329
5330      public NutritionOrder copy() {
5331        NutritionOrder dst = new NutritionOrder();
5332        copyValues(dst);
5333        return dst;
5334      }
5335
5336      public void copyValues(NutritionOrder dst) {
5337        super.copyValues(dst);
5338        if (identifier != null) {
5339          dst.identifier = new ArrayList<Identifier>();
5340          for (Identifier i : identifier)
5341            dst.identifier.add(i.copy());
5342        };
5343        if (instantiatesCanonical != null) {
5344          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
5345          for (CanonicalType i : instantiatesCanonical)
5346            dst.instantiatesCanonical.add(i.copy());
5347        };
5348        if (instantiatesUri != null) {
5349          dst.instantiatesUri = new ArrayList<UriType>();
5350          for (UriType i : instantiatesUri)
5351            dst.instantiatesUri.add(i.copy());
5352        };
5353        if (instantiates != null) {
5354          dst.instantiates = new ArrayList<UriType>();
5355          for (UriType i : instantiates)
5356            dst.instantiates.add(i.copy());
5357        };
5358        if (basedOn != null) {
5359          dst.basedOn = new ArrayList<Reference>();
5360          for (Reference i : basedOn)
5361            dst.basedOn.add(i.copy());
5362        };
5363        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
5364        dst.status = status == null ? null : status.copy();
5365        dst.intent = intent == null ? null : intent.copy();
5366        dst.priority = priority == null ? null : priority.copy();
5367        dst.subject = subject == null ? null : subject.copy();
5368        dst.encounter = encounter == null ? null : encounter.copy();
5369        if (supportingInformation != null) {
5370          dst.supportingInformation = new ArrayList<Reference>();
5371          for (Reference i : supportingInformation)
5372            dst.supportingInformation.add(i.copy());
5373        };
5374        dst.dateTime = dateTime == null ? null : dateTime.copy();
5375        dst.orderer = orderer == null ? null : orderer.copy();
5376        if (performer != null) {
5377          dst.performer = new ArrayList<CodeableReference>();
5378          for (CodeableReference i : performer)
5379            dst.performer.add(i.copy());
5380        };
5381        if (allergyIntolerance != null) {
5382          dst.allergyIntolerance = new ArrayList<Reference>();
5383          for (Reference i : allergyIntolerance)
5384            dst.allergyIntolerance.add(i.copy());
5385        };
5386        if (foodPreferenceModifier != null) {
5387          dst.foodPreferenceModifier = new ArrayList<CodeableConcept>();
5388          for (CodeableConcept i : foodPreferenceModifier)
5389            dst.foodPreferenceModifier.add(i.copy());
5390        };
5391        if (excludeFoodModifier != null) {
5392          dst.excludeFoodModifier = new ArrayList<CodeableConcept>();
5393          for (CodeableConcept i : excludeFoodModifier)
5394            dst.excludeFoodModifier.add(i.copy());
5395        };
5396        dst.outsideFoodAllowed = outsideFoodAllowed == null ? null : outsideFoodAllowed.copy();
5397        dst.oralDiet = oralDiet == null ? null : oralDiet.copy();
5398        if (supplement != null) {
5399          dst.supplement = new ArrayList<NutritionOrderSupplementComponent>();
5400          for (NutritionOrderSupplementComponent i : supplement)
5401            dst.supplement.add(i.copy());
5402        };
5403        dst.enteralFormula = enteralFormula == null ? null : enteralFormula.copy();
5404        if (note != null) {
5405          dst.note = new ArrayList<Annotation>();
5406          for (Annotation i : note)
5407            dst.note.add(i.copy());
5408        };
5409      }
5410
5411      protected NutritionOrder typedCopy() {
5412        return copy();
5413      }
5414
5415      @Override
5416      public boolean equalsDeep(Base other_) {
5417        if (!super.equalsDeep(other_))
5418          return false;
5419        if (!(other_ instanceof NutritionOrder))
5420          return false;
5421        NutritionOrder o = (NutritionOrder) other_;
5422        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
5423           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(instantiates, o.instantiates, true)
5424           && compareDeep(basedOn, o.basedOn, true) && compareDeep(groupIdentifier, o.groupIdentifier, true)
5425           && compareDeep(status, o.status, true) && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
5426           && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true) && compareDeep(supportingInformation, o.supportingInformation, true)
5427           && compareDeep(dateTime, o.dateTime, true) && compareDeep(orderer, o.orderer, true) && compareDeep(performer, o.performer, true)
5428           && compareDeep(allergyIntolerance, o.allergyIntolerance, true) && compareDeep(foodPreferenceModifier, o.foodPreferenceModifier, true)
5429           && compareDeep(excludeFoodModifier, o.excludeFoodModifier, true) && compareDeep(outsideFoodAllowed, o.outsideFoodAllowed, true)
5430           && compareDeep(oralDiet, o.oralDiet, true) && compareDeep(supplement, o.supplement, true) && compareDeep(enteralFormula, o.enteralFormula, true)
5431           && compareDeep(note, o.note, true);
5432      }
5433
5434      @Override
5435      public boolean equalsShallow(Base other_) {
5436        if (!super.equalsShallow(other_))
5437          return false;
5438        if (!(other_ instanceof NutritionOrder))
5439          return false;
5440        NutritionOrder o = (NutritionOrder) other_;
5441        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
5442           && compareValues(instantiates, o.instantiates, true) && compareValues(status, o.status, true) && compareValues(intent, o.intent, true)
5443           && compareValues(priority, o.priority, true) && compareValues(dateTime, o.dateTime, true) && compareValues(outsideFoodAllowed, o.outsideFoodAllowed, true)
5444          ;
5445      }
5446
5447      public boolean isEmpty() {
5448        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
5449          , instantiatesUri, instantiates, basedOn, groupIdentifier, status, intent, priority
5450          , subject, encounter, supportingInformation, dateTime, orderer, performer, allergyIntolerance
5451          , foodPreferenceModifier, excludeFoodModifier, outsideFoodAllowed, oralDiet, supplement
5452          , enteralFormula, note);
5453      }
5454
5455  @Override
5456  public ResourceType getResourceType() {
5457    return ResourceType.NutritionOrder;
5458   }
5459
5460 /**
5461   * Search parameter: <b>additive</b>
5462   * <p>
5463   * Description: <b>Type of module component to add to the feeding</b><br>
5464   * Type: <b>token</b><br>
5465   * Path: <b>NutritionOrder.enteralFormula.additive.type.concept</b><br>
5466   * </p>
5467   */
5468  @SearchParamDefinition(name="additive", path="NutritionOrder.enteralFormula.additive.type.concept", description="Type of module component to add to the feeding", type="token" )
5469  public static final String SP_ADDITIVE = "additive";
5470 /**
5471   * <b>Fluent Client</b> search parameter constant for <b>additive</b>
5472   * <p>
5473   * Description: <b>Type of module component to add to the feeding</b><br>
5474   * Type: <b>token</b><br>
5475   * Path: <b>NutritionOrder.enteralFormula.additive.type.concept</b><br>
5476   * </p>
5477   */
5478  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADDITIVE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADDITIVE);
5479
5480 /**
5481   * Search parameter: <b>datetime</b>
5482   * <p>
5483   * Description: <b>Return nutrition orders requested on this date</b><br>
5484   * Type: <b>date</b><br>
5485   * Path: <b>NutritionOrder.dateTime</b><br>
5486   * </p>
5487   */
5488  @SearchParamDefinition(name="datetime", path="NutritionOrder.dateTime", description="Return nutrition orders requested on this date", type="date" )
5489  public static final String SP_DATETIME = "datetime";
5490 /**
5491   * <b>Fluent Client</b> search parameter constant for <b>datetime</b>
5492   * <p>
5493   * Description: <b>Return nutrition orders requested on this date</b><br>
5494   * Type: <b>date</b><br>
5495   * Path: <b>NutritionOrder.dateTime</b><br>
5496   * </p>
5497   */
5498  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATETIME = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATETIME);
5499
5500 /**
5501   * Search parameter: <b>formula</b>
5502   * <p>
5503   * Description: <b>Type of enteral or infant formula</b><br>
5504   * Type: <b>token</b><br>
5505   * Path: <b>NutritionOrder.enteralFormula.baseFormulaType.concept</b><br>
5506   * </p>
5507   */
5508  @SearchParamDefinition(name="formula", path="NutritionOrder.enteralFormula.baseFormulaType.concept", description="Type of enteral or infant formula", type="token" )
5509  public static final String SP_FORMULA = "formula";
5510 /**
5511   * <b>Fluent Client</b> search parameter constant for <b>formula</b>
5512   * <p>
5513   * Description: <b>Type of enteral or infant formula</b><br>
5514   * Type: <b>token</b><br>
5515   * Path: <b>NutritionOrder.enteralFormula.baseFormulaType.concept</b><br>
5516   * </p>
5517   */
5518  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FORMULA = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FORMULA);
5519
5520 /**
5521   * Search parameter: <b>group-identifier</b>
5522   * <p>
5523   * Description: <b>Composite Request ID</b><br>
5524   * Type: <b>token</b><br>
5525   * Path: <b>NutritionOrder.groupIdentifier</b><br>
5526   * </p>
5527   */
5528  @SearchParamDefinition(name="group-identifier", path="NutritionOrder.groupIdentifier", description="Composite Request ID", type="token" )
5529  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
5530 /**
5531   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
5532   * <p>
5533   * Description: <b>Composite Request ID</b><br>
5534   * Type: <b>token</b><br>
5535   * Path: <b>NutritionOrder.groupIdentifier</b><br>
5536   * </p>
5537   */
5538  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
5539
5540 /**
5541   * Search parameter: <b>oraldiet</b>
5542   * <p>
5543   * Description: <b>Type of diet that can be consumed orally (i.e., take via the mouth).</b><br>
5544   * Type: <b>token</b><br>
5545   * Path: <b>NutritionOrder.oralDiet.type</b><br>
5546   * </p>
5547   */
5548  @SearchParamDefinition(name="oraldiet", path="NutritionOrder.oralDiet.type", description="Type of diet that can be consumed orally (i.e., take via the mouth).", type="token" )
5549  public static final String SP_ORALDIET = "oraldiet";
5550 /**
5551   * <b>Fluent Client</b> search parameter constant for <b>oraldiet</b>
5552   * <p>
5553   * Description: <b>Type of diet that can be consumed orally (i.e., take via the mouth).</b><br>
5554   * Type: <b>token</b><br>
5555   * Path: <b>NutritionOrder.oralDiet.type</b><br>
5556   * </p>
5557   */
5558  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ORALDIET = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ORALDIET);
5559
5560 /**
5561   * Search parameter: <b>provider</b>
5562   * <p>
5563   * Description: <b>The identity of the provider who placed the nutrition order</b><br>
5564   * Type: <b>reference</b><br>
5565   * Path: <b>NutritionOrder.orderer</b><br>
5566   * </p>
5567   */
5568  @SearchParamDefinition(name="provider", path="NutritionOrder.orderer", description="The identity of the provider who placed the nutrition order", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Practitioner.class, PractitionerRole.class } )
5569  public static final String SP_PROVIDER = "provider";
5570 /**
5571   * <b>Fluent Client</b> search parameter constant for <b>provider</b>
5572   * <p>
5573   * Description: <b>The identity of the provider who placed the nutrition order</b><br>
5574   * Type: <b>reference</b><br>
5575   * Path: <b>NutritionOrder.orderer</b><br>
5576   * </p>
5577   */
5578  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PROVIDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PROVIDER);
5579
5580/**
5581   * Constant for fluent queries to be used to add include statements. Specifies
5582   * the path value of "<b>NutritionOrder:provider</b>".
5583   */
5584  public static final ca.uhn.fhir.model.api.Include INCLUDE_PROVIDER = new ca.uhn.fhir.model.api.Include("NutritionOrder:provider").toLocked();
5585
5586 /**
5587   * Search parameter: <b>status</b>
5588   * <p>
5589   * Description: <b>Status of the nutrition order.</b><br>
5590   * Type: <b>token</b><br>
5591   * Path: <b>NutritionOrder.status</b><br>
5592   * </p>
5593   */
5594  @SearchParamDefinition(name="status", path="NutritionOrder.status", description="Status of the nutrition order.", type="token" )
5595  public static final String SP_STATUS = "status";
5596 /**
5597   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5598   * <p>
5599   * Description: <b>Status of the nutrition order.</b><br>
5600   * Type: <b>token</b><br>
5601   * Path: <b>NutritionOrder.status</b><br>
5602   * </p>
5603   */
5604  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5605
5606 /**
5607   * Search parameter: <b>subject</b>
5608   * <p>
5609   * Description: <b>The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement</b><br>
5610   * Type: <b>reference</b><br>
5611   * Path: <b>NutritionOrder.subject</b><br>
5612   * </p>
5613   */
5614  @SearchParamDefinition(name="subject", path="NutritionOrder.subject", description="The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement", type="reference", target={Group.class, Patient.class } )
5615  public static final String SP_SUBJECT = "subject";
5616 /**
5617   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
5618   * <p>
5619   * Description: <b>The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement</b><br>
5620   * Type: <b>reference</b><br>
5621   * Path: <b>NutritionOrder.subject</b><br>
5622   * </p>
5623   */
5624  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
5625
5626/**
5627   * Constant for fluent queries to be used to add include statements. Specifies
5628   * the path value of "<b>NutritionOrder:subject</b>".
5629   */
5630  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("NutritionOrder:subject").toLocked();
5631
5632 /**
5633   * Search parameter: <b>supplement</b>
5634   * <p>
5635   * Description: <b>Type of supplement product requested</b><br>
5636   * Type: <b>token</b><br>
5637   * Path: <b>NutritionOrder.supplement.type.concept</b><br>
5638   * </p>
5639   */
5640  @SearchParamDefinition(name="supplement", path="NutritionOrder.supplement.type.concept", description="Type of supplement product requested", type="token" )
5641  public static final String SP_SUPPLEMENT = "supplement";
5642 /**
5643   * <b>Fluent Client</b> search parameter constant for <b>supplement</b>
5644   * <p>
5645   * Description: <b>Type of supplement product requested</b><br>
5646   * Type: <b>token</b><br>
5647   * Path: <b>NutritionOrder.supplement.type.concept</b><br>
5648   * </p>
5649   */
5650  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SUPPLEMENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SUPPLEMENT);
5651
5652 /**
5653   * Search parameter: <b>encounter</b>
5654   * <p>
5655   * Description: <b>Multiple Resources: 
5656
5657* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
5658* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
5659* [ChargeItem](chargeitem.html): Encounter associated with event
5660* [Claim](claim.html): Encounters associated with a billed line item
5661* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
5662* [Communication](communication.html): The Encounter during which this Communication was created
5663* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
5664* [Composition](composition.html): Context of the Composition
5665* [Condition](condition.html): The Encounter during which this Condition was created
5666* [DeviceRequest](devicerequest.html): Encounter during which request was created
5667* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
5668* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
5669* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
5670* [Flag](flag.html): Alert relevant during encounter
5671* [ImagingStudy](imagingstudy.html): The context of the study
5672* [List](list.html): Context in which list created
5673* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
5674* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
5675* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
5676* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
5677* [Observation](observation.html): Encounter related to the observation
5678* [Procedure](procedure.html): The Encounter during which this Procedure was created
5679* [Provenance](provenance.html): Encounter related to the Provenance
5680* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
5681* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
5682* [RiskAssessment](riskassessment.html): Where was assessment performed?
5683* [ServiceRequest](servicerequest.html): An encounter in which this request is made
5684* [Task](task.html): Search by encounter
5685* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
5686</b><br>
5687   * Type: <b>reference</b><br>
5688   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
5689   * </p>
5690   */
5691  @SearchParamDefinition(name="encounter", path="AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent\r\n* [CarePlan](careplan.html): The Encounter during which this CarePlan was created\r\n* [ChargeItem](chargeitem.html): Encounter associated with event\r\n* [Claim](claim.html): Encounters associated with a billed line item\r\n* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created\r\n* [Communication](communication.html): The Encounter during which this Communication was created\r\n* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created\r\n* [Composition](composition.html): Context of the Composition\r\n* [Condition](condition.html): The Encounter during which this Condition was created\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values\r\n* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [ImagingStudy](imagingstudy.html): The context of the study\r\n* [List](list.html): Context in which list created\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): The Encounter during which this Procedure was created\r\n* [Provenance](provenance.html): Encounter related to the Provenance\r\n* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response\r\n* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [Task](task.html): Search by encounter\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
5692  public static final String SP_ENCOUNTER = "encounter";
5693 /**
5694   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
5695   * <p>
5696   * Description: <b>Multiple Resources: 
5697
5698* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
5699* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
5700* [ChargeItem](chargeitem.html): Encounter associated with event
5701* [Claim](claim.html): Encounters associated with a billed line item
5702* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
5703* [Communication](communication.html): The Encounter during which this Communication was created
5704* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
5705* [Composition](composition.html): Context of the Composition
5706* [Condition](condition.html): The Encounter during which this Condition was created
5707* [DeviceRequest](devicerequest.html): Encounter during which request was created
5708* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
5709* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
5710* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
5711* [Flag](flag.html): Alert relevant during encounter
5712* [ImagingStudy](imagingstudy.html): The context of the study
5713* [List](list.html): Context in which list created
5714* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
5715* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
5716* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
5717* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
5718* [Observation](observation.html): Encounter related to the observation
5719* [Procedure](procedure.html): The Encounter during which this Procedure was created
5720* [Provenance](provenance.html): Encounter related to the Provenance
5721* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
5722* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
5723* [RiskAssessment](riskassessment.html): Where was assessment performed?
5724* [ServiceRequest](servicerequest.html): An encounter in which this request is made
5725* [Task](task.html): Search by encounter
5726* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
5727</b><br>
5728   * Type: <b>reference</b><br>
5729   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
5730   * </p>
5731   */
5732  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
5733
5734/**
5735   * Constant for fluent queries to be used to add include statements. Specifies
5736   * the path value of "<b>NutritionOrder:encounter</b>".
5737   */
5738  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("NutritionOrder:encounter").toLocked();
5739
5740 /**
5741   * Search parameter: <b>identifier</b>
5742   * <p>
5743   * Description: <b>Multiple Resources: 
5744
5745* [Account](account.html): Account number
5746* [AdverseEvent](adverseevent.html): Business identifier for the event
5747* [AllergyIntolerance](allergyintolerance.html): External ids for this item
5748* [Appointment](appointment.html): An Identifier of the Appointment
5749* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
5750* [Basic](basic.html): Business identifier
5751* [BodyStructure](bodystructure.html): Bodystructure identifier
5752* [CarePlan](careplan.html): External Ids for this plan
5753* [CareTeam](careteam.html): External Ids for this team
5754* [ChargeItem](chargeitem.html): Business Identifier for item
5755* [Claim](claim.html): The primary identifier of the financial resource
5756* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
5757* [ClinicalImpression](clinicalimpression.html): Business identifier
5758* [Communication](communication.html): Unique identifier
5759* [CommunicationRequest](communicationrequest.html): Unique identifier
5760* [Composition](composition.html): Version-independent identifier for the Composition
5761* [Condition](condition.html): A unique identifier of the condition record
5762* [Consent](consent.html): Identifier for this record (external references)
5763* [Contract](contract.html): The identity of the contract
5764* [Coverage](coverage.html): The primary identifier of the insured and the coverage
5765* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
5766* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
5767* [DetectedIssue](detectedissue.html): Unique id for the detected issue
5768* [DeviceRequest](devicerequest.html): Business identifier for request/order
5769* [DeviceUsage](deviceusage.html): Search by identifier
5770* [DiagnosticReport](diagnosticreport.html): An identifier for the report
5771* [DocumentReference](documentreference.html): Identifier of the attachment binary
5772* [Encounter](encounter.html): Identifier(s) by which this encounter is known
5773* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
5774* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
5775* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
5776* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
5777* [Flag](flag.html): Business identifier
5778* [Goal](goal.html): External Ids for this goal
5779* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
5780* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
5781* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
5782* [Immunization](immunization.html): Business identifier
5783* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
5784* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
5785* [Invoice](invoice.html): Business Identifier for item
5786* [List](list.html): Business identifier
5787* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
5788* [Medication](medication.html): Returns medications with this external identifier
5789* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
5790* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
5791* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
5792* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
5793* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
5794* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
5795* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
5796* [Observation](observation.html): The unique id for a particular observation
5797* [Person](person.html): A person Identifier
5798* [Procedure](procedure.html): A unique identifier for a procedure
5799* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
5800* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
5801* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
5802* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
5803* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
5804* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
5805* [Specimen](specimen.html): The unique identifier associated with the specimen
5806* [SupplyDelivery](supplydelivery.html): External identifier
5807* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
5808* [Task](task.html): Search for a task instance by its business identifier
5809* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
5810</b><br>
5811   * Type: <b>token</b><br>
5812   * 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>
5813   * </p>
5814   */
5815  @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" )
5816  public static final String SP_IDENTIFIER = "identifier";
5817 /**
5818   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5819   * <p>
5820   * Description: <b>Multiple Resources: 
5821
5822* [Account](account.html): Account number
5823* [AdverseEvent](adverseevent.html): Business identifier for the event
5824* [AllergyIntolerance](allergyintolerance.html): External ids for this item
5825* [Appointment](appointment.html): An Identifier of the Appointment
5826* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
5827* [Basic](basic.html): Business identifier
5828* [BodyStructure](bodystructure.html): Bodystructure identifier
5829* [CarePlan](careplan.html): External Ids for this plan
5830* [CareTeam](careteam.html): External Ids for this team
5831* [ChargeItem](chargeitem.html): Business Identifier for item
5832* [Claim](claim.html): The primary identifier of the financial resource
5833* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
5834* [ClinicalImpression](clinicalimpression.html): Business identifier
5835* [Communication](communication.html): Unique identifier
5836* [CommunicationRequest](communicationrequest.html): Unique identifier
5837* [Composition](composition.html): Version-independent identifier for the Composition
5838* [Condition](condition.html): A unique identifier of the condition record
5839* [Consent](consent.html): Identifier for this record (external references)
5840* [Contract](contract.html): The identity of the contract
5841* [Coverage](coverage.html): The primary identifier of the insured and the coverage
5842* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
5843* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
5844* [DetectedIssue](detectedissue.html): Unique id for the detected issue
5845* [DeviceRequest](devicerequest.html): Business identifier for request/order
5846* [DeviceUsage](deviceusage.html): Search by identifier
5847* [DiagnosticReport](diagnosticreport.html): An identifier for the report
5848* [DocumentReference](documentreference.html): Identifier of the attachment binary
5849* [Encounter](encounter.html): Identifier(s) by which this encounter is known
5850* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
5851* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
5852* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
5853* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
5854* [Flag](flag.html): Business identifier
5855* [Goal](goal.html): External Ids for this goal
5856* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
5857* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
5858* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
5859* [Immunization](immunization.html): Business identifier
5860* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
5861* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
5862* [Invoice](invoice.html): Business Identifier for item
5863* [List](list.html): Business identifier
5864* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
5865* [Medication](medication.html): Returns medications with this external identifier
5866* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
5867* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
5868* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
5869* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
5870* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
5871* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
5872* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
5873* [Observation](observation.html): The unique id for a particular observation
5874* [Person](person.html): A person Identifier
5875* [Procedure](procedure.html): A unique identifier for a procedure
5876* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
5877* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
5878* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
5879* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
5880* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
5881* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
5882* [Specimen](specimen.html): The unique identifier associated with the specimen
5883* [SupplyDelivery](supplydelivery.html): External identifier
5884* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
5885* [Task](task.html): Search for a task instance by its business identifier
5886* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
5887</b><br>
5888   * Type: <b>token</b><br>
5889   * 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>
5890   * </p>
5891   */
5892  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5893
5894 /**
5895   * Search parameter: <b>patient</b>
5896   * <p>
5897   * Description: <b>Multiple Resources: 
5898
5899* [Account](account.html): The entity that caused the expenses
5900* [AdverseEvent](adverseevent.html): Subject impacted by event
5901* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
5902* [Appointment](appointment.html): One of the individuals of the appointment is this patient
5903* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
5904* [AuditEvent](auditevent.html): Where the activity involved patient data
5905* [Basic](basic.html): Identifies the focus of this resource
5906* [BodyStructure](bodystructure.html): Who this is about
5907* [CarePlan](careplan.html): Who the care plan is for
5908* [CareTeam](careteam.html): Who care team is for
5909* [ChargeItem](chargeitem.html): Individual service was done for/to
5910* [Claim](claim.html): Patient receiving the products or services
5911* [ClaimResponse](claimresponse.html): The subject of care
5912* [ClinicalImpression](clinicalimpression.html): Patient assessed
5913* [Communication](communication.html): Focus of message
5914* [CommunicationRequest](communicationrequest.html): Focus of message
5915* [Composition](composition.html): Who and/or what the composition is about
5916* [Condition](condition.html): Who has the condition?
5917* [Consent](consent.html): Who the consent applies to
5918* [Contract](contract.html): The identity of the subject of the contract (if a patient)
5919* [Coverage](coverage.html): Retrieve coverages for a patient
5920* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
5921* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
5922* [DetectedIssue](detectedissue.html): Associated patient
5923* [DeviceRequest](devicerequest.html): Individual the service is ordered for
5924* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
5925* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
5926* [DocumentReference](documentreference.html): Who/what is the subject of the document
5927* [Encounter](encounter.html): The patient present at the encounter
5928* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
5929* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
5930* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
5931* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
5932* [Flag](flag.html): The identity of a subject to list flags for
5933* [Goal](goal.html): Who this goal is intended for
5934* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
5935* [ImagingSelection](imagingselection.html): Who the study is about
5936* [ImagingStudy](imagingstudy.html): Who the study is about
5937* [Immunization](immunization.html): The patient for the vaccination record
5938* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
5939* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
5940* [Invoice](invoice.html): Recipient(s) of goods and services
5941* [List](list.html): If all resources have the same subject
5942* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
5943* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
5944* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
5945* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
5946* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
5947* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
5948* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
5949* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
5950* [Observation](observation.html): The subject that the observation is about (if patient)
5951* [Person](person.html): The Person links to this Patient
5952* [Procedure](procedure.html): Search by subject - a patient
5953* [Provenance](provenance.html): Where the activity involved patient data
5954* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
5955* [RelatedPerson](relatedperson.html): The patient this related person is related to
5956* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
5957* [ResearchSubject](researchsubject.html): Who or what is part of study
5958* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
5959* [ServiceRequest](servicerequest.html): Search by subject - a patient
5960* [Specimen](specimen.html): The patient the specimen comes from
5961* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
5962* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
5963* [Task](task.html): Search by patient
5964* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
5965</b><br>
5966   * Type: <b>reference</b><br>
5967   * 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>
5968   * </p>
5969   */
5970  @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 } )
5971  public static final String SP_PATIENT = "patient";
5972 /**
5973   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
5974   * <p>
5975   * Description: <b>Multiple Resources: 
5976
5977* [Account](account.html): The entity that caused the expenses
5978* [AdverseEvent](adverseevent.html): Subject impacted by event
5979* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
5980* [Appointment](appointment.html): One of the individuals of the appointment is this patient
5981* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
5982* [AuditEvent](auditevent.html): Where the activity involved patient data
5983* [Basic](basic.html): Identifies the focus of this resource
5984* [BodyStructure](bodystructure.html): Who this is about
5985* [CarePlan](careplan.html): Who the care plan is for
5986* [CareTeam](careteam.html): Who care team is for
5987* [ChargeItem](chargeitem.html): Individual service was done for/to
5988* [Claim](claim.html): Patient receiving the products or services
5989* [ClaimResponse](claimresponse.html): The subject of care
5990* [ClinicalImpression](clinicalimpression.html): Patient assessed
5991* [Communication](communication.html): Focus of message
5992* [CommunicationRequest](communicationrequest.html): Focus of message
5993* [Composition](composition.html): Who and/or what the composition is about
5994* [Condition](condition.html): Who has the condition?
5995* [Consent](consent.html): Who the consent applies to
5996* [Contract](contract.html): The identity of the subject of the contract (if a patient)
5997* [Coverage](coverage.html): Retrieve coverages for a patient
5998* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
5999* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
6000* [DetectedIssue](detectedissue.html): Associated patient
6001* [DeviceRequest](devicerequest.html): Individual the service is ordered for
6002* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
6003* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
6004* [DocumentReference](documentreference.html): Who/what is the subject of the document
6005* [Encounter](encounter.html): The patient present at the encounter
6006* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
6007* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
6008* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
6009* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
6010* [Flag](flag.html): The identity of a subject to list flags for
6011* [Goal](goal.html): Who this goal is intended for
6012* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
6013* [ImagingSelection](imagingselection.html): Who the study is about
6014* [ImagingStudy](imagingstudy.html): Who the study is about
6015* [Immunization](immunization.html): The patient for the vaccination record
6016* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
6017* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
6018* [Invoice](invoice.html): Recipient(s) of goods and services
6019* [List](list.html): If all resources have the same subject
6020* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
6021* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
6022* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
6023* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
6024* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
6025* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
6026* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
6027* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
6028* [Observation](observation.html): The subject that the observation is about (if patient)
6029* [Person](person.html): The Person links to this Patient
6030* [Procedure](procedure.html): Search by subject - a patient
6031* [Provenance](provenance.html): Where the activity involved patient data
6032* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
6033* [RelatedPerson](relatedperson.html): The patient this related person is related to
6034* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
6035* [ResearchSubject](researchsubject.html): Who or what is part of study
6036* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
6037* [ServiceRequest](servicerequest.html): Search by subject - a patient
6038* [Specimen](specimen.html): The patient the specimen comes from
6039* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
6040* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
6041* [Task](task.html): Search by patient
6042* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
6043</b><br>
6044   * Type: <b>reference</b><br>
6045   * 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>
6046   * </p>
6047   */
6048  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
6049
6050/**
6051   * Constant for fluent queries to be used to add include statements. Specifies
6052   * the path value of "<b>NutritionOrder:patient</b>".
6053   */
6054  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("NutritionOrder:patient").toLocked();
6055
6056
6057}
6058