1#[doc = "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum NutritionOrderEnteralFormulaAdministrationRate {
5 Quantity(Box<super::super::types::Quantity>),
6 Ratio(Box<super::super::types::Ratio>),
7 #[default]
8 Invalid,
9}
10#[doc = "Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet."]
11#[derive(Debug, Clone, PartialEq)]
12pub struct NutritionOrderOralDietNutrient {
13 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14 pub r#id: Option<std::string::String>,
15 #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16 pub r#extension: Vec<super::super::types::Extension>,
17 #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18 pub r#modifier_extension: Vec<super::super::types::Extension>,
19 #[doc = "The nutrient that is being modified such as carbohydrate or sodium."]
20 pub r#modifier: Option<Box<super::super::types::CodeableConcept>>,
21 #[doc = "The quantity of the specified nutrient to include in diet."]
22 pub r#amount: Option<Box<super::super::types::Quantity>>,
23}
24#[allow(clippy::derivable_impls)]
25impl Default for NutritionOrderOralDietNutrient {
26 fn default() -> Self {
27 Self {
28 r#id: Default::default(),
29 r#extension: Default::default(),
30 r#modifier_extension: Default::default(),
31 r#modifier: Default::default(),
32 r#amount: Default::default(),
33 }
34 }
35}
36#[doc = "Class that describes any texture modifications required for the patient to safely consume various types of solid foods."]
37#[derive(Debug, Clone, PartialEq)]
38pub struct NutritionOrderOralDietTexture {
39 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
40 pub r#id: Option<std::string::String>,
41 #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
42 pub r#extension: Vec<super::super::types::Extension>,
43 #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
44 pub r#modifier_extension: Vec<super::super::types::Extension>,
45 #[doc = "Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed."]
46 pub r#modifier: Option<Box<super::super::types::CodeableConcept>>,
47 #[doc = "The food type(s) (e.g. meats, all foods) that the texture modification applies to. This could be all foods types."]
48 pub r#food_type: Option<Box<super::super::types::CodeableConcept>>,
49}
50#[allow(clippy::derivable_impls)]
51impl Default for NutritionOrderOralDietTexture {
52 fn default() -> Self {
53 Self {
54 r#id: Default::default(),
55 r#extension: Default::default(),
56 r#modifier_extension: Default::default(),
57 r#modifier: Default::default(),
58 r#food_type: Default::default(),
59 }
60 }
61}
62#[doc = "Diet given orally in contrast to enteral (tube) feeding."]
63#[derive(Debug, Clone, PartialEq)]
64pub struct NutritionOrderOralDiet {
65 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
66 pub r#id: Option<std::string::String>,
67 #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
68 pub r#extension: Vec<super::super::types::Extension>,
69 #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
70 pub r#modifier_extension: Vec<super::super::types::Extension>,
71 #[doc = "The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet."]
72 pub r#type: Vec<super::super::types::CodeableConcept>,
73 #[doc = "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."]
74 pub r#schedule: Vec<super::super::types::Timing>,
75 #[doc = "Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet."]
76 pub r#nutrient: Vec<NutritionOrderOralDietNutrient>,
77 #[doc = "Class that describes any texture modifications required for the patient to safely consume various types of solid foods."]
78 pub r#texture: Vec<NutritionOrderOralDietTexture>,
79 #[doc = "The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient."]
80 pub r#fluid_consistency_type: Vec<super::super::types::CodeableConcept>,
81 #[doc = "Free text or additional instructions or information pertaining to the oral diet."]
82 pub r#instruction: Option<super::super::types::String>,
83}
84#[allow(clippy::derivable_impls)]
85impl Default for NutritionOrderOralDiet {
86 fn default() -> Self {
87 Self {
88 r#id: Default::default(),
89 r#extension: Default::default(),
90 r#modifier_extension: Default::default(),
91 r#type: Default::default(),
92 r#schedule: Default::default(),
93 r#nutrient: Default::default(),
94 r#texture: Default::default(),
95 r#fluid_consistency_type: Default::default(),
96 r#instruction: Default::default(),
97 }
98 }
99}
100#[doc = "Oral nutritional products given in order to add further nutritional value to the patient's diet."]
101#[derive(Debug, Clone, PartialEq)]
102pub struct NutritionOrderSupplement {
103 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
104 pub r#id: Option<std::string::String>,
105 #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
106 pub r#extension: Vec<super::super::types::Extension>,
107 #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
108 pub r#modifier_extension: Vec<super::super::types::Extension>,
109 #[doc = "The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement."]
110 pub r#type: Option<Box<super::super::types::CodeableConcept>>,
111 #[doc = "The product or brand name of the nutritional supplement such as \"Acme Protein Shake\"."]
112 pub r#product_name: Option<super::super::types::String>,
113 #[doc = "The time period and frequency at which the supplement(s) should be given. The supplement should be given for the combination of all schedules if more than one schedule is present."]
114 pub r#schedule: Vec<super::super::types::Timing>,
115 #[doc = "The amount of the nutritional supplement to be given."]
116 pub r#quantity: Option<Box<super::super::types::Quantity>>,
117 #[doc = "Free text or additional instructions or information pertaining to the oral supplement."]
118 pub r#instruction: Option<super::super::types::String>,
119}
120#[allow(clippy::derivable_impls)]
121impl Default for NutritionOrderSupplement {
122 fn default() -> Self {
123 Self {
124 r#id: Default::default(),
125 r#extension: Default::default(),
126 r#modifier_extension: Default::default(),
127 r#type: Default::default(),
128 r#product_name: Default::default(),
129 r#schedule: Default::default(),
130 r#quantity: Default::default(),
131 r#instruction: Default::default(),
132 }
133 }
134}
135#[doc = "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."]
136#[derive(Debug, Clone, PartialEq)]
137pub struct NutritionOrderEnteralFormulaAdministration {
138 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
139 pub r#id: Option<std::string::String>,
140 #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
141 pub r#extension: Vec<super::super::types::Extension>,
142 #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
143 pub r#modifier_extension: Vec<super::super::types::Extension>,
144 #[doc = "The time period and frequency at which the enteral formula should be delivered to the patient."]
145 pub r#schedule: Option<Box<super::super::types::Timing>>,
146 #[doc = "The volume of formula to provide to the patient per the specified administration schedule."]
147 pub r#quantity: Option<Box<super::super::types::Quantity>>,
148 #[doc = "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule."]
149 pub r#rate: Option<NutritionOrderEnteralFormulaAdministrationRate>,
150}
151#[allow(clippy::derivable_impls)]
152impl Default for NutritionOrderEnteralFormulaAdministration {
153 fn default() -> Self {
154 Self {
155 r#id: Default::default(),
156 r#extension: Default::default(),
157 r#modifier_extension: Default::default(),
158 r#schedule: Default::default(),
159 r#quantity: Default::default(),
160 r#rate: Default::default(),
161 }
162 }
163}
164#[doc = "Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity."]
165#[derive(Debug, Clone, PartialEq)]
166pub struct NutritionOrderEnteralFormula {
167 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
168 pub r#id: Option<std::string::String>,
169 #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
170 pub r#extension: Vec<super::super::types::Extension>,
171 #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
172 pub r#modifier_extension: Vec<super::super::types::Extension>,
173 #[doc = "The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula."]
174 pub r#base_formula_type: Option<Box<super::super::types::CodeableConcept>>,
175 #[doc = "The product or brand name of the enteral or infant formula product such as \"ACME Adult Standard Formula\"."]
176 pub r#base_formula_product_name: Option<super::super::types::String>,
177 #[doc = "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."]
178 pub r#additive_type: Option<Box<super::super::types::CodeableConcept>>,
179 #[doc = "The product or brand name of the type of modular component to be added to the formula."]
180 pub r#additive_product_name: Option<super::super::types::String>,
181 #[doc = "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."]
182 pub r#caloric_density: Option<Box<super::super::types::Quantity>>,
183 #[doc = "The route or physiological path of administration into the patient's gastrointestinal tract for purposes of providing the formula feeding, e.g. nasogastric tube."]
184 pub r#routeof_administration: Option<Box<super::super::types::CodeableConcept>>,
185 #[doc = "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."]
186 pub r#administration: Vec<NutritionOrderEnteralFormulaAdministration>,
187 #[doc = "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."]
188 pub r#max_volume_to_deliver: Option<Box<super::super::types::Quantity>>,
189 #[doc = "Free text formula administration, feeding instructions or additional instructions or information."]
190 pub r#administration_instruction: Option<super::super::types::String>,
191}
192#[allow(clippy::derivable_impls)]
193impl Default for NutritionOrderEnteralFormula {
194 fn default() -> Self {
195 Self {
196 r#id: Default::default(),
197 r#extension: Default::default(),
198 r#modifier_extension: Default::default(),
199 r#base_formula_type: Default::default(),
200 r#base_formula_product_name: Default::default(),
201 r#additive_type: Default::default(),
202 r#additive_product_name: Default::default(),
203 r#caloric_density: Default::default(),
204 r#routeof_administration: Default::default(),
205 r#administration: Default::default(),
206 r#max_volume_to_deliver: Default::default(),
207 r#administration_instruction: Default::default(),
208 }
209 }
210}
211#[doc = "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident."]
212#[derive(Debug, Clone, PartialEq)]
213pub struct NutritionOrder {
214 #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
215 pub r#id: Option<super::super::types::Id>,
216 #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
217 pub r#meta: Option<Box<super::super::types::Meta>>,
218 #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
219 pub r#implicit_rules: Option<super::super::types::Uri>,
220 #[doc = "The base language in which the resource is written."]
221 pub r#language: Option<super::super::types::Code>,
222 #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
223 pub r#text: Option<Box<super::super::types::Narrative>>,
224 #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
225 pub r#contained: Vec<super::super::Resource>,
226 #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
227 pub r#extension: Vec<super::super::types::Extension>,
228 #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
229 pub r#modifier_extension: Vec<super::super::types::Extension>,
230 #[doc = "Identifiers assigned to this order by the order sender or by the order receiver."]
231 pub r#identifier: Vec<super::super::types::Identifier>,
232 #[doc = "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."]
233 pub r#instantiates_canonical: Vec<super::super::types::Canonical>,
234 #[doc = "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."]
235 pub r#instantiates_uri: Vec<super::super::types::Uri>,
236 #[doc = "The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder."]
237 pub r#instantiates: Vec<super::super::types::Uri>,
238 #[doc = "The workflow status of the nutrition order/request."]
239 pub r#status: super::super::types::Code,
240 #[doc = "Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain."]
241 pub r#intent: super::super::types::Code,
242 #[doc = "The person (patient) who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding."]
243 pub r#patient: Box<super::super::types::Reference>,
244 #[doc = "An encounter that provides additional information about the healthcare context in which this request is made."]
245 pub r#encounter: Option<Box<super::super::types::Reference>>,
246 #[doc = "The date and time that this nutrition order was requested."]
247 pub r#date_time: super::super::types::DateTime,
248 #[doc = "The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings."]
249 pub r#orderer: Option<Box<super::super::types::Reference>>,
250 #[doc = "A link to a record of allergies or intolerances which should be included in the nutrition order."]
251 pub r#allergy_intolerance: Vec<super::super::types::Reference>,
252 #[doc = "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."]
253 pub r#food_preference_modifier: Vec<super::super::types::CodeableConcept>,
254 #[doc = "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."]
255 pub r#exclude_food_modifier: Vec<super::super::types::CodeableConcept>,
256 #[doc = "Diet given orally in contrast to enteral (tube) feeding."]
257 pub r#oral_diet: Option<NutritionOrderOralDiet>,
258 #[doc = "Oral nutritional products given in order to add further nutritional value to the patient's diet."]
259 pub r#supplement: Vec<NutritionOrderSupplement>,
260 #[doc = "Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity."]
261 pub r#enteral_formula: Option<NutritionOrderEnteralFormula>,
262 #[doc = "Comments made about the {{title}} by the requester, performer, subject or other participants."]
263 pub r#note: Vec<super::super::types::Annotation>,
264}
265#[allow(clippy::derivable_impls)]
266impl Default for NutritionOrder {
267 fn default() -> Self {
268 Self {
269 r#id: Default::default(),
270 r#meta: Default::default(),
271 r#implicit_rules: Default::default(),
272 r#language: Default::default(),
273 r#text: Default::default(),
274 r#contained: Default::default(),
275 r#extension: Default::default(),
276 r#modifier_extension: Default::default(),
277 r#identifier: Default::default(),
278 r#instantiates_canonical: Default::default(),
279 r#instantiates_uri: Default::default(),
280 r#instantiates: Default::default(),
281 r#status: super::super::types::Code {
282 id: Some("$invalid".to_string()),
283 ..Default::default()
284 },
285 r#intent: super::super::types::Code {
286 id: Some("$invalid".to_string()),
287 ..Default::default()
288 },
289 r#patient: Box::new(super::super::types::Reference {
290 id: Some("$invalid".to_string()),
291 ..Default::default()
292 }),
293 r#encounter: Default::default(),
294 r#date_time: super::super::types::DateTime {
295 id: Some("$invalid".to_string()),
296 ..Default::default()
297 },
298 r#orderer: Default::default(),
299 r#allergy_intolerance: Default::default(),
300 r#food_preference_modifier: Default::default(),
301 r#exclude_food_modifier: Default::default(),
302 r#oral_diet: Default::default(),
303 r#supplement: Default::default(),
304 r#enteral_formula: Default::default(),
305 r#note: Default::default(),
306 }
307 }
308}