fhirbolt_model/generated/r4b/resources/
device_definition.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "A name of the manufacturer."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum DeviceDefinitionManufacturer {
5    String(super::super::types::String),
6    Reference(Box<super::super::types::Reference>),
7    #[default]
8    Invalid,
9}
10#[doc = "Unique device identifier (UDI) assigned to device label or package.  Note that the Device may include multiple udiCarriers as it either may include just the udiCarrier for the jurisdiction it is sold, or for multiple jurisdictions it could have been sold."]
11#[derive(Debug, Clone, PartialEq)]
12pub struct DeviceDefinitionUdiDeviceIdentifier {
13    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14    pub r#id: Option<std::string::String>,
15    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16    pub r#extension: Vec<super::super::types::Extension>,
17    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18    pub r#modifier_extension: Vec<super::super::types::Extension>,
19    #[doc = "The identifier that is to be associated with every Device that references this DeviceDefintiion for the issuer and jurisdication porvided in the DeviceDefinition.udiDeviceIdentifier."]
20    pub r#device_identifier: super::super::types::String,
21    #[doc = "The organization that assigns the identifier algorithm."]
22    pub r#issuer: super::super::types::Uri,
23    #[doc = "The jurisdiction to which the deviceIdentifier applies."]
24    pub r#jurisdiction: super::super::types::Uri,
25}
26#[allow(clippy::derivable_impls)]
27impl Default for DeviceDefinitionUdiDeviceIdentifier {
28    fn default() -> Self {
29        Self {
30            r#id: Default::default(),
31            r#extension: Default::default(),
32            r#modifier_extension: Default::default(),
33            r#device_identifier: super::super::types::String {
34                id: Some("$invalid".to_string()),
35                ..Default::default()
36            },
37            r#issuer: super::super::types::Uri {
38                id: Some("$invalid".to_string()),
39                ..Default::default()
40            },
41            r#jurisdiction: super::super::types::Uri {
42                id: Some("$invalid".to_string()),
43                ..Default::default()
44            },
45        }
46    }
47}
48#[doc = "A name given to the device to identify it."]
49#[derive(Debug, Clone, PartialEq)]
50pub struct DeviceDefinitionDeviceName {
51    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
52    pub r#id: Option<std::string::String>,
53    #[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."]
54    pub r#extension: Vec<super::super::types::Extension>,
55    #[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)."]
56    pub r#modifier_extension: Vec<super::super::types::Extension>,
57    #[doc = "The name of the device."]
58    pub r#name: super::super::types::String,
59    #[doc = "The type of deviceName.\nUDILabelName | UserFriendlyName | PatientReportedName | ManufactureDeviceName | ModelName."]
60    pub r#type: super::super::types::Code,
61}
62#[allow(clippy::derivable_impls)]
63impl Default for DeviceDefinitionDeviceName {
64    fn default() -> Self {
65        Self {
66            r#id: Default::default(),
67            r#extension: Default::default(),
68            r#modifier_extension: Default::default(),
69            r#name: super::super::types::String {
70                id: Some("$invalid".to_string()),
71                ..Default::default()
72            },
73            r#type: super::super::types::Code {
74                id: Some("$invalid".to_string()),
75                ..Default::default()
76            },
77        }
78    }
79}
80#[doc = "The capabilities supported on a  device, the standards to which the device conforms for a particular purpose, and used for the communication."]
81#[derive(Debug, Clone, PartialEq)]
82pub struct DeviceDefinitionSpecialization {
83    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
84    pub r#id: Option<std::string::String>,
85    #[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."]
86    pub r#extension: Vec<super::super::types::Extension>,
87    #[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)."]
88    pub r#modifier_extension: Vec<super::super::types::Extension>,
89    #[doc = "The standard that is used to operate and communicate."]
90    pub r#system_type: super::super::types::String,
91    #[doc = "The version of the standard that is used to operate and communicate."]
92    pub r#version: Option<super::super::types::String>,
93}
94#[allow(clippy::derivable_impls)]
95impl Default for DeviceDefinitionSpecialization {
96    fn default() -> Self {
97        Self {
98            r#id: Default::default(),
99            r#extension: Default::default(),
100            r#modifier_extension: Default::default(),
101            r#system_type: super::super::types::String {
102                id: Some("$invalid".to_string()),
103                ..Default::default()
104            },
105            r#version: Default::default(),
106        }
107    }
108}
109#[doc = "Device capabilities."]
110#[derive(Debug, Clone, PartialEq)]
111pub struct DeviceDefinitionCapability {
112    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
113    pub r#id: Option<std::string::String>,
114    #[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."]
115    pub r#extension: Vec<super::super::types::Extension>,
116    #[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)."]
117    pub r#modifier_extension: Vec<super::super::types::Extension>,
118    #[doc = "Type of capability."]
119    pub r#type: Box<super::super::types::CodeableConcept>,
120    #[doc = "Description of capability."]
121    pub r#description: Vec<super::super::types::CodeableConcept>,
122}
123#[allow(clippy::derivable_impls)]
124impl Default for DeviceDefinitionCapability {
125    fn default() -> Self {
126        Self {
127            r#id: Default::default(),
128            r#extension: Default::default(),
129            r#modifier_extension: Default::default(),
130            r#type: Box::new(super::super::types::CodeableConcept {
131                id: Some("$invalid".to_string()),
132                ..Default::default()
133            }),
134            r#description: Default::default(),
135        }
136    }
137}
138#[doc = "The actual configuration settings of a device as it actually operates, e.g., regulation status, time properties."]
139#[derive(Debug, Clone, PartialEq)]
140pub struct DeviceDefinitionProperty {
141    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
142    pub r#id: Option<std::string::String>,
143    #[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."]
144    pub r#extension: Vec<super::super::types::Extension>,
145    #[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)."]
146    pub r#modifier_extension: Vec<super::super::types::Extension>,
147    #[doc = "Code that specifies the property DeviceDefinitionPropetyCode (Extensible)."]
148    pub r#type: Box<super::super::types::CodeableConcept>,
149    #[doc = "Property value as a quantity."]
150    pub r#value_quantity: Vec<super::super::types::Quantity>,
151    #[doc = "Property value as a code, e.g., NTP4 (synced to NTP)."]
152    pub r#value_code: Vec<super::super::types::CodeableConcept>,
153}
154#[allow(clippy::derivable_impls)]
155impl Default for DeviceDefinitionProperty {
156    fn default() -> Self {
157        Self {
158            r#id: Default::default(),
159            r#extension: Default::default(),
160            r#modifier_extension: Default::default(),
161            r#type: Box::new(super::super::types::CodeableConcept {
162                id: Some("$invalid".to_string()),
163                ..Default::default()
164            }),
165            r#value_quantity: Default::default(),
166            r#value_code: Default::default(),
167        }
168    }
169}
170#[doc = "A substance used to create the material(s) of which the device is made."]
171#[derive(Debug, Clone, PartialEq)]
172pub struct DeviceDefinitionMaterial {
173    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
174    pub r#id: Option<std::string::String>,
175    #[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."]
176    pub r#extension: Vec<super::super::types::Extension>,
177    #[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)."]
178    pub r#modifier_extension: Vec<super::super::types::Extension>,
179    #[doc = "The substance."]
180    pub r#substance: Box<super::super::types::CodeableConcept>,
181    #[doc = "Indicates an alternative material of the device."]
182    pub r#alternate: Option<super::super::types::Boolean>,
183    #[doc = "Whether the substance is a known or suspected allergen."]
184    pub r#allergenic_indicator: Option<super::super::types::Boolean>,
185}
186#[allow(clippy::derivable_impls)]
187impl Default for DeviceDefinitionMaterial {
188    fn default() -> Self {
189        Self {
190            r#id: Default::default(),
191            r#extension: Default::default(),
192            r#modifier_extension: Default::default(),
193            r#substance: Box::new(super::super::types::CodeableConcept {
194                id: Some("$invalid".to_string()),
195                ..Default::default()
196            }),
197            r#alternate: Default::default(),
198            r#allergenic_indicator: Default::default(),
199        }
200    }
201}
202#[doc = "The characteristics, operational status and capabilities of a medical-related component of a medical device."]
203#[derive(Debug, Clone, PartialEq)]
204pub struct DeviceDefinition {
205    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
206    pub r#id: Option<super::super::types::Id>,
207    #[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."]
208    pub r#meta: Option<Box<super::super::types::Meta>>,
209    #[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."]
210    pub r#implicit_rules: Option<super::super::types::Uri>,
211    #[doc = "The base language in which the resource is written."]
212    pub r#language: Option<super::super::types::Code>,
213    #[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."]
214    pub r#text: Option<Box<super::super::types::Narrative>>,
215    #[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."]
216    pub r#contained: Vec<super::super::Resource>,
217    #[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."]
218    pub r#extension: Vec<super::super::types::Extension>,
219    #[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)."]
220    pub r#modifier_extension: Vec<super::super::types::Extension>,
221    #[doc = "Unique instance identifiers assigned to a device by the software, manufacturers, other organizations or owners. For example: handle ID."]
222    pub r#identifier: Vec<super::super::types::Identifier>,
223    #[doc = "Unique device identifier (UDI) assigned to device label or package.  Note that the Device may include multiple udiCarriers as it either may include just the udiCarrier for the jurisdiction it is sold, or for multiple jurisdictions it could have been sold."]
224    pub r#udi_device_identifier: Vec<DeviceDefinitionUdiDeviceIdentifier>,
225    #[doc = "A name of the manufacturer."]
226    pub r#manufacturer: Option<DeviceDefinitionManufacturer>,
227    #[doc = "A name given to the device to identify it."]
228    pub r#device_name: Vec<DeviceDefinitionDeviceName>,
229    #[doc = "The model number for the device."]
230    pub r#model_number: Option<super::super::types::String>,
231    #[doc = "What kind of device or device system this is."]
232    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
233    #[doc = "The capabilities supported on a  device, the standards to which the device conforms for a particular purpose, and used for the communication."]
234    pub r#specialization: Vec<DeviceDefinitionSpecialization>,
235    #[doc = "The available versions of the device, e.g., software versions."]
236    pub r#version: Vec<super::super::types::String>,
237    #[doc = "Safety characteristics of the device."]
238    pub r#safety: Vec<super::super::types::CodeableConcept>,
239    #[doc = "Shelf Life and storage information."]
240    pub r#shelf_life_storage: Vec<super::super::types::ProductShelfLife>,
241    #[doc = "Dimensions, color etc."]
242    pub r#physical_characteristics: Option<Box<super::super::types::ProdCharacteristic>>,
243    #[doc = "Language code for the human-readable text strings produced by the device (all supported)."]
244    pub r#language_code: Vec<super::super::types::CodeableConcept>,
245    #[doc = "Device capabilities."]
246    pub r#capability: Vec<DeviceDefinitionCapability>,
247    #[doc = "The actual configuration settings of a device as it actually operates, e.g., regulation status, time properties."]
248    pub r#property: Vec<DeviceDefinitionProperty>,
249    #[doc = "An organization that is responsible for the provision and ongoing maintenance of the device."]
250    pub r#owner: Option<Box<super::super::types::Reference>>,
251    #[doc = "Contact details for an organization or a particular human that is responsible for the device."]
252    pub r#contact: Vec<super::super::types::ContactPoint>,
253    #[doc = "A network address on which the device may be contacted directly."]
254    pub r#url: Option<super::super::types::Uri>,
255    #[doc = "Access to on-line information about the device."]
256    pub r#online_information: Option<super::super::types::Uri>,
257    #[doc = "Descriptive information, usage information or implantation information that is not captured in an existing element."]
258    pub r#note: Vec<super::super::types::Annotation>,
259    #[doc = "The quantity of the device present in the packaging (e.g. the number of devices present in a pack, or the number of devices in the same package of the medicinal product)."]
260    pub r#quantity: Option<Box<super::super::types::Quantity>>,
261    #[doc = "The parent device it can be part of."]
262    pub r#parent_device: Option<Box<super::super::types::Reference>>,
263    #[doc = "A substance used to create the material(s) of which the device is made."]
264    pub r#material: Vec<DeviceDefinitionMaterial>,
265}
266#[allow(clippy::derivable_impls)]
267impl Default for DeviceDefinition {
268    fn default() -> Self {
269        Self {
270            r#id: Default::default(),
271            r#meta: Default::default(),
272            r#implicit_rules: Default::default(),
273            r#language: Default::default(),
274            r#text: Default::default(),
275            r#contained: Default::default(),
276            r#extension: Default::default(),
277            r#modifier_extension: Default::default(),
278            r#identifier: Default::default(),
279            r#udi_device_identifier: Default::default(),
280            r#manufacturer: Default::default(),
281            r#device_name: Default::default(),
282            r#model_number: Default::default(),
283            r#type: Default::default(),
284            r#specialization: Default::default(),
285            r#version: Default::default(),
286            r#safety: Default::default(),
287            r#shelf_life_storage: Default::default(),
288            r#physical_characteristics: Default::default(),
289            r#language_code: Default::default(),
290            r#capability: Default::default(),
291            r#property: Default::default(),
292            r#owner: Default::default(),
293            r#contact: Default::default(),
294            r#url: Default::default(),
295            r#online_information: Default::default(),
296            r#note: Default::default(),
297            r#quantity: Default::default(),
298            r#parent_device: Default::default(),
299            r#material: Default::default(),
300        }
301    }
302}