fhirbolt_model/generated/r4/resources/
medication_knowledge.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "The actual ingredient - either a substance (simple ingredient) or another medication."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum MedicationKnowledgeIngredientItem {
5    CodeableConcept(Box<super::super::types::CodeableConcept>),
6    Reference(Box<super::super::types::Reference>),
7    #[default]
8    Invalid,
9}
10#[doc = "Indication for use that apply to the specific administration guidelines."]
11#[derive(Default, Debug, Clone, PartialEq)]
12pub enum MedicationKnowledgeAdministrationGuidelinesIndication {
13    CodeableConcept(Box<super::super::types::CodeableConcept>),
14    Reference(Box<super::super::types::Reference>),
15    #[default]
16    Invalid,
17}
18#[doc = "Specific characteristic that is relevant to the administration guideline (e.g. height, weight, gender)."]
19#[derive(Default, Debug, Clone, PartialEq)]
20pub enum MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsCharacteristic {
21    CodeableConcept(Box<super::super::types::CodeableConcept>),
22    Quantity(Box<super::super::types::Quantity>),
23    #[default]
24    Invalid,
25}
26#[doc = "Description of the characteristic."]
27#[derive(Default, Debug, Clone, PartialEq)]
28pub enum MedicationKnowledgeDrugCharacteristicValue {
29    CodeableConcept(Box<super::super::types::CodeableConcept>),
30    String(super::super::types::String),
31    Quantity(Box<super::super::types::Quantity>),
32    Base64Binary(super::super::types::Base64Binary),
33    #[default]
34    Invalid,
35}
36#[doc = "Associated or related knowledge about a medication."]
37#[derive(Debug, Clone, PartialEq)]
38pub struct MedicationKnowledgeRelatedMedicationKnowledge {
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 = "The category of the associated medication knowledge reference."]
46    pub r#type: Box<super::super::types::CodeableConcept>,
47    #[doc = "Associated documentation about the associated medication knowledge."]
48    pub r#reference: Vec<super::super::types::Reference>,
49}
50#[allow(clippy::derivable_impls)]
51impl Default for MedicationKnowledgeRelatedMedicationKnowledge {
52    fn default() -> Self {
53        Self {
54            r#id: Default::default(),
55            r#extension: Default::default(),
56            r#modifier_extension: Default::default(),
57            r#type: Box::new(super::super::types::CodeableConcept {
58                id: Some("$invalid".to_string()),
59                ..Default::default()
60            }),
61            r#reference: Default::default(),
62        }
63    }
64}
65#[doc = "Associated documentation about the medication."]
66#[derive(Debug, Clone, PartialEq)]
67pub struct MedicationKnowledgeMonograph {
68    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
69    pub r#id: Option<std::string::String>,
70    #[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."]
71    pub r#extension: Vec<super::super::types::Extension>,
72    #[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)."]
73    pub r#modifier_extension: Vec<super::super::types::Extension>,
74    #[doc = "The category of documentation about the medication. (e.g. professional monograph, patient education monograph)."]
75    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
76    #[doc = "Associated documentation about the medication."]
77    pub r#source: Option<Box<super::super::types::Reference>>,
78}
79#[allow(clippy::derivable_impls)]
80impl Default for MedicationKnowledgeMonograph {
81    fn default() -> Self {
82        Self {
83            r#id: Default::default(),
84            r#extension: Default::default(),
85            r#modifier_extension: Default::default(),
86            r#type: Default::default(),
87            r#source: Default::default(),
88        }
89    }
90}
91#[doc = "Identifies a particular constituent of interest in the product."]
92#[derive(Debug, Clone, PartialEq)]
93pub struct MedicationKnowledgeIngredient {
94    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
95    pub r#id: Option<std::string::String>,
96    #[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."]
97    pub r#extension: Vec<super::super::types::Extension>,
98    #[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)."]
99    pub r#modifier_extension: Vec<super::super::types::Extension>,
100    #[doc = "The actual ingredient - either a substance (simple ingredient) or another medication."]
101    pub r#item: MedicationKnowledgeIngredientItem,
102    #[doc = "Indication of whether this ingredient affects the therapeutic action of the drug."]
103    pub r#is_active: Option<super::super::types::Boolean>,
104    #[doc = "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet."]
105    pub r#strength: Option<Box<super::super::types::Ratio>>,
106}
107#[allow(clippy::derivable_impls)]
108impl Default for MedicationKnowledgeIngredient {
109    fn default() -> Self {
110        Self {
111            r#id: Default::default(),
112            r#extension: Default::default(),
113            r#modifier_extension: Default::default(),
114            r#item: Default::default(),
115            r#is_active: Default::default(),
116            r#strength: Default::default(),
117        }
118    }
119}
120#[doc = "The price of the medication."]
121#[derive(Debug, Clone, PartialEq)]
122pub struct MedicationKnowledgeCost {
123    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
124    pub r#id: Option<std::string::String>,
125    #[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."]
126    pub r#extension: Vec<super::super::types::Extension>,
127    #[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)."]
128    pub r#modifier_extension: Vec<super::super::types::Extension>,
129    #[doc = "The category of the cost information.  For example, manufacturers' cost, patient cost, claim reimbursement cost, actual acquisition cost."]
130    pub r#type: Box<super::super::types::CodeableConcept>,
131    #[doc = "The source or owner that assigns the price to the medication."]
132    pub r#source: Option<super::super::types::String>,
133    #[doc = "The price of the medication."]
134    pub r#cost: Box<super::super::types::Money>,
135}
136#[allow(clippy::derivable_impls)]
137impl Default for MedicationKnowledgeCost {
138    fn default() -> Self {
139        Self {
140            r#id: Default::default(),
141            r#extension: Default::default(),
142            r#modifier_extension: Default::default(),
143            r#type: Box::new(super::super::types::CodeableConcept {
144                id: Some("$invalid".to_string()),
145                ..Default::default()
146            }),
147            r#source: Default::default(),
148            r#cost: Box::new(super::super::types::Money {
149                id: Some("$invalid".to_string()),
150                ..Default::default()
151            }),
152        }
153    }
154}
155#[doc = "The program under which the medication is reviewed."]
156#[derive(Debug, Clone, PartialEq)]
157pub struct MedicationKnowledgeMonitoringProgram {
158    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
159    pub r#id: Option<std::string::String>,
160    #[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."]
161    pub r#extension: Vec<super::super::types::Extension>,
162    #[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)."]
163    pub r#modifier_extension: Vec<super::super::types::Extension>,
164    #[doc = "Type of program under which the medication is monitored."]
165    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
166    #[doc = "Name of the reviewing program."]
167    pub r#name: Option<super::super::types::String>,
168}
169#[allow(clippy::derivable_impls)]
170impl Default for MedicationKnowledgeMonitoringProgram {
171    fn default() -> Self {
172        Self {
173            r#id: Default::default(),
174            r#extension: Default::default(),
175            r#modifier_extension: Default::default(),
176            r#type: Default::default(),
177            r#name: Default::default(),
178        }
179    }
180}
181#[doc = "Dosage for the medication for the specific guidelines."]
182#[derive(Debug, Clone, PartialEq)]
183pub struct MedicationKnowledgeAdministrationGuidelinesDosage {
184    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
185    pub r#id: Option<std::string::String>,
186    #[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."]
187    pub r#extension: Vec<super::super::types::Extension>,
188    #[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)."]
189    pub r#modifier_extension: Vec<super::super::types::Extension>,
190    #[doc = "The type of dosage (for example, prophylaxis, maintenance, therapeutic, etc.)."]
191    pub r#type: Box<super::super::types::CodeableConcept>,
192    #[doc = "Dosage for the medication for the specific guidelines."]
193    pub r#dosage: Vec<super::super::types::Dosage>,
194}
195#[allow(clippy::derivable_impls)]
196impl Default for MedicationKnowledgeAdministrationGuidelinesDosage {
197    fn default() -> Self {
198        Self {
199            r#id: Default::default(),
200            r#extension: Default::default(),
201            r#modifier_extension: Default::default(),
202            r#type: Box::new(super::super::types::CodeableConcept {
203                id: Some("$invalid".to_string()),
204                ..Default::default()
205            }),
206            r#dosage: Default::default(),
207        }
208    }
209}
210#[doc = "Characteristics of the patient that are relevant to the administration guidelines (for example, height, weight, gender, etc.)."]
211#[derive(Debug, Clone, PartialEq)]
212pub struct MedicationKnowledgeAdministrationGuidelinesPatientCharacteristics {
213    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
214    pub r#id: Option<std::string::String>,
215    #[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."]
216    pub r#extension: Vec<super::super::types::Extension>,
217    #[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)."]
218    pub r#modifier_extension: Vec<super::super::types::Extension>,
219    #[doc = "Specific characteristic that is relevant to the administration guideline (e.g. height, weight, gender)."]
220    pub r#characteristic:
221        MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsCharacteristic,
222    #[doc = "The specific characteristic (e.g. height, weight, gender, etc.)."]
223    pub r#value: Vec<super::super::types::String>,
224}
225#[allow(clippy::derivable_impls)]
226impl Default for MedicationKnowledgeAdministrationGuidelinesPatientCharacteristics {
227    fn default() -> Self {
228        Self {
229            r#id: Default::default(),
230            r#extension: Default::default(),
231            r#modifier_extension: Default::default(),
232            r#characteristic: Default::default(),
233            r#value: Default::default(),
234        }
235    }
236}
237#[doc = "Guidelines for the administration of the medication."]
238#[derive(Debug, Clone, PartialEq)]
239pub struct MedicationKnowledgeAdministrationGuidelines {
240    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
241    pub r#id: Option<std::string::String>,
242    #[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."]
243    pub r#extension: Vec<super::super::types::Extension>,
244    #[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)."]
245    pub r#modifier_extension: Vec<super::super::types::Extension>,
246    #[doc = "Dosage for the medication for the specific guidelines."]
247    pub r#dosage: Vec<MedicationKnowledgeAdministrationGuidelinesDosage>,
248    #[doc = "Indication for use that apply to the specific administration guidelines."]
249    pub r#indication: Option<MedicationKnowledgeAdministrationGuidelinesIndication>,
250    #[doc = "Characteristics of the patient that are relevant to the administration guidelines (for example, height, weight, gender, etc.)."]
251    pub r#patient_characteristics:
252        Vec<MedicationKnowledgeAdministrationGuidelinesPatientCharacteristics>,
253}
254#[allow(clippy::derivable_impls)]
255impl Default for MedicationKnowledgeAdministrationGuidelines {
256    fn default() -> Self {
257        Self {
258            r#id: Default::default(),
259            r#extension: Default::default(),
260            r#modifier_extension: Default::default(),
261            r#dosage: Default::default(),
262            r#indication: Default::default(),
263            r#patient_characteristics: Default::default(),
264        }
265    }
266}
267#[doc = "Categorization of the medication within a formulary or classification system."]
268#[derive(Debug, Clone, PartialEq)]
269pub struct MedicationKnowledgeMedicineClassification {
270    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
271    pub r#id: Option<std::string::String>,
272    #[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."]
273    pub r#extension: Vec<super::super::types::Extension>,
274    #[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)."]
275    pub r#modifier_extension: Vec<super::super::types::Extension>,
276    #[doc = "The type of category for the medication (for example, therapeutic classification, therapeutic sub-classification)."]
277    pub r#type: Box<super::super::types::CodeableConcept>,
278    #[doc = "Specific category assigned to the medication (e.g. anti-infective, anti-hypertensive, antibiotic, etc.)."]
279    pub r#classification: Vec<super::super::types::CodeableConcept>,
280}
281#[allow(clippy::derivable_impls)]
282impl Default for MedicationKnowledgeMedicineClassification {
283    fn default() -> Self {
284        Self {
285            r#id: Default::default(),
286            r#extension: Default::default(),
287            r#modifier_extension: Default::default(),
288            r#type: Box::new(super::super::types::CodeableConcept {
289                id: Some("$invalid".to_string()),
290                ..Default::default()
291            }),
292            r#classification: Default::default(),
293        }
294    }
295}
296#[doc = "Information that only applies to packages (not products)."]
297#[derive(Debug, Clone, PartialEq)]
298pub struct MedicationKnowledgePackaging {
299    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
300    pub r#id: Option<std::string::String>,
301    #[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."]
302    pub r#extension: Vec<super::super::types::Extension>,
303    #[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)."]
304    pub r#modifier_extension: Vec<super::super::types::Extension>,
305    #[doc = "A code that defines the specific type of packaging that the medication can be found in (e.g. blister sleeve, tube, bottle)."]
306    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
307    #[doc = "The number of product units the package would contain if fully loaded."]
308    pub r#quantity: Option<Box<super::super::types::Quantity>>,
309}
310#[allow(clippy::derivable_impls)]
311impl Default for MedicationKnowledgePackaging {
312    fn default() -> Self {
313        Self {
314            r#id: Default::default(),
315            r#extension: Default::default(),
316            r#modifier_extension: Default::default(),
317            r#type: Default::default(),
318            r#quantity: Default::default(),
319        }
320    }
321}
322#[doc = "Specifies descriptive properties of the medicine, such as color, shape, imprints, etc."]
323#[derive(Debug, Clone, PartialEq)]
324pub struct MedicationKnowledgeDrugCharacteristic {
325    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
326    pub r#id: Option<std::string::String>,
327    #[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."]
328    pub r#extension: Vec<super::super::types::Extension>,
329    #[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)."]
330    pub r#modifier_extension: Vec<super::super::types::Extension>,
331    #[doc = "A code specifying which characteristic of the medicine is being described (for example, colour, shape, imprint)."]
332    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
333    #[doc = "Description of the characteristic."]
334    pub r#value: Option<MedicationKnowledgeDrugCharacteristicValue>,
335}
336#[allow(clippy::derivable_impls)]
337impl Default for MedicationKnowledgeDrugCharacteristic {
338    fn default() -> Self {
339        Self {
340            r#id: Default::default(),
341            r#extension: Default::default(),
342            r#modifier_extension: Default::default(),
343            r#type: Default::default(),
344            r#value: Default::default(),
345        }
346    }
347}
348#[doc = "Specifies if changes are allowed when dispensing a medication from a regulatory perspective."]
349#[derive(Debug, Clone, PartialEq)]
350pub struct MedicationKnowledgeRegulatorySubstitution {
351    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
352    pub r#id: Option<std::string::String>,
353    #[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."]
354    pub r#extension: Vec<super::super::types::Extension>,
355    #[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)."]
356    pub r#modifier_extension: Vec<super::super::types::Extension>,
357    #[doc = "Specifies the type of substitution allowed."]
358    pub r#type: Box<super::super::types::CodeableConcept>,
359    #[doc = "Specifies if regulation allows for changes in the medication when dispensing."]
360    pub r#allowed: super::super::types::Boolean,
361}
362#[allow(clippy::derivable_impls)]
363impl Default for MedicationKnowledgeRegulatorySubstitution {
364    fn default() -> Self {
365        Self {
366            r#id: Default::default(),
367            r#extension: Default::default(),
368            r#modifier_extension: Default::default(),
369            r#type: Box::new(super::super::types::CodeableConcept {
370                id: Some("$invalid".to_string()),
371                ..Default::default()
372            }),
373            r#allowed: super::super::types::Boolean {
374                id: Some("$invalid".to_string()),
375                ..Default::default()
376            },
377        }
378    }
379}
380#[doc = "Specifies the schedule of a medication in jurisdiction."]
381#[derive(Debug, Clone, PartialEq)]
382pub struct MedicationKnowledgeRegulatorySchedule {
383    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
384    pub r#id: Option<std::string::String>,
385    #[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."]
386    pub r#extension: Vec<super::super::types::Extension>,
387    #[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)."]
388    pub r#modifier_extension: Vec<super::super::types::Extension>,
389    #[doc = "Specifies the specific drug schedule."]
390    pub r#schedule: Box<super::super::types::CodeableConcept>,
391}
392#[allow(clippy::derivable_impls)]
393impl Default for MedicationKnowledgeRegulatorySchedule {
394    fn default() -> Self {
395        Self {
396            r#id: Default::default(),
397            r#extension: Default::default(),
398            r#modifier_extension: Default::default(),
399            r#schedule: Box::new(super::super::types::CodeableConcept {
400                id: Some("$invalid".to_string()),
401                ..Default::default()
402            }),
403        }
404    }
405}
406#[doc = "The maximum number of units of the medication that can be dispensed in a period."]
407#[derive(Debug, Clone, PartialEq)]
408pub struct MedicationKnowledgeRegulatoryMaxDispense {
409    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
410    pub r#id: Option<std::string::String>,
411    #[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."]
412    pub r#extension: Vec<super::super::types::Extension>,
413    #[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)."]
414    pub r#modifier_extension: Vec<super::super::types::Extension>,
415    #[doc = "The maximum number of units of the medication that can be dispensed."]
416    pub r#quantity: Box<super::super::types::Quantity>,
417    #[doc = "The period that applies to the maximum number of units."]
418    pub r#period: Option<Box<super::super::types::Duration>>,
419}
420#[allow(clippy::derivable_impls)]
421impl Default for MedicationKnowledgeRegulatoryMaxDispense {
422    fn default() -> Self {
423        Self {
424            r#id: Default::default(),
425            r#extension: Default::default(),
426            r#modifier_extension: Default::default(),
427            r#quantity: Box::new(super::super::types::Quantity {
428                id: Some("$invalid".to_string()),
429                ..Default::default()
430            }),
431            r#period: Default::default(),
432        }
433    }
434}
435#[doc = "Regulatory information about a medication."]
436#[derive(Debug, Clone, PartialEq)]
437pub struct MedicationKnowledgeRegulatory {
438    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
439    pub r#id: Option<std::string::String>,
440    #[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."]
441    pub r#extension: Vec<super::super::types::Extension>,
442    #[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)."]
443    pub r#modifier_extension: Vec<super::super::types::Extension>,
444    #[doc = "The authority that is specifying the regulations."]
445    pub r#regulatory_authority: Box<super::super::types::Reference>,
446    #[doc = "Specifies if changes are allowed when dispensing a medication from a regulatory perspective."]
447    pub r#substitution: Vec<MedicationKnowledgeRegulatorySubstitution>,
448    #[doc = "Specifies the schedule of a medication in jurisdiction."]
449    pub r#schedule: Vec<MedicationKnowledgeRegulatorySchedule>,
450    #[doc = "The maximum number of units of the medication that can be dispensed in a period."]
451    pub r#max_dispense: Option<MedicationKnowledgeRegulatoryMaxDispense>,
452}
453#[allow(clippy::derivable_impls)]
454impl Default for MedicationKnowledgeRegulatory {
455    fn default() -> Self {
456        Self {
457            r#id: Default::default(),
458            r#extension: Default::default(),
459            r#modifier_extension: Default::default(),
460            r#regulatory_authority: Box::new(super::super::types::Reference {
461                id: Some("$invalid".to_string()),
462                ..Default::default()
463            }),
464            r#substitution: Default::default(),
465            r#schedule: Default::default(),
466            r#max_dispense: Default::default(),
467        }
468    }
469}
470#[doc = "The time course of drug absorption, distribution, metabolism and excretion of a medication from the body."]
471#[derive(Debug, Clone, PartialEq)]
472pub struct MedicationKnowledgeKinetics {
473    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
474    pub r#id: Option<std::string::String>,
475    #[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."]
476    pub r#extension: Vec<super::super::types::Extension>,
477    #[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)."]
478    pub r#modifier_extension: Vec<super::super::types::Extension>,
479    #[doc = "The drug concentration measured at certain discrete points in time."]
480    pub r#area_under_curve: Vec<super::super::types::Quantity>,
481    #[doc = "The median lethal dose of a drug."]
482    pub r#lethal_dose_50: Vec<super::super::types::Quantity>,
483    #[doc = "The time required for any specified property (e.g., the concentration of a substance in the body) to decrease by half."]
484    pub r#half_life_period: Option<Box<super::super::types::Duration>>,
485}
486#[allow(clippy::derivable_impls)]
487impl Default for MedicationKnowledgeKinetics {
488    fn default() -> Self {
489        Self {
490            r#id: Default::default(),
491            r#extension: Default::default(),
492            r#modifier_extension: Default::default(),
493            r#area_under_curve: Default::default(),
494            r#lethal_dose_50: Default::default(),
495            r#half_life_period: Default::default(),
496        }
497    }
498}
499#[doc = "Information about a medication that is used to support knowledge."]
500#[derive(Debug, Clone, PartialEq)]
501pub struct MedicationKnowledge {
502    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
503    pub r#id: Option<super::super::types::Id>,
504    #[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."]
505    pub r#meta: Option<Box<super::super::types::Meta>>,
506    #[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."]
507    pub r#implicit_rules: Option<super::super::types::Uri>,
508    #[doc = "The base language in which the resource is written."]
509    pub r#language: Option<super::super::types::Code>,
510    #[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."]
511    pub r#text: Option<Box<super::super::types::Narrative>>,
512    #[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."]
513    pub r#contained: Vec<super::super::Resource>,
514    #[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."]
515    pub r#extension: Vec<super::super::types::Extension>,
516    #[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)."]
517    pub r#modifier_extension: Vec<super::super::types::Extension>,
518    #[doc = "A code that specifies this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems."]
519    pub r#code: Option<Box<super::super::types::CodeableConcept>>,
520    #[doc = "A code to indicate if the medication is in active use.  The status refers to the validity about the information of the medication and not to its medicinal properties."]
521    pub r#status: Option<super::super::types::Code>,
522    #[doc = "Describes the details of the manufacturer of the medication product.  This is not intended to represent the distributor of a medication product."]
523    pub r#manufacturer: Option<Box<super::super::types::Reference>>,
524    #[doc = "Describes the form of the item.  Powder; tablets; capsule."]
525    pub r#dose_form: Option<Box<super::super::types::CodeableConcept>>,
526    #[doc = "Specific amount of the drug in the packaged product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.)."]
527    pub r#amount: Option<Box<super::super::types::Quantity>>,
528    #[doc = "Additional names for a medication, for example, the name(s) given to a medication in different countries.  For example, acetaminophen and paracetamol or salbutamol and albuterol."]
529    pub r#synonym: Vec<super::super::types::String>,
530    #[doc = "Associated or related knowledge about a medication."]
531    pub r#related_medication_knowledge: Vec<MedicationKnowledgeRelatedMedicationKnowledge>,
532    #[doc = "Associated or related medications.  For example, if the medication is a branded product (e.g. Crestor), this is the Therapeutic Moeity (e.g. Rosuvastatin) or if this is a generic medication (e.g. Rosuvastatin), this would link to a branded product (e.g. Crestor)."]
533    pub r#associated_medication: Vec<super::super::types::Reference>,
534    #[doc = "Category of the medication or product (e.g. branded product, therapeutic moeity, generic product, innovator product, etc.)."]
535    pub r#product_type: Vec<super::super::types::CodeableConcept>,
536    #[doc = "Associated documentation about the medication."]
537    pub r#monograph: Vec<MedicationKnowledgeMonograph>,
538    #[doc = "Identifies a particular constituent of interest in the product."]
539    pub r#ingredient: Vec<MedicationKnowledgeIngredient>,
540    #[doc = "The instructions for preparing the medication."]
541    pub r#preparation_instruction: Option<super::super::types::Markdown>,
542    #[doc = "The intended or approved route of administration."]
543    pub r#intended_route: Vec<super::super::types::CodeableConcept>,
544    #[doc = "The price of the medication."]
545    pub r#cost: Vec<MedicationKnowledgeCost>,
546    #[doc = "The program under which the medication is reviewed."]
547    pub r#monitoring_program: Vec<MedicationKnowledgeMonitoringProgram>,
548    #[doc = "Guidelines for the administration of the medication."]
549    pub r#administration_guidelines: Vec<MedicationKnowledgeAdministrationGuidelines>,
550    #[doc = "Categorization of the medication within a formulary or classification system."]
551    pub r#medicine_classification: Vec<MedicationKnowledgeMedicineClassification>,
552    #[doc = "Information that only applies to packages (not products)."]
553    pub r#packaging: Option<MedicationKnowledgePackaging>,
554    #[doc = "Specifies descriptive properties of the medicine, such as color, shape, imprints, etc."]
555    pub r#drug_characteristic: Vec<MedicationKnowledgeDrugCharacteristic>,
556    #[doc = "Potential clinical issue with or between medication(s) (for example, drug-drug interaction, drug-disease contraindication, drug-allergy interaction, etc.)."]
557    pub r#contraindication: Vec<super::super::types::Reference>,
558    #[doc = "Regulatory information about a medication."]
559    pub r#regulatory: Vec<MedicationKnowledgeRegulatory>,
560    #[doc = "The time course of drug absorption, distribution, metabolism and excretion of a medication from the body."]
561    pub r#kinetics: Vec<MedicationKnowledgeKinetics>,
562}
563#[allow(clippy::derivable_impls)]
564impl Default for MedicationKnowledge {
565    fn default() -> Self {
566        Self {
567            r#id: Default::default(),
568            r#meta: Default::default(),
569            r#implicit_rules: Default::default(),
570            r#language: Default::default(),
571            r#text: Default::default(),
572            r#contained: Default::default(),
573            r#extension: Default::default(),
574            r#modifier_extension: Default::default(),
575            r#code: Default::default(),
576            r#status: Default::default(),
577            r#manufacturer: Default::default(),
578            r#dose_form: Default::default(),
579            r#amount: Default::default(),
580            r#synonym: Default::default(),
581            r#related_medication_knowledge: Default::default(),
582            r#associated_medication: Default::default(),
583            r#product_type: Default::default(),
584            r#monograph: Default::default(),
585            r#ingredient: Default::default(),
586            r#preparation_instruction: Default::default(),
587            r#intended_route: Default::default(),
588            r#cost: Default::default(),
589            r#monitoring_program: Default::default(),
590            r#administration_guidelines: Default::default(),
591            r#medicine_classification: Default::default(),
592            r#packaging: Default::default(),
593            r#drug_characteristic: Default::default(),
594            r#contraindication: Default::default(),
595            r#regulatory: Default::default(),
596            r#kinetics: Default::default(),
597        }
598    }
599}