1#[doc = "Quantitative value for this moiety."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum SubstanceDefinitionMoietyAmount {
5 Quantity(Box<super::super::types::Quantity>),
6 String(super::super::types::String),
7 #[default]
8 Invalid,
9}
10#[doc = "A value for the property."]
11#[derive(Default, Debug, Clone, PartialEq)]
12pub enum SubstanceDefinitionPropertyValue {
13 CodeableConcept(Box<super::super::types::CodeableConcept>),
14 Quantity(Box<super::super::types::Quantity>),
15 Date(super::super::types::Date),
16 Boolean(super::super::types::Boolean),
17 Attachment(Box<super::super::types::Attachment>),
18 #[default]
19 Invalid,
20}
21#[doc = "A pointer to another substance, as a resource or just a representational code."]
22#[derive(Default, Debug, Clone, PartialEq)]
23pub enum SubstanceDefinitionRelationshipSubstanceDefinition {
24 Reference(Box<super::super::types::Reference>),
25 CodeableConcept(Box<super::super::types::CodeableConcept>),
26 #[default]
27 Invalid,
28}
29#[doc = "A numeric factor for the relationship, for instance to express that the salt of a substance has some percentage of the active substance in relation to some other."]
30#[derive(Default, Debug, Clone, PartialEq)]
31pub enum SubstanceDefinitionRelationshipAmount {
32 Quantity(Box<super::super::types::Quantity>),
33 Ratio(Box<super::super::types::Ratio>),
34 String(super::super::types::String),
35 #[default]
36 Invalid,
37}
38#[doc = "Moiety, for structural modifications."]
39#[derive(Debug, Clone, PartialEq)]
40pub struct SubstanceDefinitionMoiety {
41 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
42 pub r#id: Option<std::string::String>,
43 #[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."]
44 pub r#extension: Vec<super::super::types::Extension>,
45 #[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)."]
46 pub r#modifier_extension: Vec<super::super::types::Extension>,
47 #[doc = "Role that the moiety is playing."]
48 pub r#role: Option<Box<super::super::types::CodeableConcept>>,
49 #[doc = "Identifier by which this moiety substance is known."]
50 pub r#identifier: Option<Box<super::super::types::Identifier>>,
51 #[doc = "Textual name for this moiety substance."]
52 pub r#name: Option<super::super::types::String>,
53 #[doc = "Stereochemistry type."]
54 pub r#stereochemistry: Option<Box<super::super::types::CodeableConcept>>,
55 #[doc = "Optical activity type."]
56 pub r#optical_activity: Option<Box<super::super::types::CodeableConcept>>,
57 #[doc = "Molecular formula for this moiety of this substance, typically using the Hill system."]
58 pub r#molecular_formula: Option<super::super::types::String>,
59 #[doc = "Quantitative value for this moiety."]
60 pub r#amount: Option<SubstanceDefinitionMoietyAmount>,
61 #[doc = "The measurement type of the quantitative value. In capturing the actual relative amounts of substances or molecular fragments it may be necessary to indicate whether the amount refers to, for example, a mole ratio or weight ratio."]
62 pub r#measurement_type: Option<Box<super::super::types::CodeableConcept>>,
63}
64#[allow(clippy::derivable_impls)]
65impl Default for SubstanceDefinitionMoiety {
66 fn default() -> Self {
67 Self {
68 r#id: Default::default(),
69 r#extension: Default::default(),
70 r#modifier_extension: Default::default(),
71 r#role: Default::default(),
72 r#identifier: Default::default(),
73 r#name: Default::default(),
74 r#stereochemistry: Default::default(),
75 r#optical_activity: Default::default(),
76 r#molecular_formula: Default::default(),
77 r#amount: Default::default(),
78 r#measurement_type: Default::default(),
79 }
80 }
81}
82#[doc = "General specifications for this substance."]
83#[derive(Debug, Clone, PartialEq)]
84pub struct SubstanceDefinitionProperty {
85 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
86 pub r#id: Option<std::string::String>,
87 #[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."]
88 pub r#extension: Vec<super::super::types::Extension>,
89 #[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)."]
90 pub r#modifier_extension: Vec<super::super::types::Extension>,
91 #[doc = "A code expressing the type of property."]
92 pub r#type: Box<super::super::types::CodeableConcept>,
93 #[doc = "A value for the property."]
94 pub r#value: Option<SubstanceDefinitionPropertyValue>,
95}
96#[allow(clippy::derivable_impls)]
97impl Default for SubstanceDefinitionProperty {
98 fn default() -> Self {
99 Self {
100 r#id: Default::default(),
101 r#extension: Default::default(),
102 r#modifier_extension: Default::default(),
103 r#type: Box::new(super::super::types::CodeableConcept {
104 id: Some("$invalid".to_string()),
105 ..Default::default()
106 }),
107 r#value: Default::default(),
108 }
109 }
110}
111#[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
112#[derive(Debug, Clone, PartialEq)]
113pub struct SubstanceDefinitionMolecularWeight {
114 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
115 pub r#id: Option<std::string::String>,
116 #[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."]
117 pub r#extension: Vec<super::super::types::Extension>,
118 #[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)."]
119 pub r#modifier_extension: Vec<super::super::types::Extension>,
120 #[doc = "The method by which the molecular weight was determined."]
121 pub r#method: Option<Box<super::super::types::CodeableConcept>>,
122 #[doc = "Type of molecular weight such as exact, average (also known as. number average), weight average."]
123 pub r#type: Option<Box<super::super::types::CodeableConcept>>,
124 #[doc = "Used to capture quantitative values for a variety of elements. If only limits are given, the arithmetic mean would be the average. If only a single definite value for a given element is given, it would be captured in this field."]
125 pub r#amount: Box<super::super::types::Quantity>,
126}
127#[allow(clippy::derivable_impls)]
128impl Default for SubstanceDefinitionMolecularWeight {
129 fn default() -> Self {
130 Self {
131 r#id: Default::default(),
132 r#extension: Default::default(),
133 r#modifier_extension: Default::default(),
134 r#method: Default::default(),
135 r#type: Default::default(),
136 r#amount: Box::new(super::super::types::Quantity {
137 id: Some("$invalid".to_string()),
138 ..Default::default()
139 }),
140 }
141 }
142}
143#[doc = "A depiction of the structure or characterization of the substance."]
144#[derive(Debug, Clone, PartialEq)]
145pub struct SubstanceDefinitionStructureRepresentation {
146 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
147 pub r#id: Option<std::string::String>,
148 #[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."]
149 pub r#extension: Vec<super::super::types::Extension>,
150 #[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)."]
151 pub r#modifier_extension: Vec<super::super::types::Extension>,
152 #[doc = "The kind of structural representation (e.g. full, partial)."]
153 pub r#type: Option<Box<super::super::types::CodeableConcept>>,
154 #[doc = "The structural representation or characterization as a text string in a standard format."]
155 pub r#representation: Option<super::super::types::String>,
156 #[doc = "The format of the representation e.g. InChI, SMILES, MOLFILE, CDX, SDF, PDB, mmCIF. The logical content type rather than the physical file format of a document."]
157 pub r#format: Option<Box<super::super::types::CodeableConcept>>,
158 #[doc = "An attached file with the structural representation or characterization e.g. a molecular structure graphic of the substance, a JCAMP or AnIML file."]
159 pub r#document: Option<Box<super::super::types::Reference>>,
160}
161#[allow(clippy::derivable_impls)]
162impl Default for SubstanceDefinitionStructureRepresentation {
163 fn default() -> Self {
164 Self {
165 r#id: Default::default(),
166 r#extension: Default::default(),
167 r#modifier_extension: Default::default(),
168 r#type: Default::default(),
169 r#representation: Default::default(),
170 r#format: Default::default(),
171 r#document: Default::default(),
172 }
173 }
174}
175#[doc = "Structural information."]
176#[derive(Debug, Clone, PartialEq)]
177pub struct SubstanceDefinitionStructure {
178 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
179 pub r#id: Option<std::string::String>,
180 #[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."]
181 pub r#extension: Vec<super::super::types::Extension>,
182 #[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)."]
183 pub r#modifier_extension: Vec<super::super::types::Extension>,
184 #[doc = "Stereochemistry type."]
185 pub r#stereochemistry: Option<Box<super::super::types::CodeableConcept>>,
186 #[doc = "Optical activity type."]
187 pub r#optical_activity: Option<Box<super::super::types::CodeableConcept>>,
188 #[doc = "Molecular formula of this substance, typically using the Hill system."]
189 pub r#molecular_formula: Option<super::super::types::String>,
190 #[doc = "Specified per moiety according to the Hill system, i.e. first C, then H, then alphabetical, each moiety separated by a dot."]
191 pub r#molecular_formula_by_moiety: Option<super::super::types::String>,
192 #[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
193 pub r#molecular_weight: Option<SubstanceDefinitionMolecularWeight>,
194 #[doc = "The method used to elucidate the structure or characterization of the drug substance. Examples: X-ray, HPLC, NMR, Peptide mapping, Ligand binding assay."]
195 pub r#technique: Vec<super::super::types::CodeableConcept>,
196 #[doc = "The source of information about the structure."]
197 pub r#source_document: Vec<super::super::types::Reference>,
198 #[doc = "A depiction of the structure or characterization of the substance."]
199 pub r#representation: Vec<SubstanceDefinitionStructureRepresentation>,
200}
201#[allow(clippy::derivable_impls)]
202impl Default for SubstanceDefinitionStructure {
203 fn default() -> Self {
204 Self {
205 r#id: Default::default(),
206 r#extension: Default::default(),
207 r#modifier_extension: Default::default(),
208 r#stereochemistry: Default::default(),
209 r#optical_activity: Default::default(),
210 r#molecular_formula: Default::default(),
211 r#molecular_formula_by_moiety: Default::default(),
212 r#molecular_weight: Default::default(),
213 r#technique: Default::default(),
214 r#source_document: Default::default(),
215 r#representation: Default::default(),
216 }
217 }
218}
219#[doc = "Codes associated with the substance."]
220#[derive(Debug, Clone, PartialEq)]
221pub struct SubstanceDefinitionCode {
222 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
223 pub r#id: Option<std::string::String>,
224 #[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."]
225 pub r#extension: Vec<super::super::types::Extension>,
226 #[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)."]
227 pub r#modifier_extension: Vec<super::super::types::Extension>,
228 #[doc = "The specific code."]
229 pub r#code: Option<Box<super::super::types::CodeableConcept>>,
230 #[doc = "Status of the code assignment, for example 'provisional', 'approved'."]
231 pub r#status: Option<Box<super::super::types::CodeableConcept>>,
232 #[doc = "The date at which the code status was changed as part of the terminology maintenance."]
233 pub r#status_date: Option<super::super::types::DateTime>,
234 #[doc = "Any comment can be provided in this field, if necessary."]
235 pub r#note: Vec<super::super::types::Annotation>,
236 #[doc = "Supporting literature."]
237 pub r#source: Vec<super::super::types::Reference>,
238}
239#[allow(clippy::derivable_impls)]
240impl Default for SubstanceDefinitionCode {
241 fn default() -> Self {
242 Self {
243 r#id: Default::default(),
244 r#extension: Default::default(),
245 r#modifier_extension: Default::default(),
246 r#code: Default::default(),
247 r#status: Default::default(),
248 r#status_date: Default::default(),
249 r#note: Default::default(),
250 r#source: Default::default(),
251 }
252 }
253}
254#[doc = "Details of the official nature of this name."]
255#[derive(Debug, Clone, PartialEq)]
256pub struct SubstanceDefinitionNameOfficial {
257 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
258 pub r#id: Option<std::string::String>,
259 #[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."]
260 pub r#extension: Vec<super::super::types::Extension>,
261 #[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)."]
262 pub r#modifier_extension: Vec<super::super::types::Extension>,
263 #[doc = "Which authority uses this official name."]
264 pub r#authority: Option<Box<super::super::types::CodeableConcept>>,
265 #[doc = "The status of the official name, for example 'draft', 'active', 'retired'."]
266 pub r#status: Option<Box<super::super::types::CodeableConcept>>,
267 #[doc = "Date of the official name change."]
268 pub r#date: Option<super::super::types::DateTime>,
269}
270#[allow(clippy::derivable_impls)]
271impl Default for SubstanceDefinitionNameOfficial {
272 fn default() -> Self {
273 Self {
274 r#id: Default::default(),
275 r#extension: Default::default(),
276 r#modifier_extension: Default::default(),
277 r#authority: Default::default(),
278 r#status: Default::default(),
279 r#date: Default::default(),
280 }
281 }
282}
283#[doc = "Names applicable to this substance."]
284#[derive(Debug, Clone, PartialEq)]
285pub struct SubstanceDefinitionName {
286 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
287 pub r#id: Option<std::string::String>,
288 #[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."]
289 pub r#extension: Vec<super::super::types::Extension>,
290 #[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)."]
291 pub r#modifier_extension: Vec<super::super::types::Extension>,
292 #[doc = "The actual name."]
293 pub r#name: super::super::types::String,
294 #[doc = "Name type, for example 'systematic', 'scientific, 'brand'."]
295 pub r#type: Option<Box<super::super::types::CodeableConcept>>,
296 #[doc = "The status of the name, for example 'current', 'proposed'."]
297 pub r#status: Option<Box<super::super::types::CodeableConcept>>,
298 #[doc = "If this is the preferred name for this substance."]
299 pub r#preferred: Option<super::super::types::Boolean>,
300 #[doc = "Human language that the name is written in."]
301 pub r#language: Vec<super::super::types::CodeableConcept>,
302 #[doc = "The use context of this name for example if there is a different name a drug active ingredient as opposed to a food colour additive."]
303 pub r#domain: Vec<super::super::types::CodeableConcept>,
304 #[doc = "The jurisdiction where this name applies."]
305 pub r#jurisdiction: Vec<super::super::types::CodeableConcept>,
306 #[doc = "A synonym of this particular name, by which the substance is also known."]
307 pub r#synonym: Vec<SubstanceDefinitionName>,
308 #[doc = "A translation for this name into another human language."]
309 pub r#translation: Vec<SubstanceDefinitionName>,
310 #[doc = "Details of the official nature of this name."]
311 pub r#official: Vec<SubstanceDefinitionNameOfficial>,
312 #[doc = "Supporting literature."]
313 pub r#source: Vec<super::super::types::Reference>,
314}
315#[allow(clippy::derivable_impls)]
316impl Default for SubstanceDefinitionName {
317 fn default() -> Self {
318 Self {
319 r#id: Default::default(),
320 r#extension: Default::default(),
321 r#modifier_extension: Default::default(),
322 r#name: super::super::types::String {
323 id: Some("$invalid".to_string()),
324 ..Default::default()
325 },
326 r#type: Default::default(),
327 r#status: Default::default(),
328 r#preferred: Default::default(),
329 r#language: Default::default(),
330 r#domain: Default::default(),
331 r#jurisdiction: Default::default(),
332 r#synonym: Default::default(),
333 r#translation: Default::default(),
334 r#official: Default::default(),
335 r#source: Default::default(),
336 }
337 }
338}
339#[doc = "A link between this substance and another, with details of the relationship."]
340#[derive(Debug, Clone, PartialEq)]
341pub struct SubstanceDefinitionRelationship {
342 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
343 pub r#id: Option<std::string::String>,
344 #[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."]
345 pub r#extension: Vec<super::super::types::Extension>,
346 #[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)."]
347 pub r#modifier_extension: Vec<super::super::types::Extension>,
348 #[doc = "A pointer to another substance, as a resource or just a representational code."]
349 pub r#substance_definition: Option<SubstanceDefinitionRelationshipSubstanceDefinition>,
350 #[doc = "For example \"salt to parent\", \"active moiety\", \"starting material\", \"polymorph\", \"impurity of\"."]
351 pub r#type: Box<super::super::types::CodeableConcept>,
352 #[doc = "For example where an enzyme strongly bonds with a particular substance, this is a defining relationship for that enzyme, out of several possible substance relationships."]
353 pub r#is_defining: Option<super::super::types::Boolean>,
354 #[doc = "A numeric factor for the relationship, for instance to express that the salt of a substance has some percentage of the active substance in relation to some other."]
355 pub r#amount: Option<SubstanceDefinitionRelationshipAmount>,
356 #[doc = "For use when the numeric has an uncertain range."]
357 pub r#ratio_high_limit_amount: Option<Box<super::super::types::Ratio>>,
358 #[doc = "An operator for the amount, for example \"average\", \"approximately\", \"less than\"."]
359 pub r#comparator: Option<Box<super::super::types::CodeableConcept>>,
360 #[doc = "Supporting literature."]
361 pub r#source: Vec<super::super::types::Reference>,
362}
363#[allow(clippy::derivable_impls)]
364impl Default for SubstanceDefinitionRelationship {
365 fn default() -> Self {
366 Self {
367 r#id: Default::default(),
368 r#extension: Default::default(),
369 r#modifier_extension: Default::default(),
370 r#substance_definition: Default::default(),
371 r#type: Box::new(super::super::types::CodeableConcept {
372 id: Some("$invalid".to_string()),
373 ..Default::default()
374 }),
375 r#is_defining: Default::default(),
376 r#amount: Default::default(),
377 r#ratio_high_limit_amount: Default::default(),
378 r#comparator: Default::default(),
379 r#source: Default::default(),
380 }
381 }
382}
383#[doc = "Material or taxonomic/anatomical source for the substance."]
384#[derive(Debug, Clone, PartialEq)]
385pub struct SubstanceDefinitionSourceMaterial {
386 #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
387 pub r#id: Option<std::string::String>,
388 #[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."]
389 pub r#extension: Vec<super::super::types::Extension>,
390 #[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)."]
391 pub r#modifier_extension: Vec<super::super::types::Extension>,
392 #[doc = "A classification that provides the origin of the raw material. Example: cat hair would be an Animal source type."]
393 pub r#type: Option<Box<super::super::types::CodeableConcept>>,
394 #[doc = "The genus of an organism, typically referring to the Latin epithet of the genus element of the plant/animal scientific name."]
395 pub r#genus: Option<Box<super::super::types::CodeableConcept>>,
396 #[doc = "The species of an organism, typically referring to the Latin epithet of the species of the plant/animal."]
397 pub r#species: Option<Box<super::super::types::CodeableConcept>>,
398 #[doc = "An anatomical origin of the source material within an organism."]
399 pub r#part: Option<Box<super::super::types::CodeableConcept>>,
400 #[doc = "The country or countries where the material is harvested."]
401 pub r#country_of_origin: Vec<super::super::types::CodeableConcept>,
402}
403#[allow(clippy::derivable_impls)]
404impl Default for SubstanceDefinitionSourceMaterial {
405 fn default() -> Self {
406 Self {
407 r#id: Default::default(),
408 r#extension: Default::default(),
409 r#modifier_extension: Default::default(),
410 r#type: Default::default(),
411 r#genus: Default::default(),
412 r#species: Default::default(),
413 r#part: Default::default(),
414 r#country_of_origin: Default::default(),
415 }
416 }
417}
418#[doc = "The detailed description of a substance, typically at a level beyond what is used for prescribing."]
419#[derive(Debug, Clone, PartialEq)]
420pub struct SubstanceDefinition {
421 #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
422 pub r#id: Option<super::super::types::Id>,
423 #[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."]
424 pub r#meta: Option<Box<super::super::types::Meta>>,
425 #[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."]
426 pub r#implicit_rules: Option<super::super::types::Uri>,
427 #[doc = "The base language in which the resource is written."]
428 pub r#language: Option<super::super::types::Code>,
429 #[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."]
430 pub r#text: Option<Box<super::super::types::Narrative>>,
431 #[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."]
432 pub r#contained: Vec<super::super::Resource>,
433 #[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."]
434 pub r#extension: Vec<super::super::types::Extension>,
435 #[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)."]
436 pub r#modifier_extension: Vec<super::super::types::Extension>,
437 #[doc = "Identifier by which this substance is known."]
438 pub r#identifier: Vec<super::super::types::Identifier>,
439 #[doc = "A business level version identifier of the substance."]
440 pub r#version: Option<super::super::types::String>,
441 #[doc = "Status of substance within the catalogue e.g. active, retired."]
442 pub r#status: Option<Box<super::super::types::CodeableConcept>>,
443 #[doc = "A high level categorization, e.g. polymer or nucleic acid, or food, chemical, biological, or a lower level such as the general types of polymer (linear or branch chain) or type of impurity (process related or contaminant)."]
444 pub r#classification: Vec<super::super::types::CodeableConcept>,
445 #[doc = "If the substance applies to human or veterinary use."]
446 pub r#domain: Option<Box<super::super::types::CodeableConcept>>,
447 #[doc = "The quality standard, established benchmark, to which substance complies (e.g. USP/NF, Ph. Eur, JP, BP, Company Standard)."]
448 pub r#grade: Vec<super::super::types::CodeableConcept>,
449 #[doc = "Textual description of the substance."]
450 pub r#description: Option<super::super::types::Markdown>,
451 #[doc = "Supporting literature."]
452 pub r#information_source: Vec<super::super::types::Reference>,
453 #[doc = "Textual comment about the substance's catalogue or registry record."]
454 pub r#note: Vec<super::super::types::Annotation>,
455 #[doc = "The entity that creates, makes, produces or fabricates the substance. This is a set of potential manufacturers but is not necessarily comprehensive."]
456 pub r#manufacturer: Vec<super::super::types::Reference>,
457 #[doc = "An entity that is the source for the substance. It may be different from the manufacturer. Supplier is synonymous to a distributor."]
458 pub r#supplier: Vec<super::super::types::Reference>,
459 #[doc = "Moiety, for structural modifications."]
460 pub r#moiety: Vec<SubstanceDefinitionMoiety>,
461 #[doc = "General specifications for this substance."]
462 pub r#property: Vec<SubstanceDefinitionProperty>,
463 #[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
464 pub r#molecular_weight: Vec<SubstanceDefinitionMolecularWeight>,
465 #[doc = "Structural information."]
466 pub r#structure: Option<SubstanceDefinitionStructure>,
467 #[doc = "Codes associated with the substance."]
468 pub r#code: Vec<SubstanceDefinitionCode>,
469 #[doc = "Names applicable to this substance."]
470 pub r#name: Vec<SubstanceDefinitionName>,
471 #[doc = "A link between this substance and another, with details of the relationship."]
472 pub r#relationship: Vec<SubstanceDefinitionRelationship>,
473 #[doc = "Material or taxonomic/anatomical source for the substance."]
474 pub r#source_material: Option<SubstanceDefinitionSourceMaterial>,
475}
476#[allow(clippy::derivable_impls)]
477impl Default for SubstanceDefinition {
478 fn default() -> Self {
479 Self {
480 r#id: Default::default(),
481 r#meta: Default::default(),
482 r#implicit_rules: Default::default(),
483 r#language: Default::default(),
484 r#text: Default::default(),
485 r#contained: Default::default(),
486 r#extension: Default::default(),
487 r#modifier_extension: Default::default(),
488 r#identifier: Default::default(),
489 r#version: Default::default(),
490 r#status: Default::default(),
491 r#classification: Default::default(),
492 r#domain: Default::default(),
493 r#grade: Default::default(),
494 r#description: Default::default(),
495 r#information_source: Default::default(),
496 r#note: Default::default(),
497 r#manufacturer: Default::default(),
498 r#supplier: Default::default(),
499 r#moiety: Default::default(),
500 r#property: Default::default(),
501 r#molecular_weight: Default::default(),
502 r#structure: Default::default(),
503 r#code: Default::default(),
504 r#name: Default::default(),
505 r#relationship: Default::default(),
506 r#source_material: Default::default(),
507 }
508 }
509}